<?xml version="1.0" encoding="utf-8"?>
<otrs_package version="1.0">
    <Name>ITSMConfigurationManagement</Name>
    <Version>7.3.3</Version>
    <Framework>7.3.x</Framework>
    <PackageRequired Version="7.3.1">ITSMCore</PackageRequired>
    <Vendor>Znuny</Vendor>
    <URL>https://www.znuny.org/</URL>
    <License>GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007</License>
    <Description Lang="en">The Znuny::ITSM Configuration Management package.</Description>
    <Description Lang="de">Das Znuny::ITSM Configuration Management Paket.</Description>
    <Description Lang="es">El paquete Znuny::ITSM Configuration Management.</Description>
    <Description Lang="hu">Az Znuny::ITSM konfigurációmenedzsment csomag.</Description>
    <ChangeLog Version="7.3.3" Date="2026-04-09 10:51:52 +0200">Updated .pm translation files.</ChangeLog>
    <ChangeLog Version="7.3.2" Date="2026-02-23 13:05:30 +0100">Fixed: Widget Customer Related CIs is missing.</ChangeLog>
    <ChangeLog Version="7.3.1" Date="2026-01-26 21:43:38 +0100">Initial release for Znuny 7.3.</ChangeLog>
    <ChangeLog Version="7.2.1" Date="2025-09-04 12:53:33 +0200">Initial release for Znuny 7.2.</ChangeLog>
    <ChangeLog Version="7.1.5" Date="2025-05-21 10:41:59 +0200">- Removed ValidateInputCustomer and ValidateInputCustomerCompany if you use ConfigItemSearch. Also added optional Parameter Valid for ValidateInputGeneralCatalog -&gt; GeneralCatalog-&gt;ItemList(), to search for invalid Items.
- Updated translation files.
- Deployment states will not be reset anymore on package reinstallation.</ChangeLog>
    <ChangeLog Version="7.1.4" Date="2025-04-03 11:22:56 +0200">Fixed Bug - Keys saved with a '.' in the value cannot load when saved in a search profile. The selector has been escaped twice.</ChangeLog>
    <ChangeLog Version="7.1.3" Date="2025-03-31 16:06:06 +0200">Changed widget "AgentITSMConfigItemCustomerCIs" data loading to asynchronous method.</ChangeLog>
    <ChangeLog Version="7.1.2" Date="2025-01-07 16:36:57 +0100">Text area in config item definition view (subaction DefinitionView in AdminITSMConfigItem) is now readonly.</ChangeLog>
    <ChangeLog Version="7.1.1" Date="2024-08-30 09:18:45 +0200">Initial release for Znuny 7.1.</ChangeLog>
    <ChangeLog Version="7.0.2" Date="2024-05-16 13:30:05 +0200">- Fixed configuration item attachment handling.&#13;
- Added filter for related configuration items for the ticket detail view and ticket create screens.&#13;
- Added variable check to prevent not needed log file entries.&#13;
- Fixed unlinking of configuration items in the ticket detail view.&#13;
- Linking and unlinkg an cofniguration item now adds an entry in the ticket history.&#13;
- Hide the widget in the ticket detail view if no related configuration items exist.&#13;
- Updated translations.</ChangeLog>
    <ChangeLog Version="7.0.1" Date="2023-05-11 10:08:35 +0200">Initial release for Znuny 7.0.</ChangeLog>
    <ChangeLog Version="6.5.1" Date="2023-02-20 15:46:19 +0100">Initial release for Znuny 6.5.</ChangeLog>
    <ChangeLog Version="6.4.3" Date="2022-11-09 09:29:57 +0100">Updated translations.</ChangeLog>
    <ChangeLog Version="6.4.2" Date="2022-07-28 15:47:25 +0200">Initial release for Znuny 6.4.2.</ChangeLog>
    <ChangeLog Version="6.3.3" Date="2022-04-28 10:13:33 +0200">Release for Znuny 6.3.3.</ChangeLog>
    <ChangeLog Version="6.3.1" Date="2022-03-18 16:19:03 +0100">Ported to 6.3.</ChangeLog>
    <ChangeLog Version="6.0.31" Date="2021-09-29 15:54:41 +0200">Znuny LTS</ChangeLog>
    <BuildHost>build.znuny.com</BuildHost>
    <BuildDate>2026-04-09 08:51:52 UTC</BuildDate>
    <Filelist>
        <File Permission="660" Location="Kernel/Autoload/WebUploadCacheDB.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgJG9yaWdpbjogWm51bnkgLSBiYWUyZmIyOGJhMmU5MGQ4MmY1ZjQ5MTViMmVmMDI3NGNkMzUwMTM4IC0gS2VybmVsL1N5c3RlbS9XZWIvVXBsb2FkQ2FjaGUvREIucG0KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpBdXRvbG9hZDo6V2ViVXBsb2FkQ2FjaGVEQjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZTo6REI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgojIGRpc2FibGUgcmVkZWZpbmUgd2FybmluZ3MgaW4gdGhpcyBzY29wZQp7CiAgICBubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgIyMgbm8gY3JpdGljCgogICAgKktlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlOjpEQjo6X0Zvcm1JRFZhbGlkYXRlID0gc3ViIHsgIyMgbm8gY3JpdGljCiAgICAgICAgbXkgKCAkU2VsZiwgJEZvcm1JRCApID0gQF87CgogICAgICAgIHJldHVybiBpZiAhJEZvcm1JRDsKCiMgLS0tCiMgSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgLS0tCiMgICAgICAgIGlmICggJEZvcm1JRCAhfiBte14gXGQrIFwuIFxkKyBcLiBcZCsgJH14bXMgKSB7CgogICAgICAgICMgVmFsaWRhdGUgRm9ybUlEIG9mIENJQXR0YWNobWVudHMgdGhhdCBjb250YWlucyBhbiBhZGRpdGlvbmFsIGF0dGFjaG1lbnQga2V5LgogICAgICAgIGlmICggJEZvcm1JRCAhfiBte14gXGQrIFwuIFxkKyBcLiBcZCsgKFwuIENJQXR0YWNobWVudCBcLiBcUyspPyAkfXhtcyApIHsKIyAtLS0KICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ludmFsaWQgRm9ybUlEIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAxOwogICAgfQoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Autoload/WebUploadCacheFS.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgJG9yaWdpbjogWm51bnkgLSBiYWUyZmIyOGJhMmU5MGQ4MmY1ZjQ5MTViMmVmMDI3NGNkMzUwMTM4IC0gS2VybmVsL1N5c3RlbS9XZWIvVXBsb2FkQ2FjaGUvRlMucG0KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CiMgZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpBdXRvbG9hZDo6V2ViVXBsb2FkQ2FjaGVGUzsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZTo6RlM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgojIGRpc2FibGUgcmVkZWZpbmUgd2FybmluZ3MgaW4gdGhpcyBzY29wZQp7CiAgICBubyB3YXJuaW5ncyAncmVkZWZpbmUnOyAgIyMgbm8gY3JpdGljCgogICAgKktlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlOjpGUzo6X0Zvcm1JRFZhbGlkYXRlID0gc3ViIHsgIyMgbm8gY3JpdGljCiAgICAgICAgbXkgKCAkU2VsZiwgJEZvcm1JRCApID0gQF87CgogICAgICAgIHJldHVybiBpZiAhJEZvcm1JRDsKCiMgLS0tCiMgSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgLS0tCiMgICAgICAgIGlmICggJEZvcm1JRCAhfiBte14gXGQrIFwuIFxkKyBcLiBcZCsgJH14bXMgKSB7CgogICAgICAgICMgVmFsaWRhdGUgRm9ybUlEIG9mIENJQXR0YWNobWVudHMgdGhhdCBjb250YWlucyBhbiBhZGRpdGlvbmFsIGF0dGFjaG1lbnQga2V5LgogICAgICAgIGlmICggJEZvcm1JRCAhfiBte14gXGQrIFwuIFxkKyBcLiBcZCsgKFwuIENJQXR0YWNobWVudCBcLiBcUyspPyAkfXhtcyApIHsKIyAtLS0KICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ludmFsaWQgRm9ybUlEIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIHJldHVybiAxOwogICAgfQoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Config/Files/XML/ITSMConfigItem.xml" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkNvbmZpZyI+CiAgICA8IS0tIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6Wm51bnk6OkNvbmZpZzo6QUNMS2V5c0xldmVsM0FjdGlvbnMpIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BZG1pbi48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uTW9kdWxlIyMjQWRtaW5JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BZG1pbiBhcmVhIG5hdmlnYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6QWRtaW5PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6TmF2QmFyOjpNb2R1bGVBZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5DTURCU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikljb25CaWciPmZhLWxhcHRvcDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSWNvblNtYWxsIj48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+SVRTTSBjb25maWcgaXRlbSBvdmVydmlldy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudElUU01Db25maWdJdGVtIyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj5NZW51PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5JdGVtQXJlYTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXcuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPk92ZXJ2aWV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgaXRlbSB6b29tLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20jIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkRldGFpbC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWxsb2NhdGlvbkxpc3QuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLlByaW50LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPnRoaXJkcGFydHkvanF1ZXJ5LXRhYmxlc29ydGVyLTIuMjguMTQvanF1ZXJ5LnRhYmxlc29ydGVyLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLlVJLlRhYmxlLlNvcnQuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkxpbmtPYmplY3QuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maXJtRGlhbG9nLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtRWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgaXRlbSBlZGl0LjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uVXNlclNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gcHJpbnQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+RGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPklUU00gQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUFkZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgaXRlbSBhZGQuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+QWRkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLkFkZC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUFkZCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPk5ldzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5OZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoIGNvbmZpZyBpdGVtcy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuRGV0YWlsLmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5UYWJsZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uUHJpbnQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+dGhpcmRwYXJ0eS9qcXVlcnktdGFibGVzb3J0ZXItMi4yOC4xNC9qcXVlcnkudGFibGVzb3J0ZXIuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuVUkuVGFibGUuU29ydC5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5ab29tLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TZWFyY2ggY29uZmlnIGl0ZW1zLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+b25jbGljaz0iSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5PcGVuU2VhcmNoRGlhbG9nKCdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJyk7IGlmIChldmVudC5zdG9wUHJvcGFnYXRpb24pIHsgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IH0gZWxzZSB7IHdpbmRvdy5ldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlOyB9IHJldHVybiBmYWxzZTsiPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MzAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDAwLUJhY2siIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5bJSBFbnYoIkxhc3RTY3JlZW5PdmVydmlldyIpICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMyMDAtSGlzdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzMwMC1FZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM0MDAtUHJpbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5QcmludDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHJpbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50O0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua1BhcmFtIj50YXJnZXQ9InByaW50IjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM1MDAtTGluayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkxpbms8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkxpbms8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRMaW5rT2JqZWN0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRMaW5rT2JqZWN0O1NvdXJjZU9iamVjdD1JVFNNQ29uZmlnSXRlbTtTb3VyY2VLZXk9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzYwMC1EdXBsaWNhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TWVudUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RHVwbGljYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5EdXBsaWNhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtEdXBsaWNhdGVJRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyM3MDAtQ29uZmlnSXRlbURlbGV0ZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkRlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPkNvbmZpcm1EaWFsb2c8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkVsZW1lbnRTZWxlY3RvciI+I01lbnVbJSBEYXRhLk1lbnVJRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZyI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGU7Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlybWVkQWN0aW9uUXVlcnlTdHJpbmciPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRGVsZXRlO1N1YmFjdGlvbj1Db25maWdJdGVtRGVsZXRlO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpYWxvZ1RpdGxlIj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXSBbJSBDb25maWcoIklUU01Db25maWdJdGVtOjpIb29rIikgJV0gWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OkNvbXBsZXhUYWJsZTo6U2V0dGluZ3NWaXNpYmlsaXR5IyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJQZXJsTW9kdWxlIiBWYWx1ZUZpbHRlcj0iS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9OdW1iZXIvKi5wbSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXI6OkF1dG9JbmNyZW1lbnQ8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpDSU5hbWVSZWdleCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29tcHV0ZXI6OkNJTmFtZVJlZ2V4Ij5eQUJDLio8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbXB1dGVyOjpDSU5hbWVSZWdleEVycm9yTWVzc2FnZSI+QSBjb21wdXRlciBuYW1lIG11c3Qgc3RhcnQgd2l0aCBBQkMhPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJIYXJkd2FyZTo6Q0lOYW1lUmVnZXgiPi4qXGRcZCQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkhhcmR3YXJlOjpDSU5hbWVSZWdleEVycm9yTWVzc2FnZSI+QSBoYXJkd2FyZSBuYW1lIG11c3QgZW5kIHdpdGggdHdvIGRpZ2l0cyE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTGlua09iamVjdDo6RGVmYXVsdFN1Yk9iamVjdCMjI0lUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyAnSVRTTUNvbmZpZ0l0ZW0nLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6TGlua09iamVjdDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPkNvbXB1dGVyPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTo6U2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rT2JqZWN0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+Q3VySW5jaVNpZ25hbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkN1ckRlcGxTaWduYWw8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1uc0J5Q2xhc3MiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtPYmplY3Q8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpDdXJEZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6Mzo6Q2FwYWNpdHk6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6V2FycmFudHlFeHBpcmF0aW9uRGF0ZTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpDcmVhdGVUaW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246OlR5cGU6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6QWRkcmVzczo6MTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3RhdHM6OkR5bmFtaWNPYmplY3RSZWdpc3RyYXRpb24jIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3RhdHM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6U3RhdHM6OkR5bmFtaWM6OklUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkltcG9ydEV4cG9ydDo6T2JqZWN0QmFja2VuZFJlZ2lzdHJhdGlvbiMjI0lUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk9iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkltcG9ydEV4cG9ydDo6T2JqZWN0QmFja2VuZDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydDo6T2JqZWN0QmFja2VuZDo6SVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMxMDAtSGlzdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KENvbmZpZ0l0ZW1DcmVhdGV8VmVyc2lvbkNyZWF0ZXxEZXBsb3ltZW50U3RhdGVVcGRhdGV8SW5jaWRlbnRTdGF0ZVVwZGF0ZXxDb25maWdJdGVtRGVsZXRlfExpbmtBZGR8TGlua0RlbGV0ZXxEZWZpbml0aW9uVXBkYXRlfE5hbWVVcGRhdGV8VmFsdWVVcGRhdGV8RGVmaW5pdGlvbkNyZWF0ZXxWZXJzaW9uRGVsZXRlfEF0dGFjaG1lbnRBZGRQb3N0fEF0dGFjaG1lbnREZWxldGVQb3N0KTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpIaXN0b3J5T3JkZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9Im5vcm1hbCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9InJldmVyc2UiIFRyYW5zbGF0YWJsZT0iMSI+cmV2ZXJzZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0ibm9ybWFsIiBUcmFuc2xhdGFibGU9IjEiPm5vcm1hbDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIGl0ZW0gaGlzdG9yeS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5IyMjMDAzLUlUU01Db25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5IaXN0b3J5LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyMjI0RlcGxveW1lbnRTdGF0ZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlIFR5cGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwb3N0cHJvZHVjdGl2ZSIgVHJhbnNsYXRhYmxlPSIxIj5wb3N0cHJvZHVjdGl2ZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJwcmVwcm9kdWN0aXZlIiBUcmFuc2xhdGFibGU9IjEiPnByZXByb2R1Y3RpdmU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0icHJvZHVjdGl2ZSIgVHJhbnNsYXRhYmxlPSIxIj5wcm9kdWN0aXZlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+RnVuY3Rpb25hbGl0eTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPk9wdGlvbjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzIyMjRGVwbG95bWVudFN0YXRlc0NvbG9ycyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkdlbmVyYWxDYXRhbG9nPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIj5JVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPkRlcGxveW1lbnQgU3RhdGUgQ29sb3I8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPkNvbG9yPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+Q29sb3JQaWNrZXI8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OkNsYXNzIyMjMDEwLUNsYXNzR3JvdXBDaGVjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OkNsYXNzR3JvdXBDaGVjazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUmVxdWlyZWQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkdyYW50ZWQiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246Okl0ZW0jIyMwMTAtSXRlbUNsYXNzR3JvdXBDaGVjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Nb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uOjpJdGVtQ2xhc3NHcm91cENoZWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJSZXF1aXJlZCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JhbnRlZCI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQWRkIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeSMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJvPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRGVsZXRlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtRGVsZXRlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20jIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZG1pbklUU01Db25maWdJdGVtIyMjRWRpdG9yUm93cyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46OlZpZXc6OklUU01Db25maWdJdGVtRGVmaW5pdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MzA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNQZXJtaXNzaW9ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5QZXJtaXNzaW9uIEdyb3VwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+UGVybWlzc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiPklUU006OkNvbmZpZ0l0ZW06OkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5QZXJtaXNzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYW5kYXRvcnkiPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OlNlYXJjaCMjI0NvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51OjpTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iXig/OkFnZW50fEFkbWluKUlUU01Db25maWdJdGVtIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDtTdWJhY3Rpb249QUpBWDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6U2VhcmNoOjpKYXZhU2NyaXB0IyMjQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5KYXZhU2NyaXB0IGZ1bmN0aW9uIGZvciB0aGUgc2VhcmNoIGZyb250ZW5kLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51OjpTZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iXig/OkFnZW50fEFkbWluKUlUU01Db25maWdJdGVtIj5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coJ0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkFnZW50OjpDb21tb25KUyMjIzEwMC1Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIEpTIGZpbGVzIHRvIGFsd2F5cyBiZSBsb2FkZWQgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QmFzZTo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5qczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPklUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5qczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPklUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQuanM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlByZWZlcmVuY2VzR3JvdXBzIyMjQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxQYWdlU2hvd24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpQcmVmZXJlbmNlczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZmVyZW5jZUdyb3VwIj5NaXNjZWxsYW5lb3VzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmF0aW9uIEl0ZW0gTGltaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iS2V5IiBUcmFuc2xhdGFibGU9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMCI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzNSI+MzU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxQYWdlU2hvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpIb29rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPkNvbmZpZ0l0ZW0jPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjEwMDAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTaG93Q29sdW1ucyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVNpZ25hbCIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU2lnbmFsIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIiBTZWxlY3RlZElEPSIwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYXN0Q2hhbmdlZCIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1Nob3dDb2x1bW5zQnlDbGFzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6Ok51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpDdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkN1ckRlcGxTaWduYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6Q3VyRGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjM6OkNhcGFjaXR5OjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OldhcnJhbnR5RXhwaXJhdGlvbkRhdGU6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6Q3JlYXRlVGltZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpDdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246Ok51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpUeXBlOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246Ok5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6QWRkcmVzczo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpMYXN0Q2hhbmdlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBEZWZhdWx0cyBDbGFzczogQ29tcHV0ZXIgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0NvbXB1dGVyIyMjVmVuZG9yIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0NvbXB1dGVyIyMjTW9kZWwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjQ29tcHV0ZXIjIyNEZXNjcmlwdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNDb21wdXRlciMjI1R5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjQ29tcHV0ZXIjIyNDdXN0b21lcklEIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0NvbXB1dGVyIyMjT3duZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjQ29tcHV0ZXIjIyNTZXJpYWxOdW1iZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjQ29tcHV0ZXIjIyNGUUROIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0NvbXB1dGVyIyMjV2FycmFudHlFeHBpcmF0aW9uRGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNDb21wdXRlciMjI0luc3RhbGxEYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0NvbXB1dGVyIyMjTm90ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBEZWZhdWx0cyBDbGFzczogSGFyZHdhcmUgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0hhcmR3YXJlIyMjVmVuZG9yIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0hhcmR3YXJlIyMjTW9kZWwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSGFyZHdhcmUjIyNEZXNjcmlwdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNIYXJkd2FyZSMjI1R5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSGFyZHdhcmUjIyNDdXN0b21lcklEIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0hhcmR3YXJlIyMjT3duZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSGFyZHdhcmUjIyNTZXJpYWxOdW1iZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSGFyZHdhcmUjIyNXYXJyYW50eUV4cGlyYXRpb25EYXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0hhcmR3YXJlIyMjSW5zdGFsbERhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSGFyZHdhcmUjIyNOb3RlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIERlZmF1bHRzIENsYXNzOiBMb2NhdGlvbiAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTG9jYXRpb24jIyNUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0xvY2F0aW9uIyMjQ3VzdG9tZXJJRCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNMb2NhdGlvbiMjI093bmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0xvY2F0aW9uIyMjUGhvbmUxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0xvY2F0aW9uIyMjUGhvbmUyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0xvY2F0aW9uIyMjRmF4IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0xvY2F0aW9uIyMjRS1NYWlsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0xvY2F0aW9uIyMjQWRkcmVzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNMb2NhdGlvbiMjI05vdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggRGVmYXVsdHMgQ2xhc3M6IE5ldHdvcmsgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI05ldHdvcmsjIyNEZXNjcmlwdGlvbiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOZXR3b3JrIyMjVHlwZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOZXR3b3JrIyMjQ3VzdG9tZXJJRCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOZXR3b3JrIyMjT3duZXIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTmV0d29yayMjI05ldHdvcmtBZGRyZXNzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI05ldHdvcmsjIyNOb3RlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIERlZmF1bHRzIENsYXNzOiBTb2Z0d2FyZSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjU29mdHdhcmUjIyNWZW5kb3IiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjU29mdHdhcmUjIyNWZXJzaW9uIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI1NvZnR3YXJlIyMjRGVzY3JpcHRpb24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjU29mdHdhcmUjIyNUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI1NvZnR3YXJlIyMjQ3VzdG9tZXJJRCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNTb2Z0d2FyZSMjI093bmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI1NvZnR3YXJlIyMjU2VyaWFsTnVtYmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI1NvZnR3YXJlIyMjTGljZW5jZVR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj4qKio8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjU29mdHdhcmUjIyNMaWNlbmNlS2V5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+KioqPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI1NvZnR3YXJlIyMjTm90ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPioqKjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaENTVkRhdGEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGF0YSB1c2VkIHRvIGV4cG9ydCB0aGUgc2VhcmNoIHJlc3VsdCBpbiBDU1YgZm9ybWF0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiPkluY2lkZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtTnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5EZXBsb3ltZW50IFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5WZXJzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5DcmVhdGUgVGltZTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4xMDAwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciAnQWxsJyBpcyBzZWxlY3RlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU2lnbmFsIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTaWduYWwiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiIFNlbGVjdGVkSUQ9IjAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFzdENoYW5nZWQiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1uc0J5Q2xhc3MiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6Ok51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpDdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkN1ckRlcGxTaWduYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6Q3VyRGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjM6OkNhcGFjaXR5OjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OldhcnJhbnR5RXhwaXJhdGlvbkRhdGU6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6Q3JlYXRlVGltZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpDdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246Ok51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpUeXBlOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246Ok5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6QWRkcmVzczo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpMYXN0Q2hhbmdlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2siIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5EaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKCdjbGFzcycpIG9yIGdsb2JhbGx5ICgnZ2xvYmFsJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9Imdsb2JhbCI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Imdsb2JhbCIgVHJhbnNsYXRhYmxlPSIxIj5nbG9iYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9ImNsYXNzIiBUcmFuc2xhdGFibGU9IjEiPmNsYXNzPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6QnVsa0FjdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6QnVsa0FjdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPmFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+dXNlcnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5pdHNtLWNvbmZpZ2l0ZW08L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudElUU01Db25maWdJdGVtQnVsayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+QnVsayBBY3Rpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5DTURCPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsjIyMwMDMtSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlByZU1lbnVNb2R1bGUjIyMxMDAtWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGVQcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbVpvb208L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlByZU1lbnVNb2R1bGUjIyMyMDAtSGlzdG9yeSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGVQcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlIyMjMzAwLUR1cGxpY2F0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVNb2R1bGVQcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkR1cGxpY2F0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RHVwbGljYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7RHVwbGljYXRlSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdO1ZlcnNpb25JRD1bJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV07UmV0dXJuVG9MYXN0U2NyZWVuPTE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQnVsayMjI0RlcGxTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1CdWxrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQnVsayMjI0luY2lTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtQnVsazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpBZG1pbk1vZHVsZUdyb3VwcyMjIzIwMC1JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhdmFpbGFibGUgZ3JvdXBzIGZvciB0aGUgYWRtaW4gb3ZlcnZpZXcgc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6Ok5hdkJhck1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDTURCU2V0dGluZ3MiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkNNREIgU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3JkZXIiPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpJVFNNQ29uZmlnSXRlbUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkFzc2lnbmVkIENJczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF0dHJpYnV0ZXMiPkN1c3RvbWVyQ29tcGFueTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGltaXQiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZXJtaXNzaW9uIj5ybzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRMYXJnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FjaGVUVExMb2NhbCI+MC41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdJdGVtS2V5Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb21wdXRlciI+Q3VzdG9tZXJJRDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJIYXJkd2FyZSI+Q3VzdG9tZXJJRDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMb2NhdGlvbiI+Q3VzdG9tZXJJRDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOZXR3b3JrIj5DdXN0b21lcklEPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNvZnR3YXJlIj5DdXN0b21lcklEPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdENvbHVtbnMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU2lnbmFsIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFNpZ25hbCIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik51bWJlciIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyIgU2VsZWN0ZWRJRD0iMCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjAiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJJbmNpU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFzdENoYW5nZWQiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6OkFnZW50OjpDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zQnlDbGFzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6Ok5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkN1ckluY2lTaWduYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6Q3VyRGVwbFNpZ25hbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpDdXJEZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6Mzo6Q2FwYWNpdHk6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6V2FycmFudHlFeHBpcmF0aW9uRGF0ZTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpDcmVhdGVUaW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246OkN1ckluY2lTaWduYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246OlR5cGU6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpBZGRyZXNzOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246Okxhc3RDaGFuZ2VkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iQWdlbnRDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ1VJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyVXNlciIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6SVRTTUNvbmZpZ0l0ZW1HZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Bc3NpZ25lZCBDSXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVzIj5DdXN0b21lcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGltaXQiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQZXJtaXNzaW9uIj5ybzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkNvbnRlbnRMYXJnZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVmYXVsdCI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2FjaGVUVExMb2NhbCI+MC41PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdJdGVtS2V5Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb21wdXRlciI+T3duZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSGFyZHdhcmUiPk93bmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2F0aW9uIj5Pd25lcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOZXR3b3JrIj5Pd25lcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTb2Z0d2FyZSI+T3duZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Q29sdW1ucyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTaWduYWwiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU2lnbmFsIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzIiBTZWxlY3RlZElEPSIwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjAiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYXN0Q2hhbmdlZCIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6QWdlbnQ6OkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zQnlDbGFzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDdXN0b21lclVzZXJJbmZvcm1hdGlvbkNlbnRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpOYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6Ok51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpDdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkN1ckRlcGxTaWduYWw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6Q3VyRGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6MjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6SGFyZERpc2s6OjM6OkNhcGFjaXR5OjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29tcHV0ZXI6OldhcnJhbnR5RXhwaXJhdGlvbkRhdGU6OjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Db21wdXRlcjo6Q3JlYXRlVGltZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpDdXJJbmNpU2lnbmFsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246Ok51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpUeXBlOjoxPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TG9jYXRpb246Ok5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5Mb2NhdGlvbjo6QWRkcmVzczo6MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxvY2F0aW9uOjpMYXN0Q2hhbmdlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW1UaWNrZXRMaW5rIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OlNldEluY2lkZW50U3RhdGVPbkxpbmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtTdGF0dXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMDQyLUlUU01Db25maWdJdGVtVGlja2V0U3RhdHVzTGluayIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6VGlja2V0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6OlRpY2tldFN0YXR1c0xpbms8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij4oTGlua0FkZHxMaW5rRGVsZXRlKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkV2ZW50TW9kdWxlUG9zdCMjIzA0Mi1JVFNNQ29uZmlnSXRlbVRpY2tldFN0YXR1c0xpbmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OlRpY2tldDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KFRpY2tldFN0YXRlVXBkYXRlfFRpY2tldFR5cGVVcGRhdGUpPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpUaWNrZXRUeXBlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtTdGF0dXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpZGVudDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkRlcGxveW1lbnRTdGF0ZXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+UHJvZHVjdGlvbjwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkluY2lkZW50U3RhdGVzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkxpbmtTdGF0dXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpZGVudDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPldhcm5pbmc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5PcGVyYXRpb25hbDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkxpbmtUeXBlcyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlJlbGV2YW50VG8iPkluY2lkZW50PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtR2VuZXJpY0ludGVyZmFjZSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtR2V0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZ0l0ZW1HZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1VcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgb3BlcmF0aW9uIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb25EZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBvcGVyYXRpb24gbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5Db25maWdJdGVtU2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtRGVsZXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIG9wZXJhdGlvbiBsYXllci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZ0l0ZW1EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlT3BlcmF0aW9uRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1HZXQjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1HZXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbUNyZWF0ZSMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbUNyZWF0ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJ3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1VcGRhdGUjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1VcGRhdGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIFpudW55KDRPVFJTKS1JVFNNQ29uZmlnSXRlbUludm9rZXIgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJFdmVudHMjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5MaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+Q29uZmlnSXRlbUNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbmZpZ0l0ZW1EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsb3ltZW50U3RhdGVVcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpZGVudFN0YXRlVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPlZhbHVlVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+VmVyc2lvbkNyZWF0ZTwvSXRlbT4KCiAgICAgICAgICAgICAgICA8IS0tCiAgICAgICAgICAgICAgICAgICAgT3RoZXIgcG9zc2libGUgZXZlbnRzOgogICAgICAgICAgICAgICAgPEl0ZW0+TGlua0FkZDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkxpbmtEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZWZpbml0aW9uVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVmaW5pdGlvbkNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPlZlcnNpb25EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5BdHRhY2htZW50QWRkUG9zdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkF0dGFjaG1lbnREZWxldGVQb3N0PC9JdGVtPgogICAgICAgICAgICAgICAgLS0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyM5OTAwLUdlbmVyaWNJbnRlcmZhY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIHdlYiBzZXJ2aWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpFdmVudDo6SGFuZGxlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij48L0l0ZW0+PCEtLSBydW4gb24gYWxsIGV2ZW50cyAtLT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGUjIyNJVFNNQ29uZmlnSXRlbTo6R2VuZXJpYyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbnZva2VyIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPklUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJEZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIFpudW55KDRPVFJTKS1JVFNNQ29uZmlnSXRlbVR5cGVzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj5SZXR1cm5zIENJQXR0YWNobWVudHM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+Q0lBdHRhY2htZW50PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyMxMDAtQ0lBdHRhY2htZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6VGlja2V0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6Q0lBdHRhY2htZW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihWZXJzaW9uQ3JlYXRlfFZlcnNpb25EZWxldGUpPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIFpudW55KDRPVFJTKS1DdXN0b21lckNJcyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzIyMjU2VhcmNoTGltaXQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJcyMjI0N1c3RvbWVyVXNlciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJcyMjI0N1c3RvbWVyQ29tcGFueSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMjIyNNYXBwaW5nIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbXB1dGVyIj5mYS1sYXB0b3A8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok91dHB1dDo6RmlsdGVyRWxlbWVudFBvc3QjIyNBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpPdXRwdXRGaWx0ZXI8L05hdmlnYXRpb24+CiAgICAgICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RmlsdGVyRWxlbWVudFBvc3Q6OkFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRlbXBsYXRlcyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFBob25lIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldEVtYWlsIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudFRpY2tldFpvb20iPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQjIyNHcm91cCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6Wm51bnk6OkN1c3RvbWVyQ0lzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+dXNlcnM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldCMjI0N1c3RvbWVyQ0lEZXBsb3ltZW50U3RhdGVzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlpudW55OjpDdXN0b21lckNJczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlByb2R1Y3Rpb248L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldCMjI0N1c3RvbWVyQ29tcGFueUNJRGVwbG95bWVudFN0YXRlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5GaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlpudW55OjpDdXN0b21lckNJczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlByb2R1Y3Rpb248L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldCMjI0xpbmtUeXBlIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpabnVueTo6Q3VzdG9tZXJDSXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5SZWxldmFudFRvPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+QWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiPkN1c3RvbWVyQ0lzV2lkZ2V0IEFKQVggaW50ZXJmYWNlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkFKQVggaW50ZXJmYWNlIGZvciBDdXN0b21lckNJc1dpZGdldC48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpBZ2VudDo6Q29tbW9uSlMjIyM5OTktQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgSlMgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQ3VzdG9tZXJDSXNXaWRnZXQuanM8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkNTUyMjIzk5OS1BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBDU1MgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQ3VzdG9tZXJDSXNXaWRnZXQuY3NzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJUaWNrZXQ6OkV2ZW50TW9kdWxlUG9zdCMjIzk5OS1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpUaWNrZXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij5UaWNrZXRDcmVhdGU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gWm51bnkoNE9UUlMpLUR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0gLS0+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWRtaW5EeW5hbWljRmllbGRDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iPkFkbWluPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZHMgYWRtaW5pc3RyYXRpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5BZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQUpBWER5bmFtaWNGaWVsZENvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+VGlja2V0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pY0ZpZWxkQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNBSkFYRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5UaWNrZXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljRmllbGRDb25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6OkRyaXZlciMjI0NvbmZpZ0l0ZW1Ecm9wZG93biIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkIGJhY2tlbmQgcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczo6RHJpdmVyUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRpc3BsYXlOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIChEcm9wZG93bik8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtRHJvcGRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5EeW5hbWljRmllbGRDb25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWciPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRzOjpEcml2ZXIjIyNDb25maWdJdGVtTXVsdGlzZWxlY3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RHluYW1pYyBmaWVsZCBiYWNrZW5kIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM6OkRyaXZlclJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNwbGF5TmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgaXRlbSAoTXVsdGlzZWxlY3QpPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbU11bHRpc2VsZWN0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluRHluYW1pY0ZpZWxkQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5OTktRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVRpY2tldExpbmsiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6Wm51bnk6OkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6RHluYW1pY0ZpZWxkQ29uZmlnSXRlbVRpY2tldExpbms8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+VGlja2V0RHluYW1pY0ZpZWxkVXBkYXRlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTk5LUR5bmFtaWNGaWVsZENvbmZpZ0l0ZW1BZGRpdGlvbmFsREZTdG9yYWdlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6Wm51bnk6OkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6RHluYW1pY0ZpZWxkQ29uZmlnSXRlbUFkZGl0aW9uYWxERlN0b3JhZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRyYW5zYWN0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+VGlja2V0RHluYW1pY0ZpZWxkVXBkYXRlPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gTG9hZGVycyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkpTIyMjOTk5LUR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBKUyBmaWxlcyB0byBhbHdheXMgYmUgbG9hZGVkIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPlpudW55LkR5bmFtaWNGaWVsZC5Db25maWdJdGVtLmpzPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6OkN1c3RvbWVyOjpDb21tb25KUyMjIzk5OS1EeW5hbWljRmllbGRDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgSlMgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5abnVueS5EeW5hbWljRmllbGQuQ29uZmlnSXRlbS5qczwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSMjIzAwMy1EeW5hbWljRmllbGRDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluOjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuQWRtaW4uRHluYW1pY0ZpZWxkQ29uZmlnSXRlbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gVGhlc2Ugc2V0dGluZ3MgYXJlIG9ubHkgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJabnVueUR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0jIyNUaWNrZXRMaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiIFJlYWRPbmx5PSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5ObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpabnVueTo6RHluYW1pY0ZpZWxkQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIxIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj5ObzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iWm51bnlEeW5hbWljRmllbGRDb25maWdJdGVtIyMjTGlua1R5cGUiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSIgUmVhZE9ubHk9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk5vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlpudW55OjpEeW5hbWljRmllbGRDb25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IlJlbGV2YW50VG8iPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJBbHRlcm5hdGl2ZVRvIiBUcmFuc2xhdGFibGU9IjEiPkFsdGVybmF0aXZlVG88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRlcGVuZHNPbiIgVHJhbnNsYXRhYmxlPSIxIj5EZXBlbmRzT248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlJlbGV2YW50VG8iIFRyYW5zbGF0YWJsZT0iMSI+UmVsZXZhbnRUbzwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJBdXRvbG9hZFBlcmxQYWNrYWdlcyMjIzEwMC1XZWJVcGxvYWRDYWNoZURCIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkF1dG9sb2FkPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPktlcm5lbDo6QXV0b2xvYWQ6OldlYlVwbG9hZENhY2hlREI8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkF1dG9sb2FkUGVybFBhY2thZ2VzIyMjMTAwLVdlYlVwbG9hZENhY2hlRlMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6QXV0b2xvYWQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+S2VybmVsOjpBdXRvbG9hZDo6V2ViVXBsb2FkQ2FjaGVGUzwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgo8L290cnNfY29uZmlnPgo=</File>
        <File Permission="660" Location="Kernel/GenericInterface/Event/ObjectType/ITSMConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpFdmVudDo6T2JqZWN0VHlwZTo6SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW1JbnZva2VyJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbQoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1JbnZva2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtSW52b2tlcicpOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhEYXRhKSkgewogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17RGF0YX0tPnskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIERhdGEhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9OwogICAgcmV0dXJuIGlmICEkQ29uZmlnSXRlbUlEOwoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRJVFNNQ29uZmlnSXRlbUludm9rZXJPYmplY3QtPkdldENvbmZpZ0l0ZW1EYXRhKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIEV2ZW50ICAgICAgICA9PiAkUGFyYW17RGF0YX0tPntFdmVudH0sCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbURhdGEpOwoKICAgIHJldHVybiAleyRDb25maWdJdGVtRGF0YX07Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/GenericInterface/Invoker/ITSMConfigItem/Generic.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpJVFNNQ29uZmlnSXRlbTo6R2VuZXJpYzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6SVRTTUNvbmZpZ0l0ZW06OkdlbmVyaWMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzIGJ5IHVzaW5nCgogICAgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIGlmICggISRQYXJhbXtEZWJ1Z2dlck9iamVjdH0gKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vIERlYnVnZ2VyT2JqZWN0ISIKICAgICAgICB9OwogICAgfQoKICAgICRTZWxmLT57RGVidWdnZXJPYmplY3R9ID0gJFBhcmFte0RlYnVnZ2VyT2JqZWN0fTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBQcmVwYXJlUmVxdWVzdCgpCgpwcmVwYXJlIHRoZSBpbnZvY2F0aW9uIG9mIHRoZSBjb25maWd1cmVkIHJlbW90ZSB3ZWIgc2VydmljZS4KCiAgICBteSAkUmVzdWx0ID0gJEludm9rZXJPYmplY3QtPlByZXBhcmVSZXF1ZXN0KAogICAgICAgIERhdGEgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRhdGEgcGF5bG9hZAogICAgICAgICAgICAuLi4KICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSAgICA9PiAnJywgICAgICAgICAgICAgICAgICAjIGluIGNhc2Ugb2YgZXJyb3IKICAgICAgICBEYXRhICAgICAgICAgICAgPT4geyAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQgYWZ0ZXIgSW52b2tlcgogICAgICAgICAgICAuLi4KICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBQcmVwYXJlUmVxdWVzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJElUU01Db25maWdJdGVtSW52b2tlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbUludm9rZXInKTsKCiAgICBteSAkQ29uZmlnSXRlbURhdGEgPSAkSVRTTUNvbmZpZ0l0ZW1JbnZva2VyT2JqZWN0LT5HZXRDb25maWdJdGVtRGF0YSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKCiAgICAgICAgIyBBZHZhbmNlZEdJIHB1dHMgZXZlbnQgaW50byAkUGFyYW17RGF0YX0tPntFdmVudH0sCiAgICAgICAgIyBpZiBleGVjdXRlZCB2aWEgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpFdmVudDo6SGFuZGxlcgogICAgICAgIEV2ZW50ID0+ICRQYXJhbXtEYXRhfS0+e0V2ZW50fSwKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1EYXRhKSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJEYXRhIG9mIGNvbmZpZyBpdGVtIHdpdGggSUQgJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfSBjb3VsZCBub3QgYmUgcmV0cmlldmVkLiIsCiAgICAgICAgfTsKICAgIH0KCiAgICBteSAlRGF0YSA9ICgKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtRGF0YSAvLyB7fSwKICAgICAgICBFdmVudCAgICAgID0+ICRQYXJhbXtEYXRhfS0+e0V2ZW50fSwKICAgICk7CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiBcJURhdGEsCiAgICB9Owp9Cgo9aGVhZDIgSGFuZGxlUmVzcG9uc2UoKQoKaGFuZGxlIHJlc3BvbnNlIGRhdGEgb2YgdGhlIGNvbmZpZ3VyZWQgcmVtb3RlIHdlYiBzZXJ2aWNlLgoKICAgIG15ICRSZXN1bHQgPSAkSW52b2tlck9iamVjdC0+SGFuZGxlUmVzcG9uc2UoCiAgICAgICAgUmVzcG9uc2VTdWNjZXNzICAgICAgPT4gMSwgICAgICAgICAgICAgICMgc3VjY2VzcyBzdGF0dXMgb2YgdGhlIHJlbW90ZSB3ZWIgc2VydmljZQogICAgICAgIFJlc3BvbnNlRXJyb3JNZXNzYWdlID0+ICcnLCAgICAgICAgICAgICAjIGluIGNhc2Ugb2Ygd2ViIHNlcnZpY2UgZXJyb3IKICAgICAgICBEYXRhID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkYXRhIHBheWxvYWQKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7CgogICAgJFJlc3VsdCA9IHsKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICMgZGF0YSBwYXlsb2FkIGFmdGVyIEludm9rZXIKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgSGFuZGxlUmVzcG9uc2UgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkQXJ0aWNsZU9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwoKICAgICMgaWYgdGhlcmUgd2FzIGFuIGVycm9yIGluIHRoZSByZXNwb25zZSwgZm9yd2FyZCBpdAogICAgaWYgKCAhJFBhcmFte1Jlc3BvbnNlU3VjY2Vzc30gKSB7CiAgICAgICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte1Jlc3BvbnNlRXJyb3JNZXNzYWdlfSApICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPntEZWJ1Z2dlck9iamVjdH0tPkVycm9yKAogICAgICAgICAgICAgICAgU3VtbWFyeSA9PiAnR290IHJlc3BvbnNlIGVycm9yLCBidXQgbm8gcmVzcG9uc2UgZXJyb3IgbWVzc2FnZSEnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRQYXJhbXtSZXNwb25zZUVycm9yTWVzc2FnZX0sCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+ICRQYXJhbXtEYXRhfSwKICAgIH07Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/GenericInterface/Operation/ConfigItem/Common.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIE1JTUU6OkJhc2U2NCgpOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb21tb24gLSBCYXNlIGNsYXNzIGZvciBhbGwgQ0kgT3BlcmF0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1jdXQKCj1oZWFkMiBJbml0KCkKCmluaXRpYWxpemUgdGhlIG9wZXJhdGlvbiBieSBjaGVja2luZyB0aGUgd2ViLXNlcnZpY2UgY29uZmlndXJhdGlvbgoKICAgIG15ICRSZXR1cm4gPSAkQ29tbW9uT2JqZWN0LT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAxLAogICAgKTsKCiAgICAkUmV0dXJuID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICMgb3IgMCBpbiBjYXNlIG9mIGZhaWx1cmUsCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdFcnJvciBNZXNzYWdlJywKICAgIH0KCj1jdXQKCnN1YiBJbml0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQKICAgIGlmICggISRQYXJhbXtXZWJzZXJ2aWNlSUR9ICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyBXZWJzZXJ2aWNlSUQhIiwKICAgICAgICB9OwogICAgfQoKICAgICMgZ2V0IHdlYnNlcnZpY2UgY29uZmlndXJhdGlvbgogICAgbXkgJFdlYnNlcnZpY2UgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpLT5XZWJzZXJ2aWNlR2V0KAogICAgICAgIElEID0+ICRQYXJhbXtXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkV2Vic2VydmljZSkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCBkZXRlcm1pbmUgV2ViIHNlcnZpY2UgY29uZmlndXJhdGlvbicKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uOjpuZXcoKScsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBWYWxpZGF0ZUNsYXNzKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gQ2xhc3MgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlQ2xhc3MoCiAgICAgICAgQ2xhc3MgPT4gJ3NvbWUgY2xhc3MnLAogICAgKTsKCiAgICByZXR1cm5zCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIDAKCj1jdXQKCnN1YiBWYWxpZGF0ZUNsYXNzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte0NsYXNzfTsKCiAgICAjIGNoZWNrIGZvciBDbGFzcyBzZW50CiAgICBteSAkSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtDbGFzc30sCiAgICApOwoKICAgICMgcmV0dXJuIGZhbHNlIGlmIGl0ZW0gZGF0YSBpcyBlbXB0eQogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSXRlbURhdGFSZWYpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVEZXBsU3RhdGUoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBEZXBsU3RhdGUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlRGVwbFN0YXRlKAogICAgICAgIERlbHBTdGF0ZSA9PiAnc29tZSBEZXBsU3RhdGUnLAogICAgKTsKCiAgICByZXR1cm5zCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIDAKCj1jdXQKCnN1YiBWYWxpZGF0ZURlcGxTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gaWYgISRQYXJhbXtEZXBsU3RhdGV9OwoKICAgICMgY2hlY2sgZm9yIENsYXNzIHNlbnQKICAgIG15ICRJdGVtRGF0YVJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtR2V0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIE5hbWUgID0+ICRQYXJhbXtEZXBsU3RhdGV9LAogICAgKTsKCiAgICAjIHJldHVybiBmYWxzZSBpZiBpdGVtIGRhdGEgaXMgZW1wdHkKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5jaVN0YXRlKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gSW5jaVN0YXRlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUluY2lTdGF0ZSgKICAgICAgICBJbmNpU3RhdGUgPT4gJ3NvbWUgSW5jaVN0YXRlJywKICAgICk7CgogICAgcmV0dXJucwogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciAwCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbmNpU3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17SW5jaVN0YXRlfTsKCiAgICAjIGNoZWNrIGZvciBDbGFzcyBzZW50CiAgICBteSAkSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgTmFtZSAgPT4gJFBhcmFte0luY2lTdGF0ZX0sCiAgICApOwoKICAgICMgcmV0dXJuIGZhbHNlIGlmIGl0ZW0gZGF0YSBpcyBlbXB0eQogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSXRlbURhdGFSZWYpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dFRleHQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiB2YWx1ZSBpcyB2YWxpZC4KCiAgICBteSAkU3VjZXNzID0gJENvbW1vbk9iamVjdC0+VmFsaWRhdGVJbnB1dFRleHQoCiAgICAgICAgVmFsdWUgICAgID0+ICdzb21lIHZhbHVlJywKICAgICAgICBNYXhMZW5ndGggPT4gMTIzLAogICAgKTsKCiAgICByZXR1cm5zCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIDAKCj1jdXQKCnN1YiBWYWxpZGF0ZUlucHV0VGV4dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbGVuZ3RoCiAgICBpZiAoCiAgICAgICAgZGVmaW5lZCAkUGFyYW17SW5wdXR9LT57TWF4TGVuZ3RofQogICAgICAgICYmICRQYXJhbXtJbnB1dH0tPntNYXhMZW5ndGh9CiAgICAgICAgJiYgbGVuZ3RoICRQYXJhbXtWYWx1ZX0gPiAkUGFyYW17SW5wdXR9LT57TWF4TGVuZ3RofQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUlucHV0RGF0ZSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUlucHV0RGF0ZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NycsCiAgICApOwoKICAgIG9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlKAogICAgICAgIFZhbHVlID0+ICcxOTc3LTEyLTEyJywKICAgICk7CgogICAgcmV0dXJucwogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciAwCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dERhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJERhdGVUaW1lT2JqZWN0OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dERhdGVUaW1lKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTIvMTIvMTk3NyAxMjowMDowMCcsCiAgICApOwoKICAgIG9yCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICBWYWx1ZSA9PiAnMTk3Ny0xMi0xMiAxMjowMDowMCcsCiAgICApOwoKICAgIHJldHVybnMKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgMAoKPWN1dAoKc3ViIFZhbGlkYXRlSW5wdXREYXRlVGltZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMDUvMTgvMjAxMSIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezJ9KSAvIChcZHsyfSkgLyAoXGR7NH0pIFx6fXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMyAuICctJyAuICQxIC4gJy0nIC4gJDIgLiAnIDAwOjAwOjAwJzsKICAgIH0KICAgIGVsc2lmICggJFZhbHVlID1+IG17XEEgKFxkezJ9KSAvIChcZHsyfSkgLyAoXGR7NH0pIChcZHsyfSA6IFxkezJ9IDogXGR7Mn0pIFx6fXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMyAuICctJyAuICQxIC4gJy0nIC4gJDIgLiAkNDsKICAgIH0KCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIyMDExLTA1LTE4IgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7NH0gLSBcZHsyfSAtIFxkezJ9IFx6KSB9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQxIC4gJyAwMDowMDowMCc7CiAgICB9CgogICAgIyBDb252ZXJ0IHRoZSByYXcgZGF0YSB0byBhIHN5c3RlbSBkYXRldGltZSBvYmplY3QuCiAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgIFN0cmluZyA9PiAkVmFsdWUsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkRGF0ZVRpbWVPYmplY3Q7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUlucHV0SW50ZWdlcigpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUlucHV0SW50ZWdlcigKICAgICAgICBWYWx1ZSA9PiAxMjMsCiAgICApOwoKICAgIHJldHVybnMKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgMAoKPWN1dAoKc3ViIFZhbGlkYXRlSW5wdXRJbnRlZ2VyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICByZXR1cm4gaWYgIUlzSW50ZWdlcigkVmFsdWUpOwoKICAgIHJldHVybiBpZiBkZWZpbmVkICRQYXJhbXtWYWx1ZU1pbn0gJiYgJFZhbHVlIDwgJFBhcmFte1ZhbHVlTWlufTsKICAgIHJldHVybiBpZiBkZWZpbmVkICRQYXJhbXtWYWx1ZU1heH0gJiYgJFZhbHVlID4gJFBhcmFte1ZhbHVlTWF4fTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZhbGlkYXRlSW5wdXRHZW5lcmFsQ2F0YWxvZygpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUlucHV0R2VuZXJhbENhdGFsb2coCiAgICAgICAgVmFsdWUgPT4gMTIzLAogICAgICAgIENsYXNzID0+ICdTb21lIGdlbmVyYWwgY2F0YWxvZyBjbGFzcycKICAgICk7CgogICAgcmV0dXJucwogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciAwCgo9Y3V0CgpzdWIgVmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWxpZH0gKSB7CiAgICAgICAgJFBhcmFte1ZhbGlkfSA9IDE7CiAgICB9CgogICAgIyBnZXQgdGhlIHZhbHVlcyBmb3IgdGhlIEdlbmVyYWwgY2F0YWxvZyBjbGFzcwogICAgbXkgJEl0ZW1MaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJbnB1dH0tPntDbGFzc30sCiAgICAgICAgVmFsaWQgPT4gJFBhcmFte1ZhbGlkfSwKICAgICk7CgogICAgIyBjcmVhdGUgYSBsb2t1cCBsaXN0CiAgICBteSAlSXRlbUxpc3RMb29rdXAgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICByZXR1cm4gaWYgISRJdGVtTGlzdExvb2t1cHskVmFsdWV9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsdWUgaXMgdmFsaWQuCgogICAgbXkgJFN1Y2VzcyA9ICRDb21tb25PYmplY3QtPlZhbGlkYXRlSW5wdXRDdXN0b21lcigKICAgICAgICBWYWx1ZSA9PiAnc29tZSBjdXN0b21lciBsb2dpbicsCiAgICApOwoKICAgIHJldHVybnMKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgMAoKPWN1dAoKc3ViIFZhbGlkYXRlSW5wdXRDdXN0b21lciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgcmV0dXJuIGlmICEkVmFsdWU7CgogICAgbXkgJUN1c3RvbWVyRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICBVc2VyID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwoKICAgICMgaWYgY3VzdG9tZXIgaXMgbm90IHJlZ2lzdGVyZWQgaW4gdGhlIGRhdGFiYXNlCiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCBcJUN1c3RvbWVyRGF0YSApOwoKICAgICMgaWYgVmFsaWRJRCBpcyBwcmVzZW50LCBjaGVjayBpZiBpdCBpcyB2YWxpZCEKICAgIGlmICggZGVmaW5lZCAkQ3VzdG9tZXJEYXRhe1ZhbGlkSUR9ICkgewoKICAgICAgICAjIHJldHVybiBmYWxzZSBpZiBjdXN0b21lciBpcyBub3QgdmFsaWQKICAgICAgICByZXR1cm4KICAgICAgICAgICAgaWYgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTG9va3VwKCBWYWxpZElEID0+ICRDdXN0b21lckRhdGF7VmFsaWRJRH0gKSBuZSAndmFsaWQnOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUlucHV0Q3VzdG9tZXJDb21wYW55KAogICAgICAgIFZhbHVlID0+ICdzb21lIGN1c3RvbWVyIGNvbXBhbnkgbmFtZScsCiAgICApOwoKICAgIHJldHVybnMKICAgICRTdWNjZXNzID0gMSAgICAgICAgICAgICMgb3IgMAoKPWN1dAoKc3ViIFZhbGlkYXRlSW5wdXRDdXN0b21lckNvbXBhbnkgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiBpZiAhJFZhbHVlOwoKICAgIG15ICVDb21wYW55TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckNvbXBhbnknKS0+Q3VzdG9tZXJDb21wYW55TGlzdCgKICAgICAgICBMaW1pdCA9PiAwLCAgICAjIERpc3BsYXkgYWxsIEN1c3RvbWVyIENvbXBhbmllcwogICAgKTsKCiAgICByZXR1cm4gaWYgISRDb21wYW55TGlzdHsgJFBhcmFte1ZhbHVlfSB9OwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmFsaWRhdGVNaW1lVHlwZSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIE1pbWVUeXBlIGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZU1pbWVUeXBlKAogICAgICAgIE1pbWVUeXBlSUQgPT4gJ3NvbWUgTWltZVR5cGUnLAogICAgKTsKCiAgICByZXR1cm5zCiAgICAkU3VjY2VzcyA9IDEgICAgICAgICAgICAjIG9yIDAKCj1jdXQKCnN1YiBWYWxpZGF0ZU1pbWVUeXBlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte01pbWVUeXBlfTsKCiAgICByZXR1cm4gaWYgJFBhcmFte01pbWVUeXBlfSAhfiBte1xBXHcrXC9cdytcen07CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBWYWxpZGF0ZUNoYXJzZXQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBDaGFyc2V0IGlzIHZhbGlkLgoKICAgIG15ICRTdWNlc3MgPSAkQ29tbW9uT2JqZWN0LT5WYWxpZGF0ZUNoYXJzZXQoCiAgICAgICAgQ2hhcnNldCA9PiAnc29tZSBjaGFyc2V0JywKICAgICk7CgogICAgcmV0dXJucwogICAgJFN1Y2Nlc3MgPSAxICAgICAgICAgICAgIyBvciAwCgo9Y3V0CgpzdWIgVmFsaWRhdGVDaGFyc2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte0NoYXJzZXR9OwoKICAgIG15ICRDaGFyc2V0TGlzdCA9ICRTZWxmLT5fQ2hhcnNldExpc3QoKTsKCiAgICByZXR1cm4gaWYgISRDaGFyc2V0TGlzdC0+eyAkUGFyYW17Q2hhcnNldH0gfTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFJlcGxhY2VJbnB1dERhdGUoKQoKcmVwbGFjZXMgdGhlIHVzZXIgdmFsdWUgd2l0aCBhIHN5c3RlbSB2YWxpZCB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5SZXBsYWNlSW5wdXREYXRlKAogICAgICAgIFZhbHVlID0+ICcxMi8xMi8xOTc3JywKICAgICk7CgogICAgb3IKCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5SZXBsYWNlSW5wdXREYXRlKAogICAgICAgIFZhbHVlID0+ICcxOTc3LTEyLTEyJywKICAgICk7CgogICAgcmV0dXJucwogICAgJE5ld1ZhbHVlID0gJzE5NzctMTItMTInLAoKPWN1dAoKc3ViIFJlcGxhY2VJbnB1dERhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjA1LzE4LzIwMTEiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHsyfSkgLyAoXGR7Mn0pIC8gKFxkezR9KSBcen14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDMgLiAnLScgLiAkMSAuICctJyAuICQyIC4gJyAwMDowMDowMCc7CiAgICB9CgogICAgIyBjaGVjayBhbmQgY29udmVydCBmb3IgZGF0ZSBmb3JtYXQgbGlrZSAiMjAxMS0wNS0xOCIKICAgIGlmICggJFZhbHVlID1+IG17XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSBceikgfXhtcyApIHsKICAgICAgICAkVmFsdWUgPSAkMSAuICcgMDA6MDA6MDAnOwogICAgfQoKICAgICMgQ29udmVydCB0aGUgcmF3IGRhdGEgdG8gYSBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAkRGF0ZVRpbWVPYmplY3QtPkZvcm1hdCggRm9ybWF0ID0+ICclRicgKTsKfQoKPWhlYWQyIFJlcGxhY2VJbnB1dERhdGVUaW1lKCkKCnJlcGxhY2VzIHRoZSB1c2VyIHZhbHVlIHdpdGggYSBzeXN0ZW0gdmFsaWQgdmFsdWUuCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+UmVwbGFjZUlucHV0RGF0ZVRpbWUoCiAgICAgICAgVmFsdWUgPT4gJzEyLzEyLzE5NzcgMTI6MDA6MDAnLAogICAgKTsKCiAgICBvcgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPlJlcGxhY2VJbnB1dERhdGVUaW1lKAogICAgICAgIFZhbHVlID0+ICcxOTc3LTEyLTEyIDEyOjAwOjAwJywKICAgICk7CgogICAgcmV0dXJucwogICAgJE5ld1ZhbHVlID0gJzE5NzctMTItMTIgMTI6MDA6MDAnOwoKPWN1dAoKc3ViIFJlcGxhY2VJbnB1dERhdGVUaW1lIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjIGNoZWNrIGFuZCBjb252ZXJ0IGZvciBkYXRlIGZvcm1hdCBsaWtlICIwNS8xOC8yMDExIgogICAgaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7Mn0pIC8gKFxkezJ9KSAvIChcZHs0fSkgXHp9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQzIC4gJy0nIC4gJDEgLiAnLScgLiAkMiAuICcgMDA6MDA6MDAnOwogICAgfQogICAgZWxzaWYgKCAkVmFsdWUgPX4gbXtcQSAoXGR7Mn0pIC8gKFxkezJ9KSAvIChcZHs0fSkgKFxkezJ9IDogXGR7Mn0gOiBcZHsyfSkgXHp9eG1zICkgewogICAgICAgICRWYWx1ZSA9ICQzIC4gJy0nIC4gJDEgLiAnLScgLiAkMiAuICQ0OwogICAgfQoKICAgICMgY2hlY2sgYW5kIGNvbnZlcnQgZm9yIGRhdGUgZm9ybWF0IGxpa2UgIjIwMTEtMDUtMTgiCiAgICBpZiAoICRWYWx1ZSA9fiBte1xBIChcZHs0fSAtIFxkezJ9IC0gXGR7Mn0gXHopIH14bXMgKSB7CiAgICAgICAgJFZhbHVlID0gJDEgLiAnIDAwOjAwOjAwJzsKICAgIH0KCiAgICAjIENvbnZlcnQgdGhlIHJhdyBkYXRhIHRvIGEgc3lzdGVtIGRhdGV0aW1lIG9iamVjdC4KICAgIG15ICREYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgU3RyaW5nID0+ICRWYWx1ZSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJERhdGVUaW1lT2JqZWN0LT5Ub1N0cmluZygpOwp9Cgo9aGVhZDIgUmVwbGFjZUlucHV0R2VuZXJhbENhdGFsb2coKQoKcmVwbGFjZXMgdGhlIHVzZXIgdmFsdWUgd2l0aCBhIHN5c3RlbSB2YWxpZCB2YWx1ZS4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5SZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZygKICAgICAgICBWYWx1ZSA9PiAnc29tZSB2YWx1ZScsCiAgICAgICAgQ2xhc3MgPT4gJ1NvbWUgZ2VuZXJhbCBjYXRhbG9nIGNsYXNzJwogICAgKTsKCiAgICByZXR1cm5zCiAgICAkTmV3VmFsdWUgPSAxMjMKCj1jdXQKCnN1YiBSZXBsYWNlSW5wdXRHZW5lcmFsQ2F0YWxvZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgIyBnZXQgdGhlIHZhbHVlcyBmb3IgdGhlIEdlbmVyYWwgY2F0YWxvZyBjbGFzcwogICAgbXkgJEl0ZW1MaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJbnB1dH0tPntDbGFzc30sCiAgICApOwoKICAgICMgY3JlYXRlIGEgbG9rdXAgbGlzdAogICAgbXkgJUl0ZW1MaXN0TG9va3VwID0gcmV2ZXJzZSAleyRJdGVtTGlzdH07CgogICAgcmV0dXJuICRJdGVtTGlzdExvb2t1cHskVmFsdWV9Owp9Cgo9aGVhZDIgSW52ZXJ0UmVwbGFjZUlucHV0RGF0ZSgpCgpyZXBsYWNlcyB0aGUgc3lzdGVtIHZhbHVlIHdpdGggYSB1c2VyIHZhbHVlLgoKICAgIG15ICROZXdWYWx1ZSA9ICRDb21tb25PYmplY3QtPkludmVydFJlcGxhY2VJbnB1dERhdGUoCiAgICAgICAgVmFsdWUgPT4gJzEyLTEyLTE5NzcgMDA6MDA6MDAnLAogICAgKTsKCiAgICByZXR1cm5zCiAgICAkTmV3VmFsdWUgPSAnMTk3Ny0xMi0xMicsCgo9Y3V0CgpzdWIgSW52ZXJ0UmVwbGFjZUlucHV0RGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CgogICAgJFZhbHVlID1+IHN7XEEgKFxkezR9IC0gXGR7Mn0gLSBcZHsyfSkgWyBdIDAwOjAwOjAwIFx6fXskMX14bXM7CgogICAgcmV0dXJuICRWYWx1ZTsKfQoKPWhlYWQyIEludmVydFJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nKCkKCnJlcGxhY2VzIHRoZSBzeXN0ZW0gdmFsdWUgd2l0aCBhIHVzZXIgdmFsdWUuCgogICAgbXkgJE5ld1ZhbHVlID0gJENvbW1vbk9iamVjdC0+SW52ZXJ0UmVwbGFjZUlucHV0R2VuZXJhbENhdGFsb2coCiAgICAgICAgVmFsdWUgPT4gMTIzLAogICAgICAgIENsYXNzID0+ICdTb21lIGdlbmVyYWwgY2F0YWxvZyBjbGFzcycKICAgICk7CgogICAgcmV0dXJucwogICAgJE5ld1ZhbHVlID0gJ3NvbWUgdmFsdWUnCgo9Y3V0CgpzdWIgSW52ZXJ0UmVwbGFjZUlucHV0R2VuZXJhbENhdGFsb2cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgZ2V0IHRoZSB2YWx1ZXMgZm9yIHRoZSBHZW5lcmFsIGNhdGFsb2cgY2xhc3MKICAgIG15ICRJdGVtTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17SW5wdXR9LT57Q2xhc3N9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBhIGxva3VwIGxpc3QKICAgIHJldHVybiAkSXRlbUxpc3QtPnskVmFsdWV9Owp9Cgo9aGVhZDIgQ3JlYXRlQXR0YWNobWVudCgpCgpjcmVhdGVzIGEgbmV3IGF0dGFjaG1lbnQgZm9yIHRoZSBnaXZlbiBDb25maWdJdGVtLgoKICAgIG15ICRSZXN1bHQgPSAkQ29tbW9uT2JqZWN0LT5DcmVhdGVBdHRhY2htZW50KAogICAgICAgIENvbnRlbnQgICAgICA9PiAkRGF0YSwgICAgICAgICAgICAgICAgICAgIyBmaWxlIGNvbnRlbnQgKEJhc2U2NCBlbmNvZGVkKQogICAgICAgIENvbnRlbnRUeXBlICA9PiAnc29tZSBjb250ZW50IHR5cGUnLAogICAgICAgIEZpbGVuYW1lICAgICA9PiAnc29tZSBmaWxlbmFtZScsCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDQ1NiwKICAgICAgICBVc2VySUQgICAgICAgPT4gMTIzLAogICAgKTsKCiAgICByZXR1cm5zCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgb2sKICAgIH0KCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nCiAgICB9Cgo9Y3V0CgpzdWIgQ3JlYXRlQXR0YWNobWVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQXR0YWNobWVudCBDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJDcmVhdGVBdHRhY2htZW50KCkgR290IG5vICROZWVkZWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyB3cml0ZSBhdHRhY2htZW50CiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAleyAkUGFyYW17QXR0YWNobWVudH0gfSwKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgQ29udGVudCAgICAgID0+IE1JTUU6OkJhc2U2NDo6ZGVjb2RlX2Jhc2U2NCggJFBhcmFte0F0dGFjaG1lbnR9LT57Q29udGVudH0gKSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAkU3VjY2VzcywKICAgIH07Cn0KCj1oZWFkMiBDaGVja1hNTERhdGEoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBYTUxEYXRhIHZhbHVlIGFyZSB2YWxpZC4KCiAgICBteSAkWE1MRGF0YUNoZWNrID0gJENvbW1vbk9iamVjdC0+Q2hlY2tYTUxEYXRhKAogICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb25BcnJheVJlZiwgICAgICAgICAgIyBDb25maWcgSXRlbSBEZWZpbml0aW9uIG90IGp1c3QgcGFydCBvZiBpdAogICAgICAgIFhNTERhdGEgICAgPT4gJFhNTERhdGFIYXNoUmVmLAogICAgICAgIFBhcmVudCAgICAgPT4gJ3NvbWUgcGFyZW50JywKICAgICk7CgogICAgcmV0dXJuczoKCiAgICAkWE1MRGF0YUNoZWNrID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LCiAgICB9CgogICAgJFhNTERhdGFDaGVjayA9IHsKICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0Z1bmN0aW9uLkVycm9yJywgICAgICAgICAgICMgaWYgZXJyb3IKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0Vycm9yIGRlc2NyaXB0aW9uJywKICAgIH0KCj1jdXQKCnN1YiBDaGVja1hNTERhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRQYXJhbXtEZWZpbml0aW9ufTsKICAgIG15ICRYTUxEYXRhICAgID0gJFBhcmFte1hNTERhdGF9OwogICAgbXkgJFBhcmVudCAgICAgPSAkUGFyYW17UGFyZW50fSB8fCAnJzsKCiAgICBteSAkQ2hlY2tWYWx1ZVJlc3VsdDsKICAgIGZvciBteSAkRGVmSXRlbSAoIEB7JERlZmluaXRpb259ICkgewogICAgICAgIG15ICRJdGVtS2V5ID0gJERlZkl0ZW0tPntLZXl9OwoKICAgICAgICAjIGNoZWNrIGlmIGF0IGxlYXN0IG9uZSBlbGVtZW50IHNob3VsZCBleGlzdAogICAgICAgIGlmICgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgZGVmaW5lZCAkRGVmSXRlbS0+e0NvdW50TWlufQogICAgICAgICAgICAgICAgJiYgJERlZkl0ZW0tPntDb3VudE1pbn0gPj0gMQogICAgICAgICAgICAgICAgJiYgZGVmaW5lZCAkRGVmSXRlbS0+e0lucHV0fS0+e1JlcXVpcmVkfQogICAgICAgICAgICAgICAgJiYgJERlZkl0ZW0tPntJbnB1dH0tPntSZXF1aXJlZH0KICAgICAgICAgICAgKQogICAgICAgICAgICAmJiAoICFkZWZpbmVkICRYTUxEYXRhLT57JEl0ZW1LZXl9IHx8ICEkWE1MRGF0YS0+eyRJdGVtS2V5fSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBtaXNzaW5nISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkWE1MRGF0YS0+eyRJdGVtS2V5fSBlcSAnQVJSQVknICkgewogICAgICAgICAgICBmb3IgbXkgJEFycmF5SXRlbSAoIEB7ICRYTUxEYXRhLT57JEl0ZW1LZXl9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkQXJyYXlJdGVtIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tWYWx1ZVJlc3VsdCA9ICRTZWxmLT5fQ2hlY2tWYWx1ZSgKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICA9PiAkQXJyYXlJdGVtLT57JEl0ZW1LZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCAgID0+ICREZWZJdGVtLT57SW5wdXR9LAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtS2V5ID0+ICRJdGVtS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBQYXJlbnQgID0+ICRQYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkQ2hlY2tWYWx1ZVJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJENoZWNrVmFsdWVSZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCByZWYgJEFycmF5SXRlbSBlcSAnJyApIHsKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tWYWx1ZVJlc3VsdCA9ICRTZWxmLT5fQ2hlY2tWYWx1ZSgKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICA9PiAkQXJyYXlJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCAgID0+ICREZWZJdGVtLT57SW5wdXR9LAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtS2V5ID0+ICRJdGVtS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBQYXJlbnQgID0+ICRQYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkQ2hlY2tWYWx1ZVJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJENoZWNrVmFsdWVSZXN1bHQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDb25maWdJdGVtLT5DSVhNTERhdGEtPiRQYXJlbnQkSXRlbUtleSBwYXJhbWV0ZXIiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCByZWYgJFhNTERhdGEtPnskSXRlbUtleX0gZXEgJ0hBU0gnICkgewogICAgICAgICAgICAkQ2hlY2tWYWx1ZVJlc3VsdCA9ICRTZWxmLT5fQ2hlY2tWYWx1ZSgKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJFhNTERhdGEtPnskSXRlbUtleX0tPnskSXRlbUtleX0sCiAgICAgICAgICAgICAgICBJbnB1dCAgID0+ICREZWZJdGVtLT57SW5wdXR9LAogICAgICAgICAgICAgICAgSXRlbUtleSA9PiAkSXRlbUtleSwKICAgICAgICAgICAgICAgIFBhcmVudCAgPT4gJFBhcmVudCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJENoZWNrVmFsdWVSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkQ2hlY2tWYWx1ZVJlc3VsdDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgb25seSBwZXJmb3JtIGNoZWNrcyBpZiBpdGVtIHJlYWxseSBleGl0cyBpbiB0aGUgWE1MRGF0YQogICAgICAgICAgICAjIENvdW50TmluIGNoZWNrcyB3YXMgdmVyaWZpZWQgYW5kIHBhc3NlZCBiZWZvcmUhLCBzbyBpdCBpcyBzYWZlIHRvIHNraXAgaWYgbmVlZGVkCiAgICAgICAgICAgIGlmICggJFhNTERhdGEtPnskSXRlbUtleX0gKSB7CiAgICAgICAgICAgICAgICAkQ2hlY2tWYWx1ZVJlc3VsdCA9ICRTZWxmLT5fQ2hlY2tWYWx1ZSgKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICRYTUxEYXRhLT57JEl0ZW1LZXl9LAogICAgICAgICAgICAgICAgICAgIElucHV0ICAgPT4gJERlZkl0ZW0tPntJbnB1dH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUtleSA9PiAkSXRlbUtleSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnQgID0+ICRQYXJlbnQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJENoZWNrVmFsdWVSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJENoZWNrVmFsdWVSZXN1bHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgZXhpc3RzIG1vcmUgZWxlbWVudHMgdGhhbiB0aGUgb25lcyB0aGV5IHNob3VsZAogICAgICAgIGlmICggZGVmaW5lZCAkRGVmSXRlbS0+e0NvdW50TWF4fSApCiAgICAgICAgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICByZWYgJFhNTERhdGEtPnskSXRlbUtleX0gZXEgJ0FSUkFZJwogICAgICAgICAgICAgICAgJiYgc2NhbGFyIEB7ICRYTUxEYXRhLT57JEl0ZW1LZXl9IH0gPiAkRGVmSXRlbS0+e0NvdW50TWF4fQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiIHJlcGV0aXRpb25zIGlzIGhpZ2hlciB0aGFuIHRoZSBtYXhpdW0gdmFsdWUhIiwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgYSBzdWIgYW5kIHN0YXJ0IHJlY3Vyc2lvbgogICAgICAgIGlmICggZGVmaW5lZCAkRGVmSXRlbS0+e1N1Yn0gKSB7CgogICAgICAgICAgICBpZiAoIHJlZiAkWE1MRGF0YS0+eyRJdGVtS2V5fSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgICAgICAgICAgZm9yIG15ICRBcnJheUl0ZW0gKCBAeyAkWE1MRGF0YS0+eyRJdGVtS2V5fSB9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiBmb3IgZWFjaCBhcnJheSBpdGVtCiAgICAgICAgICAgICAgICAgICAgbXkgJFhNTERhdGFDaGVjayA9ICRTZWxmLT5DaGVja1hNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZkl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgID0+ICRBcnJheUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmVudCAgICAgPT4gJFBhcmVudCAuICRJdGVtS2V5IC4gIlskQ291bnRlcl0tPiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICEkWE1MRGF0YUNoZWNrLT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkWE1MRGF0YUNoZWNrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggcmVmICRYTUxEYXRhLT57JEl0ZW1LZXl9IGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbgogICAgICAgICAgICAgICAgbXkgJFhNTERhdGFDaGVjayA9ICRTZWxmLT5DaGVja1hNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkWE1MRGF0YS0+eyRJdGVtS2V5fSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnQgICAgID0+ICRQYXJlbnQgLiAkSXRlbUtleSAuICctPicsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFhNTERhdGFDaGVjay0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkWE1MRGF0YUNoZWNrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgc3RhcnQgcmVjdXNyc2lvbgogICAgICAgICAgICAgICAgbXkgJFhNTERhdGFDaGVjayA9ICRTZWxmLT5DaGVja1hNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICA9PiB7fSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnQgICAgID0+ICRQYXJlbnQgLiAkSXRlbUtleSAuICctPicsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFhNTERhdGFDaGVjay0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkWE1MRGF0YUNoZWNrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfTsKfQoKPWhlYWQyIFJlcGxhY2VYTUxEYXRhKCkKCnJlcGxhY2UgdGhlIFhNTERhdGEgdG8gb25lIHRoYXQgdXNlcyBpbnRlcm5hbCB2YWx1ZXMuCgogICAgbXkgJE5ld1hNTERhdGEgPSAkQ29tbW9uT2JqZWN0LT5SZXBsYWNlWE1MRGF0YSgKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uQXJyYXlSZWYsICAgICAgICAgICMgQ29uZmlnIEl0ZW0gRGVmaW5pdGlvbiBvdCBqdXN0IHBhcnQgb2YgaXQKICAgICAgICBYTUxEYXRhICAgID0+ICRYTUxEYXRhSGFzaFJlZiwKICAgICAgICBQYXJlbnQgICAgID0+ICdzb21lIHBhcmVudCcsCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJE5ld1hNTERhdGEgPSAkWE1MRGF0YUhhc2hSZWYsICAgICAgICAgICAgICAgICAgIyB3aXRoIHJlcGxhY2VkIHZhbHVlcwoKPWN1dAoKc3ViIFJlcGxhY2VYTUxEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJERlZmluaXRpb24gPSAkUGFyYW17RGVmaW5pdGlvbn07CiAgICBteSAkWE1MRGF0YSAgICA9ICRQYXJhbXtYTUxEYXRhfTsKICAgIG15ICRQYXJlbnQgICAgID0gJFBhcmFte1BhcmVudH0gfHwgJyc7CgogICAgbXkgJE5ld1hNTERhdGEgPSAkWE1MRGF0YTsKCiAgICBJVEVNOgogICAgZm9yIG15ICREZWZJdGVtICggQHskRGVmaW5pdGlvbn0gKSB7CiAgICAgICAgbXkgJEl0ZW1LZXkgPSAkRGVmSXRlbS0+e0tleX07CgogICAgICAgIG15ICROZXdWYWx1ZTsKCiAgICAgICAgaWYgKCByZWYgJFhNTERhdGEtPnskSXRlbUtleX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgZm9yIG15ICRBcnJheUl0ZW0gKCBAeyAkWE1MRGF0YS0+eyRJdGVtS2V5fSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCByZWYgJEFycmF5SXRlbSBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBuZXcgdmFsdWUKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWUgPSAkU2VsZi0+X1JlcGxhY2VWYWx1ZSgKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICA9PiAkQXJyYXlJdGVtLT57JEl0ZW1LZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCAgID0+ICREZWZJdGVtLT57SW5wdXR9LAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtS2V5ID0+ICRJdGVtS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBQYXJlbnQgID0+ICRQYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyByZXBsYWNlIHRoZSB2YWx1ZSBpbiB0aGUgYXJyYXkKICAgICAgICAgICAgICAgICAgICAkQXJyYXlJdGVtLT57JEl0ZW1LZXl9ID0gJE5ld1ZhbHVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggcmVmICRBcnJheUl0ZW0gZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlID0gJFNlbGYtPl9SZXBsYWNlVmFsdWUoCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJEFycmF5SXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICA9PiAkRGVmSXRlbS0+e0lucHV0fSwKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUtleSA9PiAkSXRlbUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgUGFyZW50ICA9PiAkUGFyZW50LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgcmVwbGFjZSB0aGUgdmFsdWUgaW4gdGhlIGFycmF5CiAgICAgICAgICAgICAgICAgICAgJEFycmF5SXRlbSA9ICROZXdWYWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoIHJlZiAkWE1MRGF0YS0+eyRJdGVtS2V5fSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5fUmVwbGFjZVZhbHVlKAogICAgICAgICAgICAgICAgVmFsdWUgICA9PiAkWE1MRGF0YS0+eyRJdGVtS2V5fS0+eyRJdGVtS2V5fSwKICAgICAgICAgICAgICAgIElucHV0ICAgPT4gJERlZkl0ZW0tPntJbnB1dH0sCiAgICAgICAgICAgICAgICBJdGVtS2V5ID0+ICRJdGVtS2V5LAogICAgICAgICAgICAgICAgUGFyZW50ICA9PiAkUGFyZW50LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZXBsYWNlIHRoZSB2YWx1ZSBpbiB0aGUgaGFzaAogICAgICAgICAgICAkWE1MRGF0YS0+eyRJdGVtS2V5fS0+eyRJdGVtS2V5fSA9ICROZXdWYWx1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIG9ubHkgcGVyZm9ybSByZXBsYWNlIGlmIGl0ZW0gcmVhbGx5IGV4aXRzIGluIHRoZSBYTUxEYXRhCiAgICAgICAgICAgIGlmICggJFhNTERhdGEtPnskSXRlbUtleX0gKSB7CiAgICAgICAgICAgICAgICAkTmV3VmFsdWUgPSAkU2VsZi0+X1JlcGxhY2VWYWx1ZSgKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICRYTUxEYXRhLT57JEl0ZW1LZXl9LAogICAgICAgICAgICAgICAgICAgIElucHV0ICAgPT4gJERlZkl0ZW0tPntJbnB1dH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUtleSA9PiAkSXRlbUtleSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnQgID0+ICRQYXJlbnQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgcmVwbGFjZSB0aGUgcm9vdCB2YWx1ZQogICAgICAgICAgICAgICAgJFhNTERhdGEtPnskSXRlbUtleX0gPSAkTmV3VmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcmVwbGFjZSB2YWx1ZSBpbiB0aGUgcmVzdWx0aW5nIFhNTERhdGEKICAgICAgICBpZiAoICRYTUxEYXRhLT57JEl0ZW1LZXl9ICkgewogICAgICAgICAgICAkTmV3WE1MRGF0YS0+eyRJdGVtS2V5fSA9ICRYTUxEYXRhLT57JEl0ZW1LZXl9OwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB0aGVyZSBpcyBhIHN1YiBhbmQgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgaWYgKCBkZWZpbmVkICREZWZJdGVtLT57U3VifSApIHsKCiAgICAgICAgICAgIGlmICggcmVmICRYTUxEYXRhLT57JEl0ZW1LZXl9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFycmF5SXRlbSAoIEB7ICRYTUxEYXRhLT57JEl0ZW1LZXl9IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uIGZvciBlYWNoIGFycmF5IGl0ZW0KICAgICAgICAgICAgICAgICAgICBteSAkTmV3WE1MRGF0YVBhcnQgPSAkU2VsZi0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZkl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgID0+ICRBcnJheUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmVudCAgICAgPT4gJFBhcmVudCAuICRJdGVtS2V5IC4gIlskQ291bnRlcl0tPiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkTmV3WE1MRGF0YS0+eyRJdGVtS2V5fS0+WyRDb3VudGVyXSA9ICROZXdYTUxEYXRhUGFydDsKICAgICAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggcmVmICRYTUxEYXRhLT57JEl0ZW1LZXl9IGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbgogICAgICAgICAgICAgICAgbXkgJE5ld1hNTERhdGFQYXJ0ID0gJFNlbGYtPlJlcGxhY2VYTUxEYXRhKAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZkl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgPT4gJFhNTERhdGEtPnskSXRlbUtleX0sCiAgICAgICAgICAgICAgICAgICAgUGFyZW50ICAgICA9PiAkUGFyZW50IC4gJEl0ZW1LZXkgLiAnLT4nLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICROZXdYTUxEYXRhLT57JEl0ZW1LZXl9ID0gJE5ld1hNTERhdGFQYXJ0OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCAkWE1MRGF0YS0+eyRJdGVtS2V5fSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzdGFydCByZWN1c3JzaW9uCiAgICAgICAgICAgICAgICAgICAgbXkgJE5ld1hNTERhdGFQYXJ0ID0gJFNlbGYtPlJlcGxhY2VYTUxEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZJdGVtLT57U3VifSwKICAgICAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICA9PiB7fSwKICAgICAgICAgICAgICAgICAgICAgICAgUGFyZW50ICAgICA9PiAkUGFyZW50IC4gJEl0ZW1LZXkgLiAnLT4nLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJE5ld1hNTERhdGEtPnskSXRlbUtleX0gPSAkTmV3WE1MRGF0YVBhcnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gJE5ld1hNTERhdGE7Cn0KCj1oZWFkMiBGb3JtYXRYTUxEYXRhKCkKCkNyZWF0ZSBhIFhNTERhdGEgc3VpdGFibGUgZm9yIFZlcnNpb25BZGQuCgogICAgbXkgJE5ld1hNTERhdGEgPSAkQ29tbW9uT2JqZWN0LT5Gb3JtYXRYTUxEYXRhKAogICAgICAgIFhNTERhdGEgICAgPT4gJFhNTERhdGFIYXNoUmVmLAogICAgICAgIENoaWxkICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICMgb3IgMCwgb3B0aW9uYWwKICAgICk7CgogICAgcmV0dXJuczoKCiAgICAkTmV3WE1MRGF0YSA9ICRYTUxEYXRhSGFzaFJlZiwgICAgICAgICAgICAgICAgICAjIHN1aXRhYmxlIGZvciB2ZXJzaW9uIGFkZAoKPWN1dAoKc3ViIEZvcm1hdFhNTERhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkWE1MRGF0YSA9ICRQYXJhbXtYTUxEYXRhfTsKICAgIG15ICRDaGlsZCAgID0gJFBhcmFte0NoaWxkfTsKCiAgICBteSAkTmV3WE1MRGF0YTsKCiAgICBmb3IgbXkgJFJvb3RLZXkgKCBzb3J0IGtleXMgJXskWE1MRGF0YX0gKSB7CiAgICAgICAgaWYgKCByZWYgJFhNTERhdGEtPnskUm9vdEtleX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgbXkgQE5ld1hNTFBhcnRzOwogICAgICAgICAgICAkTmV3WE1MUGFydHNbMF0gPSB1bmRlZjsKCiAgICAgICAgICAgIGZvciBteSAkQXJyYXlJdGVtICggQHsgJFhNTERhdGEtPnskUm9vdEtleX0gfSApIHsKICAgICAgICAgICAgICAgIGlmICggcmVmICRBcnJheUl0ZW0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIHJvb3Qga2V5IGZyb20gdGhlIGhhc2ggYW5kIGFzc2lnbiBpdCB0byBjb250ZW50IGtleQogICAgICAgICAgICAgICAgICAgIG15ICRDb250ZW50ID0gZGVsZXRlICRBcnJheUl0ZW0tPnskUm9vdEtleX07CgogICAgICAgICAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgICAgICAgICAgICAgbXkgJE5ld1hNTERhdGFQYXJ0ID0gJFNlbGYtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIFhNTERhdGEgPT4gJEFycmF5SXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ2hpbGQgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBATmV3WE1MUGFydHMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29udGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgJXskTmV3WE1MRGF0YVBhcnR9LAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIHJlZiAkQXJyYXlJdGVtIGVxICcnICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQE5ld1hNTFBhcnRzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJEFycmF5SXRlbSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFzc2FtYmxlIHRoZSBmaW5hbCB2YWx1ZSBmcm9tIHRoZSBwYXJ0cyBhcnJheQogICAgICAgICAgICAkTmV3WE1MRGF0YS0+eyRSb290S2V5fSA9IFxATmV3WE1MUGFydHM7CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkWE1MRGF0YS0+eyRSb290S2V5fSBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICBteSBATmV3WE1MUGFydHM7CiAgICAgICAgICAgICROZXdYTUxQYXJ0c1swXSA9IHVuZGVmOwoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSByb290IGtleSBmcm9tIHRoZSBoYXNoIGFuZCBhc3NpZ24gaXQgdG8gY29udGVudCBrZXkKICAgICAgICAgICAgbXkgJENvbnRlbnQgPSBkZWxldGUgJFhNTERhdGEtPnskUm9vdEtleX0tPnskUm9vdEtleX07CgogICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbgogICAgICAgICAgICBteSAkTmV3WE1MRGF0YVBhcnQgPSAkU2VsZi0+Rm9ybWF0WE1MRGF0YSgKICAgICAgICAgICAgICAgIFhNTERhdGEgPT4gJFhNTERhdGEtPnskUm9vdEtleX0sCiAgICAgICAgICAgICAgICBDaGlsZCAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQE5ld1hNTFBhcnRzLCB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRDb250ZW50LAogICAgICAgICAgICAgICAgJXskTmV3WE1MRGF0YVBhcnR9LAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgIyBhc3NhbWJsZSB0aGUgZmluYWwgdmFsdWUgZnJvbSB0aGUgcGFydHMgYXJyYXkKICAgICAgICAgICAgJE5ld1hNTERhdGEtPnskUm9vdEtleX0gPSBcQE5ld1hNTFBhcnRzOwogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCByZWYgJFhNTERhdGEtPnskUm9vdEtleX0gZXEgJycgKSB7CiAgICAgICAgICAgICROZXdYTUxEYXRhLT57JFJvb3RLZXl9ID0gWwogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkWE1MRGF0YS0+eyRSb290S2V5fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF07CiAgICAgICAgfQogICAgfQoKICAgICMgcmV0dXJuIG9ubHkgdGhlIHBhcnQgb24gcmVjdXJzaW9uCiAgICBpZiAoJENoaWxkKSB7CiAgICAgICAgcmV0dXJuICROZXdYTUxEYXRhOwogICAgfQoKICAgICMgcmV0dXJuIHRoZSBjb21wbGV0ZSBYTUxEYXRhIGFzIG5lZWRlZCBmb3IgdmVyc2lvbiBhZGQKICAgIHJldHVybiBbCiAgICAgICAgdW5kZWYsCiAgICAgICAgewogICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJE5ld1hNTERhdGEKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgXTsKfQoKPWhlYWQyIEludmVydEZvcm1hdFhNTERhdGEoKQoKQ3JlYXRlcyBhIHJlYWRhYmxlIFhNTERhdGEuCgogICAgbXkgJE5ld1hNTERhdGEgPSAkQ29tbW9uT2JqZWN0LT5JbnZlcnRGb3JtYXRYTUxEYXRhKAogICAgICAgIFhNTERhdGEgICAgPT4gJFhNTERhdGFIYXNoUmVmLAogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICROZXdYTUxEYXRhID0gJFhNTERhdGFIYXNoUmVmLCAgICAgICAgICAgICAgICAgICMgc3VpdGFibGUgZm9yIHZlcnNpb24gYWRkCgo9Y3V0CgpzdWIgSW52ZXJ0Rm9ybWF0WE1MRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRYTUxEYXRhID0gJFBhcmFte1hNTERhdGF9OwoKICAgIG15ICROZXdYTUxEYXRhOwogICAgbXkgJENvbnRlbnQ7CiAgICBST09USEFTSDoKICAgIGZvciBteSAkUm9vdEhhc2ggKCBAeyRYTUxEYXRhfSApIHsKICAgICAgICBuZXh0IFJPT1RIQVNIIGlmICFkZWZpbmVkICRSb290SGFzaDsKICAgICAgICBkZWxldGUgJFJvb3RIYXNoLT57VGFnS2V5fTsKCiAgICAgICAgZm9yIG15ICRSb290SGFzaEtleSAoIHNvcnQga2V5cyAleyRSb290SGFzaH0gKSB7CiAgICAgICAgICAgIGlmICggcmVmICRSb290SGFzaC0+eyRSb290SGFzaEtleX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIGlmICggc2NhbGFyIEB7ICRSb290SGFzaC0+eyRSb290SGFzaEtleX0gfSA+IDIgKSB7CgogICAgICAgICAgICAgICAgICAgICMgd2UgYXJlIG9uIGFuIGFycmF5CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgICAgICAgICAgICAgIEFSUkFZSVRFTToKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEFycmF5SXRlbSAoIEB7ICRSb290SGFzaC0+eyRSb290SGFzaEtleX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBBUlJBWUlURU0gaWYgIWRlZmluZWQgJEFycmF5SXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRBcnJheUl0ZW0tPntUYWdLZXl9OwoKICAgICAgICAgICAgICAgICAgICAgICAgJENvbnRlbnQgPSBkZWxldGUgJEFycmF5SXRlbS0+e0NvbnRlbnR9IHx8ICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzY2FsYXIga2V5cyAleyRBcnJheUl0ZW19ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1hNTERhdGEtPnskUm9vdEhhc2hLZXl9LT5bJENvdW50ZXJdLT57JFJvb3RIYXNoS2V5fSA9ICRDb250ZW50OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEFycmF5SXRlbUtleSAoIHNvcnQga2V5cyAleyRBcnJheUl0ZW19ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTmV3WE1MRGF0YVBhcnQgPSAkU2VsZi0+SW52ZXJ0Rm9ybWF0WE1MRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSA9PiAkQXJyYXlJdGVtLT57JEFycmF5SXRlbUtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3WE1MRGF0YS0+eyRSb290SGFzaEtleX0tPlskQ291bnRlcl0tPnskQXJyYXlJdGVtS2V5fSA9ICROZXdYTUxEYXRhUGFydDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdYTUxEYXRhLT57JFJvb3RIYXNoS2V5fS0+WyRDb3VudGVyXSA9ICRDb250ZW50OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIHdlIGFyZSBvbiBhIGhhc2ggb3Igc2luZ2xlIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgQVJSQVlJVEVNOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQXJyYXlJdGVtICggQHsgJFJvb3RIYXNoLT57JFJvb3RIYXNoS2V5fSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEFSUkFZSVRFTSBpZiAhZGVmaW5lZCAkQXJyYXlJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEFycmF5SXRlbS0+e1RhZ0tleX07CgogICAgICAgICAgICAgICAgICAgICAgICAkQ29udGVudCA9IGRlbGV0ZSAkQXJyYXlJdGVtLT57Q29udGVudH0gfHwgJyc7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNjYWxhciBrZXlzICV7JEFycmF5SXRlbX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTmV3WE1MRGF0YS0+eyRSb290SGFzaEtleX0tPnskUm9vdEhhc2hLZXl9ID0gJENvbnRlbnQ7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQXJyYXlJdGVtS2V5ICggc29ydCBrZXlzICV7JEFycmF5SXRlbX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICROZXdYTUxEYXRhUGFydCA9ICRTZWxmLT5JbnZlcnRGb3JtYXRYTUxEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxEYXRhID0+ICRBcnJheUl0ZW0tPnskQXJyYXlJdGVtS2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdYTUxEYXRhLT57JFJvb3RIYXNoS2V5fS0+eyRBcnJheUl0ZW1LZXl9ID0gJE5ld1hNTERhdGFQYXJ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1hNTERhdGEtPnskUm9vdEhhc2hLZXl9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgd2UgYXJlIG9uIGEgZmluYWwgbm9kZQogICAgICAgICAgICBlbHNpZiAoIHJlZiAkUm9vdEhhc2gtPnskUm9vdEhhc2hLZXl9IGVxICcnICYmICRSb290SGFzaEtleSBlcSAnQ29udGVudCcgKSB7CiAgICAgICAgICAgICAgICAkTmV3WE1MRGF0YSA9ICRSb290SGFzaC0+eyRSb290SGFzaEtleX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICROZXdYTUxEYXRhOwp9Cgo9aGVhZDIgSW52ZXJ0UmVwbGFjZVhNTERhdGEoKQoKcmVwbGFjZSB0aGUgWE1MRGF0YSB0byBvbmUgdGhhdCB1c2VzIHVzZXIgdmFsdWVzLgoKICAgIG15ICROZXdYTUxEYXRhID0gJENvbW1vbk9iamVjdC0+SW52ZXJ0UmVwbGFjZVhNTERhdGEoCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkFycmF5UmVmLCAgICAgICAgICAjIENvbmZpZyBJdGVtIERlZmluaXRpb24gb3QganVzdCBwYXJ0IG9mIGl0CiAgICAgICAgWE1MRGF0YSAgICA9PiAkWE1MRGF0YUhhc2hSZWYsCiAgICAgICAgUGFyZW50ICAgICA9PiAnc29tZSBwYXJlbnQnLAogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICROZXdYTUxEYXRhID0gJFhNTERhdGFIYXNoUmVmLCAgICAgICAgICAgICAgICAgICMgd2l0aCByZXBsYWNlZCB2YWx1ZXMKCj1jdXQKCnN1YiBJbnZlcnRSZXBsYWNlWE1MRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJFBhcmFte0RlZmluaXRpb259OwogICAgbXkgJFhNTERhdGEgICAgPSAkUGFyYW17WE1MRGF0YX07CiAgICBteSAkUGFyZW50ICAgICA9ICRQYXJhbXtQYXJlbnR9IHx8ICcnOwoKICAgIG15ICROZXdYTUxEYXRhID0gJFhNTERhdGE7CgogICAgSVRFTToKICAgIGZvciBteSAkRGVmSXRlbSAoIEB7JERlZmluaXRpb259ICkgewogICAgICAgIG15ICRJdGVtS2V5ID0gJERlZkl0ZW0tPntLZXl9OwoKICAgICAgICBteSAkTmV3VmFsdWU7CgogICAgICAgIGlmICgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJFhNTERhdGEpCiAgICAgICAgICAgICYmICRYTUxEYXRhLT57JEl0ZW1LZXl9CiAgICAgICAgICAgICYmIHJlZiAkWE1MRGF0YS0+eyRJdGVtS2V5fSBlcSAnQVJSQVknCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBmb3IgbXkgJEFycmF5SXRlbSAoIEB7ICRYTUxEYXRhLT57JEl0ZW1LZXl9IH0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCByZWYgJEFycmF5SXRlbSBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBuZXcgdmFsdWUKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWUgPSAkU2VsZi0+X0ludmVydFJlcGxhY2VWYWx1ZSgKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICA9PiAkQXJyYXlJdGVtLT57JEl0ZW1LZXl9LAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCAgID0+ICREZWZJdGVtLT57SW5wdXR9LAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtS2V5ID0+ICRJdGVtS2V5LAogICAgICAgICAgICAgICAgICAgICAgICBQYXJlbnQgID0+ICRQYXJlbnQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyByZXBsYWNlIHRoZSB2YWx1ZSBpbiB0aGUgYXJyYXkKICAgICAgICAgICAgICAgICAgICAkQXJyYXlJdGVtLT57JEl0ZW1LZXl9ID0gJE5ld1ZhbHVlOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggcmVmICRBcnJheUl0ZW0gZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlID0gJFNlbGYtPl9JbnZlcnRSZXBsYWNlVmFsdWUoCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJEFycmF5SXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICA9PiAkRGVmSXRlbS0+e0lucHV0fSwKICAgICAgICAgICAgICAgICAgICAgICAgSXRlbUtleSA9PiAkSXRlbUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgUGFyZW50ICA9PiAkUGFyZW50LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgcmVwbGFjZSB0aGUgdmFsdWUgaW4gdGhlIGFycmF5CiAgICAgICAgICAgICAgICAgICAgJEFycmF5SXRlbSA9ICROZXdWYWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCRYTUxEYXRhKQogICAgICAgICAgICAmJiAkWE1MRGF0YS0+eyRJdGVtS2V5fQogICAgICAgICAgICAmJiByZWYgJFhNTERhdGEtPnskSXRlbUtleX0gZXEgJ0hBU0gnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5fSW52ZXJ0UmVwbGFjZVZhbHVlKAogICAgICAgICAgICAgICAgVmFsdWUgICA9PiAkWE1MRGF0YS0+eyRJdGVtS2V5fS0+eyRJdGVtS2V5fSwKICAgICAgICAgICAgICAgIElucHV0ICAgPT4gJERlZkl0ZW0tPntJbnB1dH0sCiAgICAgICAgICAgICAgICBJdGVtS2V5ID0+ICRJdGVtS2V5LAogICAgICAgICAgICAgICAgUGFyZW50ICA9PiAkUGFyZW50LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyByZXBsYWNlIHRoZSB2YWx1ZSBpbiB0aGUgaGFzaAogICAgICAgICAgICAkWE1MRGF0YS0+eyRJdGVtS2V5fS0+eyRJdGVtS2V5fSA9ICROZXdWYWx1ZTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIG9ubHkgcGVyZm9ybSByZXBsYWNlIGlmIGl0ZW0gcmVhbGx5IGV4aXRzIGluIHRoZSBYTUxEYXRhCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFhNTERhdGEpICYmICRYTUxEYXRhLT57JEl0ZW1LZXl9ICkgewogICAgICAgICAgICAgICAgJE5ld1ZhbHVlID0gJFNlbGYtPl9JbnZlcnRSZXBsYWNlVmFsdWUoCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICA9PiAkWE1MRGF0YS0+eyRJdGVtS2V5fSwKICAgICAgICAgICAgICAgICAgICBJbnB1dCAgID0+ICREZWZJdGVtLT57SW5wdXR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1LZXkgPT4gJEl0ZW1LZXksCiAgICAgICAgICAgICAgICAgICAgUGFyZW50ICA9PiAkUGFyZW50LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHJlcGxhY2UgdGhlIHJvb3QgdmFsdWUKICAgICAgICAgICAgICAgICRYTUxEYXRhLT57JEl0ZW1LZXl9ID0gJE5ld1ZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHJlcGxhY2UgdmFsdWUgaW4gdGhlIHJlc3VsdGluZyBYTUxEYXRhCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkWE1MRGF0YSkgJiYgJFhNTERhdGEtPnskSXRlbUtleX0gKSB7CiAgICAgICAgICAgICROZXdYTUxEYXRhLT57JEl0ZW1LZXl9ID0gJFhNTERhdGEtPnskSXRlbUtleX07CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIGlzIGEgc3ViIGFuZCBzdGFydCByZWN1cnNpb24KICAgICAgICBpZiAoIGRlZmluZWQgJERlZkl0ZW0tPntTdWJ9ICkgewoKICAgICAgICAgICAgaWYgKCByZWYgJFhNTERhdGEtPnskSXRlbUtleX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkQXJyYXlJdGVtICggQHsgJFhNTERhdGEtPnskSXRlbUtleX0gfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24gZm9yIGVhY2ggYXJyYXkgaXRlbQogICAgICAgICAgICAgICAgICAgIG15ICROZXdYTUxEYXRhUGFydCA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlWE1MRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgPT4gJEFycmF5SXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgUGFyZW50ICAgICA9PiAkUGFyZW50IC4gJEl0ZW1LZXkgLiAiWyRDb3VudGVyXS0+IiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICROZXdYTUxEYXRhLT57JEl0ZW1LZXl9LT5bJENvdW50ZXJdID0gJE5ld1hNTERhdGFQYXJ0OwogICAgICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCByZWYgJFhNTERhdGEtPnskSXRlbUtleX0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgICAgICAgICBteSAkTmV3WE1MRGF0YVBhcnQgPSAkU2VsZi0+SW52ZXJ0UmVwbGFjZVhNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkWE1MRGF0YS0+eyRJdGVtS2V5fSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnQgICAgID0+ICRQYXJlbnQgLiAkSXRlbUtleSAuICctPicsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE5ld1hNTERhdGEtPnskSXRlbUtleX0gPSAkTmV3WE1MRGF0YVBhcnQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoICRYTUxEYXRhLT57JEl0ZW1LZXl9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0IHJlY3VzcnNpb24KICAgICAgICAgICAgICAgICAgICBteSAkTmV3WE1MRGF0YVBhcnQgPSAkU2VsZi0+SW52ZXJ0UmVwbGFjZVhNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZkl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgID0+IHt9LAogICAgICAgICAgICAgICAgICAgICAgICBQYXJlbnQgICAgID0+ICRQYXJlbnQgLiAkSXRlbUtleSAuICctPicsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkTmV3WE1MRGF0YS0+eyRJdGVtS2V5fSA9ICROZXdYTUxEYXRhUGFydDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiAkTmV3WE1MRGF0YTsKfQoKPWhlYWQxIElOVEVSTkFMIElOVEVSRkFDRQoKPWhlYWQyIF9DaGFyc2V0TGlzdCgpCgpyZXR1cm5zIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIGNoYXJzZXRzLgoKICAgIG15ICRDaGFyc2V0TGlzdCA9ICRDb21tb25PYmplY3QtPl9DaGFyc2V0TGlzdCgKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAgKTsKCiAgICByZXR1cm5zCiAgICAkU3VjY2VzcyA9IHsKICAgICAgICAjLi4uCiAgICAgICAgaXNvLTg4NTktMSAgPT4gMSwKICAgICAgICBpc28tODg1OS0xNSA9PiAxLAogICAgICAgIE1hY1JvbWFuICAgID0+IDEsCiAgICAgICAgdXRmOCAgICAgICAgPT4gMSwKICAgICAgICAjLi4uCiAgICB9Cgo9Y3V0CgpzdWIgX0NoYXJzZXRMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY2hhcnNldCBhcnJheQogICAgdXNlIEVuY29kZTsKICAgIG15IEBDaGFyc2V0TGlzdCA9IEVuY29kZS0+ZW5jb2RpbmdzKCI6YWxsIik7CgogICAgbXkgJUNoYXJzZXRIYXNoOwoKICAgICMgY3JlYXRlIGEgY2hhcnNldCBsb29rdXAgdGFibGUKICAgIGZvciBteSAkQ2hhcnNldCAoQENoYXJzZXRMaXN0KSB7CiAgICAgICAgJENoYXJzZXRIYXNoeyRDaGFyc2V0fSA9IDE7CiAgICB9CgogICAgcmV0dXJuIFwlQ2hhcnNldEhhc2g7Cn0KCj1oZWFkMiBfQ2hlY2tWYWx1ZSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRWYWx1ZUNoZWNrID0gJENvbW1vbk9iamVjdC0+X0NoZWNrVmFsdWUoCiAgICAgICAgVmFsdWUgICA9PiAkVmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAjICRWYWx1ZSBjb3VsZCBiZSBhIHN0cmluZywgYSB0aW1lIHN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBuYW1lLCBvciBhIGludGVnZXIKICAgICAgICBJbnB1dCAgID0+ICRJbnB1dERlZmluaXRpb25IYXNoUmVmLCAgICAgICMgVGhlIGRlZmluaXRpb24gb2YgdGhlIGVsZW1lbnQgaW5wdXQgZXh0cmFjdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZnJvbSB0aGUgQ29uZmlndXJhdGlvbiBJdGVtIGRlZmluaXRpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIGVhY2ggdmFsdWUKICAgICAgICBJdGVtS2V5ID0+ICdzb21lIGtleScsICAgICAgICAgICAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIHZhbHVlIGFzIHNlbnQgaW4gdGhlIFNPQVAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1ZXN0CiAgICAgICAgUGFyZW50ICA9PiAnc29lbSBwYXJlbnQga2V5LT4nLCAgICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgZm9sbG93ZWQgYnkgLT4gb3IgZW1wdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3Igcm9vdCBrZXkgaXRlbXMKICAgICk7CgogICAgcmV0dXJuczoKCiAgICAkVmFsdWVDaGVjayA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgZXZlcnl0aGluZyBpcyBPSwogICAgfQoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja1ZhbHVlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhcmVudCAgPSAkUGFyYW17UGFyZW50fTsKICAgIG15ICRJdGVtS2V5ID0gJFBhcmFte0l0ZW1LZXl9OwoKICAgIGlmICgKICAgICAgICBkZWZpbmVkICRQYXJhbXtJbnB1dH0tPntSZXF1aXJlZH0gJiYgJFBhcmFte0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJFBhcmFte1ZhbHVlfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgIC4gIiBpcyByZXF1aXJlZCBhbmQgaXMgbWlzc2luZyEiLAogICAgICAgIH07CiAgICB9CgogICAgaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ1RleHQnIHx8ICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnVGV4dEFyZWEnICkgewoKICAgICAgICAjIHJ1biBUZXh0IHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXRUZXh0KCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBleGNlZGVzIHRoZSBtYXhpdW0gbGVuZ3RoISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0RhdGUnICkgewoKICAgICAgICAjIHJ1biBEYXRlIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBEYXRlIGZvcm1hdCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdEYXRlVGltZScgKSB7CgogICAgICAgICMgcnVuIERhdGVUaW1lIHZhbGlkYXRpb25zCiAgICAgICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlVGltZSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgRGF0ZVRpbWUgZm9ybWF0ISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgIyBydW4gQ3VzdG9tZXIgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBjdXN0b21lciEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdDdXN0b21lckNvbXBhbnknICkgewoKICAgICAgICAjIHJ1biBDdXN0b21lckNvbXBhbnkgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEN1c3RvbWVyQ29tcGFueSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgY3VzdG9tZXIgY29tcGFueSEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdJbnRlZ2VyJyApIHsKCiAgICAgICAgIyBydW4gSW50ZWdlciB2YWxpZGF0aW9ucwogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUlucHV0SW50ZWdlciglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgSW50ZWdlciBvciBvdXQgb2YgcmFuZ2UhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnR2VuZXJhbENhdGFsb2cnICkgewoKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCVQYXJhbSkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT4kUGFyZW50JEl0ZW1LZXkgcGFyYW1ldGVyIHZhbHVlIgogICAgICAgICAgICAgICAgICAgIC4gIiBpcyBub3QgYSB2YWxpZCBmb3IgR2VuZXJhbCBDYXRhbG9nICckUGFyYW17SW5wdXR9LT57Q2xhc3N9JyEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIFRoZSB0eXBlIGlzIGR1bW15LCBkbyBub3RoaW5nCiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgX1JlcGxhY2VWYWx1ZSgpCgpyZXBsYWNlIHVzZXIgdmFsdWVzIHdpdGggc3lzdGVtIHJlYWR5IHZhbHVlcy4KCiAgICBteSAkTmV3VmFsdWUgPSAkQ29tbW9uT2JqZWN0LT5fUmVwbGFjZVZhbHVlKAogICAgICAgIFZhbHVlICAgPT4gJFZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgIyAkVmFsdWUgY291bGQgYmUgYSBzdHJpbmcsIGEgdGltZSBzdGFtcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgbmFtZSwgb3IgYSBpbnRlZ2VyCiAgICAgICAgSW5wdXQgICA9PiAkSW5wdXREZWZpbml0aW9uSGFzaFJlZiwgICAgICAjIFRoZSBkZWZpbml0aW9uIG9mIHRoZSBlbGVtZW50IGlucHV0IGV4dHJhY3RlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZyb20gdGhlIENvbmZpZ3VyYXRpb24gSXRlbSBkZWZpbml0aW9uIGZvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGZvciBlYWNoIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIHJvb3Qga2V5IGl0ZW1zCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJE5ld1ZhbHVlID0gJEFOZXdWYWx1ZQoKPWN1dAoKc3ViIF9SZXBsYWNlVmFsdWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCB0aGUgbGlzdCBvZiBpbnB1dCB0eXBlcyB0aGF0IG5lZWRzIHRvIGJlIHJlcGxhY2VkCiAgICBteSAlUmVwbGFjZUlucHV0VHlwZXMgPSAoCiAgICAgICAgRGF0ZSAgICAgICAgICAgPT4gMSwKICAgICAgICBEYXRlVGltZSAgICAgICA9PiAxLAogICAgICAgIEdlbmVyYWxDYXRhbG9nID0+IDEsCiAgICApOwogICAgaWYgKCAhJFJlcGxhY2VJbnB1dFR5cGVzeyAkUGFyYW17SW5wdXR9LT57VHlwZX0gfSApIHsKICAgICAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKICAgIH0KCiAgICBteSAkTmV3VmFsdWU7CgogICAgaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0RhdGUnICkgewoKICAgICAgICAjIHJ1biBEYXRlIHJlcGxhY2UKICAgICAgICAkTmV3VmFsdWUgPSAkU2VsZi0+UmVwbGFjZUlucHV0RGF0ZSglUGFyYW0pOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKCiAgICAgICAgIyBydW4gRGF0ZVRpbWUgcmVwbGFjZQogICAgICAgICROZXdWYWx1ZSA9ICRTZWxmLT5SZXBsYWNlSW5wdXREYXRlVGltZSglUGFyYW0pOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgIyBydW4gR2VuZXJhbCBDYXRhbG9nIHJlcGxhY2UKICAgICAgICAkTmV3VmFsdWUgPSAkU2VsZi0+UmVwbGFjZUlucHV0R2VuZXJhbENhdGFsb2coJVBhcmFtKTsKICAgIH0KCiAgICByZXR1cm4gJE5ld1ZhbHVlOwp9Cgo9aGVhZDIgX0ludmVydFJlcGxhY2VWYWx1ZSgpCgpyZXBsYWNlIGludGVybmFsIHZhbHVlcyB3aXRoIHVzZXIgdmFsdWVzLgoKICAgIG15ICROZXdWYWx1ZSA9ICRPcGVyYXRpb25PYmplY3QtPl9JbnZlcnRSZXBsYWNlVmFsdWUoCiAgICAgICAgVmFsdWUgICA9PiAkVmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAjICRWYWx1ZSBjb3VsZCBiZSBhIHN0cmluZywgYSB0aW1lIHN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBuYW1lLCBvciBhIGludGVnZXIKICAgICAgICBJbnB1dCAgID0+ICRJbnB1dERlZmluaXRpb25IYXNoUmVmLCAgICAgICMgVGhlIGRlZmluaXRpb24gb2YgdGhlIGVsZW1lbnQgaW5wdXQgZXh0cmFjdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZnJvbSB0aGUgQ29uZmlndXJhdGlvbiBJdGVtIGRlZmluaXRpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIGVhY2ggdmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3Igcm9vdCBrZXkgaXRlbXMKICAgICk7CgogICAgcmV0dXJuczoKCiAgICAkTmV3VmFsdWUgPSAkQU5ld1ZhbHVlCgo9Y3V0CgpzdWIgX0ludmVydFJlcGxhY2VWYWx1ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IHRoZSBsaXN0IG9mIGlucHV0IHR5cGVzIHRoYXQgbmVlZHMgdG8gYmUgcmVwbGFjZWQKICAgIG15ICVSZXBsYWNlSW5wdXRUeXBlcyA9ICgKICAgICAgICBEYXRlICAgICAgICAgICA9PiAxLAogICAgICAgIEdlbmVyYWxDYXRhbG9nID0+IDEsCiAgICApOwoKICAgIGlmICggISRSZXBsYWNlSW5wdXRUeXBlc3sgJFBhcmFte0lucHV0fS0+e1R5cGV9IH0gKSB7CiAgICAgICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgbXkgJE5ld1ZhbHVlOwoKICAgIGlmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdEYXRlJyApIHsKCiAgICAgICAgIyBydW4gRGF0ZSByZXBsYWNlCiAgICAgICAgJE5ld1ZhbHVlID0gJFNlbGYtPkludmVydFJlcGxhY2VJbnB1dERhdGUoJVBhcmFtKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgcnVuIEdlbmVyYWwgQ2F0YWxvZyByZXBsYWNlCiAgICAgICAgJE5ld1ZhbHVlID0gJFNlbGYtPkludmVydFJlcGxhY2VJbnB1dEdlbmVyYWxDYXRhbG9nKCVQYXJhbSk7CiAgICB9CgogICAgcmV0dXJuICROZXdWYWx1ZTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemCreate.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBwYXJlbnQgcXcoCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uCik7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUgLSBHZW5lcmljSW50ZXJmYWNlIENvbmZpZ0l0ZW0gQ29uZmlnSXRlbUNyZWF0ZSBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1DcmVhdGUnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtQ3JlYXRlJyk7CgogICAgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdFZhbHVlfSA9ICdOb3QgRGVmaW5lZCc7CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBjb25maWcgaXRlbSBjbGFzc2VzCiAgICAkU2VsZi0+e0NsYXNzTGlzdH0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0NsYXNzTGlzdH0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntEZWJ1Z2dlck9iamVjdH0tPkVycm9yKAogICAgICAgICAgICBTdW1tYXJ5ID0+ICdFcnJvciB3aGVuIHRyeWluZyB0byBnZXQgY2xhc3MgbGlzdGluZyBvZiBJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBhIGxpc3Qgb2YgYWxsIGluY2lzdGF0ZXMKICAgICRTZWxmLT57SW5jaVN0YXRlTGlzdH0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57SW5jaVN0YXRlTGlzdH0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntEZWJ1Z2dlck9iamVjdH0tPkVycm9yKAogICAgICAgICAgICBTdW1tYXJ5ID0+ICdFcnJvciB3aGVuIHRyeWluZyB0byBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdGluZyBvZicKICAgICAgICAgICAgICAgIC4gJyBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGEgbGlzdCBvZiBhbGwgZGVwbHN0YXRlcwogICAgJFNlbGYtPntEZXBsU3RhdGVMaXN0fSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0RlcGxTdGF0ZUxpc3R9ICkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57RGVidWdnZXJPYmplY3R9LT5FcnJvcigKICAgICAgICAgICAgU3VtbWFyeSA9PiAnRXJyb3Igd2hlbiB0cnlpbmcgdG8gZ2V0IGluY2lkZW50IHN0YXRlIGxpc3Rpbmcgb2YnCiAgICAgICAgICAgICAgICAuICcgSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApOwogICAgfQoKICAgICMgYWxzbyBwcm92aWRlIHRoZSBjbGFzc2xpc3QgaW4gcmV2ZXJzZWQgZm9ybSBmb3IgZWFzaWVyIHJldmVyc2UgbG9va3VwcwogICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICV7ICRTZWxmLT57Q2xhc3NMaXN0fSB9OwogICAgJFNlbGYtPntSZXZlcnNlQ2xhc3NMaXN0fSA9IFwlUmV2ZXJzZUNsYXNzTGlzdDsKCiAgICAjIGFsc28gcHJvdmlkZSB0aGUgaW5jaXN0YXRlbGlzdCBpbiByZXZlcnNlZCBmb3JtIGZvciBlYXNpZXIgcmV2ZXJzZSBsb29rdXBzCiAgICBteSAlUmV2ZXJzZUluY2lTdGF0ZUxpc3QgPSByZXZlcnNlICV7ICRTZWxmLT57SW5jaVN0YXRlTGlzdH0gfTsKICAgICRTZWxmLT57UmV2ZXJzZUluY2lTdGF0ZUxpc3R9ID0gXCVSZXZlcnNlSW5jaVN0YXRlTGlzdDsKCiAgICAjIGFsc28gcHJvdmlkZSB0aGUgZGVwbHN0YXRlbGlzdCBpbiByZXZlcnNlZCBmb3JtIGZvciBlYXNpZXIgcmV2ZXJzZSBsb29rdXBzCiAgICBteSAlUmV2ZXJzZURlcGxTdGF0ZUxpc3QgPSByZXZlcnNlICV7ICRTZWxmLT57RGVwbFN0YXRlTGlzdH0gfTsKICAgICRTZWxmLT57UmV2ZXJzZURlcGxTdGF0ZUxpc3R9ID0gXCVSZXZlcnNlRGVwbFN0YXRlTGlzdDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBDb25maWdJdGVtQ3JlYXRlIE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiB0aGUgY3JlYXRlZCBjb25maWcgaXRlbSBudW1iZXIuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luICAgICAgICAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgIyBVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1aXJlZAogICAgICAgICAgICBTZXNzaW9uSUQgICAgICAgICA9PiAxMjMsCgogICAgICAgICAgICBQYXNzd29yZCAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBpcyBzZW50IHRoZW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIFBhc3N3b3JkIGlzIHJlcXVpcmVkCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgID0+ICcxMTEnLCAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ0NvbmZpZyBJdGVtIENsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVGhlIE5hbWUnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgID0+ICdkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICA9PiAnaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgID0+ICRBcnJheUhhc2hSZWYsICAgICAgICAgICAgICAjIGl0IGRlcGVuZHMgb24gdGhlIENvbmZpZ3VyYXRpb24gSXRlbSBjbGFzcyBhbmQgZGVmaW5pdGlvbgoKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ2NvbnRlbnQnICAgICAgICAgICAgIyBiYXNlNjQgZW5jb2RlZAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnc29tZSBjb250ZW50IHR5cGUnCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdzb21lIGZpbmUgbmFtZScKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgI29yCiAgICAgICAgICAgICAgICAjQXR0YWNobWVudCA9PiB7CiAgICAgICAgICAgICAgICAjICAgIENvbnRlbnQgICAgID0+ICdjb250ZW50JwogICAgICAgICAgICAgICAgIyAgICBDb250ZW50VHlwZSA9PiAnc29tZSBjb250ZW50IHR5cGUnCiAgICAgICAgICAgICAgICAjICAgIEZpbGVuYW1lICAgID0+ICdzb21lIGZpbmUgbmFtZScKICAgICAgICAgICAgICAgICN9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSAgICA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAjIENvbmZpZ3VyYXRpb24gSXRlbSAgSUQgbnVtYmVyIGluIE9UUlM6OklUU00gKFNlcnZpY2UgZGVzayBzeXN0ZW0pCiAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAyMzI0NDU0MzIzMzIyICAgICAgICAgICAjIENvbmZpZ3VyYXRpb24gSXRlbSAgTnVtYmVyIGluIE9UUlM6OklUU00gKFNlcnZpY2UgZGVzayBzeXN0ZW0pCiAgICAgICAgICAgIEVycm9yID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBub3QgcmV0dXJuIGVycm9ycwogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5FcnJvckNvZGUnCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdFcnJvciBEZXNjcmlwdGlvbicKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPkluaXQoCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoCiAgICAgICAgISRQYXJhbXtEYXRhfS0+e1VzZXJMb2dpbn0KICAgICAgICAmJiAhJFBhcmFte0RhdGF9LT57U2Vzc2lvbklEfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMgcmVxdWlyZWQhIiwKICAgICAgICApOwogICAgfQoKICAgIGlmICggJFBhcmFte0RhdGF9LT57VXNlckxvZ2lufSApIHsKCiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57UGFzc3dvcmR9ICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFBhc3N3b3JkIG9yIFNlc3Npb25JRCBpcyByZXF1aXJlZCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGF1dGhlbnRpY2F0ZSB1c2VyCiAgICBteSAoICRVc2VySUQsICRVc2VyVHlwZSApID0gJFNlbGYtPkF1dGgoJVBhcmFtKTsKCiAgICBpZiAoICEkVXNlcklEICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BdXRoRmFpbCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogVXNlciBjb3VsZCBub3QgYmUgYXV0aGVudGljYXRlZCEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgaGFzaGVzCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbSkpIHsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5NaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkTmVlZGVkIHBhcmFtZXRlciBpcyBtaXNzaW5nIG9yIG5vdCB2YWxpZCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGlzb2xhdGUgY29uZmlnIGl0ZW0gcGFyYW1ldGVyCiAgICBteSAkQ29uZmlnSXRlbSA9ICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW19OwoKICAgICMgcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXskQ29uZmlnSXRlbX0gKSB7CiAgICAgICAgaWYgKCByZWYgJEF0dHJpYnV0ZSBuZSAnSEFTSCcgJiYgcmVmICRBdHRyaWJ1dGUgbmUgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICNyZW1vdmUgbGVhZGluZyBzcGFjZXMKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPnskQXR0cmlidXRlfSA9fiBze1xBXHMrfXt9OwoKICAgICAgICAgICAgI3JlbW92ZSB0cmFpbGluZyBzcGFjZXMKICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPnskQXR0cmlidXRlfSA9fiBze1xzK1x6fXt9OwogICAgICAgIH0KICAgIH0KCiAgICAjIENJWE1MRGF0YSBpcyBub3QgbWFuZGF0b3J5LCBidXQgaXQgbXVzdCBiZSBIYXNoUmVmIGlmIGV4aXN0cy4KICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0gKSB7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRDb25maWdJdGVtLT57Q0lYTUxEYXRhfSApICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDb25maWdJdGVtLT5DSVhNTERhdGEgaXMgbWlzc2luZyBvciBpbnZhbGlkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgZm9yIENJWE1MRGF0YSAobXVzdCBiZSBIYXNoUmVmKS4KICAgICAgICAkU2VsZi0+X0NsZWFuWE1MRGF0YSggWE1MRGF0YSA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0gKTsKICAgIH0KCiAgICAjIGNoZWNrIENvbmZpZ0l0ZW0gYXR0cmlidXRlIHZhbHVlcwogICAgbXkgJENvbmZpZ0l0ZW1DaGVjayA9ICRTZWxmLT5fQ2hlY2tDb25maWdJdGVtKCBDb25maWdJdGVtID0+ICRDb25maWdJdGVtICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1DaGVjay0+e1N1Y2Nlc3N9ICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoICV7JENvbmZpZ0l0ZW1DaGVja30gKTsKICAgIH0KCiAgICAjIGNoZWNrIGNyZWF0ZSBwZXJtaXNzaW9ucwogICAgbXkgJFBlcm1pc3Npb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgQ2xhc3NJRCA9PiAkU2VsZi0+e1JldmVyc2VDbGFzc0xpc3R9LT57ICRDb25maWdJdGVtLT57Q2xhc3N9IH0sCiAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICApOwoKICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BY2Nlc3NEZW5pZWQiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENhbiBub3QgY3JlYXRlIGNvbmZpZ3VyYXRpb24gaXRlbXMhIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRBdHRhY2htZW50OwogICAgbXkgQEF0dGFjaG1lbnRMaXN0OwoKICAgIGlmICggZGVmaW5lZCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtfS0+e0F0dGFjaG1lbnR9ICkgewoKICAgICAgICAjIGlzb2xhdGUgQXR0YWNobWVudCBwYXJhbWV0ZXIKICAgICAgICAkQXR0YWNobWVudCA9IGRlbGV0ZSAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtfS0+e0F0dGFjaG1lbnR9OwoKICAgICAgICAjIGhvbW9sb2dhdGUgaW1wdXQgdG8gYXJyYXkKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KSApIHsKICAgICAgICAgICAgcHVzaCBAQXR0YWNobWVudExpc3QsICRBdHRhY2htZW50OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQXR0YWNobWVudCkgKSB7CiAgICAgICAgICAgIEBBdHRhY2htZW50TGlzdCA9IEB7JEF0dGFjaG1lbnR9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDb25maWdJdGVtLT5BdHRhY2htZW50IHBhcmFtZXRlciBpcyBpbnZhbGlkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIEF0dGFjaG1lbnQgaW50ZXJuYWwgc3RydWN0dXJlCiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50SXRlbSAoQEF0dGFjaG1lbnRMaXN0KSB7CiAgICAgICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50SXRlbSkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgcGFyYW1ldGVyIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcwogICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyRBdHRhY2htZW50SXRlbX0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkQXR0cmlidXRlIG5lICdIQVNIJyAmJiByZWYgJEF0dHJpYnV0ZSBuZSAnQVJSQVknICkgewoKICAgICAgICAgICAgICAgICAgICAjcmVtb3ZlIGxlYWRpbmcgc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRJdGVtLT57JEF0dHJpYnV0ZX0gPX4gc3tcQVxzK317fTsKCiAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSB0cmFpbGluZyBzcGFjZXMKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudEl0ZW0tPnskQXR0cmlidXRlfSA9fiBze1xzK1x6fXt9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIEF0dGFjaG1lbnQgYXR0cmlidXRlIHZhbHVlcwogICAgICAgICAgICBteSAkQXR0YWNobWVudENoZWNrID0gJFNlbGYtPl9DaGVja0F0dGFjaG1lbnQoIEF0dGFjaG1lbnQgPT4gJEF0dGFjaG1lbnRJdGVtICk7CgogICAgICAgICAgICBpZiAoICEkQXR0YWNobWVudENoZWNrLT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKCAleyRBdHRhY2htZW50Q2hlY2t9ICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fQ29uZmlnSXRlbUNyZWF0ZSgKICAgICAgICBDb25maWdJdGVtICAgICA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBBdHRhY2htZW50TGlzdCA9PiBcQEF0dGFjaG1lbnRMaXN0LAogICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRVc2VySUQsCiAgICApOwp9Cgo9aGVhZDEgSU5URVJOQUwgSU5URVJGQUNFCgo9aGVhZDIgX0NsZWFuWE1MRGF0YSgpCgpyZW1vdmVkIHRyYWlsaW5nIGFuZCBsZWFkaW5nIHdoaXRlIHNwYWNlcyBpbiB0aGUgWE1MRGF0YS4KCiAgICBteSAkWE1MRGF0YUNsZWFuID0gJE9wZXJhdGlvbk9iamVjdC0+X0NsZWFuWE1MRGF0YSgKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uQXJyYXlSZWYsICAgICAgICAgICMgQ29uZmlnIEl0ZW0gRGVmaW5pdGlvbiBvdCBqdXN0IHBhcnQgb2YgaXQKICAgICAgICBYTUxEYXRhICAgID0+ICRYTUxEYXRhSGFzaFJlZiwKICAgICk7CgogICAgcmV0dXJuczoKCiAgICAkWE1MRGF0YUNsZWFuID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LCiAgICB9CgogICAgJFhNTERhdGFDbGVhbiA9IHsKICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0Z1bmN0aW9uLkVycm9yJywgICAgICAgICAgICMgaWYgZXJyb3IKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0Vycm9yIGRlc2NyaXB0aW9uJywKICAgIH0KCj1jdXQKCnN1YiBfQ2xlYW5YTUxEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFhNTERhdGEgPSAkUGFyYW17WE1MRGF0YX07CgogICAgS0VZOgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskWE1MRGF0YX0gKSB7CiAgICAgICAgaWYgKCByZWYgJFhNTERhdGEtPnskS2V5fSBlcSAnQVJSQVknICkgewogICAgICAgICAgICBFTEVNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBAeyAkWE1MRGF0YS0+eyRLZXl9IH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoIHJlZiAkRWxlbWVudCBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPl9DbGVhblhNTERhdGEoIFhNTERhdGEgPT4gJEVsZW1lbnQgKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IEVMRU1FTlQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIHJlZiAkRWxlbWVudCBlcSAnJyApIHsKCiAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSBsZWFkaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID1+IHN7XEFccyt9e307CgogICAgICAgICAgICAgICAgICAgICNyZW1vdmUgdHJhaWxpbmcgc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQgPX4gc3tccytcen17fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoIHJlZiAkWE1MRGF0YS0+eyRLZXl9IGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgICAgICRTZWxmLT5fQ2xlYW5YTUxEYXRhKCBYTUxEYXRhID0+ICRYTUxEYXRhLT57JEtleX0gKTsKICAgICAgICAgICAgbmV4dCBLRVk7CgogICAgICAgIH0KICAgICAgICBlbHNpZiAoIHJlZiAkWE1MRGF0YS0+eyRLZXl9IGVxICcnICkgewoKICAgICAgICAgICAgI3JlbW92ZSBsZWFkaW5nIHNwYWNlcwogICAgICAgICAgICAkWE1MRGF0YS0+eyRLZXl9ID1+IHN7XEFccyt9e307CgogICAgICAgICAgICAjcmVtb3ZlIHRyYWlsaW5nIHNwYWNlcwogICAgICAgICAgICAkWE1MRGF0YS0+eyRLZXl9ID1+IHN7XHMrXHp9e307CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0NoZWNrQ29uZmlnSXRlbSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIGNvbmZpZyBpdGVtIHBhcmFtZXRlcnMgYXJlIHZhbGlkLgoKICAgIG15ICRDb25maWdJdGVtQ2hlY2sgPSAkT3BlcmF0aW9uT2JqZWN0LT5fQ2hlY2tDb25maWdJdGVtKAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sICAgICAgICAgICAgICAgICAgIyBhbGwgY29uZmlnIGl0ZW0gcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICRDb25maWdJdGVtQ2hlY2sgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgT0sKICAgIH0KCiAgICAkQ29uZmlnSXRlbUNoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja0NvbmZpZ0l0ZW0gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRQYXJhbXtDb25maWdJdGVtfTsKCiAgICAjIGNoZWNrIGNvbmZpZyBpdGVtIGludGVybmFsbHkKICAgIGZvciBteSAkTmVlZGVkIChxdyhDbGFzcyBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CiAgICAgICAgaWYgKCAhJENvbmZpZ0l0ZW0tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5NaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+JE5lZWRlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIENvbmZpZ0l0ZW0tPkNsYXNzCiAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVDbGFzcyggJXskQ29uZmlnSXRlbX0gKSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNsYXNzIHBhcmFtZXRlciBpcyBpbnZhbGlkISIsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGNoZWNrIENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZQogICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlRGVwbFN0YXRlKCAleyRDb25maWdJdGVtfSApICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+RGVwbFN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkISIsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGNoZWNrIENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZQogICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlSW5jaVN0YXRlKCAleyRDb25maWdJdGVtfSApICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+SW5jaVN0YXRlIHBhcmFtZXRlciBpcyBpbnZhbGlkISIsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGdldCBsYXN0IGNvbmZpZyBpdGVtIGRlZmludGlvbgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkU2VsZi0+e1JldmVyc2VDbGFzc0xpc3R9LT57ICRDb25maWdJdGVtLT57Q2xhc3N9IH0sCiAgICApOwoKICAgIG15ICRYTUxEYXRhQ2hlY2tSZXN1bHQgPSAkU2VsZi0+Q2hlY2tYTUxEYXRhKAogICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb25EYXRhLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgWE1MRGF0YSAgICA9PiAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0sCiAgICApOwoKICAgIGlmICggISRYTUxEYXRhQ2hlY2tSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICByZXR1cm4gJFhNTERhdGFDaGVja1Jlc3VsdDsKICAgIH0KCiAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgT0sgdGhlbiByZXR1cm4gU3VjY2VzcwogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgX0NoZWNrQXR0YWNobWVudCgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIGF0dGFjaG1lbnQgcGFyYW1ldGVyIGlzIHZhbGlkLgoKICAgIG15ICRBdHRhY2htZW50Q2hlY2sgPSAkT3BlcmF0aW9uT2JqZWN0LT5fQ2hlY2tBdHRhY2htZW50KAogICAgICAgIEF0dGFjaG1lbnQgPT4gJEF0dGFjaG1lbnQsICAgICAgICAgICAgICAgICAgIyBhbGwgYXR0YWNobWVudCBwYXJhbWV0ZXJzCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJEF0dGFjaG1lbnRDaGVjayA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgZXZlcmV0aGluZyBpcyBPSwogICAgfQoKICAgICRBdHRhY2htZW50Q2hlY2sgPSB7CiAgICAgICAgRXJyb3JDb2RlICAgID0+ICdGdW5jdGlvbi5FcnJvcicsICAgICAgICAgICAjIGlmIGVycm9yCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdFcnJvciBkZXNjcmlwdGlvbicsCiAgICB9Cgo9Y3V0CgpzdWIgX0NoZWNrQXR0YWNobWVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRhY2htZW50ID0gJFBhcmFte0F0dGFjaG1lbnR9OwoKICAgICMgY2hlY2sgYXR0YWNobWVudCBpdGVtIGludGVybmFsbHkKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb250ZW50IENvbnRlbnRUeXBlIEZpbGVuYW1lKSkgewogICAgICAgIGlmICggISRBdHRhY2htZW50LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQXR0YWNobWVudC0+JE5lZWRlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIEFydGljbGUtPkNvbnRlbnRUeXBlCiAgICBpZiAoICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ICkgewoKICAgICAgICAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSA9IGxjICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9OwoKICAgICAgICAjIGNoZWNrIENoYXJzZXQgcGFydAogICAgICAgIG15ICRDaGFyc2V0ID0gJyc7CiAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSA9fiAvY2hhcnNldD0vaSApIHsKICAgICAgICAgICAgJENoYXJzZXQgPSAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfTsKICAgICAgICAgICAgJENoYXJzZXQgPX4gcy8uKz9jaGFyc2V0PSgifCd8KShcdyspLyQyL2dpOwogICAgICAgICAgICAkQ2hhcnNldCA9fiBzLyJ8Jy8vZzsKICAgICAgICAgICAgJENoYXJzZXQgPX4gcy8oLis/KTsuKi8kMS9nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ2hhcnNldCAmJiAhJFNlbGYtPlZhbGlkYXRlQ2hhcnNldCggQ2hhcnNldCA9PiAkQ2hhcnNldCApICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgTWltZVR5cGUgcGFydAogICAgICAgIG15ICRNaW1lVHlwZSA9ICcnOwogICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gL14oXHcrXC9cdyspL2kgKSB7CiAgICAgICAgICAgICRNaW1lVHlwZSA9ICQxOwogICAgICAgICAgICAkTWltZVR5cGUgPX4gcy8ifCcvL2c7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVNaW1lVHlwZSggTWltZVR5cGUgPT4gJE1pbWVUeXBlICkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LIHRoZW4gcmV0dXJuIFN1Y2Nlc3MKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfTsKfQoKPWhlYWQyIF9Db25maWdJdGVtQ3JlYXRlKCkKCmNyZWF0ZXMgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhdHRhY2htZW50cyBpZiBzcGVjaWZpZWQuCgogICAgbXkgJFJlc3BvbnNlID0gJE9wZXJhdGlvbk9iamVjdC0+X0NvbmZpZ0l0ZW1DcmVhdGUoCiAgICAgICAgQ29uZmlnSXRlbSAgICAgPT4gJENvbmZpZ0l0ZW0sICAgICAgICAgICAgICMgYWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBwYXJhbWV0ZXJzCiAgICAgICAgQXR0YWNobWVudExpc3QgPT4gJEF0dGFjaG1lbnQsICAgICAgICAgICAgICMgYSBsaXN0IG9mIGFsbCBhdHRhY2htZW50cwogICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEyMywKICAgICk7CgogICAgcmV0dXJuczoKCiAgICAkUmVzcG9uc2UgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJldGhpbmcgaXMgT0sKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAnQ04xMjMnLAogICAgICAgIH0KICAgIH0KCiAgICAkUmVzcG9uc2UgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgdW5leHBlY3RlZCBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFBhcmFte0Vycm9yQ29kZX06ICRQYXJhbXtFcnJvck1lc3NhZ2V9IiwKICAgIH0KCj1jdXQKCnN1YiBfQ29uZmlnSXRlbUNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtICAgICA9ICRQYXJhbXtDb25maWdJdGVtfTsKICAgIG15ICRBdHRhY2htZW50TGlzdCA9ICRQYXJhbXtBdHRhY2htZW50TGlzdH07CgogICAgbXkgJERlcGxTdGF0ZUlEID0gJFNlbGYtPntSZXZlcnNlRGVwbFN0YXRlTGlzdH0tPnsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH07CiAgICBteSAkSW5jaVN0YXRlSUQgPSAkU2VsZi0+e1JldmVyc2VJbmNpU3RhdGVMaXN0fS0+eyAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZX0gfTsKCiAgICBteSAkUmF3WE1MRGF0YSA9ICRDb25maWdJdGVtLT57Q0lYTUxEYXRhfTsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGxhc3QgY29uZmlnIGl0ZW0gZGVmaW50aW9uCiAgICBteSAkRGVmaW5pdGlvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRTZWxmLT57UmV2ZXJzZUNsYXNzTGlzdH0tPnsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICk7CgogICAgIyByZXBsYWNlIGRhdGUsIGRhdGUgdGltZSwgY3VzdG9tZXIsIGNvbXBhbnkgYW5kIGdlbmVyYWwgY2F0YWxvZyB2YWx1ZXMKICAgIG15ICRSZXBsYWNlZFhNTERhdGEgPSAkU2VsZi0+UmVwbGFjZVhNTERhdGEoCiAgICAgICAgWE1MRGF0YSAgICA9PiAkUmF3WE1MRGF0YSwKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25SZWZ9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBhbiBYTUxEYXRhIHN0cnVjdHVyZSBzdWl0YWJsZSBmb3IgVmVyc2lvbkFkZAogICAgbXkgJFhNTERhdGEgPSAkU2VsZi0+Rm9ybWF0WE1MRGF0YSgKICAgICAgICBYTUxEYXRhID0+ICRSZXBsYWNlZFhNTERhdGEsCiAgICApOwoKICAgICMgY3JlYXRlIG5ldyBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgIENsYXNzSUQgPT4gJFNlbGYtPntSZXZlcnNlQ2xhc3NMaXN0fS0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzfSB9LAogICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25EYXRhLT57RGVmaW5pdGlvbklEfSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUlELAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlSUQsCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRYTUxEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCAmJiAhJFZlcnNpb25JRCApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWd1cmF0aW9uIEl0ZW0gY291bGQgbm90IGJlIGNyZWF0ZWQsIHBsZWFzZSBjb250YWN0IHRoZSBzeXN0ZW0nCiAgICAgICAgICAgICAgICAuICdhZG1pbmlzdHJhdG9yJywKICAgICAgICB9OwogICAgfQoKICAgICMgc2V0IGF0dGFjaG1lbnRzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQXR0YWNobWVudExpc3QpICkgewoKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCBAeyRBdHRhY2htZW50TGlzdH0gKSB7CiAgICAgICAgICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+Q3JlYXRlQXR0YWNobWVudCgKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgICA9PiAkQXR0YWNobWVudCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9CiAgICAgICAgICAgICAgICAgICAgJFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0gfHwgIkF0dGFjaG1lbnQgY291bGQgbm90IGJlIGNyZWF0ZWQsIHBsZWFzZSBjb250YWN0IgogICAgICAgICAgICAgICAgICAgIC4gIiB0aGUgc3lzdGVtIGFkbWluaXN0cmF0b3IiOwoKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRFcnJvck1lc3NhZ2UsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IENvbmZpZ0l0ZW0gZGF0YQogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IGdldCBuZXcgY29uZmlndXJhdGlvbiBpdGVtIGluZm9ybWF0aW9uLCBwbGVhc2UgY29udGFjdCB0aGUnCiAgICAgICAgICAgICAgICAuICcgc3lzdGVtIGFkbWluaXN0cmF0b3InLAogICAgICAgIH07CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLT57TnVtYmVyfSwKICAgICAgICB9LAogICAgfTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemDelete.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbURlbGV0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBwYXJlbnQgcXcoCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uCik7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGUgLSBHZW5lcmljSW50ZXJmYWNlIENvbmZpZ3VyYXRpb24gSXRlbSBEZWxldGUgT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkTmVlZGVkIChxdyhEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIkdvdCBubyAkTmVlZGVkISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+eyROZWVkZWR9ID0gJFBhcmFteyROZWVkZWR9OwogICAgfQoKICAgICRTZWxmLT57T3BlcmF0aW9uTmFtZX0gPSAnQ29uZmlnSXRlbURlbGV0ZSc7CgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1EZWxldGUnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBDb25maWdJdGVtRGVsZXRlIE9wZXJhdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyBhYmxlIHRvIHJldHVybgpvbmUgb3IgbW9yZSBDb25maWdJdGVtIGVudHJpZXMgaW4gb25lIGNhbGwuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luICAgICAgICAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBDdXN0b21lclVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgcmVxdWlyZWQKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyTG9naW4gPT4gJ3NvbWUgY3VzdG9tZXIgbG9naW4nLAogICAgICAgICAgICBTZXNzaW9uSUQgICAgICAgICA9PiAxMjMsCgogICAgICAgICAgICBQYXNzd29yZCAgICAgICAgICA9PiAnc29tZSBwYXNzd29yZCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgVXNlckxvZ2luIG9yIGN1c3RvbWVyVXNlckxvZ2luIGlzIHNlbnQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBQYXNzd29yZCBpcyByZXF1aXJlZAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICA9PiAnMzIsMzMnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVxdWlyZWQsIGNvdWxkIGJlIGNvbWEgc2VwYXJhdGVkIElEcyBvciBhbiBBcnJheQogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSAgICA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbMTIzLCA0NTZdLCAgICAgICAgICMgQ29uZmlndXJhdGlvbiBJdGVtIElEcyBudW1iZXIgaW4gT1RSUzo6SVRTTSAoU2VydmljZSBkZXNrIHN5c3RlbSkKICAgICAgICAgICAgRXJyb3IgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkIG5vdCByZXR1cm4gZXJyb3JzCiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtRGVsZXRlLkVycm9yQ29kZScKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0Vycm9yIERlc2NyaXB0aW9uJwogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICEkUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1dlYnNlcnZpY2UuSW52YWxpZENvbmZpZ3VyYXRpb24nLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAoICRVc2VySUQsICRVc2VyVHlwZSApID0gJFNlbGYtPkF1dGgoCiAgICAgICAgJVBhcmFtCiAgICApOwoKICAgIGlmICggISRVc2VySUQgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICckU2VsZi0+e09wZXJhdGlvbk5hbWV9LkF1dGhGYWlsJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBBdXRob3JpemF0aW9uIGZhaWxpbmchIiwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+eyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiAkTmVlZGVkIHBhcmFtZXRlciBpcyBtaXNzaW5nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgbXkgJEVycm9yTWVzc2FnZSA9ICcnOwoKICAgICMgYWxsIG5lZWRlZCB2YXJpYWJsZXMKICAgIG15IEBDb25maWdJdGVtSURzOwogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9ICkgKSB7CiAgICAgICAgQENvbmZpZ0l0ZW1JRHMgPSBzcGxpdCAvXHMqLFxzKi8sICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH07CiAgICB9CiAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfSApICkgewogICAgICAgIEBDb25maWdJdGVtSURzID0gQHsgJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lldyb25nU3RydWN0dXJlIiwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBTdHJ1Y3R1cmUgZm9yIENvbmZpZ0l0ZW1JRCBpcyBub3QgY29ycmVjdCEiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBteSBARGVsZXRlZENvbmZpZ0l0ZW1JRHM7CgogICAgIyBzdGFydCBDb25maWdJdGVtIGxvb3AKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgIyBjaGVjayBjcmVhdGUgcGVybWlzc2lvbnMKICAgICAgICBteSAkUGVybWlzc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5BY2Nlc3NEZW5pZWQiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDYW4gbm90IGRlbGV0ZSBjb25maWd1cmF0aW9uIGl0ZW0hIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIHRoZSBjb25maWdpdGVtCiAgICAgICAgbXkgJERlbGV0ZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICk7CgogICAgICAgIGlmICggISREZWxldGVTdWNjZXNzICkgewoKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZGVsZXRlIENvbmZpZ0l0ZW0gSUQgJyAuICRDb25maWdJdGVtSUQKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbURlbGV0ZTo6UnVuKCknOwoKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnJFNlbGYtPntPcGVyYXRpb25OYW1lfS5EZWxldGVFcnJvcicsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBARGVsZXRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CgogICAgfSAgICAjIGZpbmlzaCBDb25maWdJdGVtIGxvb3AKCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoIFxARGVsZXRlZENvbmZpZ0l0ZW1JRHMgKSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb3VsZCBub3QgZGVsZXRlIENvbmZpZ0l0ZW1zIScsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFxARGVsZXRlZENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgfSwKICAgIH07Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemGet.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBNSU1FOjpCYXNlNjQ7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBwYXJlbnQgcXcoCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uCik7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQgLSBHZW5lcmljSW50ZXJmYWNlIENvbmZpZ3VyYXRpb24gSXRlbSBHZXQgT3BlcmF0aW9uIGJhY2tlbmQKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCnVzdWFsbHksIHlvdSB3YW50IHRvIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGlzCmJ5IHVzaW5nIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uLT5uZXcoKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkTmVlZGVkIChxdyggRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlEICkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57JE5lZWRlZH0gPSAkUGFyYW17JE5lZWRlZH07CiAgICB9CgogICAgJFNlbGYtPntPcGVyYXRpb25OYW1lfSA9ICdDb25maWdJdGVtR2V0JzsKCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0dlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbUdldCcpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFJ1bigpCgpwZXJmb3JtIENvbmZpZ0l0ZW1HZXQgT3BlcmF0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIGFibGUgdG8gcmV0dXJuCm9uZSBvciBtb3JlIENvbmZpZ0l0ZW0gZW50cmllcyBpbiBvbmUgY2FsbC4KCiAgICBteSAkUmVzdWx0ID0gJE9wZXJhdGlvbk9iamVjdC0+UnVuKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gICAgICAgICA9PiAnc29tZSBhZ2VudCBsb2dpbicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlckxvZ2luIG9yIFNlc3Npb25JRCBpcwogICAgICAgICAgICBTZXNzaW9uSUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1aXJlZAogICAgICAgICAgICBQYXNzd29yZCAgICAgICAgICA9PiAnc29tZSBwYXNzd29yZCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgVXNlckxvZ2luIGlzIHNlbnQgdGhlbiBQYXNzd29yZCBpcyByZXF1aXJlZAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgICA9PiAnMzIsMzMnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVxdWlyZWQsIGNvdWxkIGJlIGNvbWEgc2VwYXJhdGVkIElEcyBvciBhbiBBcnJheQogICAgICAgICAgICBBdHRhY2htZW50cyAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwsIDEgYXMgZGVmYXVsdC4gSWYgaXQncyBzZXQgd2l0aCB0aGUgdmFsdWUgMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGF0dGFjaG1lbnRzIGZvciBhcnRpY2xlcyB3aWxsIGJlIGluY2x1ZGVkIG9uIENvbmZpZ0l0ZW0gZGF0YQogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJbiBjYXNlIG9mIGFuIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiBbCiAgICAgICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgICA9PiAnMjAxMDEwMjcwMDAwMDEnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgID0+ICdzb21lIG5hbWUnLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICA9PiAnc29tZSBjbGFzcycsCiAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgICAgICAgICBMYXN0VmVyc2lvbklEICAgICAgPT4gMTIzLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgICA9PiAxMjMsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgID0+ICdzb21lIGluY2lkZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgICAgPT4gJ3NvbWUgaW5jaWRlbnQgc3RhdGUgdHlwZScsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgID0+ICdzb21lIGRlcGxveW1lbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgICA9PiAnc29tZSBkZXBsb3ltZW50IHN0YXRlIHR5cGUnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgICA9PiAnc29tZSBpbmNpZGVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSAgID0+ICdzb21lIGluY2lkZW50IHN0YXRlIHR5cGUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgICA9PiAnc29tZSBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlICAgPT4gJ3NvbWUgZGVwbG95bWVudCBzdGF0ZSB0eXBlJywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVUaW1lICAgICAgICAgPT4gJzIwMTAtMTAtMjcgMjA6MTU6MDAnCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICAgID0+IDEyMywKICAgICAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgICAgPT4gJFhNTERhdGFIYXNoUmVmLAoKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICAgID0+ICJ4eHh4IiwgICAgICMgYWN0dWFsIGF0dGFjaG1lbnQgY29udGVudHMsIGJhc2U2NCBlbmNvbmRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgID0+ICJhcHBsaWNhdGlvbi9wZGYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgICAgICAgID0+ICJTdGRBdHRhY2htZW50LVRlc3QxLnBkZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICAgICAgICAgPT4gIjQuNiBLQnl0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZmVyZW5jZXMgICAgICAgID0+ICRQcmVmZXJlbmNlc0hhc2hSZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAuIC4gLgogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgLiAuIC4KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFJlc3VsdCA9ICRTZWxmLT5Jbml0KAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkU2VsZi0+e1dlYnNlcnZpY2VJRH0sCiAgICApOwoKICAgIGlmICggISRSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnV2Vic2VydmljZS5JbnZhbGlkQ29uZmlndXJhdGlvbicsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICggJFVzZXJJRCwgJFVzZXJUeXBlICkgPSAkU2VsZi0+QXV0aCgKICAgICAgICAlUGFyYW0KICAgICk7CgogICAgaWYgKCAhJFVzZXJJRCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJyRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQXV0aEZhaWwnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF1dGhvcml6YXRpb24gZmFpbGluZyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3NpbmchIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBteSAkRXJyb3JNZXNzYWdlID0gJyc7CgogICAgIyBhbGwgbmVlZGVkIHZhcmlhYmxlcwogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSApIHsKICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IHNwbGl0KCAvLC8sICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKTsKICAgIH0KICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9ICkgKSB7CiAgICAgICAgQENvbmZpZ0l0ZW1JRHMgPSBAeyAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uV3JvbmdTdHJ1Y3R1cmUiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgQ29uZmlnSXRlbUlEIGlzIG5vdCBjb3JyZWN0ISIsCiAgICAgICAgKTsKICAgIH0KICAgIG15ICRBdHRhY2htZW50cyA9ICRQYXJhbXtEYXRhfS0+e0F0dGFjaG1lbnRzfSB8fCAwOwogICAgbXkgJFJldHVybkRhdGEgID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07CgogICAgbXkgQEl0ZW07CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIHN0YXJ0IENvbmZpZ0l0ZW0gbG9vcAogICAgQ09ORklHSVRFTToKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGNoZWNrIGNyZWF0ZSBwZXJtaXNzaW9ucwogICAgICAgIG15ICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgIGlmICggISRQZXJtaXNzaW9uICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkFjY2Vzc0RlbmllZCIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENhbiBub3QgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIENvbmZpZ0l0ZW0gZW50cnkKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgbGF0ZXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZlcnNpb24pICkgewoKICAgICAgICAgICAgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IENvbmZpZ0l0ZW0gZGF0YScKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldDo6UnVuKCknOwoKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSB1bm5lZWRlZCBpdGVtcwogICAgICAgIGRlbGV0ZSAkVmVyc2lvbi0+e0NsYXNzSUR9OwogICAgICAgIGRlbGV0ZSAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZUlEfTsKICAgICAgICBkZWxldGUgJFZlcnNpb24tPntDdXJJbmNpU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRWZXJzaW9uLT57RGVwbFN0YXRlSUR9OwogICAgICAgIGRlbGV0ZSAkVmVyc2lvbi0+e0luY2lTdGF0ZUlEfTsKICAgICAgICBkZWxldGUgJFZlcnNpb24tPntYTUxEZWZpbml0aW9uSUR9OwoKICAgICAgICBteSAkRGVmaW5pdGlvbiA9IGRlbGV0ZSAkVmVyc2lvbi0+e1hNTERlZmluaXRpb259OwoKICAgICAgICBteSAkRm9ybWF0ZWRYTUxEYXRhID0gJFNlbGYtPkludmVydEZvcm1hdFhNTERhdGEoCiAgICAgICAgICAgIFhNTERhdGEgPT4gJFZlcnNpb24tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlWE1MRGF0YSgKICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkRm9ybWF0ZWRYTUxEYXRhLAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgICk7CgogICAgICAgICRWZXJzaW9uLT57WE1MRGF0YX0gPSAkUmVwbGFjZWRYTUxEYXRhOwoKICAgICAgICAjIHJlbmFtZSBYTUxEYXRhIHNpbmNlIFNPQVAgdHJhbnNwb3J0IGNvbXBsYWlucyBhYm91dCBYTUwgcHJlZml4IG9uIG5hbWVzCiAgICAgICAgJFZlcnNpb24tPntDSVhNTERhdGF9ID0gZGVsZXRlICRWZXJzaW9uLT57WE1MRGF0YX07CgogICAgICAgICMgc2V0IENvbmZpZ0l0ZW0gZW50cnkgZGF0YQogICAgICAgIG15ICRDb25maWdJdGVtQnVuZGxlID0gJFZlcnNpb247CgogICAgICAgIGlmICgkQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBBdHRhY2htZW50RGV0YWlsczsKICAgICAgICAgICAgQVRUQUNITUVOVDoKICAgICAgICAgICAgZm9yIG15ICRGaWxlbmFtZSAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZW5hbWU7CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBuZXh0IGlmIG5vdCBhdHRhY2htZW50CiAgICAgICAgICAgICAgICBuZXh0IEFUVEFDSE1FTlQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAgICAgICAgICAgICAjIGNvbnZlcnQgY29udGVudCB0byBiYXNlNjQKICAgICAgICAgICAgICAgICRBdHRhY2htZW50LT57Q29udGVudH0gPSBlbmNvZGVfYmFzZTY0KCAkQXR0YWNobWVudC0+e0NvbnRlbnR9ICk7CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50RGV0YWlscywgJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IENvbmZpZ0l0ZW0gZW50cnkgZGF0YQogICAgICAgICAgICAkQ29uZmlnSXRlbUJ1bmRsZS0+e0F0dGFjaG1lbnR9ID0gJyc7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCBcQEF0dGFjaG1lbnREZXRhaWxzICkgKSB7CiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUJ1bmRsZS0+e0F0dGFjaG1lbnR9ID0gXEBBdHRhY2htZW50RGV0YWlsczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhZGQKICAgICAgICBwdXNoIEBJdGVtLCAkQ29uZmlnSXRlbUJ1bmRsZTsKCiAgICB9ICAgICMgZmluaXNoIENvbmZpZ0l0ZW0gbG9vcAoKICAgIGlmICggIXNjYWxhciBASXRlbSApIHsKICAgICAgICAkRXJyb3JNZXNzYWdlID0gJ0NvdWxkIG5vdCBnZXQgQ29uZmlnSXRlbSBkYXRhJwogICAgICAgICAgICAuICcgaW4gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQ6OlJ1bigpJzsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICckU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk5vQ29uZmlnSXRlbURhdGEnLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICRFcnJvck1lc3NhZ2UiLAogICAgICAgICk7CgogICAgfQoKICAgICMgc2V0IENvbmZpZ0l0ZW0gZGF0YSBpbnRvIHJldHVybiBzdHJ1Y3R1cmUKICAgICRSZXR1cm5EYXRhLT57RGF0YX0tPntDb25maWdJdGVtfSA9ICcnOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxASXRlbSApICkgewogICAgICAgICRSZXR1cm5EYXRhLT57RGF0YX0tPntDb25maWdJdGVtfSA9IFxASXRlbTsKICAgIH0KCiAgICAjIHJldHVybiByZXN1bHQKICAgIHJldHVybiAkUmV0dXJuRGF0YTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemSearch.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBwYXJlbnQgcXcoCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uCik7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2ggLSBHZW5lcmljSW50ZXJmYWNlIENvbmZpZ0l0ZW0gQ29uZmlnSXRlbVNlYXJjaCBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEZWJ1Z2dlck9iamVjdCBXZWJzZXJ2aWNlSUQgKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICJHb3Qgbm8gJE5lZWRlZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPnskTmVlZGVkfSA9ICRQYXJhbXskTmVlZGVkfTsKICAgIH0KCiAgICAkU2VsZi0+e09wZXJhdGlvbk5hbWV9ID0gJ0NvbmZpZ0l0ZW1TZWFyY2gnOwoKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtU2VhcmNoJyk7CgogICAgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdFZhbHVlfSA9ICdOb3QgRGVmaW5lZCc7CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBjb25maWcgaXRlbSBjbGFzc2VzCiAgICAkU2VsZi0+e0NsYXNzTGlzdH0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0NsYXNzTGlzdH0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntEZWJ1Z2dlck9iamVjdH0tPkVycm9yKAogICAgICAgICAgICBTdW1tYXJ5ID0+ICdFcnJvciB3aGVuIHRyeWluZyB0byBnZXQgY2xhc3MgbGlzdGluZyBvZiBJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBhIGxpc3Qgb2YgYWxsIGluY2lzdGF0ZXMKICAgICRTZWxmLT57SW5jaVN0YXRlTGlzdH0gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57SW5jaVN0YXRlTGlzdH0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntEZWJ1Z2dlck9iamVjdH0tPkVycm9yKAogICAgICAgICAgICBTdW1tYXJ5ID0+ICdFcnJvciB3aGVuIHRyeWluZyB0byBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdGluZyBvZicKICAgICAgICAgICAgICAgIC4gJyBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGEgbGlzdCBvZiBhbGwgZGVwbHN0YXRlcwogICAgJFNlbGYtPntEZXBsU3RhdGVMaXN0fSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkU2VsZi0+e0RlcGxTdGF0ZUxpc3R9ICkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT57RGVidWdnZXJPYmplY3R9LT5FcnJvcigKICAgICAgICAgICAgU3VtbWFyeSA9PiAnRXJyb3Igd2hlbiB0cnlpbmcgdG8gZ2V0IGluY2lkZW50IHN0YXRlIGxpc3Rpbmcgb2YnCiAgICAgICAgICAgICAgICAuICcgSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApOwogICAgfQoKICAgICMgYWxzbyBwcm92aWRlIHRoZSBjbGFzc2xpc3QgaW4gcmV2ZXJzZWQgZm9ybSBmb3IgZWFzaWVyIHJldmVyc2UgbG9va3VwcwogICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICV7ICRTZWxmLT57Q2xhc3NMaXN0fSB9OwogICAgJFNlbGYtPntSZXZlcnNlQ2xhc3NMaXN0fSA9IFwlUmV2ZXJzZUNsYXNzTGlzdDsKCiAgICAjIGFsc28gcHJvdmlkZSB0aGUgaW5jaXN0YXRlbGlzdCBpbiByZXZlcnNlZCBmb3JtIGZvciBlYXNpZXIgcmV2ZXJzZSBsb29rdXBzCiAgICBteSAlUmV2ZXJzZUluY2lTdGF0ZUxpc3QgPSByZXZlcnNlICV7ICRTZWxmLT57SW5jaVN0YXRlTGlzdH0gfTsKICAgICRTZWxmLT57UmV2ZXJzZUluY2lTdGF0ZUxpc3R9ID0gXCVSZXZlcnNlSW5jaVN0YXRlTGlzdDsKCiAgICAjIGFsc28gcHJvdmlkZSB0aGUgZGVwbHN0YXRlbGlzdCBpbiByZXZlcnNlZCBmb3JtIGZvciBlYXNpZXIgcmV2ZXJzZSBsb29rdXBzCiAgICBteSAlUmV2ZXJzZURlcGxTdGF0ZUxpc3QgPSByZXZlcnNlICV7ICRTZWxmLT57RGVwbFN0YXRlTGlzdH0gfTsKICAgICRTZWxmLT57UmV2ZXJzZURlcGxTdGF0ZUxpc3R9ID0gXCVSZXZlcnNlRGVwbFN0YXRlTGlzdDsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBSdW4oKQoKcGVyZm9ybSBDb25maWdJdGVtQ3JlYXRlIE9wZXJhdGlvbi4gVGhpcyB3aWxsIHJldHVybiB0aGUgY3JlYXRlZCBjb25maWcgaXRlbSBudW1iZXIuCgogICAgbXkgJFJlc3VsdCA9ICRPcGVyYXRpb25PYmplY3QtPlJ1bigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgVXNlckxvZ2luICAgICAgICAgPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlckxvZ2luIG9yIFNlc3Npb25JRCBpcwogICAgICAgICAgICBTZXNzaW9uSUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIHJlcXVpcmVkCgoKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICdzb21lIHBhc3N3b3JkJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgVXNlckxvZ2luIGlzIHNlbnQgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIFBhc3N3b3JkIGlzIHJlcXVpcmVkCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdUaGUgQ29uZmlnSXRlbSBDbGFzcycsICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJ1RoZSBDb25maWdJdGVtIE51bWJlcicsICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVGhlIENvbmZpZ0l0ZW0gTmFtZScsICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgID0+IFsnZGVwbG95bWVudCBzdGF0ZSddLCAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgPT4gWydpbmNpZGVudCBzdGF0ZSddLCAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZWQgdGltZSBhZnRlciAuLi4KICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDA2LTAxLTA5IDAwOjAwOjAxJywgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY3JlYXRlZCB0aW1lIGJlZm9yZSB0aGVuIC4uLi4KICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDA2LTAxLTE5IDIzOjU5OjU5JywgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGFmdGVyIC4uLgogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLCAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjaGFuZ2VkIHRpbWUgYmVmb3JlIHRoZW4gLi4uLgogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLCAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgID0+ICRBcnJheUhhc2hSZWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpLCBpdCBkZXBlbmRzIG9uIHRoZSBDb25maWd1cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgSXRlbSBjbGFzcyBhbmQgZGVmaW5pdGlvbgoKICAgICAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLCAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQoKICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnQ29uZmlnSXRlbUlEJywgJ051bWJlcicgXSwgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICAgICAgICAgIyBkZWZhdWx0OiBbICdDb25maWdJdGVtSUQnIF0KICAgICAgICAgICAgICAgICMgKENvbmZpZ0l0ZW1JRCwgTnVtYmVyLCBDbGFzc0lELCBEZXBsU3RhdGVJRCwgSW5jaVN0YXRlSUQsCiAgICAgICAgICAgICAgICAjIENyZWF0ZVRpbWUsIENyZWF0ZUJ5LCBDaGFuZ2VUaW1lLCBDaGFuZ2VCeSkKCiAgICAgICAgICAgICAgICAjIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIE9yZGVyQnk6CiAgICAgICAgICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgICAgICAgICAjIFRoZSBwYWlyaW5nIGlzIG1hZGUgYnkgdGhlIGFycmF5IGluZGljZXMuCgogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbICdEb3duJywgJ1VwJyBdLCAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgICAgICAjIGRlZmF1bHQ6IFsgJ0Rvd24nIF0KICAgICAgICAgICAgICAgICMgKERvd24gfCBVcCkKCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICA9PiAxMjIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgKTsKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgIyAwIG9yIDEKICAgICAgICBFcnJvck1lc3NhZ2UgICAgPT4gJycsICAgICAgICAgICAgICAgICAgICAgICMgaW4gY2FzZSBvZiBlcnJvcgogICAgICAgIERhdGEgICAgICAgICAgICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIyByZXN1bHQgZGF0YSBwYXlsb2FkIGFmdGVyIE9wZXJhdGlvbgogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgID0+IFsxMjMsIDQ1Nl0sICAgICAgICAgIyBDb25maWd1cmF0aW9uIEl0ZW0gIElEcyBudW1iZXIgaW4gT1RSUzo6SVRTTSAoU2VydmljZSBkZXNrIHN5c3RlbSkKICAgICAgICAgICAgRXJyb3IgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdWxkIG5vdCByZXR1cm4gZXJyb3JzCiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtU2VhcmNoLkVycm9yQ29kZScKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0Vycm9yIERlc2NyaXB0aW9uJwogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgPSAkU2VsZi0+SW5pdCgKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFNlbGYtPntXZWJzZXJ2aWNlSUR9LAogICAgKTsKCiAgICBpZiAoICEkUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ1dlYnNlcnZpY2UuSW52YWxpZENvbmZpZ3VyYXRpb24nLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKAogICAgICAgICEkUGFyYW17RGF0YX0tPntVc2VyTG9naW59CiAgICAgICAgJiYgISRQYXJhbXtEYXRhfS0+e1Nlc3Npb25JRH0KICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBVc2VyTG9naW4gb3IgU2Vzc2lvbklEIGlzIHJlcXVpcmVkISIsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtEYXRhfS0+e1VzZXJMb2dpbn0gKSB7CgogICAgICAgIGlmICggISRQYXJhbXtEYXRhfS0+e1Bhc3N3b3JkfSApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBQYXNzd29yZCBvciBTZXNzaW9uSUQgaXMgcmVxdWlyZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhdXRoZW50aWNhdGUgdXNlcgogICAgbXkgKCAkVXNlcklELCAkVXNlclR5cGUgKSA9ICRTZWxmLT5BdXRoKCVQYXJhbSk7CgogICAgaWYgKCAhJFVzZXJJRCApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQXV0aEZhaWwiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFVzZXIgY291bGQgbm90IGJlIGF1dGhlbnRpY2F0ZWQhIiwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIGhhc2hlcwogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEYXRhfS0+eyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJE5lZWRlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZyBvciBub3QgdmFsaWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBpc29sYXRlIGNvbmZpZyBpdGVtIHBhcmFtZXRlcgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtfTsKCiAgICAjIHJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMKICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICV7JENvbmZpZ0l0ZW19ICkgewogICAgICAgIGlmICggcmVmICRBdHRyaWJ1dGUgbmUgJ0hBU0gnICYmIHJlZiAkQXR0cmlidXRlIG5lICdBUlJBWScgKSB7CgogICAgICAgICAgICAjcmVtb3ZlIGxlYWRpbmcgc3BhY2VzCiAgICAgICAgICAgICRDb25maWdJdGVtLT57JEF0dHJpYnV0ZX0gPX4gc3tcQVxzK317fTsKCiAgICAgICAgICAgICNyZW1vdmUgdHJhaWxpbmcgc3BhY2VzCiAgICAgICAgICAgICRDb25maWdJdGVtLT57JEF0dHJpYnV0ZX0gPX4gc3tccytcen17fTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtLT57Q0lYTUxEYXRhfSApIHsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9ICkgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YSBpcyBpbnZhbGlkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgZm9yIENJWE1MRGF0YQogICAgICAgICRTZWxmLT5fQ2xlYW5YTUxEYXRhKCBYTUxEYXRhID0+ICRDb25maWdJdGVtLT57Q0lYTUxEYXRhfSApOwogICAgfQoKICAgIGlmICggISggJENvbmZpZ0l0ZW0tPntDbGFzc30gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNsYXNzIHBhcmFtZXRlciBpcyBtaXNzaW5nISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgc2VhcmNoIHBhcmFtcyB0byBhcnJheXMKICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZXN9ICkgewogICAgICAgIG15IEBJbmNpU3RhdGVzOwogICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVzfSApICkgewogICAgICAgICAgICBASW5jaVN0YXRlcyA9IHNwbGl0KCAvLC8sICRDb25maWdJdGVtLT57SW5jaVN0YXRlc30gKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRDb25maWdJdGVtLT57SW5jaVN0YXRlc30gKSApIHsKICAgICAgICAgICAgQEluY2lTdGF0ZXMgPSBAeyAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZXN9IH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lldyb25nU3RydWN0dXJlIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBTdHJ1Y3R1cmUgZm9yIENvbmZpZ0l0ZW0tPkluY2lTdGF0ZXMgaXMgbm90IGNvcnJlY3QhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVzfSA9IFxASW5jaVN0YXRlczsKICAgIH0KCiAgICBpZiAoIGRlZmluZWQgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVzfSApIHsKICAgICAgICBteSBARGVwbFN0YXRlczsKICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRDb25maWdJdGVtLT57RGVwbFN0YXRlc30gKSApIHsKICAgICAgICAgICAgQERlcGxTdGF0ZXMgPSBzcGxpdCggLywvLCAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZXN9ICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgIEBEZXBsU3RhdGVzID0gQHsgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVzfSB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5Xcm9uZ1N0cnVjdHVyZSIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgRGVwbFN0YXRlcyBpcyBub3QgY29ycmVjdCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZXN9ID0gXEBEZXBsU3RhdGVzOwogICAgfQoKICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbS0+e09yZGVyQnl9ICkgewogICAgICAgIG15IEBPcmRlckJ5OwogICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJENvbmZpZ0l0ZW0tPntPcmRlckJ5fSApICkgewogICAgICAgICAgICBAT3JkZXJCeSA9IHNwbGl0KCAvLC8sICRDb25maWdJdGVtLT57T3JkZXJCeX0gKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRDb25maWdJdGVtLT57T3JkZXJCeX0gKSApIHsKICAgICAgICAgICAgQE9yZGVyQnkgPSBAeyAkQ29uZmlnSXRlbS0+e09yZGVyQnl9IH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lldyb25nU3RydWN0dXJlIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogU3RydWN0dXJlIGZvciBPcmRlckJ5IGlzIG5vdCBjb3JyZWN0ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRDb25maWdJdGVtLT57T3JkZXJCeX0gPSBcQE9yZGVyQnk7CiAgICB9CgogICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtLT57T3JkZXJCeURpcmVjdGlvbn0gKSB7CiAgICAgICAgbXkgQE9yZGVyQnlEaXJlY3Rpb247CiAgICAgICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCAkQ29uZmlnSXRlbS0+e09yZGVyQnlEaXJlY3Rpb259ICkgKSB7CiAgICAgICAgICAgIEBPcmRlckJ5RGlyZWN0aW9uID0gc3BsaXQoIC8sLywgJENvbmZpZ0l0ZW0tPntPcmRlckJ5RGlyZWN0aW9ufSApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJENvbmZpZ0l0ZW0tPntPcmRlckJ5RGlyZWN0aW9ufSApICkgewogICAgICAgICAgICBAT3JkZXJCeURpcmVjdGlvbiA9IEB7ICRDb25maWdJdGVtLT57T3JkZXJCeURpcmVjdGlvbn0gfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uV3JvbmdTdHJ1Y3R1cmUiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFN0cnVjdHVyZSBmb3IgT3JkZXJCeURpcmVjdGlvbiBpcyBub3QgY29ycmVjdCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkQ29uZmlnSXRlbS0+e09yZGVyQnlEaXJlY3Rpb259ID0gXEBPcmRlckJ5RGlyZWN0aW9uOwogICAgfQoKICAgICMgY2hlY2sgQ29uZmlnSXRlbSBhdHRyaWJ1dGUgdmFsdWVzCiAgICBteSAkQ29uZmlnSXRlbUNoZWNrID0gJFNlbGYtPl9DaGVja0NvbmZpZ0l0ZW0oIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0gKTsKCiAgICBpZiAoICEkQ29uZmlnSXRlbUNoZWNrLT57U3VjY2Vzc30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvciggJXskQ29uZmlnSXRlbUNoZWNrfSApOwogICAgfQoKICAgICMgY2hlY2sgc2VhcmNoIHBlcm1pc3Npb25zCiAgICBteSAkUGVybWlzc2lvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICBDbGFzc0lEID0+ICRTZWxmLT57UmV2ZXJzZUNsYXNzTGlzdH0tPnsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICAgICAgVHlwZSAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICk7CgogICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkFjY2Vzc0RlbmllZCIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ2FuIG5vdCBzZWFyY2ggY29uZmlndXJhdGlvbiBpdGVtcyEiLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fQ29uZmlnSXRlbVNlYXJjaCgKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICk7Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfQ2xlYW5YTUxEYXRhKCkKCnJlbW92ZWQgdHJhaWxpbmcgYW5kIGxlYWRpbmcgd2hpdGUgc3BhY2VzIGluIHRoZSBYTUxEYXRhLgoKICAgIG15ICRYTUxEYXRhQ2xlYW4gPSAkT3BlcmF0aW9uT2JqZWN0LT5fQ2xlYW5YTUxEYXRhKAogICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb25BcnJheVJlZiwgICAgICAgICAgIyBDb25maWcgSXRlbSBEZWZpbml0aW9uIG90IGp1c3QgcGFydCBvZiBpdAogICAgICAgIFhNTERhdGEgICAgPT4gJFhNTERhdGFIYXNoUmVmLAogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICRYTUxEYXRhQ2xlYW4gPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgT0sKICAgIH0KCiAgICAkWE1MRGF0YUNsZWFuID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DbGVhblhNTERhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkWE1MRGF0YSA9ICRQYXJhbXtYTUxEYXRhfTsKCiAgICBLRVk6CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRYTUxEYXRhfSApIHsKICAgICAgICBpZiAoIHJlZiAkWE1MRGF0YS0+eyRLZXl9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIEVMRU1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIEB7ICRYTUxEYXRhLT57JEtleX0gfSApIHsKICAgICAgICAgICAgICAgIGlmICggcmVmICRFbGVtZW50IGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0NsZWFuWE1MRGF0YSggWE1MRGF0YSA9PiAkRWxlbWVudCApOwogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggcmVmICRFbGVtZW50IGVxICcnICkgewoKICAgICAgICAgICAgICAgICAgICAjcmVtb3ZlIGxlYWRpbmcgc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQgPX4gc3tcQVxzK317fTsKCiAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSB0cmFpbGluZyBzcGFjZXMKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudCA9fiBze1xzK1x6fXt9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggcmVmICRYTUxEYXRhLT57JEtleX0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24KICAgICAgICAgICAgJFNlbGYtPl9DbGVhblhNTERhdGEoIFhNTERhdGEgPT4gJFhNTERhdGEtPnskS2V5fSApOwogICAgICAgICAgICBuZXh0IEtFWTsKCiAgICAgICAgfQogICAgICAgIGVsc2lmICggcmVmICRYTUxEYXRhLT57JEtleX0gZXEgJycgKSB7CgogICAgICAgICAgICAjcmVtb3ZlIGxlYWRpbmcgc3BhY2VzCiAgICAgICAgICAgICRYTUxEYXRhLT57JEtleX0gPX4gc3tcQVxzK317fTsKCiAgICAgICAgICAgICNyZW1vdmUgdHJhaWxpbmcgc3BhY2VzCiAgICAgICAgICAgICRYTUxEYXRhLT57JEtleX0gPX4gc3tccytcen17fTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfQ2hlY2tDb25maWdJdGVtKCkKCmNoZWNrcyBpZiB0aGUgZ2l2ZW4gY29uZmlnIGl0ZW0gcGFyYW1ldGVycyBhcmUgdmFsaWQuCgogICAgbXkgJENvbmZpZ0l0ZW1DaGVjayA9ICRPcGVyYXRpb25PYmplY3QtPl9DaGVja0NvbmZpZ0l0ZW0oCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwgICAgICAgICAgICAgICAgICAjIGFsbCBjb25maWcgaXRlbSBwYXJhbWV0ZXJzCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DaGVjayA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgZXZlcnl0aGluZyBpcyBPSwogICAgfQoKICAgICRDb25maWdJdGVtQ2hlY2sgPSB7CiAgICAgICAgRXJyb3JDb2RlICAgID0+ICdGdW5jdGlvbi5FcnJvcicsICAgICAgICAgICAjIGlmIGVycm9yCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdFcnJvciBkZXNjcmlwdGlvbicsCiAgICB9Cgo9Y3V0CgpzdWIgX0NoZWNrQ29uZmlnSXRlbSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtID0gJFBhcmFte0NvbmZpZ0l0ZW19OwoKICAgICMgY2hlY2sgY29uZmlnIGl0ZW0gaW50ZXJuYWxseQogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDbGFzcykpIHsKICAgICAgICBpZiAoICEkQ29uZmlnSXRlbS0+eyROZWVkZWR9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDb25maWdJdGVtLT4kTmVlZGVkIHBhcmFtZXRlciBpcyBtaXNzaW5nISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgQ29uZmlnSXRlbS0+Q2xhc3MKICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUNsYXNzKCAleyRDb25maWdJdGVtfSApICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q2xhc3MgcGFyYW1ldGVyIGlzIGludmFsaWQhIiwKICAgICAgICB9OwogICAgfQoKICAgICMgY2hlY2sgb3B0aW9uYWwgc3R1ZmYKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZXN9ICkgKSB7CgogICAgICAgIGZvciBteSAkSW5jaVN0YXRlICggQHsgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVzfSB9ICkgewoKICAgICAgICAgICAgIyBjaGVjayBDb25maWdJdGVtLT5JbmNpU3RhdGVzCiAgICAgICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUluY2lTdGF0ZSggSW5jaVN0YXRlID0+ICRJbmNpU3RhdGUgKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+SW5jaVN0YXRlcyBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVzfSApICkgewoKICAgICAgICBmb3IgbXkgJERlcGxTdGF0ZSAoIEB7ICRDb25maWdJdGVtLT57RGVwbFN0YXRlc30gfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgQ29uZmlnSXRlbS0+SW5jaVN0YXRlcwogICAgICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVEZXBsU3RhdGUoIERlcGxTdGF0ZSA9PiAkRGVwbFN0YXRlICkgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZXMgcGFyYW1ldGVyIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRUaW1lUGFyYW0gKAogICAgICAgIHF3KENyZWF0ZVRpbWVOZXdlckRhdGUgQ3JlYXRlVGltZU9sZGVyRGF0ZSBDaGFuZ2VUaW1lTmV3ZXJEYXRlIENoYW5nZVRpbWVPbGRlckRhdGUpCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbS0+eyJDb25maWdJdGVtJFRpbWVQYXJhbSJ9ICkgewogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJFNlbGYtPlZhbGlkYXRlSW5wdXREYXRlVGltZSgKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnSXRlbS0+eyJDb25maWdJdGVtJFRpbWVQYXJhbSJ9LAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNvbmZpZ0l0ZW0kVGltZVBhcmFtIHBhcmFtZXRlciBpcyBpbnZhbGlkISIsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbS0+e0xpbWl0fSApIHsKICAgICAgICBpZiAoICFJc051bWJlciggJENvbmZpZ0l0ZW0tPntMaW1pdH0gKSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDb25maWdJdGVtLT5MaW1pdCBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0gKSApIHsKCiAgICAgICAgIyBnZXQgbGFzdCBjb25maWcgaXRlbSBkZWZpbnRpb24KICAgICAgICBteSAkRGVmaW5pdGlvbkRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkU2VsZi0+e1JldmVyc2VDbGFzc0xpc3R9LT57ICRDb25maWdJdGVtLT57Q2xhc3N9IH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFhNTERhdGFDaGVja1Jlc3VsdCA9ICRTZWxmLT5fQ2hlY2tTZWFyY2hYTUxEYXRhKAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgICAgICBYTUxEYXRhICAgID0+ICRDb25maWdJdGVtLT57Q0lYTUxEYXRhfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkWE1MRGF0YUNoZWNrUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgIHJldHVybiAkWE1MRGF0YUNoZWNrUmVzdWx0OwogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgT0sgdGhlbiByZXR1cm4gU3VjY2VzcwogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9Owp9Cgo9aGVhZDIgX0NvbmZpZ0l0ZW1TZWFyY2goKQoKc2VhcmNoIGEgY29uZmlndXJhdGlvbiBpdGVtcy4KCiAgICBteSAkUmVzcG9uc2UgPSAkT3BlcmF0aW9uT2JqZWN0LT5fQ29uZmlnSXRlbVNlYXJjaCgKICAgICAgICBDb25maWdJdGVtICAgICA9PiAkQ29uZmlnSXRlbSwgICAgICAgICAgICAgIyBhbGwgY29uZmlndXJhdGlvbiBpdGVtIHBhcmFtZXRlcnMKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJFJlc3BvbnNlID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBldmVyZXRoaW5nIGlzIE9LCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWzEyMywgNDU2XSwKICAgICAgICB9CiAgICB9CgogICAgJFJlc3BvbnNlID0gewogICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHVuZXhwZWN0ZWQgZXJyb3IKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRQYXJhbXtFcnJvckNvZGV9OiAkUGFyYW17RXJyb3JNZXNzYWdlfSIsCiAgICB9Cgo9Y3V0CgpzdWIgX0NvbmZpZ0l0ZW1TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRQYXJhbXtDb25maWdJdGVtfTsKCiAgICBteSAlU2VhcmNoUGFyYW1zOwoKICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXJzIHRoYXQgZG9lcyBub3QgbmVlZCBhbnkgY29udmVyc2lvbgogICAgZm9yIG15ICRQbGFpblBhcmFtICgKICAgICAgICBxdygKICAgICAgICBOYW1lIE51bWJlciBQcmV2aW91c1ZlcnNpb25TZWFyY2ggT3JkZXJCeSBPcmRlckJ5RGlyZWN0aW9uIExpbWl0CiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUKICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZQogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtLT57JFBsYWluUGFyYW19ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRQbGFpblBhcmFtfSA9ICRDb25maWdJdGVtLT57JFBsYWluUGFyYW19OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBzZWFjaCBjbGFzcwogICAgbXkgJENsYXNzSUQgPSAkU2VsZi0+e1JldmVyc2VDbGFzc0xpc3R9LT57ICRDb25maWdJdGVtLT57Q2xhc3N9IH07CiAgICAkU2VhcmNoUGFyYW1ze0NsYXNzSURzfSA9IFskQ2xhc3NJRF07CgogICAgIyBzZXQgc2VhcmNoIGluY2lkZW50IHN0YXRlcwogICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtLT57SW5jaVN0YXRlc30gKSB7CiAgICAgICAgbXkgQEluY2lTdGF0ZUlEczsKICAgICAgICBmb3IgbXkgJEluY2lTdGF0ZSAoIEB7ICRDb25maWdJdGVtLT57SW5jaVN0YXRlc30gfSApIHsKICAgICAgICAgICAgbXkgJEluY2lTdGF0ZUlEID0gJFNlbGYtPntSZXZlcnNlSW5jaVN0YXRlTGlzdH0tPnskSW5jaVN0YXRlfTsKICAgICAgICAgICAgcHVzaCBASW5jaVN0YXRlSURzLCAkSW5jaVN0YXRlSUQ7CiAgICAgICAgfQogICAgICAgICRTZWFyY2hQYXJhbXN7SW5jaVN0YXRlSURzfSA9IFxASW5jaVN0YXRlSURzOwogICAgfQoKICAgICMgc2V0IHNlYXJjaCBkZXBsb3ltZW50IHN0YXRlcwogICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtLT57RGVwbFN0YXRlc30gKSB7CiAgICAgICAgbXkgQERlcGxTdGF0ZUlEczsKICAgICAgICBmb3IgbXkgJERlcGxTdGF0ZSAoIEB7ICRDb25maWdJdGVtLT57RGVwbFN0YXRlc30gfSApIHsKICAgICAgICAgICAgbXkgJERlcGxTdGF0ZUlEID0gJFNlbGYtPntSZXZlcnNlRGVwbFN0YXRlTGlzdH0tPnskRGVwbFN0YXRlfTsKICAgICAgICAgICAgcHVzaCBARGVwbFN0YXRlSURzLCAkRGVwbFN0YXRlSUQ7CiAgICAgICAgfQogICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFxARGVwbFN0YXRlSURzOwogICAgfQoKICAgIG15ICRSYXdYTUxEYXRhID0gJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9OwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUmF3WE1MRGF0YSkgKSB7CgogICAgICAgICMgZ2V0IGxhc3QgY29uZmlnIGl0ZW0gZGVmaW50aW9uCiAgICAgICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJFNlbGYtPntSZXZlcnNlQ2xhc3NMaXN0fS0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzfSB9LAogICAgICAgICk7CgogICAgICAgICMgcmVwbGFjZSBkYXRlLCBkYXRlIHRpbWUsIGN1c3RvbWVyLCBjb21wYW55IGFuZCBnZW5lcmFsIGNhdGFsb2cgdmFsdWVzCiAgICAgICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRTZWxmLT5SZXBsYWNlWE1MRGF0YSgKICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkUmF3WE1MRGF0YSwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBhbiBYTUxEYXRhIHN0cnVjdHVyZSBzdWl0YWJsZSBmb3IgQ29uZmlnSXRlbVNlYXJjaAogICAgICAgIG15ICRYTUxEYXRhID0gJFNlbGYtPl9Gb3JtYXRTZWFyY2hYTUxEYXRhKAogICAgICAgICAgICBYTUxEYXRhID0+ICRSZXBsYWNlZFhNTERhdGEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFhNTERhdGEpICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze1doYXR9ID0gJFhNTERhdGE7CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT57RGVidWdnZXJPYmplY3R9LT5JbmZvKAogICAgICAgIFN1bW1hcnkgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IFNlYXJjaCBQYXJhbWV0ZXJzIiwKICAgICAgICBEYXRhICAgID0+IFwlU2VhcmNoUGFyYW1zLAogICAgKTsKCiAgICBteSAkQ29uZmlnSXRlbUlEcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoJVNlYXJjaFBhcmFtcyk7CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1JRHMpICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgRGF0YSAgICA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9CiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiAnJywKICAgICAgICB9LAogICAgfTsKfQoKPWhlYWQyIF9DaGVja1NlYXJjaFhNTERhdGEoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBYTUxEYXRhIHZhbHVlIGFyZSB2YWxpZC4KCiAgICBteSAkWE1MRGF0YUNoZWNrID0gJENvbW1vbk9iamVjdC0+X0NoZWNrU2VhcmNoWE1MRGF0YSgKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uQXJyYXlSZWYsICAgICAgICAgICMgQ29uZmlnIEl0ZW0gRGVmaW5pdGlvbiBvdCBqdXN0IHBhcnQgb2YgaXQKICAgICAgICBYTUxEYXRhICAgID0+ICRYTUxEYXRhSGFzaFJlZiwKICAgICAgICBQYXJlbnQgICAgID0+ICdzb21lIHBhcmVudCcsCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJFhNTERhdGFDaGVjayA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgZXZlcnl0aGluZyBpcyBPSwogICAgfQoKICAgICRYTUxEYXRhQ2hlY2sgPSB7CiAgICAgICAgRXJyb3JDb2RlICAgID0+ICdGdW5jdGlvbi5FcnJvcicsICAgICAgICAgICAjIGlmIGVycm9yCiAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdFcnJvciBkZXNjcmlwdGlvbicsCiAgICB9Cgo9Y3V0CgpzdWIgX0NoZWNrU2VhcmNoWE1MRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJFBhcmFte0RlZmluaXRpb259OwogICAgbXkgJFhNTERhdGEgICAgPSAkUGFyYW17WE1MRGF0YX07CiAgICBteSAkUGFyZW50ICAgICA9ICRQYXJhbXtQYXJlbnR9IHx8ICcnOwoKICAgIG15ICRDaGVja1ZhbHVlUmVzdWx0OwogICAgZm9yIG15ICREZWZJdGVtICggQHskRGVmaW5pdGlvbn0gKSB7CiAgICAgICAgbXkgJEl0ZW1LZXkgPSAkRGVmSXRlbS0+e0tleX07CgogICAgICAgIGlmICggcmVmICRYTUxEYXRhLT57JEl0ZW1LZXl9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciBteSAkQXJyYXlJdGVtICggQHsgJFhNTERhdGEtPnskSXRlbUtleX0gfSApIHsKICAgICAgICAgICAgICAgIGlmICggcmVmICRBcnJheUl0ZW0gZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgICAgICRDaGVja1ZhbHVlUmVzdWx0ID0gJFNlbGYtPl9DaGVja1ZhbHVlKAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICRBcnJheUl0ZW0tPnskSXRlbUtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0ICAgPT4gJERlZkl0ZW0tPntJbnB1dH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1LZXkgPT4gJEl0ZW1LZXksCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmVudCAgPT4gJFBhcmVudCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggISRDaGVja1ZhbHVlUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkQ2hlY2tWYWx1ZVJlc3VsdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIHJlZiAkQXJyYXlJdGVtIGVxICcnICkgewogICAgICAgICAgICAgICAgICAgICRDaGVja1ZhbHVlUmVzdWx0ID0gJFNlbGYtPl9DaGVja1ZhbHVlKAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICRBcnJheUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0ICAgPT4gJERlZkl0ZW0tPntJbnB1dH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEl0ZW1LZXkgPT4gJEl0ZW1LZXksCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmVudCAgPT4gJFBhcmVudCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggISRDaGVja1ZhbHVlUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkQ2hlY2tWYWx1ZVJlc3VsdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIiBpcyBpbnZhbGlkISIsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoIHJlZiAkWE1MRGF0YS0+eyRJdGVtS2V5fSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgIGlmICggJFhNTERhdGEtPnskSXRlbUtleX0tPnskSXRlbUtleX0gKSB7CiAgICAgICAgICAgICAgICAkQ2hlY2tWYWx1ZVJlc3VsdCA9ICRTZWxmLT5fQ2hlY2tWYWx1ZSgKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICRYTUxEYXRhLT57JEl0ZW1LZXl9LT57JEl0ZW1LZXl9LAogICAgICAgICAgICAgICAgICAgIElucHV0ICAgPT4gJERlZkl0ZW0tPntJbnB1dH0sCiAgICAgICAgICAgICAgICAgICAgSXRlbUtleSA9PiAkSXRlbUtleSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnQgID0+ICRQYXJlbnQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJENoZWNrVmFsdWVSZXN1bHQtPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJENoZWNrVmFsdWVSZXN1bHQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIG9ubHkgcGVyZm9ybSBjaGVja3MgaWYgaXRlbSByZWFsbHkgZXhpdHMgaW4gdGhlIFhNTERhdGEKICAgICAgICAgICAgIyBDb3VudE5pbiBjaGVja3Mgd2FzIHZlcmlmaWVkIGFuZCBwYXNzZWQgYmVmb3JlISwgc28gaXQgaXMgc2FmZSB0byBza2lwIGlmIG5lZWRlZAogICAgICAgICAgICBpZiAoICRYTUxEYXRhLT57JEl0ZW1LZXl9ICkgewogICAgICAgICAgICAgICAgJENoZWNrVmFsdWVSZXN1bHQgPSAkU2VsZi0+X0NoZWNrVmFsdWUoCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICA9PiAkWE1MRGF0YS0+eyRJdGVtS2V5fSwKICAgICAgICAgICAgICAgICAgICBJbnB1dCAgID0+ICREZWZJdGVtLT57SW5wdXR9LAogICAgICAgICAgICAgICAgICAgIEl0ZW1LZXkgPT4gJEl0ZW1LZXksCiAgICAgICAgICAgICAgICAgICAgUGFyZW50ICA9PiAkUGFyZW50LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISRDaGVja1ZhbHVlUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRDaGVja1ZhbHVlUmVzdWx0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZXJlIGlzIGEgc3ViIGFuZCBzdGFydCByZWN1cnNpb24KICAgICAgICBpZiAoIGRlZmluZWQgJERlZkl0ZW0tPntTdWJ9ICkgewoKICAgICAgICAgICAgaWYgKCByZWYgJFhNTERhdGEtPnskSXRlbUtleX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkQXJyYXlJdGVtICggQHsgJFhNTERhdGEtPnskSXRlbUtleX0gfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24gZm9yIGVhY2ggYXJyYXkgaXRlbQogICAgICAgICAgICAgICAgICAgIG15ICRYTUxEYXRhQ2hlY2sgPSAkU2VsZi0+X0NoZWNrU2VhcmNoWE1MRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgPT4gJEFycmF5SXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgUGFyZW50ICAgICA9PiAkUGFyZW50IC4gJEl0ZW1LZXkgLiAiWyRDb3VudGVyXS0+IiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggISRYTUxEYXRhQ2hlY2stPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRYTUxEYXRhQ2hlY2s7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCByZWYgJFhNTERhdGEtPnskSXRlbUtleX0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgICAgICAgICBteSAkWE1MRGF0YUNoZWNrID0gJFNlbGYtPl9DaGVja1NlYXJjaFhNTERhdGEoCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkWE1MRGF0YS0+eyRJdGVtS2V5fSwKICAgICAgICAgICAgICAgICAgICBQYXJlbnQgICAgID0+ICRQYXJlbnQgLiAkSXRlbUtleSAuICctPicsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgaWYgKCAhJFhNTERhdGFDaGVjay0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkWE1MRGF0YUNoZWNrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgc3RhcnQgcmVjdXNyc2lvbgogICAgICAgICAgICAgICAgbXkgJFhNTERhdGFDaGVjayA9ICRTZWxmLT5fQ2hlY2tTZWFyY2hYTUxEYXRhKAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZkl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgUGFyZW50ICAgICA9PiAkUGFyZW50IC4gJEl0ZW1LZXkgLiAnLT4nLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGlmICggISRYTUxEYXRhQ2hlY2stPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFhNTERhdGFDaGVjazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBfQ2hlY2tWYWx1ZSgpCgpjaGVja3MgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIHZhbGlkLgoKICAgIG15ICRWYWx1ZUNoZWNrID0gJENvbW1vbk9iamVjdC0+X0NoZWNrVmFsdWUoCiAgICAgICAgVmFsdWUgICA9PiAkVmFsdWUgICAgICAgICAgICAgICAgICAgICAgICAjICRWYWx1ZSBjb3VsZCBiZSBhIHN0cmluZywgYSB0aW1lIHN0YW1wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGdlbmVyYWwgY2F0YWxvZyBjbGFzcyBuYW1lLCBvciBhIGludGVnZXIKICAgICAgICBJbnB1dCAgID0+ICRJbnB1dERlZmluaXRpb25IYXNoUmVmLCAgICAgICMgVGhlIGRlZmluaXRpb24gb2YgdGhlIGVsZW1lbnQgaW5wdXQgZXh0cmFjdGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZnJvbSB0aGUgQ29uZmlndXJhdGlvbiBJdGVtIGRlZmluaXRpb24gZm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgZm9yIGVhY2ggdmFsdWUKICAgICAgICBJdGVtS2V5ID0+ICdzb21lIGtleScsICAgICAgICAgICAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIHZhbHVlIGFzIHNlbnQgaW4gdGhlIFNPQVAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICByZXF1ZXN0CiAgICAgICAgUGFyZW50ICA9PiAnc29lbSBwYXJlbnQga2V5LT4nLCAgICAgICAgICAjIFRoZSBuYW1lIG9mIHRoZSBwYXJlbnQgZm9sbG93ZWQgYnkgLT4gb3IgZW1wdHkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICBmb3Igcm9vdCBrZXkgaXRlbXMKICAgICk7CgogICAgcmV0dXJuczoKCiAgICAkVmFsdWVDaGVjayA9IHsKICAgICAgICBTdWNjZXNzID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgZXZlcnl0aGluZyBpcyBPSwogICAgfQoKICAgICRWYWx1ZUNoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja1ZhbHVlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhcmVudCAgPSAkUGFyYW17UGFyZW50fTsKICAgIG15ICRJdGVtS2V5ID0gJFBhcmFte0l0ZW1LZXl9OwoKICAgIGlmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdUZXh0JyB8fCAkUGFyYW17SW5wdXR9LT57VHlwZX0gZXEgJ1RleHRBcmVhJyApIHsKCiAgICAgICAgIyBydW4gVGV4dCB2YWxpZGF0aW9ucwogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUlucHV0VGV4dCglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgZXhjZWRlcyB0aGUgbWF4aXVtIGxlbmd0aCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdEYXRlJyApIHsKCiAgICAgICAgIyBydW4gRGF0ZSB2YWxpZGF0aW9ucwogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUlucHV0RGF0ZSglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgRGF0ZSBmb3JtYXQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewoKICAgICAgICAjIHJ1biBEYXRlVGltZSB2YWxpZGF0aW9ucwogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUlucHV0RGF0ZVRpbWUoJVBhcmFtKSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDb25maWdJdGVtLT5DSVhNTERhdGEtPiRQYXJlbnQkSXRlbUtleSBwYXJhbWV0ZXIgdmFsdWUiCiAgICAgICAgICAgICAgICAgICAgLiAiIGlzIG5vdCBhIHZhbGlkIERhdGVUaW1lIGZvcm1hdCEiLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFBhcmFte0lucHV0fS0+e1R5cGV9IGVxICdJbnRlZ2VyJyApIHsKCiAgICAgICAgIyBydW4gSW50ZWdlciB2YWxpZGF0aW9ucwogICAgICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUlucHV0SW50ZWdlciglUGFyYW0pICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+JFBhcmVudCRJdGVtS2V5IHBhcmFtZXRlciB2YWx1ZSIKICAgICAgICAgICAgICAgICAgICAuICIgaXMgbm90IGEgdmFsaWQgSW50ZWdlciBvciBvdXQgb2YgcmFuZ2UhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJbnB1dH0tPntUeXBlfSBlcSAnR2VuZXJhbENhdGFsb2cnICkgewoKICAgICAgICAjIHJ1biBHZW5lcmFsIENhdGFsb2cgdmFsaWRhdGlvbnMKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVJbnB1dEdlbmVyYWxDYXRhbG9nKCAlUGFyYW0sIFZhbGlkID0+IDAgKSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDb25maWdJdGVtLT5DSVhNTERhdGEtPiRQYXJlbnQkSXRlbUtleSBwYXJhbWV0ZXIgdmFsdWUiCiAgICAgICAgICAgICAgICAgICAgLiAiIGlzIG5vdCBhIHZhbGlkIGZvciBHZW5lcmFsIENhdGFsb2cgJyRQYXJhbXtJbnB1dH0tPntDbGFzc30nISIsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgVGhlIHR5cGUgaXMgZHVtbXksIGRvIG5vdGhpbmcKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH07Cn0KCj1oZWFkMiBfRm9ybWF0U2VhcmNoWE1MRGF0YSgpCgpDcmVhdGUgYSBYTUxEYXRhIHN1aXRhYmxlIGZvciBDb25maWdJdGVtU2VhY2guCgogICAgbXkgJE5ld1hNTERhdGEgPSAkT3BlcmF0aW9uT2JqZWN0LT5fRm9ybWF0U2VhcmNoWE1MRGF0YSgKICAgICAgICBYTUxEYXRhICAgID0+ICRYTUxEYXRhSGFzaFJlZiwKICAgICAgICBDaGlsZCAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAjIG9yIDAsIG9wdGlvbmFsCiAgICApOwoKICAgIHJldHVybnM6CgogICAgJE5ld1hNTERhdGEgPSAkWE1MRGF0YUhhc2hSZWYsICAgICAgICAgICAgICAgICAgIyBzdWl0YWJsZSBmb3IgdmVyc2lvbiBhZGQKCj1jdXQKCnN1YiBfRm9ybWF0U2VhcmNoWE1MRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRYTUxEYXRhID0gJFBhcmFte1hNTERhdGF9OwogICAgbXkgJFBhcmVudCAgPSAkUGFyYW17UGFyZW50fSB8fCAnJzsKICAgIG15ICRDaGlsZCAgID0gJFBhcmFte0NoaWxkfTsKCiAgICBteSAkTmV3WE1MRGF0YSA9ICRQYXJhbXtOZXdYTUxEYXRhfSB8fCB7fTsKCiAgICBmb3IgbXkgJFJvb3RLZXkgKCBzb3J0IGtleXMgJXskWE1MRGF0YX0gKSB7CiAgICAgICAgaWYgKCByZWYgJFhNTERhdGEtPnskUm9vdEtleX0gZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgIGZvciBteSAkQXJyYXlJdGVtICggQHsgJFhNTERhdGEtPnskUm9vdEtleX0gfSApIHsKICAgICAgICAgICAgICAgIGlmICggcmVmICRBcnJheUl0ZW0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgICAgICAjIGV4dHJhY3QgdGhlIHJvb3Qga2V5IGZyb20gdGhlIGhhc2ggYW5kIGFzc2luZyBpdCB0byBjb250ZW50IGtleQogICAgICAgICAgICAgICAgICAgIG15ICRDb250ZW50ID0gZGVsZXRlICRBcnJheUl0ZW0tPnskUm9vdEtleX07CgogICAgICAgICAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgICAgICAgICAgICAgbXkgJE5ld1hNTERhdGFQYXJ0ID0gJFNlbGYtPl9Gb3JtYXRTZWFyY2hYTUxEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBYTUxEYXRhID0+ICRBcnJheUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmVudCAgPT4gJFBhcmVudCAuICRSb290S2V5IC4gJzo6JywKICAgICAgICAgICAgICAgICAgICAgICAgQ2hpbGQgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkQ29udGVudCkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICROZXdYTUxEYXRhLT57ICRQYXJlbnQgLiAkUm9vdEtleSB9IH0sICRDb250ZW50OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBhc3NhbWJsZSB0aGUgZmluYWwgdmFsdWUgZnJvbSB0aGUgcGFydHMKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5ld0tleSAoICV7JE5ld1hNTERhdGFQYXJ0fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJE5ld1hNTERhdGFQYXJ0LT57JE5ld0tleX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJE5ld1hNTERhdGEtPnskTmV3S2V5fSB9LCAkSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggcmVmICRBcnJheUl0ZW0gZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkTmV3WE1MRGF0YS0+eyAkUGFyZW50IC4gJFJvb3RLZXkgfSB9LCAkQXJyYXlJdGVtOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbHNpZiAoIHJlZiAkWE1MRGF0YS0+eyRSb290S2V5fSBlcSAnSEFTSCcgKSB7CgogICAgICAgICAgICAjIGV4dHJhY3QgdGhlIHJvb3Qga2V5IGZyb20gdGhlIGhhc2ggYW5kIGFzc2luZyBpdCB0byBjb250ZW50IGtleQogICAgICAgICAgICBteSAkQ29udGVudCA9IGRlbGV0ZSAkWE1MRGF0YS0+eyRSb290S2V5fS0+eyRSb290S2V5fTsKCiAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uCiAgICAgICAgICAgIG15ICROZXdYTUxEYXRhUGFydCA9ICRTZWxmLT5fRm9ybWF0U2VhcmNoWE1MRGF0YSgKICAgICAgICAgICAgICAgIFhNTERhdGEgPT4gJFhNTERhdGEtPnskUm9vdEtleX0sCiAgICAgICAgICAgICAgICBQYXJlbnQgID0+ICRQYXJlbnQgLiAkUm9vdEtleSAuICI6OiIsCiAgICAgICAgICAgICAgICBDaGlsZCAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJENvbnRlbnQpIHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJE5ld1hNTERhdGEtPnsgJFBhcmVudCAuICRSb290S2V5IH0gfSwgJENvbnRlbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXNzYW1ibGUgdGhlIGZpbmFsIHZhbHVlIGZyb20gdGhlIHBhcnQKICAgICAgICAgICAgJXskTmV3WE1MRGF0YX0gPSAoICV7JE5ld1hNTERhdGF9LCAleyROZXdYTUxEYXRhUGFydH0gKTsKICAgICAgICB9CgogICAgICAgIGVsc2lmICggcmVmICRYTUxEYXRhLT57JFJvb3RLZXl9IGVxICcnICkgewogICAgICAgICAgICBwdXNoIEB7ICROZXdYTUxEYXRhLT57ICRQYXJlbnQgLiAkUm9vdEtleSB9IH0sICRYTUxEYXRhLT57JFJvb3RLZXl9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHJldHVybiBvbmx5IHRoZSBwYXJ0IG9uIHJlY3Vyc2lvbgogICAgaWYgKCRDaGlsZCkgewogICAgICAgIHJldHVybiAkTmV3WE1MRGF0YTsKICAgIH0KCiAgICAjIHJldHVybiB0aGUgY29tcGxldGUgWE1MRGF0YSBhcyBuZWVkZWQgZm9yIENvbmZpZ0l0ZW1TZWFyY2gKICAgIG15IEBSZXR1cm5TdHJ1Y3R1cmU7CiAgICBmb3IgbXkgJFNlYXJjaFBhcmFtICggc29ydCBrZXlzICV7JE5ld1hNTERhdGF9ICkgewogICAgICAgIG15ICRTZWFyY2hLZXkgPSAkU2VhcmNoUGFyYW07CiAgICAgICAgJFNlYXJjaEtleSA9fiBzeyA6OiB9e1wnXH1bJV1ce1wnfXhtc2c7CiAgICAgICAgJFNlYXJjaEtleSA9ICJbMV17J1ZlcnNpb24nfVsxXXsnJFNlYXJjaEtleSd9WyVdeydDb250ZW50J30iOwogICAgICAgIHB1c2ggQFJldHVyblN0cnVjdHVyZSwgewogICAgICAgICAgICAkU2VhcmNoS2V5ID0+ICROZXdYTUxEYXRhLT57JFNlYXJjaFBhcmFtfSwKICAgICAgICB9OwogICAgfQogICAgcmV0dXJuIFxAUmV0dXJuU3RydWN0dXJlOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/GenericInterface/Operation/ConfigItem/ConfigItemUpdate.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBwYXJlbnQgcXcoCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29tbW9uCiAgICBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29tbW9uCik7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1VcGRhdGUgLSBHZW5lcmljSW50ZXJmYWNlIENvbmZpZ0l0ZW0gQ29uZmlnSXRlbVVwZGF0ZSBPcGVyYXRpb24gYmFja2VuZAoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKdXN1YWxseSwgeW91IHdhbnQgdG8gY3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoaXMKYnkgdXNpbmcgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb24tPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0cwogICAgZm9yIG15ICROZWVkZWQgKHF3KERlYnVnZ2VyT2JqZWN0IFdlYnNlcnZpY2VJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiR290IG5vICROZWVkZWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT57JE5lZWRlZH0gPSAkUGFyYW17JE5lZWRlZH07CiAgICB9CgogICAgIyBkZWZpbmUgb3BlcmF0aW9uIG5hbWUKICAgICRTZWxmLT57T3BlcmF0aW9uTmFtZX0gPSAnQ29uZmlnSXRlbVVwZGF0ZSc7CgogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1VcGRhdGUnKTsKCiAgICAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0VmFsdWV9ID0gJ05vdCBEZWZpbmVkJzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBhIGxpc3Qgb2YgYWxsIGNvbmZpZyBpdGVtIGNsYXNzZXMKICAgICRTZWxmLT57Q2xhc3NMaXN0fSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q2xhc3NMaXN0fSApICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0RlYnVnZ2VyT2JqZWN0fS0+RXJyb3IoCiAgICAgICAgICAgIFN1bW1hcnkgPT4gJ0Vycm9yIHdoZW4gdHJ5aW5nIHRvIGdldCBjbGFzcyBsaXN0aW5nIG9mIElUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGEgbGlzdCBvZiBhbGwgaW5jaXN0YXRlcwogICAgJFNlbGYtPntJbmNpU3RhdGVMaXN0fSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntJbmNpU3RhdGVMaXN0fSApICkgewogICAgICAgIHJldHVybiAkU2VsZi0+e0RlYnVnZ2VyT2JqZWN0fS0+RXJyb3IoCiAgICAgICAgICAgIFN1bW1hcnkgPT4gJ0Vycm9yIHdoZW4gdHJ5aW5nIHRvIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0aW5nIG9mJwogICAgICAgICAgICAgICAgLiAnIElUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBkZXBsc3RhdGVzCiAgICAkU2VsZi0+e0RlcGxTdGF0ZUxpc3R9ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57RGVwbFN0YXRlTGlzdH0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPntEZWJ1Z2dlck9iamVjdH0tPkVycm9yKAogICAgICAgICAgICBTdW1tYXJ5ID0+ICdFcnJvciB3aGVuIHRyeWluZyB0byBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdGluZyBvZicKICAgICAgICAgICAgICAgIC4gJyBJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CiAgICB9CgogICAgIyBhbHNvIHByb3ZpZGUgdGhlIGNsYXNzbGlzdCBpbiByZXZlcnNlZCBmb3JtIGZvciBlYXNpZXIgcmV2ZXJzZSBsb29rdXBzCiAgICBteSAlUmV2ZXJzZUNsYXNzTGlzdCA9IHJldmVyc2UgJXsgJFNlbGYtPntDbGFzc0xpc3R9IH07CiAgICAkU2VsZi0+e1JldmVyc2VDbGFzc0xpc3R9ID0gXCVSZXZlcnNlQ2xhc3NMaXN0OwoKICAgICMgYWxzbyBwcm92aWRlIHRoZSBpbmNpc3RhdGVsaXN0IGluIHJldmVyc2VkIGZvcm0gZm9yIGVhc2llciByZXZlcnNlIGxvb2t1cHMKICAgIG15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXsgJFNlbGYtPntJbmNpU3RhdGVMaXN0fSB9OwogICAgJFNlbGYtPntSZXZlcnNlSW5jaVN0YXRlTGlzdH0gPSBcJVJldmVyc2VJbmNpU3RhdGVMaXN0OwoKICAgICMgYWxzbyBwcm92aWRlIHRoZSBkZXBsc3RhdGVsaXN0IGluIHJldmVyc2VkIGZvcm0gZm9yIGVhc2llciByZXZlcnNlIGxvb2t1cHMKICAgIG15ICVSZXZlcnNlRGVwbFN0YXRlTGlzdCA9IHJldmVyc2UgJXsgJFNlbGYtPntEZXBsU3RhdGVMaXN0fSB9OwogICAgJFNlbGYtPntSZXZlcnNlRGVwbFN0YXRlTGlzdH0gPSBcJVJldmVyc2VEZXBsU3RhdGVMaXN0OwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFJ1bigpCgpwZXJmb3JtIENvbmZpZ0l0ZW1VcGRhdGUgT3BlcmF0aW9uLiBUaGlzIHdpbGwgcmV0dXJuIHRoZSB1cGRhdGVkIGNvbmZpZyBpdGVtIG51bWJlci4KCiAgICBteSAkUmVzdWx0ID0gJE9wZXJhdGlvbk9iamVjdC0+UnVuKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJ3NvbWUgYWdlbnQgbG9naW4nLCAgICAgICAgICAgICAgICAjIFVzZXJMb2dpbiBvciBTZXNzaW9uSUQgaXMKICAgICAgICAgICAgU2Vzc2lvbklEID0+IDEyMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIHJlcXVpcmVkCgogICAgICAgICAgICBQYXNzd29yZCAgPT4gJ3NvbWUgcGFzc3dvcmQnLCAgICAgICAgICAgICAgICAgICAjIGlmIFVzZXJMb2dpbiBpcyBzZW50IHRoZW4gUGFzc3dvcmQgaXMgcmVxdWlyZWQKCiAgICAgICAgICAgIFJlcGxhY2VFeGlzdGluZ0RhdGEgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwsIDAgb3IgMSwgZGVmYXVsdCAwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhpcyB3aWxsIHJlcGxhY2UgdGhlIGV4aXN0aW5nIFhNTCBkYXRhIGFuZCBhdHRhY2htZW50cwogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAoKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29uZmlnIEl0ZW0gQ2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUaGUgTmFtZScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ2RlcGxveW1lbnQgc3RhdGUnLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdpbmNpZGVudCBzdGF0ZScsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gJEFycmF5SGFzaFJlZiwgICAgICAgICAgICAgICAgICMgaXQgZGVwZW5kcyBvbiB0aGUgQ29uZmlndXJhdGlvbiBJdGVtIGNsYXNzIGFuZCBkZWZpbml0aW9uCgogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnY29udGVudCcgICAgICAgICAgICAjIGJhc2U2NCBlbmNvZGVkCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdzb21lIGNvbnRlbnQgdHlwZScKICAgICAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ3NvbWUgZmluZSBuYW1lJwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgIyAuLi4KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAjIG9yCiAgICAgICAgICAgICAgICAjQXR0YWNobWVudCA9PiB7CiAgICAgICAgICAgICAgICAjICAgQ29udGVudCAgICAgPT4gJ2NvbnRlbnQnCiAgICAgICAgICAgICAgICAjICAgQ29udGVudFR5cGUgPT4gJ3NvbWUgY29udGVudCB0eXBlJwogICAgICAgICAgICAgICAgIyAgIEZpbGVuYW1lICAgID0+ICdzb21lIGZpbmUgbmFtZScKICAgICAgICAgICAgICAgICN9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICRSZXN1bHQgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAjIDAgb3IgMQogICAgICAgIEVycm9yTWVzc2FnZSAgICA9PiAnJywgICAgICAgICAgICAgICAgICAgICAgIyBpbiBjYXNlIG9mIGVycm9yCiAgICAgICAgRGF0YSAgICAgICAgICAgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAjIHJlc3VsdCBkYXRhIHBheWxvYWQgYWZ0ZXIgT3BlcmF0aW9uCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAjIENvbmZpZ3VyYXRpb24gSXRlbSAgSUQgbnVtYmVyIGluIE9UUlM6OklUU00gKFNlcnZpY2UgZGVzayBzeXN0ZW0pCiAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAyMzI0NDU0MzIzMzIyICAgICAgICAgICAjIENvbmZpZ3VyYXRpb24gSXRlbSAgTnVtYmVyIGluIE9UUlM6OklUU00gKFNlcnZpY2UgZGVzayBzeXN0ZW0pCiAgICAgICAgICAgIEVycm9yID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBub3QgcmV0dXJuIGVycm9ycwogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5FcnJvckNvZGUnCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdFcnJvciBEZXNjcmlwdGlvbicKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfTsKCj1jdXQKCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPkluaXQoCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRTZWxmLT57V2Vic2VydmljZUlEfSwKICAgICk7CgogICAgaWYgKCAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdXZWJzZXJ2aWNlLkludmFsaWRDb25maWd1cmF0aW9uJywKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICRSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICgKICAgICAgICAhJFBhcmFte0RhdGF9LT57VXNlckxvZ2lufQogICAgICAgICYmICEkUGFyYW17RGF0YX0tPntTZXNzaW9uSUR9CiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5NaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogVXNlckxvZ2luIG9yIFNlc3Npb25JRCBpcyByZXF1aXJlZCEiLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGF0YX0tPntVc2VyTG9naW59ICkgewoKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPntQYXNzd29yZH0gKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5NaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogUGFzc3dvcmQgb3IgU2Vzc2lvbklEIGlzIHJlcXVpcmVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYXV0aGVudGljYXRlIHVzZXIKICAgIG15ICggJFVzZXJJRCwgJFVzZXJUeXBlICkgPSAkU2VsZi0+QXV0aCglUGFyYW0pOwoKICAgIGlmICggISRVc2VySUQgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkF1dGhGYWlsIiwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBVc2VyIGNvdWxkIG5vdCBiZSBhdXRoZW50aWNhdGVkISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBoYXNoZXMKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtKSkgewogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RGF0YX0tPnskTmVlZGVkfSApICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3Npbmcgb3Igbm90IHZhbGlkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIGl0ZW1zCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggIUlzUG9zaXRpdmVJbnRlZ2VyKCAkUGFyYW17RGF0YX0tPnskTmVlZGVkfSApICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9Lk1pc3NpbmdQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06ICROZWVkZWQgcGFyYW1ldGVyIGlzIG1pc3Npbmcgb3Igbm90IHZhbGlkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgZm9yIHZhbGlkIENvbmZpZ0l0ZW1JRAogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW1JRH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IENvbmZpZ0l0ZW0gZGF0YQogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtRGF0YSkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW1JRCBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGlzb2xhdGUgY29uZmlnIGl0ZW0gcGFyYW1ldGVyCiAgICBteSAkQ29uZmlnSXRlbSA9ICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW19OwoKICAgICMgcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcwogICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXskQ29uZmlnSXRlbX0gKSB7CiAgICAgICAgaWYgKCByZWYgJEF0dHJpYnV0ZSBuZSAnSEFTSCcgJiYgcmVmICRBdHRyaWJ1dGUgbmUgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICMgcmVtb3ZlIGxlYWRpbmcgc3BhY2VzCiAgICAgICAgICAgICRDb25maWdJdGVtLT57JEF0dHJpYnV0ZX0gPX4gc3tcQVxzK317fTsKCiAgICAgICAgICAgICMgcmVtb3ZlIHRyYWlsaW5nIHNwYWNlcwogICAgICAgICAgICAkQ29uZmlnSXRlbS0+eyRBdHRyaWJ1dGV9ID1+IHN7XHMrXHp9e307CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgdGhlIHBhcmFtZXRlciBSZXBsYWNlRXhpc3RpbmdEYXRhIGlzIHNldCB0byAwIG9yIGlmIGl0IGlzIG1pc3NpbmcKICAgICMgdGhlbiBtaXNzaW5nLCBlbXB0eSBvciBvbmx5IHBhcnRpYWxseSBkZWZpbmVkIENJWE1MRGF0YSBwYXJhbWV0ZXIgYXR0cmlidXRlcyBhcmUgYWxsb3dlZAogICAgIyBpbiB0aGlzIGNhc2UgdGhlIGV4aXN0aW5nIENJWE1MRGF0YSBpcyB1c2VkIGZvciB0aGUgbWlzc2luZyBwYXJ0cy4KICAgICMgQSBtaXNzaW5nICh1bmRlZmluZWQpIENJWE1MRGF0YSBhdHRyaWJ1dGUgaGFzIHRoZSBzYW1lIGVmZmVjdAogICAgIyB0aGUgUmVwbGFjZUV4aXN0aW5nRGF0YSBwYXJhbWV0ZXIgYWxzbyBpbmZsdWVuY2VzIGlmIGV4aXN0aW5nIGF0dGFjaG1lbnRzIHNob3VsZCBiZSByZXBsYWNlZCBvciBrZXB0CiAgICBpZiAoICEkUGFyYW17RGF0YX0tPntSZXBsYWNlRXhpc3RpbmdEYXRhfSB8fCAhZGVmaW5lZCAkQ29uZmlnSXRlbS0+e0NJWE1MRGF0YX0gKSB7CgogICAgICAgICMgc2V0IHRvIGVtcHR5IGhhc2ggcmVmZXJlbmNlIGlmIGVtcHR5IG9yIG5vdCBkZWZpbmVkCiAgICAgICAgJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9IHx8PSB7fTsKCiAgICAgICAgIyBDSVhNTERhdGEgbXVzdCBiZSBhIGhhc2ggcmVmZXJlbmNlCiAgICAgICAgaWYgKCByZWYgJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9IG5lICdIQVNIJyApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5NaXNzaW5nUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhIGlzIG1pc3Npbmcgb3IgaW52YWxpZCEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbGF0ZXN0IHZlcnNpb24gZGF0YSBmcm9tIGNvbmZpZ2l0ZW0KICAgICAgICBteSAkVmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFZlcnNpb24pICkgewoKICAgICAgICAgICAgbXkgJEVycm9yTWVzc2FnZSA9ICdDb3VsZCBub3QgZ2V0IENvbmZpZ0l0ZW0gZGF0YScKICAgICAgICAgICAgICAgIC4gJyBpbiBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTo6UnVuKCknOwoKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogJEVycm9yTWVzc2FnZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSB1bm5lZWRlZCBpdGVtcwogICAgICAgIGRlbGV0ZSAkVmVyc2lvbi0+e0NsYXNzSUR9OwogICAgICAgIGRlbGV0ZSAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZUlEfTsKICAgICAgICBkZWxldGUgJFZlcnNpb24tPntDdXJJbmNpU3RhdGVJRH07CiAgICAgICAgZGVsZXRlICRWZXJzaW9uLT57RGVwbFN0YXRlSUR9OwogICAgICAgIGRlbGV0ZSAkVmVyc2lvbi0+e0luY2lTdGF0ZUlEfTsKICAgICAgICBkZWxldGUgJFZlcnNpb24tPntYTUxEZWZpbml0aW9uSUR9OwoKICAgICAgICBteSAkRGVmaW5pdGlvbiA9IGRlbGV0ZSAkVmVyc2lvbi0+e1hNTERlZmluaXRpb259OwoKICAgICAgICBteSAkRm9ybWF0ZWRYTUxEYXRhID0gJFNlbGYtPkludmVydEZvcm1hdFhNTERhdGEoCiAgICAgICAgICAgIFhNTERhdGEgPT4gJFZlcnNpb24tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFJlcGxhY2VkWE1MRGF0YSA9ICRTZWxmLT5JbnZlcnRSZXBsYWNlWE1MRGF0YSgKICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkRm9ybWF0ZWRYTUxEYXRhLAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgICk7CgogICAgICAgICRWZXJzaW9uLT57WE1MRGF0YX0gPSAkUmVwbGFjZWRYTUxEYXRhOwoKICAgICAgICAjIHJlbmFtZSBYTUxEYXRhIHNpbmNlIFNPQVAgdHJhbnNwb3J0IGNvbXBsYWlucyBhYm91dCBYTUwgcHJlZml4IG9uIG5hbWVzCiAgICAgICAgJFZlcnNpb24tPntDSVhNTERhdGF9ID0gZGVsZXRlICRWZXJzaW9uLT57WE1MRGF0YX07CgogICAgICAgICMgbWVyZ2UgZXhpc3RpbmcgZGF0YSBhbmQgbmV3IGRhdGEgZnJvbSBwYXJhbWV0ZXJzCiAgICAgICAgJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9ID0gewogICAgICAgICAgICAleyAkVmVyc2lvbi0+e0NJWE1MRGF0YX0gfSwKICAgICAgICAgICAgJXsgJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9IH0sCiAgICAgICAgfTsKICAgIH0KCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9ICkgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5SZXR1cm5FcnJvcigKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YSBpcyBlbXB0eSBvciBpbnZhbGlkISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBzcGFjZXMgZm9yIENJWE1MRGF0YQogICAgJFNlbGYtPl9DbGVhblhNTERhdGEoIFhNTERhdGEgPT4gJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9ICk7CgogICAgIyBjaGVjayBDb25maWdJdGVtIGF0dHJpYnV0ZSB2YWx1ZXMKICAgIG15ICRDb25maWdJdGVtQ2hlY2sgPSAkU2VsZi0+X0NoZWNrQ29uZmlnSXRlbSggQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSApOwoKICAgIGlmICggISRDb25maWdJdGVtQ2hlY2stPntTdWNjZXNzfSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKCAleyRDb25maWdJdGVtQ2hlY2t9ICk7CiAgICB9CgogICAgIyBjaGVjayB1cGRhdGUgcGVybWlzc2lvbnMKICAgIG15ICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgIENsYXNzSUQgPT4gJFNlbGYtPntSZXZlcnNlQ2xhc3NMaXN0fS0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzfSB9LAogICAgICAgIFVzZXJJRCAgPT4gJFVzZXJJRCwKICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICBpZiAoICEkUGVybWlzc2lvbiApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQWNjZXNzRGVuaWVkIiwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDYW4gbm90IHVwZGF0ZSBjb25maWd1cmF0aW9uIGl0ZW1zISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGhhbmRsZSBhdHRhY2htZW50cwogICAgbXkgJEF0dGFjaG1lbnQ7CiAgICBteSBAQXR0YWNobWVudExpc3Q7CgogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH0gKSB7CgogICAgICAgICMgaXNvbGF0ZSBBdHRhY2htZW50IHBhcmFtZXRlcgogICAgICAgICRBdHRhY2htZW50ID0gZGVsZXRlICRQYXJhbXtEYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH07CgogICAgICAgICMgaG9tb2xvZ2F0ZSBpbXB1dCB0byBhcnJheQogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEF0dGFjaG1lbnQpICkgewogICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50TGlzdCwgJEF0dGFjaG1lbnQ7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCRBdHRhY2htZW50KSApIHsKICAgICAgICAgICAgQEF0dGFjaG1lbnRMaXN0ID0gQHskQXR0YWNobWVudH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPlJldHVybkVycm9yKAogICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgcGFyYW1ldGVyIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgQXR0YWNobWVudCBpbnRlcm5hbCBzdHJ1Y3R1cmUKICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnRJdGVtIChAQXR0YWNobWVudExpc3QpIHsKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEF0dGFjaG1lbnRJdGVtKSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+QXR0YWNobWVudCBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzCiAgICAgICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICV7JEF0dGFjaG1lbnRJdGVtfSApIHsKICAgICAgICAgICAgICAgIGlmICggcmVmICRBdHRyaWJ1dGUgbmUgJ0hBU0gnICYmIHJlZiAkQXR0cmlidXRlIG5lICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICNyZW1vdmUgbGVhZGluZyBzcGFjZXMKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudEl0ZW0tPnskQXR0cmlidXRlfSA9fiBze1xBXHMrfXt9OwoKICAgICAgICAgICAgICAgICAgICAjcmVtb3ZlIHRyYWlsaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgICAgICRBdHRhY2htZW50SXRlbS0+eyRBdHRyaWJ1dGV9ID1+IHN7XHMrXHp9e307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgQXR0YWNobWVudCBhdHRyaWJ1dGUgdmFsdWVzCiAgICAgICAgICAgIG15ICRBdHRhY2htZW50Q2hlY2sgPSAkU2VsZi0+X0NoZWNrQXR0YWNobWVudCggQXR0YWNobWVudCA9PiAkQXR0YWNobWVudEl0ZW0gKTsKCiAgICAgICAgICAgIGlmICggISRBdHRhY2htZW50Q2hlY2stPntTdWNjZXNzfSApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoICV7JEF0dGFjaG1lbnRDaGVja30gKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFNlbGYtPl9Db25maWdJdGVtVXBkYXRlKAogICAgICAgIENvbmZpZ0l0ZW0gICAgICAgICAgPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIEF0dGFjaG1lbnRMaXN0ICAgICAgPT4gXEBBdHRhY2htZW50TGlzdCwKICAgICAgICBSZXBsYWNlRXhpc3RpbmdEYXRhID0+ICRQYXJhbXtEYXRhfS0+e1JlcGxhY2VFeGlzdGluZ0RhdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICk7Cn0KCj1oZWFkMSBJTlRFUk5BTCBJTlRFUkZBQ0UKCj1oZWFkMiBfQ2xlYW5YTUxEYXRhKCkKCnJlbW92ZWQgdHJhaWxpbmcgYW5kIGxlYWRpbmcgd2hpdGUgc3BhY2VzIGluIHRoZSBYTUxEYXRhLgoKICAgIG15ICRYTUxEYXRhQ2xlYW4gPSAkT3BlcmF0aW9uT2JqZWN0LT5fQ2xlYW5YTUxEYXRhKAogICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb25BcnJheVJlZiwgICAgICAgICAgIyBDb25maWcgSXRlbSBEZWZpbml0aW9uIG90IGp1c3QgcGFydCBvZiBpdAogICAgICAgIFhNTERhdGEgICAgPT4gJFhNTERhdGFIYXNoUmVmLAogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICRYTUxEYXRhQ2xlYW4gPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJ5dGhpbmcgaXMgT0sKICAgIH0KCiAgICAkWE1MRGF0YUNsZWFuID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DbGVhblhNTERhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkWE1MRGF0YSA9ICRQYXJhbXtYTUxEYXRhfTsKCiAgICBLRVk6CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRYTUxEYXRhfSApIHsKICAgICAgICBpZiAoIHJlZiAkWE1MRGF0YS0+eyRLZXl9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIEVMRU1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIEB7ICRYTUxEYXRhLT57JEtleX0gfSApIHsKICAgICAgICAgICAgICAgIGlmICggcmVmICRFbGVtZW50IGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24KICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X0NsZWFuWE1MRGF0YSggWE1MRGF0YSA9PiAkRWxlbWVudCApOwogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggcmVmICRFbGVtZW50IGVxICcnICkgewoKICAgICAgICAgICAgICAgICAgICAjcmVtb3ZlIGxlYWRpbmcgc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQgPX4gc3tcQVxzK317fTsKCiAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSB0cmFpbGluZyBzcGFjZXMKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudCA9fiBze1xzK1x6fXt9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggcmVmICRYTUxEYXRhLT57JEtleX0gZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24KICAgICAgICAgICAgJFNlbGYtPl9DbGVhblhNTERhdGEoIFhNTERhdGEgPT4gJFhNTERhdGEtPnskS2V5fSApOwogICAgICAgICAgICBuZXh0IEtFWTsKCiAgICAgICAgfQogICAgICAgIGVsc2lmICggcmVmICRYTUxEYXRhLT57JEtleX0gZXEgJycgKSB7CgogICAgICAgICAgICAjIFRPRE86IFVzZSBTdHJpbmdDbGVhbiBmdW5jdGlvbiEKCiAgICAgICAgICAgICNyZW1vdmUgbGVhZGluZyBzcGFjZXMKICAgICAgICAgICAgJFhNTERhdGEtPnskS2V5fSA9fiBze1xBXHMrfXt9OwoKICAgICAgICAgICAgI3JlbW92ZSB0cmFpbGluZyBzcGFjZXMKICAgICAgICAgICAgJFhNTERhdGEtPnskS2V5fSA9fiBze1xzK1x6fXt9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9DaGVja0NvbmZpZ0l0ZW0oKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBjb25maWcgaXRlbSBwYXJhbWV0ZXJzIGFyZSB2YWxpZC4KCiAgICBteSAkQ29uZmlnSXRlbUNoZWNrID0gJE9wZXJhdGlvbk9iamVjdC0+X0NoZWNrQ29uZmlnSXRlbSgKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLCAgICAgICAgICAgICAgICAgICMgYWxsIGNvbmZpZyBpdGVtIHBhcmFtZXRlcnMKICAgICk7CgogICAgcmV0dXJuczoKCiAgICAkQ29uZmlnSXRlbUNoZWNrID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LCiAgICB9CgogICAgJENvbmZpZ0l0ZW1DaGVjayA9IHsKICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0Z1bmN0aW9uLkVycm9yJywgICAgICAgICAgICMgaWYgZXJyb3IKICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0Vycm9yIGRlc2NyaXB0aW9uJywKICAgIH0KCj1jdXQKCnN1YiBfQ2hlY2tDb25maWdJdGVtIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkUGFyYW17Q29uZmlnSXRlbX07CgogICAgIyBjaGVjayBjb25maWcgaXRlbSBpbnRlcm5hbGx5CiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ2xhc3MgTmFtZSBEZXBsU3RhdGUgSW5jaVN0YXRlIENJWE1MRGF0YSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkQ29uZmlnSXRlbS0+eyROZWVkZWR9OwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ29uZmlnSXRlbS0+JE5lZWRlZCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEiLAogICAgICAgIH07CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtLT5DbGFzcwogICAgaWYgKCAhJFNlbGYtPlZhbGlkYXRlQ2xhc3MoICV7JENvbmZpZ0l0ZW19ICkgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9OiBDb25maWdJdGVtLT5DbGFzcyBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgIH07CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtLT5EZXBsU3RhdGUKICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZURlcGxTdGF0ZSggJXskQ29uZmlnSXRlbX0gKSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgIH07CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtLT5EZXBsU3RhdGUKICAgIGlmICggISRTZWxmLT5WYWxpZGF0ZUluY2lTdGF0ZSggJXskQ29uZmlnSXRlbX0gKSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkluY2lTdGF0ZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgbGFzdCBjb25maWcgaXRlbSBkZWZpbnRpb24KICAgIG15ICREZWZpbml0aW9uRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFNlbGYtPntSZXZlcnNlQ2xhc3NMaXN0fS0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzfSB9LAogICAgKTsKCiAgICBteSAkWE1MRGF0YUNoZWNrUmVzdWx0ID0gJFNlbGYtPkNoZWNrWE1MRGF0YSgKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgIFhNTERhdGEgICAgPT4gJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9LAogICAgKTsKCiAgICBpZiAoICEkWE1MRGF0YUNoZWNrUmVzdWx0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgcmV0dXJuICRYTUxEYXRhQ2hlY2tSZXN1bHQ7CiAgICB9CgogICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LIHRoZW4gcmV0dXJuIFN1Y2Nlc3MKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfTsKfQoKPWhlYWQyIF9DaGVja0F0dGFjaG1lbnQoKQoKY2hlY2tzIGlmIHRoZSBnaXZlbiBhdHRhY2htZW50IHBhcmFtZXRlciBpcyB2YWxpZC4KCiAgICBteSAkQXR0YWNobWVudENoZWNrID0gJE9wZXJhdGlvbk9iamVjdC0+X0NoZWNrQXR0YWNobWVudCgKICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50LCAgICAgICAgICAgICAgICAgICMgYWxsIGF0dGFjaG1lbnQgcGFyYW1ldGVycwogICAgKTsKCiAgICByZXR1cm5zOgoKICAgICRBdHRhY2htZW50Q2hlY2sgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJldGhpbmcgaXMgT0sKICAgIH0KCiAgICAkQXR0YWNobWVudENoZWNrID0gewogICAgICAgIEVycm9yQ29kZSAgICA9PiAnRnVuY3Rpb24uRXJyb3InLCAgICAgICAgICAgIyBpZiBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAnRXJyb3IgZGVzY3JpcHRpb24nLAogICAgfQoKPWN1dAoKc3ViIF9DaGVja0F0dGFjaG1lbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0YWNobWVudCA9ICRQYXJhbXtBdHRhY2htZW50fTsKCiAgICAjIGNoZWNrIGF0dGFjaG1lbnQgaXRlbSBpbnRlcm5hbGx5CiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29udGVudCBDb250ZW50VHlwZSBGaWxlbmFtZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkQXR0YWNobWVudC0+eyROZWVkZWR9OwoKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uTWlzc2luZ1BhcmFtZXRlciIsCiAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF0dGFjaG1lbnQtPiROZWVkZWQgIHBhcmFtZXRlciBpcyBtaXNzaW5nISIsCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGNoZWNrIEFydGljbGUtPkNvbnRlbnRUeXBlCiAgICBpZiAoICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9ICkgewoKICAgICAgICAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSA9IGxjICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9OwoKICAgICAgICAjIGNoZWNrIENoYXJzZXQgcGFydAogICAgICAgIG15ICRDaGFyc2V0ID0gJyc7CiAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfSA9fiAvY2hhcnNldD0vaSApIHsKICAgICAgICAgICAgJENoYXJzZXQgPSAkQXR0YWNobWVudC0+e0NvbnRlbnRUeXBlfTsKICAgICAgICAgICAgJENoYXJzZXQgPX4gcy8uKz9jaGFyc2V0PSgifCd8KShcdyspLyQyL2dpOwogICAgICAgICAgICAkQ2hhcnNldCA9fiBzLyJ8Jy8vZzsKICAgICAgICAgICAgJENoYXJzZXQgPX4gcy8oLis/KTsuKi8kMS9nOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ2hhcnNldCAmJiAhJFNlbGYtPlZhbGlkYXRlQ2hhcnNldCggQ2hhcnNldCA9PiAkQ2hhcnNldCApICkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgTWltZVR5cGUgcGFydAogICAgICAgIG15ICRNaW1lVHlwZSA9ICcnOwogICAgICAgIGlmICggJEF0dGFjaG1lbnQtPntDb250ZW50VHlwZX0gPX4gL14oXHcrXC9cdyspL2kgKSB7CiAgICAgICAgICAgICRNaW1lVHlwZSA9ICQxOwogICAgICAgICAgICAkTWltZVR5cGUgPX4gcy8ifCcvL2c7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VsZi0+VmFsaWRhdGVNaW1lVHlwZSggTWltZVR5cGUgPT4gJE1pbWVUeXBlICkgKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBldmVyeXRoaW5nIGlzIE9LIHRoZW4gcmV0dXJuIFN1Y2Nlc3MKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfTsKfQoKPWhlYWQyIF9Db25maWdJdGVtVXBkYXRlKCkKCnVwZGF0ZXMgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhdHRhY2htZW50cyBpZiBzcGVjaWZpZWQuCgogICAgbXkgJFJlc3BvbnNlID0gJE9wZXJhdGlvbk9iamVjdC0+X0NvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICA9PiAxMjMsCiAgICAgICAgQ29uZmlnSXRlbSAgICAgICAgICA9PiAkQ29uZmlnSXRlbSwgICAgICAgICAgICAgIyBhbGwgY29uZmlndXJhdGlvbiBpdGVtIHBhcmFtZXRlcnMKICAgICAgICBBdHRhY2htZW50TGlzdCAgICAgID0+ICRBdHRhY2htZW50LCAgICAgICAgICAgICAjIGEgbGlzdCBvZiBhbGwgYXR0YWNobWVudHMKICAgICAgICBSZXBsYWNlRXhpc3RpbmdEYXRhID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBleGlzdGluZyB4bWwgYXR0cmlidXRlcyBhbmQgYXR0YWNobWVudHMgc2hvdWxkIGJlIHJlcGxhY2VkIG9yIGtlcHQKICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEyMywKICAgICk7CgogICAgcmV0dXJuczoKCiAgICAkUmVzcG9uc2UgPSB7CiAgICAgICAgU3VjY2VzcyA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIGV2ZXJldGhpbmcgaXMgT0sKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAnQ04xMjMnLAogICAgICAgIH0KICAgIH0KCiAgICAkUmVzcG9uc2UgPSB7CiAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgdW5leHBlY3RlZCBlcnJvcgogICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFBhcmFte0Vycm9yQ29kZX06ICRQYXJhbXtFcnJvck1lc3NhZ2V9IiwKICAgIH0KCj1jdXQKCnN1YiBfQ29uZmlnSXRlbVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtSUQgICA9ICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgbXkgJENvbmZpZ0l0ZW0gICAgID0gJFBhcmFte0NvbmZpZ0l0ZW19OwogICAgbXkgJEF0dGFjaG1lbnRMaXN0ID0gJFBhcmFte0F0dGFjaG1lbnRMaXN0fTsKCiAgICBteSAkRGVwbFN0YXRlSUQgPSAkU2VsZi0+e1JldmVyc2VEZXBsU3RhdGVMaXN0fS0+eyAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZX0gfTsKICAgIG15ICRJbmNpU3RhdGVJRCA9ICRTZWxmLT57UmV2ZXJzZUluY2lTdGF0ZUxpc3R9LT57ICRDb25maWdJdGVtLT57SW5jaVN0YXRlfSB9OwoKICAgIG15ICRSYXdYTUxEYXRhID0gJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9OwoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIG9iamVjdAogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGdldCBsYXN0IGNvbmZpZyBpdGVtIGRlZmludGlvbgogICAgbXkgJERlZmluaXRpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkU2VsZi0+e1JldmVyc2VDbGFzc0xpc3R9LT57ICRDb25maWdJdGVtLT57Q2xhc3N9IH0sCiAgICApOwoKICAgICMgcmVwbGFjZSBkYXRlLCBkYXRlIHRpbWUsIGN1c3RvbWVyLCBjb21wYW55IGFuZCBnZW5lcmFsIGNhdGFsb2cgdmFsdWVzCiAgICBteSAkUmVwbGFjZWRYTUxEYXRhID0gJFNlbGYtPlJlcGxhY2VYTUxEYXRhKAogICAgICAgIFhNTERhdGEgICAgPT4gJFJhd1hNTERhdGEsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uUmVmfSwKICAgICk7CgogICAgIyBjcmVhdGUgYW4gWE1MRGF0YSBzdHJ1Y3R1cmUgc3VpdGFibGUgZm9yIFZlcnNpb25BZGQKICAgIG15ICRYTUxEYXRhID0gJFNlbGYtPkZvcm1hdFhNTERhdGEoCiAgICAgICAgWE1MRGF0YSA9PiAkUmVwbGFjZWRYTUxEYXRhLAogICAgKTsKCiAgICAjIGdldCB0aGUgY3VycmVudCBjb25maWcgaXRlbSB2ZXJzaW9uIGRhdGEKICAgIG15ICRDdXJyZW50VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uSUR9LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlSUQsCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVJRCwKICAgICAgICBYTUxEYXRhICAgICAgPT4gJFhNTERhdGEsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBpZiAoICEkVmVyc2lvbklEICkgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ3VyYXRpb24gSXRlbSBjb3VsZCBub3QgYmUgdXBkYXRlZCwgcGxlYXNlIGNvbnRhY3QgdGhlIHN5c3RlbScKICAgICAgICAgICAgICAgIC4gJ2FkbWluaXN0cmF0b3InCiAgICAgICAgfTsKICAgIH0KCiAgICAjIGdldCB0aGUgdmVyc2lvbiBJRCBvZiB0aGUgY29uZmlnIGl0ZW0gYmVmb3JlIHRoZSB1cGRhdGUKICAgIG15ICRDdXJyZW50VmVyc2lvbklEID0gJEN1cnJlbnRWZXJzaW9uLT57VmVyc2lvbklEfSB8fCAnJzsKCiAgICAjIGNvbXBhcmUgb2xkIHZlcnNpb24gYW5kIG5ldyB2ZXJzaW9uIElEcwogICAgaWYgKCAkQ3VycmVudFZlcnNpb25JRCBlcSAkVmVyc2lvbklEICkgewogICAgICAgICRTZWxmLT57RGVidWdnZXJPYmplY3R9LT5Ob3RpY2UoCiAgICAgICAgICAgIFN1bW1hcnkgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IE5vIGNoYW5nZSBpbiBjb25maWd1cmF0aW9uIGl0ZW0gdmVyc2lvbiIsCiAgICAgICAgICAgIERhdGEgICAgPT4gJ1RoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB3YXMgaW5kZW50aWNhbCB0byB0aGUgbGFzdCcKICAgICAgICAgICAgICAgIC4gJyBvbmUsIG5vIHVwZGF0ZSB3YXMgcGVyZm9ybWVkJywKICAgICAgICApOwogICAgfQoKICAgICMgdGhlIFJlcGxhY2VFeGlzdGluZ0RhdGEgZmxhZyBpcyBzZXQKICAgIGlmICggJFBhcmFte1JlcGxhY2VFeGlzdGluZ0RhdGF9ICkgewoKICAgICAgICAjIGdldCBhIGxpc3Qgb2YgYWxsIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSBhbGwgYXR0YWNobWVudHMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGRlbGV0ZSB0aGUgYXR0YWNobWVudAogICAgICAgICAgICBteSAkRGVsZXRpb25TdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBGSUxFTkFNRSBpZiAkRGVsZXRpb25TdWNjZXNzOwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVua25vd24gcHJvYmxlbSB3aGVuIGRlbGV0aW5nIGF0dGFjaG1lbnQgJEZpbGVuYW1lIG9mIENvbmZpZ0l0ZW0gIgogICAgICAgICAgICAgICAgICAgIC4gIiRDb25maWdJdGVtSUQuIFBsZWFzZSBjaGVjayB0aGUgVmlydHVhbEZTIGJhY2tlbmQgZm9yIHN0YWxlIGZpbGVzISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGF0dGFjaG1lbnRzCiAgICBBVFRBQ0hNRU5UOgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJEF0dGFjaG1lbnRMaXN0KSApIHsKCiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50ICggQHskQXR0YWNobWVudExpc3R9ICkgewogICAgICAgICAgICBteSAkUmVzdWx0ID0gJFNlbGYtPkNyZWF0ZUF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ICAgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICRSZXN1bHQtPntTdWNjZXNzfTsKCiAgICAgICAgICAgIG15ICRFcnJvck1lc3NhZ2UgPSAkUmVzdWx0LT57RXJyb3JNZXNzYWdlfQogICAgICAgICAgICAgICAgfHwgIkF0dGFjaG1lbnQgY291bGQgbm90IGJlIGNyZWF0ZWQsIHBsZWFzZSBjb250YWN0IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvciI7CgogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJEVycm9yTWVzc2FnZSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgQ29uZmlnSXRlbSBkYXRhCiAgICBteSAkQ29uZmlnSXRlbURhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1EYXRhKSApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb3VsZCBub3QgZ2V0IG5ldyBjb25maWd1cmF0aW9uIGl0ZW0gaW5mb3JtYXRpb24sIHBsZWFzZSBjb250YWN0IHRoZSBzeXN0ZW0gYWRtaW5pc3RyYXRvcicsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICBEYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbURhdGEtPntOdW1iZXJ9LAogICAgICAgIH0sCiAgICB9Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/Language/ar_SA_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6YXJfU0FfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfYqNmK2YYnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICcnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ9in2YTZhdmD2KrYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/bg_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6YmdfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRgtC1INC10LTQuNC90LjRhtC4IENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAn0J/RgNC+0LzRj9C90LAnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICfQmtC70LDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0J/QvtGB0LvQtdC00L3QsCDQv9GA0L7QvNGP0L3QsCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQWRkLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn0LLRgNC10LzQtSDQvdCwINGB0YrQt9C00LDQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ9CU0LAg0YLRitGA0YHQuCDQuCDQsiDQv9GA0LXQtNC40YjQvdC40YLQtSDQstC10YDRgdC40Lg/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQn9C+0YHQu9C10LTQvdC+INC/0YDQvtC80LXQvdC10L0g0L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn0JzQtdC20LTRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAn0KHQtdGA0LjQtdC9INCd0L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn0J/RgNC+0YbQtdGB0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICfQn9Cw0LzQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ9Ci0LLRitGA0LQg0LTQuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICfQmtCw0L/QsNGG0LjRgtC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICfQnNGA0LXQttC+0LIg0LDQtNCw0L/RgtC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnSVAg0L7RgiBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdJUCDQsNC00YDQtdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJ9CT0YDQsNGE0LjRh9C90LAg0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICfQlNGA0YPQs9C+INC+0LHQvtGA0YPQtNCy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ9CU0LDRgtCwINC90LAg0LjQt9GC0LjRh9Cw0L3QtSDQvdCwINCz0LDRgNCw0L3RhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJ9CU0LDRgtCwINC90LAg0LjQvdGB0YLQsNC70LDRhtC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICfQnNGA0LXQttC+0LIg0LDQtNGA0LXRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ9Cc0LDRgdC60LAg0L3QsCDQv9C+0LTQvNGA0LXQttCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAn0JPQtdC50YIg0L/RgNC10YXQvtC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ9Ci0LjQvyDQvdCwINC70LjRhtC10L3Qt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAn0JvQuNGG0LXQvdC30LXQvSDQutC70Y7Rhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJ9CU0LDRgtCwINC90LAg0LjQt9GC0LjRh9Cw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJ9Cc0LXQtNC40Y8nOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfQmNC30YLQtdC60LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Cf0L7QtNC00YDRitC20LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Cf0LjQu9C+0YIt0LLQvtC00LDRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn0J/Qu9Cw0L3QuNGA0LDQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9Cg0LXQvNC+0L3Rgi/QktGK0LfRgdGC0LDQvdC+0LLRj9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfQmNC30LvRj9C30YrQuyDQvtGCINGD0L/QvtGC0YDQtdCx0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn0J/RgNC10LPQu9C10LbQtNCw0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9Ci0LXRgdGCL9Ca0LDRh9C10YHRgtCy0LXQvSDQutC+0L3RgtGA0L7Quyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfQn9GA0LXQvdC+0YHQuNC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfQndCw0YHRgtC+0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJ1BEQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICfQodGK0YDQstGK0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfQlNGA0YPQs9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICfQnNC+0L3QuNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAn0J/RgNC40L3RgtC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAn0JrQvtC90YbQtdC90YLRgNCw0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ9Cg0YPRgtC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdXTEFOINGC0L7Rh9C60LAg0LfQsCDQtNC+0YHRgtGK0L8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAn0KMt0LLQviDQt9CwINGB0LjQs9GD0YDQvdC+0YHRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAn0JDRgNGF0LjQstC40YDQsNGJ0L4g0YMt0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9Cc0LjRiNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfQmtC70LDQstC40LDRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICfQmtCw0LzQtdGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAn0JHQuNC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ9Cc0L7QtNC10LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdQQ01DSUEg0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnVVNCINCj0YHRgtGA0L7QudGB0YLQstC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ9CU0L7QutC40L3QsyDRgdGC0LDQvdGG0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAn0KHQutC10L3QtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ9Ce0YTQuNGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJ1RlbGNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJ0dTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICfQn9C+0YLRgNC10LHQuNGC0LXQu9GB0LrQuCDQv9GA0LjQu9C+0LbQtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAn0KHRgNC10LTQvdC+INC90LjQstC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJ9Ch0YrRgNCy0YrRgNC90L4g0L/RgNC40LvQvtC20LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAn0J/QvtGC0YDQtdCx0LjRgtC10LvRgdC60LAg0J7Qv9C10YAu0YEt0LzQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICfRgdGK0YDQstGK0YDQvdCwINCe0L/QtdGALtGBLdC80LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ9CQ0LTQvNC40L3QuNGB0YLRgNCw0YLQuNCy0L3QtdC9INC40L3RgdGC0YDRg9C80LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJ9Ca0LvQuNC10L3RgtGB0LrQuCDQuNC90YHRgtGA0YPQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ9CS0LPRgNCw0LTQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICfQldC00LjQvdC40YfQtdC9INC70LjRhtC10L3Qtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ9Cb0LjRhtC10L3Qt9C40YDQsNC90LUg0LfQsCDQv9C+0YLRgNC10LHQuNGC0LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAn0JvQuNGG0LXQvdC30LjRgNCw0L3QtSDQt9CwINC/0YDQvtGG0LXRgdC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ9Cb0LjRhtC10L3Qt9C40YDQsNC90LUg0LfQsCDRgdGK0YDQstGK0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICfQm9C40YbQtdC90LfQuNGA0LDQvdC1INC90LAg0YLQvtGH0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ9Ch0L/QtdGG0LjQsNC70L3QuCDQvtCx0LXQvNC90Lgg0L/RgNC+0LPRgNCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICfQldC90YLRitGA0L/RgNCw0LnRgSDQu9C40YbQtdC90LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICfQm9C40YbQtdC90Lcg0LfQsCDRgNCw0LfRgNCw0LHQvtGC0YfQuNGG0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ9CU0LXQvNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJ9Cb0LjRhtC10L3Qtywg0L7Qs9GA0LDQvdC40YfQtdC9INC/0L4g0LLRgNC10LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ9CR0LXQt9C/0LvQsNGC0L3QviDRgNCw0LfQv9GA0L7RgdGC0YDQsNC90Y/QstCw0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICfQodC+0YTRgtGD0LXRgCDRgSDQvtGC0LLQvtGA0LXQvSDQutC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAn0J3QtdC+0LPRgNCw0L3QuNGH0LXQvSDQu9C40YbQtdC90LcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQndCw0L/RgNCw0LLQuCDQutC+0L/QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0L/RgNC40LzQtdGA0L3QuNGC0LUg0YDQsNC30YDQtdGI0LjRgtC10LvQvdC4INCz0YDRg9C/0Lgg0L7RgiDQsNGC0YDQuNCx0YPRgtC40YLQtSDQvdCwINC+0LHRidC40Y8g0LrQsNGC0LDQu9C+0LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/ca_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6Y2FfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSBkZSB6b29tJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICcnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ09maWNpbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/cs_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6Y3NfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnU3Byw6F2YSBLb25maWd1cmHEjW7DrWNoIFBvbG/FvmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnWm3Em25pdCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudERhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpYy50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF2IEluY2lkZW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhdiBOYXNhemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdUxZnDrWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnQWt0dcOhbG7DrSBTdGF2IEluY2lkZW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnUG9zbGVkbsOtIHptxJtuYSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQWRkLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlnLiBQb2xvxb5rYSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0ptw6lubyB0w6l0byBLb25maWcuIFBvbG/Fvmt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRG9iYSB2eXR2b8WZZW7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnTmFzdGF2ZW7DrSBrb250ZXh0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdIbGVkYXQgdGFrw6kgdiBwxZllZGNob3rDrWNoIHZlcnrDrWNoPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1w6FsbsOtIFN0YXYgTmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1Bvc2xlZG7DrSB6bcSbbmEgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdiBOYXNhemVuw60gdMOpdG8gS29uZmlnLiBQb2xvxb5reSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXYgSW5jaWRlbnR1IHTDqXRvIEtvbmZpZy4gUG9sb8W+a3knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWV6aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXggcG/EjWV0IGplZG7DqSBQb2xvxb5reSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ1DFmWVza2/EjWVubyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnU8OpcmlvdsOpIMSMw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ1Bldm7DvSBEaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnS2FwYWNpdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICdTw63FpW92w70gQWRhcHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCB6IERIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJ0lQIEFkcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICdHcmFmaWNrw6EgS2FydGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnSmluw6kgVnliYXZlbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ0tvbmVjIHBsYXRub3N0aSB6w6FydWt5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJ0RhdHVtIEluc3RhbGFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnVGVsZWZvbiAxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICdUZWxlZm9uIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJ1PDrcWlb3bDoSBBZHJlc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICdNYXNrYSBQb2Rzw610xJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ0dhdGV3YXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnRHJ1aCBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAnTGljZW7EjW7DrSBLbMOtxI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICdNbm/FvnN0dsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJ0tvbmVjIFBsYXRub3N0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJ03DqWRpdW0nOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdQcm9wYWRudXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ8OaZHLFvmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnxZjDrWTDrWPDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnTmFwbMOhbm92w6Fubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ09wcmF2YS9PYm5vdmVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ01pbW8gcHJvdm96JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1DFmWVobGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L0tvbnRyb2xhIGt2YWxpdHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTW9iaWxuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1N0b2xuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ1NlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0ppbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICdNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICdUaXNrw6FybmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnU3dpdGNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ1JvdXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJ1DFmcOtc3R1cG92w70gQm9kIFdMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnQmV6cGXEjW5vc3Ruw60gWmHFmcOtemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJ1rDoWxvaG92w6Fjw60gWmHFmcOtemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNecWhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2zDoXZlc25pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnS2FtZXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ0JlYW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ01vZGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnUENNQ0lBIGthcnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICdVU0IgWmHFmcOtemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnRG9rIFN0YW5pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ1NrZW5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J1ZG92YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdLYW5jZWzDocWZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAncG9kbGHFvsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdNw61zdG5vc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJ1JhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnUHJhY292acWhdMSbJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJ0ZpbGnDoWxrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJ0lUIFDFmcOtc2x1xaFlbnN0dsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJ1RlbGNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJ0dTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICdVxb5pdmF0ZWxza8OpIEFwbGlrYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICdTdMWZZWRuw60gw7pyb3ZlxYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnU2VydmVyb3bDoSBBcGxpa2FjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICdVxb5pdmF0ZWxza8O9IE9wZXJhxI1uw60gU3lzdMOpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdTZXJ2ZXJvdsO9IE9wZXJhxI1uw60gU3lzdMOpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnQWRtaW5pc3RyYcSNbsOtIG7DoXN0cm9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJ1XFvml2YXRlbHNrw70gTsOhc3Ryb2onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICdWZXN0YXbEm27DvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ0plZG5vZHVjaMOhIExpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICduYSBVxb5pdmF0ZWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICduYSBQcm9jZXNvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnbmEgU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnbmEgVXplbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ1N2YXprb3bDoSBMaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJ1BvZG5pa292w6EgTGljZW5jZSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICdMaWNlbmNlIFbDvXZvasOhxZllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICdEZW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJ8SMYXNvdsSbIG9tZXplbsOhIExpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ1NvZnR3YXJlIHMgT3RldsWZZW7DvW0gS8OzZGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ05lb21lemVuw6EnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2FjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBza3VwaW55IHBybyBwxZnDrWtsYWQgb3Byw6F2bsSbbsOtIG9iZWNuw71jaCBhdHJpYnV0xa8ga2F0YWxvZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/da_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGFfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnQ29uZmlnIEl0ZW0gc3R5cmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSd9ID0gJ1NraWZ0JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50IHRpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdEZXBsb3ltZW50IHRpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTnV2w6ZyZW5kZSBJbmNpZGVudCB0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU2lkc3Qgw6ZuZHJldCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQWRkLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnQ29uZmlnIEl0ZW0nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXZuZXQgcMOlIGRlbm5lIENvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0hpc3RvcmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdPcHJldHRlbHNlc3RpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdab29tLXZpc25pbmcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1PDuGcgb2dzw6UgaSB0aWRsaWdlcmUgdmVyc2lvbmVyPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdOdXbDpnJlbmRlIGRlcGxveW1lbnQgc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1NpZHN0IMOmbmRyZXQgYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGVwbG95bWVudCB0aWxzdGFuZCBmb3IgZGVubmUgQ29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJbmNpZGVudCB0aWxzdGFuZCBmb3IgZGVubmUgQ29uZmlnIEl0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWVsbGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltdW0gYW50YWwgYWYgZXQgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnU2VyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJ1JBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICdIYXJkZGlzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJ0thcGFjaXRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ05ldGtvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnSVAgdmlhIERIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJ0lQIGFkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICdBbmRldCB1ZHN0eXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnVWRsw7hic2RhdG8gZm9yIGdhcmFudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnSW5zdGFsbGF0aW9uc2RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ1RlbGVmb24gMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnVGVsZWZvbiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICdOZXR2w6Zya3NhZHJlc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnU3VibmV0IG1hc2tlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICdHYXRld2F5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ0xpY2Vuc3R5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdMaWNlbnNuw7hnbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICdNw6ZuZ2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJ1VkbMO4YnNkYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnTWVkaWUnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdVZGzDuGJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1ZlZGxpZ2Vob2xkZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGVyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1BlcnNpb25lcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ0FubWVsZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJ1BEQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICdTZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBbmRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnUHJpbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICdTd2l0Y2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnUm91dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnV0xBTiBBY2Nlc3MgUG9pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnU2lra2VyaGVkc2VuaGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICdCYWNrdXAgZW5oZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYXN0YXR1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdLYW1lcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnQmVhbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTW9kZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdQQ01DSUEga29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnVVNCIGVuaGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ0RvY2tpbmcgU3RhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnU2thbm5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J5Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAnS29udG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnRXRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICdBcmJlamRzcGxhZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnU3Rpa2tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICdJVCBmYWNpbGl0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICdXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVGVsY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ0tsaWVudCBhcGxpa2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICdNaWRkbGV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJ1NlcnZlciBhcGxpa2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJ0tsaWVudCBPUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdTZXJ2ZXIgT1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ0FkbWluIHbDpnJrdMO4amVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJ0JydWdlciB2w6Zya3TDuGplcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnRW5rZWx0bGljZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnUHIgYnJ1Z2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICdQciBwcm9jZXNzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ1ByIHNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJ1ByIG5vZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICdWb2x1bWVuIExpY2Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICdFbnRlcnByaXNlIGxpY2Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ1VkdmlrbGVyIGxpY2Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnRGVtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICdUaWRzYmVncsOmbnNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnT3BlbiBTb3VyY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAnVW5iZWdyw6Zuc2V0JzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWtlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/de_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGVfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICdEaWVzZXMgRmVsZCBpc3QgZXJmb3JkZXJsaWNoIHVuZCBkZXIgV2VydCBtdXNzIGFscGhhbnVtZXJpc2NoIHNlaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J011c3QgYmUgdW5pcXVlIGFuZCBvbmx5IGFjY2VwdHMgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuJ30gPSAnTXVzcyBlaW5kZXV0aWcgc2VpbiB1bmQgZGFyZiBudXIgYWxwaGFudW1lcmlzY2hlIFplaWNoZW4gZW50aGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIHRoZSBvcmRlciBpbiB3aGljaCB0aGlzIGZpZWxkIHdpbGwgYmUgc2hvd24gb24gdGhlIHNjcmVlbnMgd2hlcmUgaXQgaXMgYWN0aXZlLid9ID0KICAgICAgICAnRGllcyBpc3QgZGllIFJlaWhlbmZvbGdlLCBpbiBkZXIgZGllc2VzIEZlbGQgaW4gZGVuIGFrdGl2ZW4gRGlhbG9nZW4gYW5nZXplaWd0IHdpcmQuJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FkbWluRHluYW1pY0ZpZWxkQ29uZmlnSXRlbS9Db25maWcudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGNsYXNzJ30gPSAnQ29uZmlnLUl0ZW0tS2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzZWxlY3RlZCBjb25maWcgaXRlbSBjbGFzcyBpcyBpbnZhbGlkIG9yIGRvZXMgbm90IGV4aXN0Lid9ID0KICAgICAgICAnRGllIGdld8OkaGx0ZSBDb25maWctSXRlbS1LbGFzc2UgaXN0IHVuZ8O8bHRpZyBvZGVyIGV4aXN0aWVydCBuaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZGVwbG95bWVudCBzdGF0ZXMnfSA9ICdDb25maWctSXRlbS1WZXJ3ZW5kdW5nc3N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICdDb25maWctSXRlbS1MaW5rdHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIGxpbmsgdHlwZSB0byBlbmFibGUgbGlua2luZyBiZXR3ZWVuIHRoZSB0aWNrZXQgYW5kIHRoZSBzZWxlY3RlZCBjb25maWcgaXRlbXMuIE5vdGUgdGhhdCBsaW5raW5nIGlzIG9ubHkgYXZhaWxhYmUgZm9yIGR5bmFtaWMgZmllbGRzIG9mIHRpY2tldHMuJ30gPQogICAgICAgICdXw6RobGVuIFNpZSBlaW5lbiBMaW5rdHlwLCB1bSBkaWUgVmVya27DvHBmdW5nIHp3aXNjaGVuIFRpY2tldCB1bmQgZ2V3w6RobHRlbiBDb25maWctSXRlbXMgenUgYWt0aXZpZXJlbi4gQmVhY2h0ZW4gU2llLCBkYXNzIGRpZSBWZXJrbsO8cGZ1bmcgbnVyIGbDvHIgZHluYW1pc2NoZSBGZWxkZXIgdm9uIFRpY2tldHMgenVyIFZlcmbDvGd1bmcgc3RlaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGxpbmsgc291cmNlJ30gPSAnQ29uZmlnLUl0ZW0tTGlua3F1ZWxsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICdDb25maWctSXRlbS1MaW5rcyBlbnRmZXJuZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnQWt0aXZpZXJlbiBTaWUgZGllc2UgT3B0aW9uLCB1bSBWZXJrbsO8cGZ1bmdlbiB6d2lzY2hlbiBUaWNrZXQgdW5kIENvbmZpZy1JdGVtcyB6dSBlbnRmZXJuZW4sIGRpZSBhdXMgZGllc2VtIEZlbGQgZW50ZmVybnQgd3VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBrZXknfSA9ICdDb25maWctSXRlbS1TY2hsw7xzc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgZmlsbGVkIHdpdGggdmFsdWVzIG9mIHRoZSBzYW1lIHNlbGVjdGVkIGNvbmZpZyBpdGVtKHMpLid9ID0KICAgICAgICAnRGllc2UgZHluYW1pc2NoZW4gRmVsZGVyIHdlcmRlbiBtaXQgZGVuIFdlcnRlbiBhdXMgZGVtL2RlbiBnZXfDpGhsdGVuIENvbmZpZy1JdGVtKHMpIGJlZsO8bGx0Lic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0tsYXNzZW4tRGVmaW5pdGlvbiDDpG5kZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdDb25maWdJdGVtLVZlcndhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWdJdGVtLUtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAnRGVmaW5pdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UnfSA9ICfDhG5kZXJuJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1ZvcmZhbGxzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzLVR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnQWt0dWVsbGVyIFZvcmZhbGxzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0FrdHVlbGxlciBWb3JmYWxsc3N0YXR1cy1UeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnWnVsZXR6dCBnZcOkbmRlcnQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIGbDvHIgS2xhc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdXw6RobGVuIFNpZSBlaW5lIEtsYXNzZSBhdXMgZGVyIExpc3RlIGF1cyB1bSBlaW4gbmV1ZXMgQ29uZmlnIEl0ZW0genUgZXJzdGVsbGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZyBJdGVtJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gU2FtbWVsYWt0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdWZXJ3ZW5kdW5nc3N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1ZvcmZhbGxzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnWnUgZWluZW0gYW5kZXJlbiB2ZXJrbsO8cGZlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnVW5nw7xsdGlnZSBDb25maWd1cmF0aW9uIEl0ZW0gTnVtbWVyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdEaWUgTnVtbWVyIGRlcyB6dSB2ZXJrbsO8cGZlbmRlbiBDb25maWd1cmF0aW9uIEl0ZW1zLic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnS3VuZGVuYmV6b2dlbmUgQ29uZmlnLUl0ZW1zJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdXb2xsZW4gU2llIGRpZXNlcyBDb25maWd1cmF0aW9uIEl0ZW0gd2lya2xpY2ggbMO2c2NoZW4/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGVyIE5hbWUgZGllc2VzIENvbmZpZ3VyYXRpb24gSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hbWUgd2lyZCBiZXJlaXRzIHZvbiBkZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBtaXQgZGVuIGZvbGdlbmRlbiBOdW1tZXJuIHZlcndlbmRldDogJXMnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWUgdm9uIENvbmZpZ3VyYXRpb24gSXRlbTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnw4RuZGVydW5nc3ZlcmxhdWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0Vyc3RlbGx0IGFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ0RldGFpbGFuc2ljaHQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnS29udGV4dC1FaW50c3RlbGx1bmdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW1zIHBybyBTZWl0ZSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnRWluZSBnZW5lcmlzY2hlIElUU00gQ29uZmlndXJhdGlvbiBJdGVtLVRhYmVsbGUuJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0F1Y2ggaW4gZnLDvGhlcmVuIFZlcnNpb25lbiBzdWNoZW4/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FrdHVlbGxlciBWZXJ3ZW5kdW5nc3N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdadWxldHp0IGdlw6RuZGVydCB2b24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJ051ciBlaW5lIFZlcnNpb24gYW56ZWlnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICdBbGxlIFZlcnNpb25lbiBhbnplaWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAnVm9yZmFsbHN0YXR1cy1WZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ZlcnNpb24gZGVzIFZlcndlbmR1bmdzc3RhdHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb25zbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tVmVyc2lvbnNkZXRhaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAnRWlnZW5zY2hhZnQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICdFcyB3aXJkIGtlaW4gWnVncmlmZiBhdWYgZGllIEtsYXNzZSBnZXfDpGhydCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgSUQgZsO8ciBkYXMgQ29uZmlndXJhdGlvbiBJdGVtIGFuZ2VnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdTaWUgYmVuw7Z0aWdlbiB3ZW5pZ3N0ZW5zIGVpbiBhdXNnZXfDpGhsdGVzIENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdTaWUgaGFiZW4ga2VpbmUgU2NocmVpYi1CZXJlY2h0aWd1bmdlbiBmw7xyIGRpZXNlcyBDb25maWd1cmF0aW9uIEl0ZW06ICVzLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtICIlcyIgaW4gRGF0ZW5iYW5rIG5pY2h0IGdlZnVuZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0VzIHdhciBuaWNodCBtw7ZnbGljaCwgZGllIENvbmZpZ3VyYXRpb24gSXRlbS1JRCAlcyB6dSBsw7ZzY2hlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0tlaW5lIFZlcnNpb24gZsO8ciBDb25maWd1cmF0aW9uIEl0ZW0tSUQgJXMgZ2VmdW5kZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIENvbmZpZ3VyYXRpb24gSXRlbS1JRCwgRHVwbGlrYXRzLUlEIG9kZXIgS2xhc3Nlbi1JRCBhbmdlZ2ViZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdLZWluIFp1Z3JpZmYgZ2V3w6RocnQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0tlaW5lIERlZmluaXRpb24gZsO8ciBLbGFzc2UgJXMgZGVmaW5pZXJ0ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdLYW5uIEhpc3RvcmllIG5pY2h0IGFuemVpZ2VuLCBrZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tSUQgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0thbm4gSGlzdG9yaWUgbmljaHQgYW56ZWlnZW4sIGtlaW5lIENvbmZpZ3VyYXRpb24gSXRlbS1JRCDDvGJlcm1pdHRlbHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOZXVlcyBDb25maWd1cmF0aW9uIEl0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTmV1ZSBWZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdWZXJ3ZW5kdW5nc3N0YXR1cyBha3R1YWxpc2llcnQgKG5ldT0lcywgYWx0PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdWb3JmYWxsc3RhdHVzIGFrdHVhbGlzaWVydCAobmV1PSVzLCBhbHQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGdlbMO2c2NodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1Zlcmtuw7xwZnVuZyB6dSAlcyAoVHlwPSVzKSBoaW56dWdlZsO8Z3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ1Zlcmtuw7xwZnVuZyB6dSAlcyAoVHlwPSVzKSBnZWzDtnNjaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0tRGVmaW5pdGlvbiBha3R1YWxpc2llcnQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbWUgYWt0dWFsaXNpZXJ0IChuZXU9JXMsIGFsdD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dCAlcyBha3R1YWxpc2llcnQgdm9uICIlcyIgbmFjaCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgZ2Vsw7ZzY2h0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgQ29uZmlndXJhdGlvbiBJdGVtLUlEIG9kZXIgVmVyc2lvbnMtSUQgYW5nZWdlYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0ga2FubiBuaWNodCBhbmdlemVpZ3Qgd2VyZGVuLCBrZWluZSBadWdyaWZmc3JlY2h0ZSB2ZXJnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tSUQgJXMgaW4gRGF0ZW5iYW5rIG5pY2h0IGdlZnVuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ1ZlcnNpb25zLUlEICVzIGluIERhdGVuYmFuayBuaWNodCBnZWZ1bmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2dlZHJ1Y2t0IHZvbiAlcyBhbSAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ1VuZ8O8bHRpZ2UgS2xhc3Nlbi1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdLZWluZSBLbGFzc2VuLUlEIMO8YmVybWl0dGVsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdLZWluZSBadWdyaWZmc3JlY2h0ZSBmw7xyIGRpZXNlIEtsYXNzZSB2ZXJnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0tlaW4gRXJnZWJuaXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlnIEl0ZW0tU3VjaGVyZ2Vibmlzc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0thbm4gZGFzIENvbmZpZ3VyYXRpb24gSXRlbSBuaWNodCBhbnplaWdlbiwga2VpbmUgWnVncmlmZnNyZWNodGUgZsO8ciBDb25maWd1cmF0aW9uIEl0ZW1zIHZlcmdlYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ09wZXJhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdXYXJudW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnVm9yZmFsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGVyIFZlcndlbmR1bmdzc3RhdHVzIGRpZXNlcyBDb25maWcgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZXIgVm9yZmFsbHN0YXR1cyBkaWVzZXMgQ29uZmlnIEl0ZW1zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnQW5nZXplaWd0ZSBDb25maWd1cmF0aW9uIEl0ZW1zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1p3aXNjaGVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltYWxlIEFuemFobCBlaW5lcyBFbGVtZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICdMZWVyZSBGZWxkZXIgemVpZ2VuIGFuLCBkYXNzIGRpZSBha3R1ZWxsZW4gV2VydGUgYmVpYmVoYWx0ZW4gd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnw5xiZXJzcHJ1bmdlbic7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICdLdW5kZW51bnRlcm5laG1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnU2VyaWVubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICdSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnRmVzdHBsYXR0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJ0thcGF6aXTDpHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJ0ZRRE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnTmV0endlcmstQWRhcHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCDDvGJlciBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdJUC1BZGRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICdHcmFmaWstQWRhcHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICdTb25zdGlnZSBBdXNzdGF0dHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICdHYXJhbnRpZSBBYmxhdWZkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICdJbnN0YWxsYXRpb25zZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ1RlbGVmb24gMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnVGVsZWZvbiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJ0UtTWFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICdOZXR6d2Vyay1BZHJlc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnU3VibmV0ei1NYXNrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnR2F0ZXdheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICdMaXplbnp0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdMaXplbnpzY2hsw7xzc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnTWVuZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnQWJsYXVmZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICdNZWRpdW0nOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJ0NvbXB1dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHp3ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0FiZ2VsYXVmZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdJbiBXYXJ0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RiZXRyaWViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdHZXBsYW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICdQcm9kdWt0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnSW4gUmVwYXJhdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdBdcOfZXIgRGllbnN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1VudGVyIFJldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ1NlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ1NvbnN0aWdlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnRHJ1Y2tlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICdTd2l0Y2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnUm91dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnV0xBTi1adWdhbmdzcHVua3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnU2ljaGVyaGVpdHNnZXLDpHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJ0JhY2t1cC1HZXLDpHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNYXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnS2FtZXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ0JlYW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ01vZGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnUENNQ0lBLUthcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICdVU0ItR2Vyw6R0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ0RvY2tpbmctU3RhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnU2Nhbm5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0dlYsOkdWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ0LDvHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnRXRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1JhdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJ1JhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnQXJiZWl0c3BsYXR6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJ0Fuc2NobHVzc2Rvc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICdJVC1FaW5yaWNodHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICdMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJ1dMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICdUZWxrbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICdHU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnQ2xpZW50LUFud2VuZHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAnTWlkZGxld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICdTZXJ2ZXItQW53ZW5kdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJ0NsaWVudC1CZXRyaWVic3N5c3RlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdTZXJ2ZXItQmV0cmllYnNzeXN0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ0FkbWluaXN0cmF0b3ItVG9vbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICdCZW51dHplci1Ub29sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICdFaW56ZWxsaXplbnonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICdQcm8gQmVudXR6ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJ1BybyBQcm96ZXNzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ1BybyBTZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICdQcm8gS25vdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnVm9sdW1lLUxpemVueic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICdFbnRlcnByaXNlLUxpemVueic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ0VudHdpY2tsZXItTGl6ZW56JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICdEZW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJ1plaXRsaWNoIGJlZ3Jlbnp0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICdPcGVuIFNvdXJjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICdVbmxpbWl0aWVydCc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJ0FsdGVybmF0aXYgenUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnWnVnZXdpZXNlbmUgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnWnVtIEt1bmRlbiB6dWdld2llc2VuZSBDb25maWd1cmF0aW9ucyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ1p1bSBLdW5kZW5iZW51dHplciB6dWdld2llc2VuZSBDb25maWd1cmF0aW9ucyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1FaW5zdGVsbHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQcsO8ZnQgTmFtZW4gYXVmIEVpbmRldXRpZ2tlaXQgaW5uZXJoYWxiIGRlciBzZWxiZW4gQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZSBvZGVyIGdsb2JhbCwgZC5oLiBlcyB3ZXJkZW4gYWxsZSBDb25maWd1cmF0aW9uIEl0ZW1zIGplZ2xpY2hlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlIGJlaSBkZXIgUHLDvGZ1bmcgYXVmIGVpbmVuIGVpbmRldXRpZ2VuIE5hbWVuIGJlcsO8Y2tzaWNodGlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnQ29uZmlnLUl0ZW0gKEVpbmZhY2hhdXN3YWhsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnQ29uZmlnLUl0ZW0gKE1laHJmYWNoYXVzd2FobCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBoaW56dWbDvGdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gYmVhcmJlaXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gSXRlbS1FcmVpZ25pc21vZHVsLCBkYXNzIGRpZSBQcm90b2tvbGxpZXJ1bmcgZGVyIEhpc3RvcmllIGltIEFnZW50ZW4tSW50ZXJmYWNlIGVybcO2Z2xpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1IaXN0b3JpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGRydWNrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLURldGFpbGFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tTnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1MaW1pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtLUxpbWl0IHBybyBTZWl0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1TYW1tZWxha3Rpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnRGllIERlZmluaXRpb25lbiB2b24gQ29uZmlndXJhdGlvbiBJdGVtLUxpbWl0IGVyc3RlbGxlbiB1bmQgdmVyd2FsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pZXJlbiBTaWUgQWN0aW9ucywgaW4gZGVuZW4gaW0gVmVya27DvHBmdGUtT2JqZWt0ZS1XaWRnZXQgZWluIEVpbnN0ZWxsdW5nZW4tS25vcGYgdmVyZsO8Z2JhciBzZWluIHNvbGwgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gQml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGbDvHIgZGllc2UgQWN0aW9ucyBkaWUgZm9sZ2VuZGVuIEpTLSB1bmQgQ1NTLURhdGVpZW4gcmVnaXN0cmllcnQgc2VpbiBtw7xzc2VuOiAgQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgdW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmVuIFNpZSBlaW5lIFp1b3JkbnVuZyB6d2lzY2hlbiBJdGVtLUtsYXNzZW4gdW5kIEZvbnRhd2Vzb21lLVN5bWJvbGVuLCB3ZWxjaGUgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYmVuw7Z0aWd0ZW4gQmVyZWNodGlndW5nZW4genVtIEVyc3RlbGxlbiB2b24gSVRTTSBDb25maWd1cmF0aW9uIEl0ZW1zIGR1cmNoIGRhcyBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYmVuw7Z0aWd0ZW4gQmVyZWNodGlndW5nZW4genVtIEzDtnNjaGVuIHZvbiBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbXMgZHVyY2ggZGFzIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBiZW7DtnRpZ3RlbiBCZXJlY2h0aWd1bmdlbiwgdW0gSVRTTS1Db25maWd1cmF0aW9uIEl0ZW1zIMO8YmVyIGRhcyBHZW5lcmljIEludGVyZmFjZSBhYnp1cnVmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGJlbsO2dGlndGVuIEJlcmVjaHRpZ3VuZ2VuLCB1bSBuYWNoIElUU00tQ29uZmlndXJhdGlvbiBJdGVtcyBtaXQgZGVtIEdlbmVyaWMgSW50ZXJmYWNlIHp1IHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYmVuw7Z0aWd0ZW4gQmVyZWNodGlndW5nZW4sIHVtIElUU00tR2VuZXJpYyBJdGVtcyBtaXQgZGVtIEdlbmVyaWMgSW50ZXJmYWNlIHp1IGFrdHVhbGlzaWVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgw5xiZXJzaWNodHNtb2R1bCB1bSBkaWUgIktsZWluIi1BbnNpY2h0IGVpbmVyIENvbmZpZ3VyYXRpb24gSXRlbXMtTGlzdGUgYW56dXplaWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCByZWd1bMOkcmUgQXVzZHLDvGNrZSBpbmRpdmlkdWVsbCBmw7xyIGplZGVzIENvbmZpZ3VyYXRpb24gSXRlbSwgdW0gZGVuIE5hbWVuIGRlcyBDb25maWd1cmF0aW9uIEl0ZW0genUgw7xiZXJwcsO8ZmVuIHVuZCBlbnRzcHJlY2hlbmRlIEZlaGxlcm1lbGR1bmdlbiBhbnp1emVpZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLVVudGVyb2JqZWt0IGRlciBLbGFzc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIEFuemFobCBkZXIgWmVpbGVuIGbDvHIgZGVuIEVkaXRvciBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLURlZmluaXRpb24gaW0gQWRtaW5pc3RyYXRvci1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgUmVpaGVuZm9sZ2UgZGVyIFZvcmZhbGxzdGF0dXMgdm9uIGhvY2ggKGJzcHcuIGtyaXRpc2NoKSBuYWNoIG5pZWRyaWcgKGJzcHcuIGZ1bmt0aW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgcmVsZXZhbnRlbiBWZXJ3ZW5kdW5nc3N0YXVzLCBiZWkgZGVuZW4gdmVya27DvHBmdGUgVGlja2V0cyBkZW4gU3RhdHVzIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgYmVlaW5mbHVzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3VjaGxpbWl0IGbDvHIgZGllIElUU00gQ29uZmlndXJhdGlvbi1BbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgU3VjaGxpbWl0IGbDvHIgZGllIENvbmZpZ3VyYXRpb24gSXRlbXMtU3VjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYW5nZXplaWd0ZW4gVGFiZWxsZW5zcGFsdGVuIGluIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodC4gRGllc2UgT3B0aW9uIGhhdCBrZWluZW4gRWZmZWt0IGF1ZiBkaWUgUG9zaXRpb24gZGVyIFNwYWx0ZW4uIEhpbndlaXM6IEtsYXNzZW5zcGFsdGUgaXN0IGltbWVyIHZlcmbDvGdiYXIsIHdlbm4gRmlsdGVyICJBbGxlIiBnZXfDpGhsdCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYW5nZXplaWd0ZW4gVGFiZWxsZW5zcGFsdGVuIGbDvHIgZGllIENvbmZpZ3VyYXRpb24gSXRlbS1TdWNoZS4gRGllc2UgT3B0aW9uIGhhdCBrZWluZW4gRWZmZWt0IGF1ZiBkaWUgUG9zaXRpb24gZGVyIFNwYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYW5nZXplaWd0ZW4gU3BhbHRlbiB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQgaW4gQWJow6RuZ2lna2VpdCB2b24gZGVyIENvbmZpZ3VyYXRpb24gSXRlbS1LbGFzc2UuIEplZGVtIEVpbnRyYWcgbcO8c3NlbiBkZXIgS2xhc3Nlbm5hbWUgdW5kIERvcHBlbHB1bmt0ZSB2b3Jhbmdlc3RlbGx0IHdlcmRlbiAoei5CLiBDb21wdXRlcjo6OikuIEVzIGdpYnQgZWluaWdlIENvbmZpZ3VyYXRpb24gSXRlbS1BdHRyaWJ1dGUsIGRpZSBhbGxlbiBDb25maWd1cmF0aW9uIEl0ZW1zIGdlbWVpbnNhbSBzaW5kIChCZWlzcGllbCBmw7xyIGRpZSBLbGFzc2UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFVtIGVpbnplbG5lIENvbmZpZ3VyYXRpb24gSXRlbS1BdHRyaWJ1dGUsIHdpZSBzaWUgaW4gZGVyIENvbmZpZ3VyYXRpb24gSXRlbS1EZWZpbml0aW9uIGRlZmluaWVydCBzaW5kLCBkYXJ6dXN0ZWxsZW4sIG11c3MgZGFzIGZvbGdlbmRlIFNjaGVtYSB2ZXJ3ZW5kZXQgd2VyZGVuIChCZWlzcGllbCBmw7xyIGRpZSBLbGFzc2UgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6S2FwYXppdMOkdDo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkthcGF6aXTDpHQ6OjEuIFdlbm4gZXMga2VpbmVuIEVpbnRyYWcgZsO8ciBlaW5lIENvbmZpZ3VyYXRpb24gSXRlbS1LbGFzc2UgZ2lidCwgd2VyZGVuIGRpZSBTdGFuZGFyZC1TcGFsdGVuIHNvIGFuZ2V6ZWlndCwgd2llIGluIGRlciBFaW5zdGVsbHVuZyAiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMiIGRlZmluaWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYW5nZXplaWd0ZW4gU3BhbHRlbiB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbiBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLVN1Y2hlIGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlLiBKZWRlbSBFaW50cmFnIG3DvHNzZW4gZGVyIEtsYXNzZW5uYW1lIHVuZCBEb3BwZWxwdW5rdGUgdm9yYW5nZXN0ZWxsdCB3ZXJkZW4gKHouQi4gQ29tcHV0ZXI6OjopLiBFcyBnaWJ0IGVpbmlnZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCBkaWUgYWxsZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBnZW1laW5zYW0gc2luZCAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBVbSBlaW56ZWxuZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCB3aWUgc2llIGluIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGVmaW5pdGlvbiBkZWZpbmllcnQgc2luZCwgZGFyenVzdGVsbGVuLCBtdXNzIGRhcyBmb2xnZW5kZSBTY2hlbWEgdmVyd2VuZGV0IHdlcmRlbiAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkthcGF6aXTDpHQ6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpLYXBheml0w6R0OjoxLiBXZW5uIGVzIGtlaW5lbiBFaW50cmFnIGbDvHIgZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlIGdpYnQsIHdlcmRlbiBkaWUgU3RhbmRhcmQtU3BhbHRlbiBzbyBhbmdlemVpZ3QsIHdpZSBpbiBkZXIgRWluc3RlbGx1bmcgIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zIiBkZWZpbmllcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW4gZGVyIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0IGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlLiBKZWRlbSBFaW50cmFnIG3DvHNzZW4gZGVyIEtsYXNzZW5uYW1lIHVuZCBEb3BwZWxwdW5rdGUgdm9yYW5nZXN0ZWxsdCB3ZXJkZW4gKHouQi4gQ29tcHV0ZXI6OjopLiBFcyBnaWJ0IGVpbmlnZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCBkaWUgYWxsZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBnZW1laW5zYW0gc2luZCAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBVbSBlaW56ZWxuZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCB3aWUgc2llIGluIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGVmaW5pdGlvbiBkZWZpbmllcnQgc2luZCwgZGFyenVzdGVsbGVuLCBtdXNzIGRhcyBmb2xnZW5kZSBTY2hlbWEgdmVyd2VuZGV0IHdlcmRlbiAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkthcGF6aXTDpHQ6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpLYXBheml0w6R0OjoxLiBXZW5uIGVzIGtlaW5lbiBFaW50cmFnIGbDvHIgZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlIGdpYnQsIHdlcmRlbiBkaWUgU3RhbmRhcmQtU3BhbHRlbiBzbyBhbmdldXplaWd0LCB3aWUgaW4gZGVyIEVpbnN0ZWxsdW5nICJBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSIgZGVmaW5pZXJ0IChTY2hsw7xzc2VsICJEZWZhdWx0Q29sdW1ucyIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYW5nZXplaWd0ZW4gU3BhbHRlbiBpbiBkZXIgS29tcGxleGFuc2ljaHQgZGVyIFZlcmtuw7xwZnVuZ3N0YWJlbGxlIGbDvHIgYWxsZSBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3Nlbi4gV2VubiBlcyBrZWluZW4gRWludHJhZyBnaWJ0LCB3ZXJkZW4gZGllIFN0YW5kYXJkc3BhbHRlbiBhbmdlemVpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW4gZGVyIEtvbXBsZXhhbnNpY2h0IGRlciBWZXJrbsO8cGZ1bmdzdGFiZWxsZSBhYmjDpG5naWcgdm9uIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlLiBEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW4gZGVyIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0IGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlLiBKZWRlbSBFaW50cmFnIG3DvHNzZW4gZGVyIEtsYXNzZW5uYW1lIHVuZCBEb3BwZWxwdW5rdGUgdm9yYW5nZXN0ZWxsdCB3ZXJkZW4gKHouQi4gQ29tcHV0ZXI6OjopLiBFcyBnaWJ0IGVpbmlnZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCBkaWUgYWxsZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBnZW1laW5zYW0gc2luZCAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBVbSBlaW56ZWxuZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCB3aWUgc2llIGluIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGVmaW5pdGlvbiBkZWZpbmllcnQgc2luZCwgZGFyenVzdGVsbGVuLCBtdXNzIGRhcyBmb2xnZW5kZSBTY2hlbWEgdmVyd2VuZGV0IHdlcmRlbiAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkthcGF6aXTDpHQ6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpLYXBheml0w6R0OjoxLiBXZW5uIGVzIGtlaW5lbiBFaW50cmFnIGbDvHIgZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlIGdpYnQsIHdlcmRlbiBkaWUgU3RhbmRhcmRzcGFsdGVuIGFuZ2V6ZWlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgQXJ0IHZvbiBMaW5rIChhdXMgZGVyIFRpY2tldHBlcnNwZWt0aXZlIGJlbmFubnQpIGRlbiBTdGF0dXMgZWluZXMgdmVybGlua3RlbiBDSSBiZWVpbmZsdXNzZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJ0xlZ3QgZmVzdCwgd2VsY2hlIEFydCB2b24gTGluayAoYXVzIGRlciBUaWNrZXQtUGVyc3Bla3RpdmUpIHZlcndlbmRldCB3aXJkLCB1bSBUaWNrZXRzIHVuZCBDb25maWctSXRlbXMgenUgdmVybGlua2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgd2VsY2hlciBUeXAgdm9uIFRpY2tldCBkZW4gU3RhdHVzIGVpbmVzIHZlcmtuw7xwZnRlbiBDb25maWd1cmF0aW9uIEl0ZW1zIGJlZWluZmx1c3NlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGzDtnNjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICdIw6RuZ3QgYWIgdm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdWZXJ3ZW5kdW5nc3N0YXR1cy1GYXJiZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaXppZXJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnQWt0aXZpZXJ0IGRpZSBTdWNoZSBuYWNoIENvbmZpZy1JdGVtcyBiYXNpZXJlbmQgYXVmIGRlbSBLdW5kZW5iZW51dHplci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnQWt0aXZpZXJ0IGRpZSBTdWNoZSBuYWNoIENvbmZpZy1JdGVtcyBiYXNpZXJlbmQgYXVmIGRlbSBLdW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0FrdGl2aWVydCBkaWUgRnVua3Rpb24gIlNhbW1lbGFrdGlvbiIgZsO8ciBkYXMgQWdlbnRlbi1Gcm9udGVuZCwgdW0genVyIGdsZWljaGVuIFplaXQgYW4gbWVocmVyZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBhcmJlaXRlbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWt0aXZpZXJ0IGRpZSBGdW5rdGlvbiAiU2FtbWVsYWt0aW9uIiBudXIgZsO8ciBkaWUgZ2VsaXN0ZXRlbiBHcnVwcGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcoRGUtKUFrdGl2aWVydCBkaWUgRnVua3Rpb25hbGl0w6R0IHVtIENvbmZpZ0l0ZW1zIGF1ZiBlaW5kZXV0aWdlIE5hbWVuIHp1IMO8YmVycHLDvGZlbi4gQmV2b3IgU2llIGRpZXNlIE9wdGlvbiBha3RpdmllcmVuLCBzb2xsdGVuIFNpZSBJaHIgU3lzdGVtIGF1ZiBiZXJlaXRzIHZvcmhhbmRlbmUgQ29uZmlnSXRlbXMgbWl0IGdsZWljaGVtIE5hbWVuIMO8YmVycHLDvGZlbi4gU2llIGvDtm5uZW4gZGllcyBtaXQgSGlsZmUgZGVzIHNjcmlwdHMgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzIHR1bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJ0VpbiBFcmVpZ25pc21vZHVsIGRhcyBlaW4gQ29uZmlndXJhdGlvbiBJdGVtIHZlcmxpbmt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdFaW4gRXJlaWduaXNtb2R1bCBkYXMgYmVpbSBWZXJrbsO8cGZlbiB2b24gVGlja2V0cyBtaXQgQ29uZmlndXJhdGlvbiBJdGVtcyBkZW4gU3RhdHVzIGRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIHZlcsOkbmRlcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00gQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICdMaW1pdCBmw7xyIGRpZSBDb25maWctSXRlbS1TdWNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJ0xpc3RlIGRlciBFcmVpZ25pc3NlLCBkaWUgZsO8ciBkYXMgR2VuZXJpYyBJbnRlcmZhY2UtRXJlaWduaXNvYmpla3Qgdm9tIFR5cCBJVFNNQ29uZmlnSXRlbSB2ZXJmw7xnYmFyIHNpbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgenVyIMOcYmVycHLDvGZ1bmcgZGVyIEdydXBwZSwgZGllIGbDvHIgZWluZSBLbGFzc2UgdmVyYW50d29ydGxpY2ggaXN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsLCB1bSBkaWUgR3J1cHBlIHp1IMO8YmVycHLDvGZlbiwgZGllIGbDvHIgZWluIENvbmZpZ3VyYXRpb24gSXRlbSB2ZXJhbnR3b3J0bGljaCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgenVtIEdlbmVyaWVyZW4gdm9uIElUU00tQ29uZmlndXJhdGlvbiBJdGVtLVN0YXRpc3Rpa2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICdOaWNodCBtZWhyIGluIFZlcndlbmR1bmcuIE5pY2h0IMOkbmRlcm4uIE5vdHdlbmRpZyB3Zy4gS29tcGF0aWJpbGl0w6R0IHp1IHZvcmhlcmlnZW4gUGFrZXR2ZXJzaW9uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJ09iamVrdC1CYWNrZW5kIE1vZHVsIFJlZ2lzdHJhdGlvbiBkZXMgSW1wb3J0L0V4cG9ydCBNb2R1bHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ8OcYmVyc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ0xlZ3QgZGllIFBhcmFtZXRlciBmw7xyIGRhcyBEYXNoYm9hcmQtQmFja2VuZCBmZXN0LiAiTGltaXQiIGxlZ3QgZGllIEFuemFobCBhbiBFaW50csOkZ2VuIGZlc3QsIGRpZSBzdGFuZGFyZG3DpMOfaWcgYW5nZXplaWd0IHdlcmRlbi4gIkdyb3VwIiBiZXNjaHLDpG5rdCBkZW4gWnVnYW5nIHp1bSBqZXdlaWxpZ2VuIERhc2hsZXQgKHouIEIuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyKS4gIkRlZmF1bHQiIGJlc3RpbW10LCBvYiBkYXMgRGFzaGxldCBzdGFuZGFyZG3DpMOfaWcgYWt0aXYgaXN0IG9kZXIgdm9tIE51dHplciBtYW51ZWxsIGFrdGl2aWVydCB3ZXJkZW4gbXVzcy4gIkNhY2hlVFRMTG9jYWwiIGJlc3RpbW10IGRpZSBDYWNoaW5nZGF1ZXIgZsO8ciBkYXMgRGFzaGxldCBpbiBNaW51dGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBGYXJiZW4gZGVyIFZlcndlbmR1bmdzc3RhdHVzIGluIGRlbiBwZXJzw7ZubGljaGVuIEVpbnN0ZWxsdW5nZW4gaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGllIEZhcmJlbiBkZXIgVmVyd2VuZHVuZ3NzdGF0dXMgaW4gZGVuIHBlcnPDtm5saWNoZW4gRWluc3RlbGx1bmdlbiBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGllIEJlaXNwaWVsIFp1Z3JpZmZzYmVyZWNodGlndW5ncyBHcnVwcGUgZGVyIEdlbmVyYWwgS2F0YWxvZy1BdHRyaWJ1dGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBTZWl0ZW4sIGluIGRlbmVuIENvbmZpZ3VyYXRpb24gSXRlbXMgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0JlcmVjaHRpZ3VuZ3NncnVwcGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJ1JlZ2lzdHJpZXJ0IGVpbiBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSwgZGFzIHp1Z2Vow7ZyaWdlIEFuaMOkbmdlIHNwZWljaGVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICdSZWdpc3RyaWVydCBlaW5lbiBPdXRwdXQtRmlsdGVyLCBkZXIgZWluIENvbmZpZy1JdGVtLVdpZGdldCBhbnplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnUmVsZXZhbnQgZsO8cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBHcnVwcGVuYmVyZWNodGlndW5nZW4gZsO8ciBkaWUgVmVyd2VuZHVuZyBkZXMgQ3VzdG9tZXItQ29uZmlnLUl0ZW0tV2lkZ2V0cyBpbiBkZXIgQWdlbnRlbm9iZXJmbMOkY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVyIEtvbmZpZ3VyYXRpb24gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVyIFN1Y2hlIHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuLCB1bSBkaWUgRGV0YWlsYW5zaWNodCB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuLCB1bSBkaWUgQW5zaWNodCB6dW0gSGluenVmw7xnZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuIGbDvHIgZGllIFZlcndlbmR1bmcgZGVzIENvbmZpZy1JdGVtLURpYWxvZ3MgaW4gZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuLCB1bSBkaWUgQW5zaWNodCB6dW0gQmVhcmJlaXRlbiB2b24gQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyZmFjZSBudXR6ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEhpc3Rvcmllbi1BbnNpY2h0IHZvbiBDb25maWd1cmF0aW9uIEl0ZW1zIGltIEFnZW50ZW4tSW50ZXJmYWNlIG51dHplbiB6dSBrw7ZubmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXJmb3JkZXJsaWNoZSBCZXJlY2h0aWd1bmdlbiwgdW0gZGllIEFuc2ljaHQgenVtIERydWNrZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmZhY2UgbnV0emVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdFcmZvcmRlcmxpY2hlIEJlcmVjaHRpZ3VuZ2VuLCB1bSBDb25maWd1cmF0aW9uIEl0ZW1zIGzDtnNjaGVuIHp1IGvDtm5uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtcyBzdWNoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJ1fDpGhsdCBkYXMgTW9kdWwgenVtIEVyemV1Z2VuIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tTnVtbWVyLiAiQXV0b0luY3JlbWVudCIgZXJow7ZodCBkaWUgTnVtbWVyIGRlcyBDb25maWd1cmF0aW9uIEl0ZW1zLCBkaWUgU3lzdGVtLUlELCBkaWUgS2xhc3Nlbi1JRCB1bmQgZGVzIGJlbnV0emVuIFrDpGhsZXJzLiBEYXMgRm9ybWF0IGlzdCAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGJzcHcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTZXR0enQgZGVuIFZvcmZhbGxzdGF0dXMgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBhdXRvbWF0aXNjaCwgd2VubiBlaW4gVGlja2V0IG1pdCBlaW5lbSBDb25maWd1cmF0aW9uIEl0ZW0gdmVya27DvHBmdCB3aXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHp0IGRlbiBWZXJ3ZW5kdW5nc3N0YXR1cyBmw7xyIGRpZSBGdW5rdGlvbiAiU2FtbWVsYWt0aW9uIiBmw7xyIENvbmZpZ3VyYXRpb24gSXRlbXMgaW0gQWdlbnRlbi1JbnRlcmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0enQgZGVuIFZlcndlbmR1bmdzc3RhdHVzIGbDvHIgZGllIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIGbDvHIgQ29uZmlndXJhdGlvbiBJdGVtcyBpbSBBZ2VudGVuLUludGVyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgVmVya27DvHBmdW5nIGltIE1lbsO8LCBkaWUgZXMgZXJsYXVidCBlaW4gQ29uZmlndXJhdGlvbiBJdGVtIG1pdCBlaW5lbSBhbmRlcmVuIE9iamVrdCBpbiBkZXIgRGV0YWlsYW5zaWNodCBkZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkZXMgQWdlbnRlbi1JbnRlcmZhY2UgenUgdmVya27DvHBmZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0IGRpZSBWZXJrbsO8cGZ1bmcgenVyIEhpc3RvcmllIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGV0YWlsYW5zaWNodCBkaWUgVmVya27DvHBmdW5nIHp1ciBIaXN0b3JpZSBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gTMO2c2NoZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgQ29uZmlndXJhdGlvbiBJdGVtLcOcYmVyc2ljaHQgZGllIFZlcmtuw7xwZnVuZyB6dW0gRHVwbGl6aWVyZW4gZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkaWUgVmVya27DvHBmdW5nIHp1bSBEdXBsaXppZXJlbiBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBkaWUgVmVya27DvHBmdW5nIHp1bSBCZWFyYmVpdGVuIGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBpbSBNZW7DvCBkZXIgRGV0YWlsYW5zaWNodCBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW0gZWluZSBWZXJrbsO8cGZ1bmcgenVtIFp1csO8Y2tnZWhlbiBhdWYgZGllIHZvcmhlcmlnZSBBbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGltIE1lbsO8IGRlciBEZXRhaWxhbnNpY2h0IGVpbmVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZGllIFZlcmtuw7xwZnVuZyB6dW0gRHJ1Y2tlbiBlaW5lcyBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmUgVmVya27DvHBmdW5nIGltIE1lbsO8IGRlciBBbnNpY2h0ICJDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodCIsIHVtIHp1ciBEZXRhaWxhbnNpY2h0IGRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIHp1IGdlbGFuZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZGllIENvbmZpZ3VyYXRpb24gSXRlbS1IaXN0b3JpZSAodW1nZWtlaHJ0ZSBSZWloZW5mb2xnZSkgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdEZXIgSWRlbnRpZmlrYXRvciBmw7xyIGVpbiBDb25maWd1cmF0aW9uIEl0ZW0sIGJzcHcuICJDb25maWdJdGVtIyIgLCAiTWVpbkNvbmZpZ0l0ZW0jIi4gRGVyIFN0YW5kYXJkIGlzdCAiQ29uZmlnSXRlbSMiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICdEaWVzZSBLb25maWd1cmF0aW9uIHJlZ2lzdHJpZXJ0IGVpbiBGcm9udGVuZC1Nb2R1bCBmw7xyIGRpZSBBZ2VudGVuLUludGVyZmFjZSwgZGFzIGRpZSBBSkFYLVNjaG5pdHRzdGVsbGUgZsO8ciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQgYmVyZWl0c3RlbGx0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJ1RpY2tldC1FdmVudC1Nb2R1bCwgZGFzIExpbmtzIHp3aXNjaGVuIFRpY2tldHMgdW5kIENvbmZpZy1JdGVtcyBlcnN0ZWxsdCB1bmQgZW50ZmVybnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnVGlja2V0LUV2ZW50LU1vZHVsLCBkYXMgRHluYW1pc2NoZSBGZWx0ZXIgYWt0dWFsaXNpZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ0tsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdHbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdQb3N0LXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnUHJlLXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnUHJvZHVrdGl2JzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/el_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZWxfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfOnM61z4TOsc6+z40nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICcnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ86Tz4HOsc+GzrXOr86/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/en_CA_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZW5fQ0FfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ0xpY2Vuc2UgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJ0xpY2Vuc2UgS2V5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJyc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tleWJvYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnU2luZ2xlIExpY2Vuc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnVm9sdW1lIExpY2Vuc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnRW50ZXJwcmlzZSBMaWNlbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnRGV2ZWxvcGVyIExpY2Vuc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/en_GB_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZW5fR0JfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnQ2hhbmdlJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdMYXN0IGNoYW5nZWQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0b3J5IENvbnRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aWV3JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0NvbnRleHQgU2V0dGluZ3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYXN0IGNoYW5nZWQgYnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTm8gUmVzdWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdCZXR3ZWVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2V5Ym9hcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ09mZmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2d1ZSBhdHRyaWJ1dGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/es_CO_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXNfQ09fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSBkZXRhbGxhZGEnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJyc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAnT2ZpY2luYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/es_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXNfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0NhbWJpYXIgZGVmaW5pY2nDs24gZGUgbGEgQ2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpw7NuIGRlIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNlIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICdEZWZpbmljacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UnfSA9ICdNb2RpZmljYXInOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBJbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBsYSBJbXBsZW1lbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIGVzdGFkbyBkZSBpbXBsZW1lbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBBY3R1YWwgZGVsIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBUaXBvIGRlIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1vIGNhbWJpbyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQWRkLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cm8gcGFyYSBDbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZWNjaW9uZSB1bmEgQ2xhc2UgZGUgbGEgbGlzdGEgcGFyYSBjcmVhciB1biBudWV2byBJdGVtIGRlIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnRWxlbWVudG8gZGUgQ29uZmlndXJhY2nDs24nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0lUU00gQ29uZmlnSXRlbSBBY2Npw7NuIE1hc2l2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGVsIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdFbmxhemFyIGNvbiBvdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfCoU7Dum1lcm8gZGUgw410ZW0gZGUgQ29uZmlndXJhY2nDs24gbm8gdmFsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdFbCBuw7ptZXJvIGRlIG90cm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVsIHF1ZSB2aW5jdWxhci4nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbj8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBub21icmUgZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnRWwgbm9tYnJlIHlhIGVzdGEgZW4gdXNvIHBvciDDjXRlbXMgZGUgQ29uZmlndXJhY2nDs24gY29uIGxvcyBzaWd1aWVudGVzIG7Dum1lcm8ocyk6ICVzJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ0hpc3RvcmlhbCBkZWwgRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbmlkbyBkZWwgaGlzdG9yaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdGZWNoYSBkZSBDcmVhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzdGEgZGV0YWxsYWRhICc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBanVzdGVzIGRlIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0NJcyBwb3IgcMOhZ2luYSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnVW5hIHRhYmxhIGdlbsOpcmljYSBkZSDDrXRlbXMgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfCv0Rlc2VhIGJ1c2NhciBlbiB2ZXJzaW9uZXMgYW50ZXJpb3Jlcz8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIEFjdHVhbCBkZSBsYSBJbXBsZW1lbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICdNb3N0cmFyIHVuYSB2ZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJ01vc3RyYXIgdG9kYXMgbGFzIHZlcnNpb25lcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlbCBpbmNpZGVudGUgZGUgbGEgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIGxhIHZlcnNpw7NuIGRlIGltcGxlbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIERldGFsbGVzIGRlIGxhIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAnUHJvcGllZGFkJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIGFjY2VzbyBhIENsYXNlISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8KhTmVjZXNpdGEgYWwgbWVub3MgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vIHRpZW5lIHBlcm1pc28gZGUgZXNjcml0dXJhIHBhcmEgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbjogJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ8KhRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gIiVzIiAgbm8gc2UgZW5jb250csOzIGVuIGxhIGJhc2UgZGUgZGF0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnwqFObyBmdWUgcG9zaWJsZSBlbGltaW5hciBlbCBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnwqFObyBzZSBlbmNvbnRyw7MgVmVyc2nDs24gcGFyYSBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBhY2Nlc28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ8KhTmluZ3VuYSBkZWZpbmljacOzbiBmdWUgZGVmaW5pZGEgcGFyYSBjbGFzZSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gc2UgaGFuIHByb3BvcmNpb25hZG8gcGVybWlzb3MgZGUgYWNjZXNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnVldm8gQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGRlc3BsaWVndWUgKG51ZXZvPSVzLCB2aWVqbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnQWN0dWFsaXphZG8gZXN0YWRvIGRlIGluY2lkZW5jaWEgKG51ZXZvPSVzLHZpZWpvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdFbmxhY2UgYSAlcyAodGlwbz0lcykgYcOxYWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0VubGFjZSBhICVzICh0aXBvPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0FjdHVhbGl6YWRhIGRlZmluaWNpw7NuIGRlIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWJyZSBhY3R1YWxpemFkbyAobnVldm89JXMsdmllam89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dG8gJXMgYWN0dWFsaXphZG8gZGUgIiVzIiBhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2nDs24gJXMgZWxpbWluYWRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIENvbmZpZ0l0ZW1JRCBvIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLCBubyBzZSBoYW4gcHJvcG9yY2lvbmFkbyBwZXJtaXNvcyBkZSBhY2Nlc28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnwqFDb25maWdJdGVtSUQgJXMgbm8gc2UgZW5jb250csOzIGVuIGxhIGJhc2UgZGUgZGF0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnwqFWZXJzaW9uSUQgJXMgbm8gc2UgZW5jb250csOzIGVuIGxhIGJhc2UgZGUgZGF0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdpbXByZXNvIHBvciAlcyBlbiAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ8KhQ2xhc3NJRCBubyBlcyB2w6FsaWRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBwZXJtaXNvcyBkZSBhY2Nlc28gcGFyYSBlc3RhIGNsYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnwqFTaW4gcmVzdWx0YWRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSZXN1bHRhZG9zIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnwqFObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGVsZW1lbnRvLCBubyBzZSBoYW4gcHJvcG9yY2lvbmFkbyBwZXJtaXNvcyBkZSBhY2Nlc28gcGFyYSBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhY2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhZHZlcnRlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgZXN0YWRvIGRlIGltcGxlbWVudGFjacOzbiBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgZXN0YWRvIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdTZSBtdWVzdHJhbiBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVuIGVsZW1lbnRvICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICdMb3MgY2FtcG9zIHZhY8Otb3MgaW5kaWNhbiBxdWUgbG9zIHZhbG9yZXMgYWN0dWFsZXMgc2UgbWFudGllbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICdTYWx0YWRvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJ0VtcHJlc2EgZGVsIENsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ07Dum1lcm8gU2VyaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICdSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnRGlzY28gRHVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJ0NhcGFjaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ0FkYXB0YWRvciBkZSBSZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnSVAgc29icmUgREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICdUYXJqZXRhIEdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ090cm8gRXF1aXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ0ZlY2hhIGRlIEV4cGlyYWNpw7NuIGRlIGxhIEdhcmFudMOtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICdGZWNoYSBkZSBJbnN0YWxhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ1RlbMOpZm9ubyAxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICdUZWzDqWZvbm8gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICdFLU1haWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAnRGlyZWNjacOzbiBkZSBSZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICdNw6FzY2FyYSBkZSBTdWJyZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ1B1ZXJ0YSBkZSBlbmxhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnVGlwbyBkZSBMaWNlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJ0NsYXZlIGRlIExpY2VuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnQ2FudGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnRmVjaGEgZGUgRXhwaXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICdNZWRpbyc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnT3JkZW5hZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbmltaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1JldmlzYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdQcnVlYmEgLyBDb250cm9sIGRlIGNhbGlkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnT3JkZW5hZG9yIHBvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRXNjcml0b3Jpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICdBZ2VuZGEgUGVyc29uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnU2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICdNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICdJbXByZXNvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnU3dpdGNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ0VucnV0YWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJ1B1bnRvIGRlIEFjY2VzbyBXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJ0Rpc3Bvc2l0aXZvIGRlIFNlZ3VyaWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnRGlzcG9zaXRpdm8gZGUgUmVzcGFsZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdSYXTDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJ0PDoW1hcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnUHJveWVjdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTcOzZGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnVGFyamV0YSBQQ01DSUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ0Rpc3Bvc2l0aXZvIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICdFc3RhY2nDs24gZGUgYWNvcGxhbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICdFc2PDoW5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0VkaWZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ09maWNpbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICdQaXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdIYWJpdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICdMdWdhciBkZSB0cmFiYWpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJ091dGxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJ0luc3RhbGFjaW9uZXMgZGUgVEknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICdXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnQ29uZmVyZW5jaWEgdGVsZWbDs25pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ0FwbGljYWNpw7NuIENsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ01pZGRsZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnQXBsaWNhY2nDs24gU2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnU2lzdGVtYSBPcGVyYXRpdm8gZGVsIENsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAnU2lzdGVtYSBvcGVyYXRpdm8gZGVsIFNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICdIZXJyYW1pZW50YSBkZSBBZG1pbmlzdHJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnSGVycmFtaWVudGEgZGUgVXN1YXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ0VtYmViaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnTGljZW5jaWEgw5puaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnUG9yIFVzdWFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJ1BvciBQcm9jZXNhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICdQb3IgU2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICdQb3IgTm9kbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ0xpY2VuY2lhIHBvciBWb2x1bWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJ0xpY2VuY2lhIENvcnBvcmF0aXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnTGljZW5jaWEgZGUgRGVzYXJyb2xsYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnRGVtb3N0cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICdUaWVtcG8gUmVzdHJpbmdpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ0PDs2RpZ28gQWJpZXJ0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICdJbGltaXRhZGEnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0NJcyBhc2lnbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NpcyBhc2lnbmFkb3MgYSBsYSBFbXByZXNhIGRlbCBDbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ2lzIGFzaWduYWRvcyBhbCB1c3VhcmlvIGRlbCBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDb25maWd1cmFjaW9uZXMgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnQnVzcXVlIHVuIG5vbWJyZSDDum5pY28gc29sbyBkZW50cm8gZGUgbGEgbWlzbWEgY2xhc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzZVwnKSBvIGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbG8gcXVlIHNpZ25pZmljYSBxdWUgY2FkYSBDb25maWdJdGVtIGV4aXN0ZW50ZSBzZSB0aWVuZSBlbiBjdWVudGEgY3VhbmRvIHNlIGJ1c2NhbiBkdXBsaWNhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdFbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBw7FhZGlyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdGFyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBoYWJpbGl0YSBlbCBhY2Nlc28gYSBsYSBoaXN0b3JpYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJpbWlyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0RldGFsbGV6IGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJ0NvbmZpZ0l0ZW1OdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTMOtbWl0ZSBkZSBFbGVtZW50b3MgZGUgQ29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0zDrW1pdGUgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcG9yIHDDoWdpbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdHZXN0acOzbiBkZSBsYSBDb25maWd1cmFjacOzbiBkZSBCYXNlcyBkZSBEYXRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGVsIG3Ds2R1bG8gbWFzaXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvdXRlciBiYWNrZW5kIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWEgeSBnZXN0aW9uYSBsYXMgZGVmaW5pY2lvbmVzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmlyIGFjY2lvbmVzIGRvbmRlIGVzdMOhIGRpc3BvbmlibGUgdW4gYm90w7NuIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVGVuZ2EgZW4gY3VlbnRhIHF1ZSBlc3RhcyBhY2Npb25lcyBkZWJlbiBoYWJlciByZWdpc3RyYWRvIGxvcyBzaWd1aWVudGVzIGFyY2hpdm9zIEpTIHkgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB5IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIGNyZWFyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIHV0aWxpemFuZG8gbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgZWxpbWluYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gbWVkaWFudGUgbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgb2J0ZW5lciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSB1dGlsaXphbmRvIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIGJ1c2NhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSB1dGlsaXphbmRvIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIGFjdHVhbGl6YXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIG1lZGlhbnRlIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIG3Ds2R1bG8gZGUgcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgcGVxdWXDsWEgdmlzdGEgZGUgdW5hIGxpc3RhIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGV4cHJlc2lvbmVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNlIENvbmZpZ0l0ZW0gcGFyYSB2ZXJpZmljYXIgZWwgbm9tYnJlIGRlIENvbmZpZ0l0ZW0geSBwYXJhIG1vc3RyYXIgbG9zIG1lbnNhamVzIGRlIGVycm9yIGNvcnJlc3BvbmRpZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBzdWJvYmpldG8gcG9yIGRlZmF1bHQgZGUgbGEgY2xhc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgbsO6bWVybyBkZSBmaWxhcyBwYXJhIGVsIGVkaXRvciBkZSBkZWZpbmljaW9uZXMgZGUgQ0kgZW4gbGEgaW50ZXJmYXogZGUgYWRtaW5pc3RyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gZGUgbG9zIGVzdGFkb3MgZGUgaW5jaWRlbmNpYSBkZXNkZSBhbHRvIChwb3IgZWplbXBsbywgY3LDrXRpY28pIGEgYmFqbyAocG9yIGVqZW1wbG8sIGZ1bmNpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBlc3RhZG9zIGRlIGltcGxlbWVudGFjacOzbiByZWxldmFudGVzIGRvbmRlIGxvcyB0aWNrZXRzIHZpbmN1bGFkb3MgcHVlZGVuIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZW4gbGEgZGVzY3JpcGNpw7NuIGdlbmVyYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLiBFc3RhIG9wY2nDs24gbm8gdGllbmUgZWZlY3RvIGVuIGxhIHBvc2ljacOzbiBkZSBsYSBjb2x1bW5hLiBOb3RhOiBMYSBjb2x1bW5hIGRlIGNsYXNlIHNpZW1wcmUgZXN0w6EgZGlzcG9uaWJsZSBzaSBzZSBzZWxlY2Npb25hIGVsIGZpbHRybyBcJ1RvZG9zXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgbW9zdHJhZGFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVzdGEgb3BjacOzbiBubyB0aWVuZSBlZmVjdG8gZW4gbGEgcG9zaWNpw7NuIGRlIGxhIGNvbHVtbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbXVlc3RyYW4gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIENJLiBDYWRhIGVudHJhZGEgZGViZSBpciBwcmVjZWRpZGEgZGVsIG5vbWJyZSBkZSBsYSBjbGFzZSB5IGRvcyBwdW50b3MgZG9ibGVzIChlcyBkZWNpciwgY29tcHV0YWRvcmE6IDopLiBIYXkgYWxndW5vcyBhdHJpYnV0b3MgZGUgQ0kgcXVlIHNvbiBjb211bmVzIGEgdG9kb3MgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGFkb3JhOiBDb21wdXRhZG9yYSA6OiBOb21icmUsIENvbXB1dGFkb3JhIDo6IEN1ckRlcGxTdGF0ZSwgQ29tcHV0YWRvcmEgOjogQ3JlYXRlVGltZSkuIFBhcmEgbW9zdHJhciBsb3MgSUMtQXRyaWJ1dG9zIGluZGl2aWR1YWxlcyBkZWZpbmlkb3MgZW4gbGEgRGVmaW5pY2nDs24tQ0ksIHNlIGRlYmUgdXRpbGl6YXIgZWwgc2lndWllbnRlIGVzcXVlbWEgKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBDb21wdXRhZG9yYSk6IENvbXB1dGFkb3JhIDo6IERpc2NvIER1cm8gOjogMSwgQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAxIDo6IENhcGFjaWRhZCA6OiAxLCBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDIsIENvbXB1dGFkb3JhIDo6IERpc2NvIER1cm8gOjogMiA6OiBDYXBhY2lkYWQgOjogMS4gU2kgbm8gaGF5IG5pbmd1bmEgZW50cmFkYSBwYXJhIHVuYSBjbGFzZSBDSSwgbGFzIGNvbHVtbmFzIHByZWRldGVybWluYWRhcyBzZSBtdWVzdHJhbiBjb21vIHNlIGRlZmluZSBlbiBsYSBjb25maWd1cmFjacOzbiBJVFNNQ29uZmlnSXRlbSA6OiBGcm9udGVuZCA6OiBBZ2VudElUU01Db25maWdJdGVtICMjIyBTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkb3MgZW4gbGEgYsO6c3F1ZWRhIGRlbCBlbGVtZW50byBjb25maWcgZGVwZW5kaWVuZG8gZGUgbGEgY2xhc2UgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGlyIHByZWNlZGlkYSBkZWwgbm9tYnJlIGRlIGxhIGNsYXNlIHkgZG9zIHB1bnRvcyBkb2JsZXMgKGVzIGRlY2lyLCBjb21wdXRhZG9yYTogOikuIEhheSBhbGd1bm9zIGF0cmlidXRvcyBkZSBDSSBxdWUgc29uIGNvbXVuZXMgYSB0b2RvcyBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0YWRvcmE6IENvbXB1dGFkb3JhIDo6IE5vbWJyZSwgQ29tcHV0YWRvcmEgOjogQ3VyRGVwbFN0YXRlLCBDb21wdXRhZG9yYSA6OiBDcmVhdGVUaW1lKS4gUGFyYSBtb3N0cmFyIGxvcyBJQy1BdHJpYnV0b3MgaW5kaXZpZHVhbGVzIGRlZmluaWRvcyBlbiBsYSBEZWZpbmljacOzbi1DSSwgc2UgZGViZSB1dGlsaXphciBlbCBzaWd1aWVudGUgZXNxdWVtYSAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGFkb3JhKTogQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAxLCBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDEgOjogQ2FwYWNpZGFkIDo6IDEsIENvbXB1dGFkb3JhIDo6IERpc2NvIER1cm8gOjogMiwgQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAyIDo6IENhcGFjaWRhZCA6OiAxLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhIHBhcmEgdW5hIGNsYXNlIENJLCBsYXMgY29sdW1uYXMgcHJlZGV0ZXJtaW5hZGFzIHNlIG11ZXN0cmFuIGNvbW8gc2UgZGVmaW5lIGVuIGxhIGNvbmZpZ3VyYWNpw7NuIElUU01Db25maWdJdGVtIDo6IEZyb250ZW5kIDo6IEFnZW50SVRTTUNvbmZpZ0l0ZW0gIyMjIFNob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnRGUgbGFzIGNvbHVtbmFzIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRhcyBlbiBlbCB3aWRnZXQgc2Vnw7puIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBpciBwcmVjZWRpZGEgY29uIGVsIG5vbWJyZSBkZSBsYSBjbGFzZSB5IGRvcyBwdW50b3MgZG9ibGVzKCBlcyBkZWNpcjsgT3JkZW5hZG9yOjopLiBIYXkgYWxndW5vcyBhdHJpYnV0b3MgZGUgQ0kgcXVlIHNvbiBjb211bmVzIGEgdG9kb3MgbG9zIENJcyAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGVyOiBPcmRlbmFkb3I6Ok5vbWJyZSwgT3JkZW5hZG9yOjpDdXJEZXBsU3RhdGUsIE9yZGVuYWRvcjo6RmVjaGFDcmVhY2nDs24pLiBQYXJhIG1vc3RyYXIgbG9zIGF0cmlidXRvcyBkZSBDSSBpbmRpdmlkdWFsZXMgZGVmaW5pZG9zIGVuIGxhIGRlZmluaWNpw7NuLUNJLCBzZSBkZWJlIHV0aWxpemFyIGVsIHNpZ3VpZW50ZSBlc3F1ZW1hIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgT3JkZW5hZG9yKSBPcmRlbmFkb3I6OkRpc2NvRHVybzo6MSwgT3JkZW5hZG9yOjpEaXNjb0R1cm86OjE6OkNhcGFjaWRhZDo6MSwgT3JkZW5hZG9yOjpEaXNjb0R1cm86OjIsIE9yZGVuYWRvcjo6RGlzY29EdXJvOjoyOjpDYXBhY2lkYWQ6OjEuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEgcGFyYSB1bmEgY2xhc2UgQ0ksIGxhcyBjb2x1bW5hcyBwb3IgZGVmZWN0byBzZSBtdWVzdHJhbiBlbiBsYSBzaWd1aWVudGUgY29uZmlndXJhY2nDs24gQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG9zIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMsIHNlZ8O6biBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgaXIgcHJlY2VkaWRhIGRlbCBub21icmUgZGUgbGEgY2xhc2UgeSBkb3MgcHVudG9zIGRvYmxlcyAoZXMgZGVjaXIsIGNvbXB1dGFkb3JhOiA6KS4gSGF5IGFsZ3Vub3MgYXRyaWJ1dG9zIGRlIENJIHF1ZSBzb24gY29tdW5lcyBhIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBDb21wdXRhZG9yYTogQ29tcHV0YWRvcmEgOjogTm9tYnJlLCBDb21wdXRhZG9yYSA6OiBDdXJEZXBsU3RhdGUsIENvbXB1dGFkb3JhIDo6IENyZWF0ZVRpbWUpLiBQYXJhIG1vc3RyYXIgbG9zIElDLUF0cmlidXRvcyBpbmRpdmlkdWFsZXMgZGVmaW5pZG9zIGVuIGxhIERlZmluaWNpw7NuLUNJLCBzZSBkZWJlIHV0aWxpemFyIGVsIHNpZ3VpZW50ZSBlc3F1ZW1hIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0YWRvcmEpOiBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDEsIENvbXB1dGFkb3JhIDo6IERpc2NvIER1cm8gOjogMSA6OiBDYXBhY2lkYWQgOjogMSwgQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAyLCBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDIgOjogQ2FwYWNpZGFkIDo6IDEuIFNpIG5vIGhheSB1bmEgZW50cmFkYSBwYXJhIHVuYSBjbGFzZSBDSSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHByZWRldGVybWluYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSBlbmxhY2UgKG5vbWJyYWRvIGRlc2RlIGxhIHBlcnNwZWN0aXZhIGRlbCB0aWNrZXQpIHB1ZWRlIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsaW1pbmFyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ29sb3IgZGVsIGVzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdQZXJtaXRlIHF1ZSBsYSBjYXJhY3RlcsOtc3RpY2EgZGUgYWNjacOzbiBtYXNpdmEgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHBhcmEgbGEgaW50ZXJmYXogZGVsIGFnZW50ZSBmdW5jaW9uZSBlbiBtw6FzIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGEgbGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnSGFiaWxpdGEgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlIGFjY2nDs24gbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBzb2xvIHBhcmEgbG9zIGdydXBvcyBlbnVtZXJhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdIYWJpbGl0YSAvIGRlc2hhYmlsaXRhIGxhIGZ1bmNpb25hbGlkYWQgcGFyYSB2ZXJpZmljYXIgQ29uZmlnSXRlbXMgcGFyYSBub21icmVzIMO6bmljb3MuIEFudGVzIGRlIGhhYmlsaXRhciBlc3RhIG9wY2nDs24sIGRlYmUgdmVyaWZpY2FyIGVuIHN1IHNpc3RlbWEgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiB5YSBleGlzdGVudGVzIGNvbiBub21icmVzIGR1cGxpY2Fkb3MuIFB1ZWRlIGhhY2VyIGVzdG8gY29uIGVsIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIHBhcmEgY29uZmlndXJhciBjb25maWdpdGVtLXN0YXR1cyBlbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdEZXNjcmlwY2nDs24gZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW5hIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZXN0YWTDrXN0aWNhcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICdSZWdpc3RybyBkZWwgbcOzZHVsbyBkZSBvYmpldG8gYmFja2VuZCBwYXJhIGVsIG3Ds2R1bG8gZGUgaW1wb3J0YWNpw7NuL2V4cG9ydGFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgZ2VuZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBiYWNrZW5kIGRlbCBQYW5lbCBQcmluY2lwYWwgZGVsIHJlc3VtZW4gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgZW1wcmVzYSBkZWwgY2xpZW50ZSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiAiTMOtbWl0ZSIgZXMgZWwgbsO6bWVybyBkZSBlbnRyYWRhcyBtb3N0cmFkYXMgcG9yIGRlZmVjdG8uICJHcnVwbyIgc2UgdXNhIHBhcmEgcmVzdHJpbmdpciBlbCBhY2NlZG8gYWwgY29tcGxlbWVudG8gKHBvciBlamVtcGxvLCBHcnVwbzogYWRtaW47Z3J1cG8xO2dydXBvMikuICJQb3IgZGVmZWN0byIgZGV0ZXJtaW5hIHNpIGVsIGNvbXBsZW1lbnRvIGVzdMOhIGhhYmlsaXRhZG8gcG9yIGRlZmVjdG8gbyBzaSBlbCB1c3Vhcm8gbmVjZXNpdGEgaGFiaWxpdGFybG8gbWFudWFsbWVudGUuICJDYWNoZVRUTExvY2FsIiBlcyBlbCB0aWVtcG8gZGUgY2FjaMOpIGVuIG1pbnV0b3MgcGFyYSBlbCBjb21wbGVtZW50by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdMb3MgcGFyw6FtZXRyb3MgcGFyYSBsYSBpbXBsZW1lbnRhY2nDs24gaW5kaWNhbiBlbCBjb2xvciBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIGVzdGFkb3MgZGUgaW1wbGVtZW50YWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBwZXJtaXNvcyBkZSBlamVtcGxvIGRlIGxvcyBhdHJpYnV0b3MgZGVsIGNhdMOhbG9nbyBnZW5lcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBww6FnaW5hcyAoZG9uZGUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBkZXRhbGxlIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIHBhcmEgYWdyZWdhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXNhciBsYSB2ZW50YW5hIGRlIGVkaWNpw7NuIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBoaXN0b3JpYWwgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBpbXByZXNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsZWdpb3MgbmVjZXNhcmlvcyBwYXJhIGVsaW1pbmFyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnU2VsZWNjaW9uYSBlbCBtw7NkdWxvIGdlbmVyYWRvciBkZSBuw7ptZXJvcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiAiQXV0b0luY3JlbWVudGFyIiBpbmNyZW1lbnRhIGVsIG7Dum1lcm8gZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuOyBlbCBTeXN0ZW1JRCwgZWwgQ29uZmlnSXRlbUNsYXNzSUQgeSBlbCBjb250YWRvciBzb24gdXNhZG9zLiBFbCBmb3JtYXRvIGVzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgcG9yIGVqZW1wbG86IDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdFc3RhYmxlemNhIGVsIGVzdGFkbyBkZSBpbmNpZGVudGUgZGUgdW4gQ0kgYXV0b23DoXRpY2FtZW50ZSBjdWFuZG8gdW4gdGlja2V0IGVzdMOpIHZpbmN1bGFkbyBhIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGUgaW1wbGVtZW50YWNpw7NuIGVuIGxhIHBhbnRhbGxhIG1hc2l2YSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlbCBpbmNpZGVudGUgZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgdmluY3VsYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIG90cm8gb2JqZXRvLCBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhIGxhIGhpc3RvcmlhIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpb24gZW4gc3UgdmlzdGEgZGV0YWxsYWRhLCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWxpbWluYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgZGVzY3JpcGNpw7NuIGdlbmVyYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZvbHZlciBhIGxhIHZpc3RhIGRlIHpvb20gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGluayBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpb24gZW4gc3UgdmlzdGEgZGV0YWxsYWRhLCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNlcmNhcnNlIGEgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSBsYSBoaXN0b3JpYSBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIChvcmRlbmFkb3MgaW52ZXJzYW1lbnRlKSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgcG9yIGVqZW1wbG8uIENvbmZpZ0l0ZW0gIywgTXlDb25maWdJdGVtICMuIEVsIHZhbG9yIHBvciBkZWZlY3RvIGVzIENvbmZpZ0l0ZW0gIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3Rpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3Rpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3Rpdm8nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/es_MX_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXNfTVhfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlIEFjdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWaXN0YSBkZXRhbGxhZGEnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICdPbWl0aWRvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNw7NkZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ0Rpc2NvIER1cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICdDYXBhY2lkYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICdBZGFwdGFkb3IgZGUgUmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ0lQIHNvYnJlIERIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJ0RpcmVjY2nDs24gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ090cm8gRXF1aXBhbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICdGZWNoYSBkZSBJbnN0YWxhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICdEaXJlY2Npw7NuIGRlIFJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ0NhbnRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJyc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSZXRpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VzY3JpdG9yaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ1NlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJ1N3aXRjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICdSdXRlYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJ0Rpc3Bvc2l0aXZvIGRlIFJlc3BhbGRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJ0PDoW1hcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTW9kZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdUYXJqZXRhIFBDTUNJQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnRXNjYW5lciAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdFZGlmaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdPZmljaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnUGlzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICdSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ0FwbGljYWNpw7NuIGRlbCBDbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJ1Npc3RlbWEgT3BlcmF0aXZvIGRlbCBDbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJ1Npc3RlbWEgT3BlcmF0aXZvIGRlIFNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICdIZXJyYW1pZW50YSBkZWwgQWRtaW5pc3RyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ1BvciBVc3VhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICdQb3IgUHJvY2VzYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnUG9yIFNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnUG9yIE5vZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnTGljZW5jaWEgZGVsIERlc2Fycm9sbGFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ0RlbW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICdPcGVuIFNvdXJjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICdJbGltaXRhZG8nOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgR2VuZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgZWplbXBsbyBkZSBwZXJtaXNvcyBkZSBncnVwbyBkZWwgY2F0w6Fsb2dvIGdlbmVyYWwgZGUgYXRyaWJ1dG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/et_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXRfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdCZXR3ZWVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdLb250b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/fa_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZmFfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9iq2LrbjNuM2LEg2KrYudix24zZgSDaqdmE2KfYsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn2YXYr9uM2LHbjNiqIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICfYqti52LHbjNmBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSd9ID0gJ9iq2LrbjNuM2LEnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfZiNi22LnbjNiqINmG2LXYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9qp2YTYp9izJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ9mG2YjYuSDZiNi22LnbjNiqINmG2LXYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn2YjYtti524zYqiDYrNin2LHbjCDYsdiu2K/Yp9ivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9mG2YjYuSDZiNi22LnbjNiqINis2KfYsduMINix2K7Yr9in2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn2KLYrtix24zZhiDYqti624zbjNixJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1BZGQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9mB24zZhNiq2LEg2KjYsdin24wg2qnZhNin2LPigIzZh9inJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9qp2YTYp9iz24wg2LHYpyDYqNix2KfbjCDYs9in2K7YqiDbjNqpINii24zYqtmFINm+2Kjaqdix2KjZhtiv24wg2KzYr9uM2K8g2KfZhtiq2K7YpyDaqdmG24zYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn2YbYp9mFINin24zZhiDYotuM2KrZheKAjNmH2KfbjCDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9mF2K3YqtmI2KfbjCDYs9in2KjZgtmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfYstmF2KfZhiDYp9uM2KzYp9ivICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfZhtmF2KfbjCDaqdin2YXZhCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfYqtmG2LjbjNmF2KfYqiDZhdmB2KfYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfYqti52K/Yp9ivINii24zYqtmF4oCM2YfYp9uMINm+24zaqdix2KjZhtiv24wg2K/YsSDZh9ixINi12YHYrdmHJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn2K/YsSDZiNuM2LHYp9uM2LTigIzZh9in24wg2YLYqNmE24wg2YfZhSDYrNiz2KrYrNmIINin2YbYrNin2YUg2LTZiNiv2J8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2YHYudmE24wg2YbYtdioJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9ii2K7YsduM2YYg2KrYutuM24zYsSDYqNmHINmI2LPbjNmE2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJ9mG2YXYp9uM2LQg24zaqSDZhtiz2K7Zhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJ9mG2YXYp9uM2LQg2KrZhdin2YUg2YbYs9iu2YfigIzZh9inJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICfZiNi22LnbjNiqINix2K7Yr9in2K8g2YbYs9iu2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn2LTZhdin2LHZhyDZhtiz2K7Zhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAn2KzYstim24zYp9iqINmG2LPYrtmHINii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICfZiNuM2pjar9uMJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9mI2LbYuduM2Kog2YbYtdioINin24zZhiBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9mI2LbYuduM2Kog2LHYrtiv2KfYryDYp9uM2YYgQ0knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn2KjbjNmGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9it2K/Yp9qp2KvYsSDYtNmF2KfYsdmHINuM2qkg2LnZhti12LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAn2YHbjNmE2K/Zh9in24wg2K7Yp9mE24wg2YXYtNiu2LUg2YXbjOKAjNqp2YbYryDaqdmHINmF2YLYp9iv24zYsSDaqdmG2YjZhtuMINio2KfZgtuMINiu2YjYp9mH2YbYryDZhdin2YbYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfZhdiv2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAn2LTZhdin2LHZhyDYs9ix24zYp9mEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ9iz24zigIzZvtuM4oCM24zZiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICfYsdmFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ9mH2KfYsdivINiv24zYs9qpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAn2LjYsdmB24zYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ9qp2KfYsdiqINi02KjaqdmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ0lQINin2LIg2LfYsduM2YIgREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAn2KLYr9ix2LMgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAn2qnYp9ix2Kog2q/Ysdin2YHbjNqpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ9iq2KzZh9uM2LLYp9iqINmF2KrZgdix2YLZhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICfYqtin2LHbjNiuINin2YbZgti22KfbjCDYttmF2KfZhtiq4oCM2YbYp9mF2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAn2KrYp9ix24zYriDZhti12KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ9iq2YTZgdmGINuxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICfYqtmE2YHZhiDbsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAn2KLYr9ix2LMg2LTYqNqp2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICdTdWJuZXQgTWFzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnR2F0ZXdheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICfZhtmI2Lkg2KfYrNin2LLZh+KAjNmG2KfZhdmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAn2qnZhNuM2K8g2KfYrNin2LLZh+KAjNmG2KfZhdmHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAn2KrYudiv2KfYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICfYqtin2LHbjNiuINin2YbZgti22KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICfYsdiz2KfZhtmHJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn2YXZhtmC2LbbjCDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfZvti02KrbjNio2KfZhtuMINmIINmG2q/Zh9iv2KfYsduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn2YbZhdmI2YbZhyDYotiy2YXYp9uM2LTbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn2KjYsdmG2KfZhdmHINix24zYstuMINi02K/Zhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9iq2LnZhduM2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ9io2KfYstmG2LTYs9iq2Ycg2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9io2KfYstio24zZhtuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfYqtiz2Kov2KrYttmF24zZhiDaqduM2YHbjNiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9qp24zZgduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfYsdmI2YXbjNiy24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ9iz2LHZiNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn2LrbjNix2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJ9i12YHYrdmHINmG2YXYp9uM2LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJ9qG2KfZvtqv2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAn2LPZiNuM2oYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAn2YXYs9uM2LHbjNin2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICfZhtmC2KfYtyDYr9iz2KrYsdiz24wgV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICfZiNiz2KfbjNmEINin2YXZhtuM2KrbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAn2YjYs9in24zZhCDZvti02KrbjNio2KfZhuKAjNqv24zYsduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn2YXYp9mI2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfYtdmB2K3ZhyDaqdmE24zYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICfYr9mI2LHYqNuM2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAn2b7Ysdiq2Ygg2KfZgdqp2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICfZhdmI2K/ZhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJ9qp2KfYsdiqIFBDTUNJQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAn2KrYrNmH24zYstin2KogVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ9in24zYs9iq2q/Yp9mHINin2KrYtdin2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ9in2LPaqdmG2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfYs9in2K7YqtmF2KfZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICfZhdit2YQg2qnYp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAn2LfYqNmC2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9in2KrYp9mCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICfZgtmB2LPZhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICfZhdit2YQg2qnYp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJ9m+2LHbjNiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAn2KrYs9mH24zZhNin2KogSVQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICdXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVGVsY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ9io2LHZhtin2YXZh+KAjNmH2KfbjCDaqdmE2KfbjNmG2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ9mF24zYp9mGINin2YHYstin2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAn2YbYsdmFINin2YHYstin2LEg2LPYsdmI2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAn2LPbjNiz2KrZhSDYudin2YXZhCDaqdmE2KfbjNmG2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAn2LPbjNiz2KrZhSDYudin2YXZhCDYs9ix2YjYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAn2KfYqNiy2KfYsSDZhdiv24zYsduM2KrbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICfYp9io2LLYp9ixINqp2KfYsdio2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICfYr9in2K7ZhNuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAn2KfYrNin2LLZh+KAjNmG2KfZhdmHINiq2qnbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ9io2Ycg2KfYstin24wg2qnYp9ix2KjYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAn2KjZhyDYp9iy2KfbjCDZvtix2K/Yp9iy2LTar9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICfYqNmHINin2LLYp9uMINiz2LHZiNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAn2KjZhyDYp9iy2KfbjCDaqdin2YXZvtuM2YjYqtixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAn2KfYrNin2LLZh+KAjNmG2KfZhdmHINit2KzZhduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJ9in2KzYp9iy2YfigIzZhtin2YXZhyDYs9in2LLZhdin2YbbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ9in2KzYp9iy2YfigIzZhtin2YXZhyDYqtmI2LPYudmHINiv2YfZhtiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ9mG2LPYrtmHINmG2YXYp9uM2LTbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICfYr9in2LHYp9uMINmF2K3Yr9mI2K/ZhyDYstmF2KfZhtuMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn2YbYsdmFINin2YHYstin2LEg2YXYrNin2YbbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ9qp2K8g2KjYp9iyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ9mG2KfZhdit2K/ZiNivJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAn2KrYp9uM24zYryc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYp9qY2YjZhCDYsdmI24zYr9in2K8g2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/bjCDaqdmHINir2KjYqiDZiNmC2KfbjNi5INiv2LEg2KrYp9ix24zYrtqG2Ycg2LHYpyDYr9ixINmI2KfYs9i3INqp2KfYsdio2LHbjCDaqdin2LHYtNmG2KfYsyDZgdi52KfZhCDZhduM4oCM2LPYp9iy2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ9mF2K3Yr9mI2K/bjNiqINii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfYs9in2K7YqiDZiCDZhdiv24zYsduM2Kog2KrYudin2LHbjNmBINii24zYqtmF4oCM2YfYp9uMINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfYqtqp2KvbjNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn2b7Yp9ix2KfZhdiq2LHZh9in24zbjCDYqNix2KfbjCDar9ix2YjZh+KAjNmH2KfbjCDYr9iz2KrYsdiz24wg2YbZhdmI2YbZhyDZhdix2KjZiNi3INio2Ycg2YjbjNqY2q/bjOKAjNmH2KfbjCDZgdmH2LHYs9iqINi52YXZiNmF24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/fi_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZmlfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdWw6RsaWxsw6QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICcnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ1RvaW1pc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/fr_CA_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZnJfQ0FfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWdWUgZGUgbGEgc3ludGjDqHNlJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnZW50cmUgbGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICcnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ0J1cmVhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/fr_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZnJfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWVyIGxhIGTDqWZpbml0aW9uIGRcJ3VuZSBjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0dlc3Rpb24gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNzZSBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAnRMOpZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnTW9kaWZpZXInOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnw4l0YXQgZFwnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0NsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXBlIGRcJ8OpdGF0IGR1IGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnw4l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cGUgZFwnw6l0YXQgYWN0dWVsIGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0Rlcm5pw6hyZXMgbW9kaWZpY2F0aW9ucyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQWRkLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdGaWx0cmVzIHBvdXIgbGVzIGNsYXNzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnQ2hvaXNpc3NleiB1bmUgY2xhc3NlIHBvdXIgY3LDqWVyIHVuIG5vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfDiXRhdCBkdSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfDiXRhdCBkZSBsXCdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaWVyIMOgIHVuIGF1dHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOdW3DqXJvIGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGludmFsaWRlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnTGUgbnVtw6lybyBkXCd1biBhdXRyZSDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiDDoCBsaWVyLic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdWb3VsZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uID8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMZSBub20gZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdMZSBub20gZXN0IGTDqWrDoCB1dGlsaXPDqSBwYXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYXZlYyBsZSBudW3DqXJvIHN1aXZhbnQgOiAlcyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpcXVlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0NvbnRlbnUgZGUgbFwnaGlzdG9yaXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnRGF0ZSBkZSBjcsOpYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVnVlIGTDqXRhaWxsw6llJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ1LDqWdsYWdlcyBkZSBjb250ZXh0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcGFyIHBhZ2UnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdDaGVyY2hlciDDqWdhbGVtZW50IGRhbnMgbGVzIHZlcnNpb25zIHByw6ljw6lkZW50ZXMgPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGFjdHVlbCBkZSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnRGVybmnDqHJlcyBtb2RpZmljYXRpb25zIGVmZmVjdHXDqWVzIHBhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnQWZmaWNoZXIgdW5lIHNldWxlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICdBZmZpY2hlciB0b3V0ZXMgbGVzIHZlcnNpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICfDiXRhdCBkZSBsYSB2ZXJzaW9uIGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxhIHZlcnNpb24gZHUgZMOpcGxvaWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICdEw6l0YWlscyBkZSBsYSB2ZXJzaW9uIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAnUHJvcHJpw6l0w6knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICdBdWN1biBhY2PDqHMgw6AgbGEgY2xhc3NlIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gSUQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1ZvdXMgZGV2ZXogc8OpbGVjdGlvbm5lciBhdSBtb2lucyB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnVm91cyBuXCdhdmV6IHBhcyBsZSBkcm9pdCBkZSBtb2RpZmllciBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAlcy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0xcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICIlcyIgblwnYSBwYXMgw6l0w6kgdHJvdXbDqSBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0ltcG9zc2libGUgZGUgc3VwcHJpbWVyIGxcJ0lEIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uICVzICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0F1Y3VuZSB2ZXJzaW9uIHRyb3V2w6llIHBvdXIgbFwnSUQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gJXMgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBJRCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiwgZGUgZHVwbGljYXRpb24gb3UgZGUgY2xhc3NlIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIGFjY8OocyBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0F1Y3VuZSBkw6lmaW5pdGlvbiBkw6lmaW5pZSBwb3VyIGxhIGNsYXNzZSAlcyAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnaGlzdG9yaXF1ZSwgYXVjdW4gSUQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnaGlzdG9yaXF1ZSwgYXVjdW4gYWNjw6hzIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdXZlbCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3V2ZWxsZSB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfDiXRhdCBkZSBkw6lwbG9pZW1lbnQgbWlzIMOgIGpvdXIgKG5vdXZlYXU9JXMsIGFuY2llbj0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw4l0YXQgZGUgbFwnaW5jaWRlbnQgbWlzIMOgIGpvdXIgKG5vdXZlYXU9JXMsIGFuY2llbj0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiAoSUQ9JXMpIHN1cHByaW3DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpZXIgw6AgJXMgKHR5cGU9JXMpIGFqb3V0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpZXIgw6AgJXMgKHR5cGU9JXMpIHN1cHByaW3DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRMOpZmluaXRpb24gZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gbWlzZSDDoCBqb3VyIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb20gbWlzIMOgIGpvdXIgKG5vdXZlYXU9JXMsIGFuY2llbj0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1ZSAlcyBtaXMgw6Agam91ciBkZSAiJXMiIMOgICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbiAlcyBzdXBwcmltw6llJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gSUQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gb3UgZGUgdmVyc2lvbiBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24sIGF1Y3VuIGFjY8OocyBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnTFwnSUQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gJXMgblwnYSBwYXMgw6l0w6kgdHJvdXbDqSBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0xcJ0lEIGRlIHZlcnNpb24gJXMgblwnYSBwYXMgw6l0w6kgdHJvdXbDqSBkYW5zIGxhIGJhc2UgZGUgZG9ubsOpZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ0ltcHJpbcOpIHBhciAlcyDDoCAlcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0lEIGRlIGNsYXNzZSBpbnZhbGlkZSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQXVjdW4gSUQgZGUgY2xhc3NlIG5cJ2Egw6l0w6kgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdBdWN1bnMgZHJvaXRzIGRcJ2FjY8OocyBwb3VyIGNldHRlIGNsYXNzZSBuXCdhIMOpdMOpIGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdBdWN1bnMgcsOpc3VsdGF0cyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ8OpbMOpbWVudCwgYXVjdW5zIGRyb2l0cyBkXCdhY2PDqHMgcG91ciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdMXCfDqXRhdCBkZSBkw6lwbG9pZW1lbnQgZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTFwnw6l0YXQgZFwnaW5jaWRlbnQgZGUgY2V0IMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnQWZmaWNoZXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdRdWFudGl0w6kgbWF4aW1hbGUgcG91ciB1biDDqWzDqW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnTGVzIGNoYW1wcyB2aWRlcyBpbmRpcXVlbnQgcXVlIGxlcyB2YWxldXJzIHBhciBkw6lmYXV0cyBzb250IGdhcmTDqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICdQYXNzw6kocyknOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZMOobGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBzw6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJ1JBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICdEaXNxdWUgZHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnQ2FwYWNpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnQWRhcHRhdGV1ciByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ0lQIHN1ciBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdBZHJlc3NlIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJ0FkYXB0YXRldXIgZ3JhcGhpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ0F1dHJlIMOpcXVpcGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ0RhdGUgZFwnZXhwaXJhdGlvbiBkZSBsYSBnYXJhbnRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICdEYXRlIGRcJ2luc3RhbGxhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnVMOpbMOpcGhvbmUgMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnVMOpbMOpcGhvbmUgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICdBZHJlc3NlIGUtbWFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICdBZHJlc3NlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICdNYXNxdWUgZHUgc291cyByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICdQYXNzZXJlbGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ1R5cGUgZGUgbGEgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJ0Nsw6kgZGUgbGEgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ1F1YW50aXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICdEYXRlIGRcJ2V4cGlyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICdNw6lkaWEnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJ09yZGluYXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdNYXTDqXJpZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1LDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdMb2dpY2llbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01haW50ZW5hbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdFbiByw6lwYXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZ1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdPcmRpbmF0ZXVyIHBvcnRhYmxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdPcmRpbmF0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJ1BEQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICdTZXJ2ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQXV0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJ01vbml0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICdJbXByaW1hbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJ0NvbW11dGF0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ1JvdXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdQb2ludCBkXCdhY2Nlc3MgV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICdQw6lyaXBow6lyaXF1ZSBkZSBzw6ljdXJpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICfDiWzDqW1lbnQgZGUgc2F1dmVnYXJkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1NvdXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0NsYXZpZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnQ2Ftw6lyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICdWaWTDqW9wcm9qZWN0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTW9kZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdDYXJ0ZSBQQ01DSUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1DDqXJpcGjDqXJpcXVlIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICdTdGF0aW9uIGRcJ2FjY3VlaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ1NjYW5uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCw6J0aW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAnQnVyZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnw4l0YWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdQacOoY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJ1JhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnRW1wbGFjZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnUHJpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICdEw6lwYXJ0ZW1lbnQgIlRlY2hub2xvZ2llcyBkZSBsXCdJbmZvcm1hdGlvbiInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICdXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVGVsY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ0FwcGxpY2F0aW9uIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ0ludGVyZ2ljaWVsIChtaWRkbGV3YXJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICdBcHBsaWNhdGlvbiBzZXJ2ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJ09TIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdPUyBzZXJ2ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICdPdXRpbCBkXCdhZG1pbmlzdHJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICdPdXRpbCB1dGlsaXNhdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ0VtYmFycXXDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ0xpY2Vuc2UgdW5pcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnUGFyIHV0aWxpc2F0ZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICdQYXIgcHJvY2Vzc2V1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnUGFyIHNlcnZldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICdQYXIgbm9ldWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICdMaWNlbnNlIHBhciB2b2x1bWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnTGljZW5zZSBlbnRyZXByaXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnTGljZW5zZSBkw6l2ZWxvcHBldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ0TDqW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJ0xpbWl0w6llIGRhbnMgbGUgdGVtcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMb2dpY2llbCBncmF0dWl0IChmcmVld2FyZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICdPcGVuLXNvdXJjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICdJbGxpbWl0w6knOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnw4lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGF0dHJpYnXDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhdHRyaWJ1w6lzIMOgIHVuIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBhdHRyaWJ1w6lzIMOgIHVuIHV0aWxpc2F0ZXVyIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnUGFyYW3DqHRyZXMgZGUgbGEgQ01EQiAoYmFzZSBkZSBkb25uw6llcyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGFqb3V0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6lkaXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaXF1ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmVzc2lvbiBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdWdWUgZMOpdGFpbGzDqWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0ZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0ZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gcGFyIHBhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXNlIGRlIGRvbm7DqWVzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcsOpZXIgZXQgZ8OpcmVyIGxlcyBkw6lmaW5pdGlvbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1N1cHByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvdWxldXIgZGUgbFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpcXVlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWdWUgZFwnZW5zZW1ibGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxcJ2V4ZW1wbGUgZGVzIHBlcm1pc3Npb25zIGRlIGdyb3VwZXMgZGVzIGF0dHJpYnV0cyBkdSBjYXRhbG9ndWUgZ8OpbsOpcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnUmVjaGVyY2hlciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0LXByb2R1Y3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHLDqS1wcm9kdWN0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3RpZic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/gl_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6Z2xfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICdEZWZpbmljacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZG8gSW5jaWRlbnRlIGFjdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJhciBwb3IgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdFc3RhZG8gZG8gaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzdGEgem9vbSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgdmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJ1Byb3BpZWRhZGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGR1biBlbGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICdDYW1wb3MgYmFsZWlyb3MgaW5kaWNhbiBxdWUgb3MgdmFsb3JlcyBhY3R1YWlzIHNvbiBtYW50aWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnT21pdGlkbyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ07Dum1lcm8gZGUgc2VyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICdEaXNjbyBkdXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnQ2FwYWNpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ0FkYXB0YWRvciBkZSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ0lQIHBvciBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdFbmRlcmV6byBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICdBZGFwdGFkb3IgZ3LDoWZpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnT3V0cm8gZXF1aXBhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJ0RhdGEgZGUgaW5zdGFsYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICdUZWzDqWZvbm8gMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnVGVsw6lmb25vIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJ0VuZGVyZXpvIGRlIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICdNw6FzY2FyYSBkZSBzdWJyZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICdQYXNhcmVsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICdUaXBvIExpY2VuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdDaGF2ZSBMaWNlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnQ2FudGlkYWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJ0RhdGEgZGUgY2FkdWNpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJ1JlY3Vyc29zIG11bHRpbWVkaWEnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdDYWR1Y2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1BvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRXNjcml0b3Jpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICdQREEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnU2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdXRyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJ01vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJ0ltcHJlc29yYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnRW5jYW1pw7FhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnUHVudG8gZGUgYWNjZXNvIGEgcmVkZSBzZW4gZsOtb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnRGlzcG9zaXRpdm8gZGUgc2VndXJhbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICdEaXNwb3NpdGl2byBCYWNrdXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdSYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGVjbGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdDw6FtYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ03Ds2RlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJ1BsYWNhIFBDTUNJQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnRGlzcG9zaXRpdm8gVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ0VzdGFjacOzbiBkZSBBY29wbGFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnRXNjw6FuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdFZGlmaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdPZmljaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnQW5kYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnQmFzdGlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnTHVnYXIgZGUgdHJhYmFsbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnSW5zdGFsYWNpw7NuIElUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ1JlZGUgbG9jYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJ1JlZGUgc2VuIGbDrW9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJ0dTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICdBcGxpY2F0aXZvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ01pZGRsZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnQXBsaWNhdGl2byBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICdTaXN0ZW1hIG9wZXJhdGl2byBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJ1Npc3RlbWEgb3BlcmF0aXZvIGRvIHNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICdGZXJyYW1lbnRhIGRlIGFkbWluaXN0cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICdGZXJyYW1lbnRhIGRlIHVzdWFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICdJbmNydXN0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnTGljZW56YSDDum5pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICdQb3IgdXN1YXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnUG9yIHByb2Nlc2Fkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ1BvciBzZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJ1BvciBub2RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJ0xpY2VuemEgRW50ZXJwcmlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ0xpY2VuemEgZG8gZGVzZW52b2x2ZWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnRGVtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ0PDs2RpZ28gYWJlcnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ0lsaW1pdGFkbyc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgb3MgZ3J1cG9zIGRlIHBlcm1pc29zIGRlIGV4ZW1wbG8gZG9zIGF0cmlidXRvcyBkbyBjYXTDoWxvZ28geGVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/he_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aGVfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfXnteR15gg15bXldedJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn15HXmdefJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICfXntep16jXkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/hi_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aGlfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfgpJzgpLzgpYLgpK4g4KSm4KWD4KS24KWN4KSvJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn4KSV4KWHIOCkrOClgOCkmic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJyc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAn4KSV4KS+4KSw4KWN4KSv4KS+4KSy4KSvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/hr_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aHJfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdEZXRhbGpuaSBwcmVnbGVkJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnSXptZcSRdSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJyc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAnVXJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/hu_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aHVfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ09zenTDoWx5LW1lZ2hhdMOhcm96w6FzIG3Ds2Rvc8OtdMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1tZW5lZHpzbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1vc3p0w6FseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAnTWVnaGF0w6Fyb3rDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnVsOhbHRvesOhcyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudERhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpYy50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfDnHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnT3N6dMOhbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdHTDrXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnSmVsZW5sZWdpIGluY2lkZW5zw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnSmVsZW5sZWdpIGluY2lkZW5zw6FsbGFwb3QgdMOtcHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1V0b2xzw7MgbcOzZG9zw610w6FzJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1BZGQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ1N6xbFyxZEgYXogb3N6dMOhbHlva2hveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWw6FsYXNzem9uIGVneSBvc3p0w6FseXQgYSBsaXN0w6Fiw7NsIGVneSDDumoga29uZmlndXLDoWNpw7NlbGVtIGzDqXRyZWhvesOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0hpdmF0a296w6FzIGVneSBtw6FzaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ8OJcnbDqW55dGVsZW4ga29uZmlndXLDoWNpw7NlbGVtLXN6w6FtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdFZ3kgbcOhc2lrIGtvbmZpZ3Vyw6FjacOzZWxlbSBzesOhbWEsIGFtZWxseWVsIMO2c3N6ZSBrZWxsIGvDtnRuaS4nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSBrb25maWd1csOhY2nDs2VsZW1ldD8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdBIG5ldmV0IG3DoXIgaGFzem7DoWxqw6FrIGEga29uZmlndXLDoWNpw7NlbGVtZWsgYSBrw7Z2ZXRrZXrFkSBzesOhbW9ra2FsOiAlcyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdFbMWRem3DqW55dGFydGFsb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0zDqXRyZWhvesOhcyBpZGVqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdOYWd5w610w6FzaSBuw6l6ZXQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnS8O2cm55ZXpldCBiZcOhbGzDrXTDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdLb25maWd1csOhY2nDs2VsZW1layBvbGRhbGFua8OpbnQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJ0VneSDDoWx0YWzDoW5vcyBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSB0w6FibMOhemF0JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0tlcmVzc2VuIGF6IGVsxZF6xZEgdmVyemnDs2tiYW4gaXM/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnSmVsZW5sZWdpIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVXRvbGrDoXJhIG3Ds2Rvc8OtdG90dGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJ0VneSB2ZXJ6acOzIG1lZ2plbGVuw610w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJ8OWc3N6ZXMgdmVyemnDsyBtZWdqZWxlbsOtdMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ1Zlcnppw7MgaW5jaWRlbnPDoWxsYXBvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICdWZXJ6acOzIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdWZXJ6acOzc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS12ZXJ6acOzIHLDqXN6bGV0ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICdUdWxhamRvbnPDoWcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICdOaW5jcyBob3p6w6Fmw6lyw6lzIG1lZ2FkdmEgYXogb3N6dMOhbHlob3ohJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pbmNzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1N6w7xrc8OpZ2UgdmFuIGxlZ2Fsw6FiYiBlZ3kga2l2w6FsYXN6dG90dCBrb25maWd1csOhY2nDs2VsZW1yZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdOaW5jcyDDrXLDoXNpIGhvenrDoWbDqXLDqXNlIGVoaGV6IGEga29uZmlndXLDoWNpw7NlbGVtaGV6OiAlcy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0Eoeikg4oCeJXPigJ0ga29uZmlndXLDoWNpw7NlbGVtIG5lbSB0YWzDoWxoYXTDsyBheiBhZGF0YsOhemlzYmFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05lbSB2b2x0IGxlaGV0c8OpZ2VzIGEoeikgJXMga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIHTDtnJsw6lzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05lbSB0YWzDoWxoYXTDsyB2ZXJ6acOzIGEoeikgJXMga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzbsOhbCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzLCBrZXR0xZF6w6lzYXpvbm9zw610w7MgdmFneSBvc3p0w6FseWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdOaW5jcyBob3p6w6Fmw6lyw6lzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05pbmNzIG1lZ2hhdMOhcm96w6FzIG1lZ2hhdMOhcm96dmEgYSh6KSAlcyBvc3p0w6FseWhveiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmVtIGxlaGV0IG1lZ2plbGVuw610ZW5pIGF6IGVsxZF6bcOpbnlla2V0LCBuaW5jcyBrb25maWd1csOhY2nDs2VsZW0tYXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYXogZWzFkXptw6lueWVrZXQsIG5pbmNzZW5layBob3p6w6Fmw6lyw6lzaSBqb2dvayBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnw5pqIGtvbmZpZ3Vyw6FjacOzZWxlbSAoYXpvbm9zw610w7MgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ8OaaiB2ZXJ6acOzIChhem9ub3PDrXTDsyA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QgZnJpc3PDrXR2ZSAow7pqID0gJXMsIHLDqWdpID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW5zw6FsbGFwb3QgZnJpc3PDrXR2ZSAow7pqID0gJXMsIHLDqWdpID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIChhem9ub3PDrXTDsyA9ICVzKSB0w7Zyw7ZsdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdLYXBjc29sYXQgZWhoZXo6ICVzICh0w61wdXMgPSAlcykgaG96esOhYWR2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnS2FwY3NvbGF0IGVoaGV6OiAlcyAodMOtcHVzID0gJXMpIHTDtnLDtmx2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLW1lZ2hhdMOhcm96w6FzIGZyaXNzw610dmUgKGF6b25vc8OtdMOzID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTsOpdiBmcmlzc8OtdHZlICjDumogPSAlcywgcsOpZ2kgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWLDunR1bSAoJXMpIGZyaXNzw610dmUgZXJyxZFsOiDigJ4lc+KAnSwgZXJyZTog4oCeJXPigJ0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJXMuIHZlcnppw7MgdMO2csO2bHZlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIHZhZ3kgdmVyemnDs2F6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBhIGtvbmZpZ3Vyw6FjacOzZWxlbWV0LCBuaW5jc2VuZWsgaG96esOhZsOpcsOpc2kgam9nb2sgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdBKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyBuZW0gdGFsw6FsaGF0w7MgYXogYWRhdGLDoXppc2JhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdBKHopICVzIHZlcnppw7Nhem9ub3PDrXTDsyBuZW0gdGFsw6FsaGF0w7MgYXogYWRhdGLDoXppc2JhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnbnlvbXRhdHRhOiAlcyDigJMgJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfDiXJ2w6lueXRlbGVuIG9zenTDoWx5YXpvbm9zw610w7MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mgb3N6dMOhbHlhem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05pbmNzZW5layBob3p6w6Fmw6lyw6lzaSBqb2dvayBtZWdhZHZhIGVoaGV6IGF6IG9zenTDoWx5aG96ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmluY3MgdGFsw6FsYXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIGtlcmVzw6lzaSBlcmVkbcOpbnllayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTmVtIGxlaGV0IG1lZ2plbGVuw610ZW5pIGF6IGVsZW1ldCwgbmluY3NlbmVrIGhvenrDoWbDqXLDqXNpIGpvZ29rIG1lZ2FkdmEgYSBrb25maWd1csOhY2nDs2VsZW1oZXohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnw7x6ZW1rw6lwZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2ZpZ3llbG1lenRldMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0Ega29uZmlndXLDoWNpw7NlbGVtIGluY2lkZW5zw6FsbGFwb3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnTWVnamVsZW7DrXRldHQga29uZmlndXLDoWNpw7NlbGVtZWsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnS8O2esO2dHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnRWd5IGVsZW0gbGVnbmFneW9iYiBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnQXogw7xyZXMgbWV6xZFrIGF6dCBqZWx6aWssIGhvZ3kgYXogYWt0dcOhbGlzIG1lesWRayBtZWd0YXJ0w6FzcmEga2Vyw7xsbmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICdLaWhhZ3l2YSc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICfDnGd5ZsOpbC12w6FsbGFsYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ1Nvcm96YXRzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnUmFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ01lcmV2bGVtZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICdLYXBhY2l0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnSMOhbMOzemF0aSBjc2F0b2zDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCBhIERIQ1AgZsO2bMO2dHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJ0lQLWPDrW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnR3JhZmlrdXMgY3NhdG9sw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnRWd5w6liIGJlcmVuZGV6w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ0dhcmFuY2lhIGxlasOhcmF0aSBpZMWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJ1RlbGVww610w6lzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJzEuIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJzIuIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnRS1tYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJ0jDoWzDs3phdGkgY8OtbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ0FsaMOhbMOzemF0aSBtYXN6ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnw4F0asOhcsOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ0xpY2VuY3TDrXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJ0xpY2VuYyBrdWxjcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ01lbm55aXPDqWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnTGVqw6FyYXRpIGlkxZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICdBZGF0aG9yZG96w7MnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJ1N6w6Ftw610w7Nnw6lwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnSMOhbMOzemF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU3pvZnR2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0xlasOhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdLYXJiYW50YXJ0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUHLDs2Jhw7x6ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1RlcnZlemV0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ0phdsOtdMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnVmlzc3phdm9udCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdWaXpzZ8OhbGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN6dGVsw6lzL1FBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnQXN6dGFsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICdQREEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnS2lzem9sZ8OhbMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnRWd5w6liJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICdNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICdOeW9tdGF0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnS2FwY3NvbMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ8OadHbDoWxhc3p0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdXTEFOIGhvenrDoWbDqXLDqXNpIHBvbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnQml6dG9uc8OhZ2kgZXN6a8O2eic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnQml6dG9uc8OhZ2kgbWVudMOpcyBlc3prw7Z6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnRWfDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCaWxsZW50ecWxemV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJ0thbWVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICdLaXZldMOtdMWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTW9kZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdQQ01DSUEga8OhcnR5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnVVNCIGVzemvDtnonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnRG9ra29sw7Mgw6FsbG9tw6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICdMYXBvbHZhc8OzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnw4lww7xsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAnSXJvZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICdFbWVsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1N6b2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICdSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJ011bmthaGVseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICdFbG9zenTDsyBkb2Jveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJ0lULWzDqXRlc8OtdG3DqW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJ1RlbGVrb21tdW5pa8OhY2nDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICdHU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnS2xpZW5zIGFsa2FsbWF6w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICdLw7Z6dGVzIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICdLaXN6b2xnw6Fsw7MgYWxrYWxtYXrDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnS2xpZW5zIG9wZXLDoWNpw7NzIHJlbmRzemVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJ0tpc3pvbGfDoWzDsyBvcGVyw6FjacOzcyByZW5kc3plcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnQWRtaW5pc3p0csOhY2nDs3MgZXN6a8O2eic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICdGZWxoYXN6bsOhbMOzaSBlc3prw7Z6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnQmXDoWd5YXpvdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICdFZ3llZMO8bGkgbGljZW5jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnRmVsaGFzem7DoWzDs25rw6ludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnUHJvY2Vzc3pvcm9ua8OpbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ0tpc3pvbGfDoWzDs25rw6ludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJ0Nzb23Ds3BvbnRvbmvDqW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnTWVubnlpc8OpZ2kgbGljZW5jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJ1bDoWxsYWxhdGkgbGljZW5jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnRmVqbGVzenTFkWkgbGljZW5jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICdCZW11dGF0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnSWTFkWJlbiBrb3Jsw6F0b3pvdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ055w61sdCBmb3Jyw6Fzw7onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAnS29ybMOhdGxhbic7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09LJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdIb3p6w6FyZW5kZWx0IGtvbmZpZ3Vyw6FjacOzZWxlbWVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfDnGd5ZsOpbC12w6FsbGFsYXRob3ogaG96esOhcmVuZGVsdCBrb25maWd1csOhY2nDs2VsZW1layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ8OcZ3lmw6lsLWZlbGhhc3puw6Fsw7Nob3ogaG96esOhcmVuZGVsdCBrb25maWd1csOhY2nDs2VsZW1layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQiBiZcOhbGzDrXTDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnRWd5ZWRpIG7DqXYgZWxsZW7FkXJ6w6lzZSBraXrDoXLDs2xhZyB1Z3lhbmFiYmFuIGEga29uZmlndXLDoWNpw7NlbGVtIG9zenTDoWx5YmFuICjigJ5vc3p0w6FseeKAnSkgdmFneSBnbG9iw6FsaXNhbiAo4oCeZ2xvYsOhbGlz4oCdKSwgYW1lbHkgYXp0IGplbGVudGksIGhvZ3kgbWluZGVuIG1lZ2zDqXbFkSBrb25maWd1csOhY2nDs2VsZW0gZmlneWVsZW1iZSBsZXN6IHbDqXZlIGEga2V0dMWResOpc2VrIGtlcmVzw6lzZWtvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gaG96esOhYWTDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBzemVya2VzenTDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLDoWNpw7NlbGVtIGVzZW3DqW55IG1vZHVsLCBhbWVseSBlbmdlZMOpbHllemkgYSBuYXBsw7N6w6FzdCBheiBlbMWRem3DqW55ZWtiZSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIG55b210YXTDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1zesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdLb25maWd1csOhY2nDs2VsZW0ta29ybMOhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWtvcmzDoXQgb2xkYWxhbmvDqW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXLDoWNpw7NtZW5lZHpzbWVudC1hZGF0YsOhemlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2kgaMOhdHTDqXJwcm9ncmFtIMO6dHbDoWxhc3p0w7NqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ01lZ2hhdMOhcm96w6Fzb2sgbMOpdHJlaG96w6FzYSDDqXMga2V6ZWzDqXNlIGEga29uZmlndXLDoWNpw7NlbGVtZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnTcWxdmVsZXRlayBtZWdoYXTDoXJvesOhc2EsIGFob2wgZWd5IGJlw6FsbMOtdMOhc29rIGdvbWIgw6lyaGV0xZEgZWwgYSBrYXBjc29sdCBvYmpla3R1bW9rIGZlbMO8bGV0aSBlbGVtZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0g4oCew7Zzc3pldGV0dOKAnSkuIE5lIGZlbGVkamUsIGhvZ3kgZXpla25layBhIG3FsXZlbGV0ZWtuZWsgcmVuZGVsa2V6bmnDvGsga2VsbCBhIGvDtnZldGtlesWRIEpTIMOpcyBDU1MgZsOhamxvayByZWdpc3p0csOhbMOhc8OhdmFsOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDDqXMgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW1layBsw6l0cmVob3rDoXPDoWhveiBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIHTDtnJsw6lzw6loZXogYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW1layBsZWvDqXLDqXPDqWhleiBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtlcmVzw6lzw6loZXogYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW1layBmcmlzc8OtdMOpc8OpaGV6IGF6IMOhbHRhbMOhbm9zIGZlbMO8bGV0IGhhc3puw6FsYXTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRWd5IMOhdHRla2ludMWRIG1vZHVsdCBoYXTDoXJveiBtZWcgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBsaXN0YSBraXMgbsOpemV0w6luZWsgbWVnamVsZW7DrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ1JlZ3Vsw6FyaXMga2lmZWplesOpc2VrZXQgaGF0w6Fyb3ogbWVnIGVnecOpbmlsZWcgbWluZGVuIGVneWVzIGtvbmZpZ3Vyw6FjacOzZWxlbSBvc3p0w6FseW7DoWwgYSBrb25maWd1csOhY2nDs2VsZW0gbmV2w6luZWsgZWxsZW7FkXJ6w6lzw6loZXosIHZhbGFtaW50IGEgbWVnZmVsZWzFkSBoaWJhw7x6ZW5ldGVrIG1lZ2plbGVuw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXog4oCeSVRTTUNvbmZpZ0l0ZW3igJ0gb3N6dMOhbHkgYWxhcMOpcnRlbG1lemV0dCBhbG9iamVrdHVtw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0kgbWVnaGF0w6Fyb3rDoXMtc3plcmtlc3p0xZEgc29yYWluYWsgc3rDoW3DoXQgYXogYWRtaW5pc3p0csOhY2nDs3MgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBpbmNpZGVuc8OhbGxhcG90b2sgc29ycmVuZGrDqXQgYSBsZWdtYWdhc2FiYnTDs2wgKHDDqWxkw6F1bCBrcml0aWt1cykgYSBsZWdhbGFjc29ueWFiYmlnIChww6lsZMOhdWwgZnVua2Npb27DoWxpcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGthcGNzb2zDs2TDsyDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2thdCwgYWhvbCBhIGthcGNzb2x0IGplZ3llayBiZWZvbHnDoXNvbGhhdGrDoWsgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoWxsYXBvdMOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2VyZXPDqXNpIGtvcmzDoXRvdCBheiBBZ2VudElUU01Db25maWdJdGVtIGvDqXBlcm55xZFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrZXJlc8Opc2kga29ybMOhdG90IGF6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gga8OpcGVybnnFkW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBtZWdqZWxlbsOtdGV0dCBvc3psb3Bva2F0IGEga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRYmVuLiBFbm5layBhIGJlw6FsbMOtdMOhc25hayBuaW5jcyBoYXTDoXNhIGF6IG9zemxvcCBoZWx5emV0w6lyZS4gTWVnamVneXrDqXM6IGF6IG9zenTDoWx5IG9zemxvcCBtaW5kaWcgbMOhdGhhdMOzLCBoYSBheiDigJ7DlnNzemVz4oCdIHN6xbFyxZEga2kgdmFuIHbDoWxhc3p0dmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBtZWdqZWxlbsOtdGV0dCBvc3psb3Bva2F0IGEga29uZmlndXLDoWNpw7NlbGVtIGtlcmVzxZFiZW4uIEVubmVrIGEgYmXDoWxsw610w6FzbmFrIG5pbmNzIGhhdMOhc2EgYXogb3N6bG9wIGhlbHl6ZXTDqXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0ktayBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFiZW4gYSBDSSBvc3p0w6FseXTDs2wgZsO8Z2fFkWVuLiBNaW5kZW4gYmVqZWd5esOpc3QgYXogb3N6bG9wIG5ldmUgw6lzIGR1cGxhIGtldHTFkXNwb250IGVsxZF0YWdnYWwga2VsbCBlbGzDoXRuaSAoYXpheiBDb21wdXRlcjo6KS4gVmFuIG7DqWjDoW55IG9seWFuIENJLWF0dHJpYsO6dHVtLCBhbWVseSBrw7Z6w7ZzIG1pbmRlbiBDSS12ZWwgKHDDqWxkw6F1bCBhIENvbXB1dGVyIG9zenTDoWx5bsOhbDogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gQXogZWd5w6luaSBDSS1hdHRyaWLDunR1bW9rIG1lZ2plbGVuw610w6lzw6loZXosIGFob2d5IGF6b2sgYSBDSS1tZWdoYXTDoXJvesOhc2JhbiBtZWcgdmFubmFrIGFkdmEsIGEga8O2dmV0a2V6xZEgc8OpbcOhdCBrZWxsIGhhc3puw6FsbmkgKHDDqWxkw6F1bCBhIENvbXB1dGVyIG9zenTDoWx5bsOhbCk6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBIYSBlZ3kgQ0kgb3N6dMOhbHlob3ogbmluY3MgYmVqZWd5esOpcywgYWtrb3IgYXogYWxhcMOpcnRlbG1lemV0dCBvc3psb3BvayBsZXN6bmVrIG1lZ2plbGVuw610dmUsIGFob2d5IGF6IElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zIGJlw6FsbMOtdMOhc2JhbiBtZWcgdmFuIGhhdMOhcm96dmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0ktayBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPFkWJlbiBhIENJIG9zenTDoWx5dMOzbCBmw7xnZ8WRZW4uIE1pbmRlbiBiZWplZ3l6w6lzdCBheiBvc3psb3AgbmV2ZSDDqXMgZHVwbGEga2V0dMWRc3BvbnQgZWzFkXRhZ2dhbCBrZWxsIGVsbMOhdG5pIChhemF6IENvbXB1dGVyOjopLiBWYW4gbsOpaMOhbnkgb2x5YW4gQ0ktYXR0cmliw7p0dW0sIGFtZWx5IGvDtnrDtnMgbWluZGVuIENJLXZlbCAocMOpbGTDoXVsIGEgQ29tcHV0ZXIgb3N6dMOhbHluw6FsOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBBeiBlZ3nDqW5pIENJLWF0dHJpYsO6dHVtb2sgbWVnamVsZW7DrXTDqXPDqWhleiwgYWhvZ3kgYXpvayBhIENJLW1lZ2hhdMOhcm96w6FzYmFuIG1lZyB2YW5uYWsgYWR2YSwgYSBrw7Z2ZXRrZXrFkSBzw6ltw6F0IGtlbGwgaGFzem7DoWxuaSAocMOpbGTDoXVsIGEgQ29tcHV0ZXIgb3N6dMOhbHluw6FsKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEhhIGVneSBDSSBvc3p0w6FseWhveiBuaW5jcyBiZWplZ3l6w6lzLCBha2tvciBheiBhbGFww6lydGVsbWV6ZXR0IG9zemxvcG9rIGxlc3puZWsgbWVnamVsZW7DrXR2ZSwgYWhvZ3kgYXogSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMgYmXDoWxsw610w6FzYmFuIG1lZyB2YW4gaGF0w6Fyb3p2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs2VsZW1layBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFiZW4gYSBrb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHl0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXN0IGF6IG9zemxvcCBuZXZlIMOpcyBkdXBsYSBrZXR0xZFzcG9udCBlbMWRdGFnZ2FsIGtlbGwgZWxsw6F0bmkgKGF6YXogQ29tcHV0ZXI6OikuIFZhbiBuw6low6FueSBvbHlhbiBrb25maWd1csOhY2nDs2VsZW0tYXR0cmliw7p0dW0sIGFtZWx5IGvDtnrDtnMgbWluZGVuIGtvbmZpZ3Vyw6FjacOzZWxlbW1lbCAocMOpbGTDoXVsIGEgQ29tcHV0ZXIgb3N6dMOhbHluw6FsOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBBeiBlZ3nDqW5pIGtvbmZpZ3Vyw6FjacOzZWxlbS1hdHRyaWLDunR1bW9rIG1lZ2plbGVuw610w6lzw6loZXosIGFob2d5IGF6b2sgYSBrb25maWd1csOhY2nDs2VsZW0tbWVnaGF0w6Fyb3rDoXNiYW4gbWVnIHZhbm5hayBhZHZhLCBhIGvDtnZldGtlesWRIHPDqW3DoXQga2VsbCBoYXN6bsOhbG5pIChww6lsZMOhdWwgYSBDb21wdXRlciBvc3p0w6FseW7DoWwpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSGEgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBvc3p0w6FseWhveiBuaW5jcyBiZWplZ3l6w6lzLCBha2tvciBheiBhbGFww6lydGVsbWV6ZXR0IG9zemxvcG9rIGxlc3puZWsgbWVnamVsZW7DrXR2ZSwgYWhvZ3kgYXogSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMgYmXDoWxsw610w6FzYmFuIG1lZyB2YW4gaGF0w6Fyb3p2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga29uZmlndXLDoWNpw7NlbGVtZWsgbWVnamVsZW7DrXRldHQgb3N6bG9wYWl0IGEga2FwY3NvbGF0aSB0w6FibGEga29tcGxleCBuw6l6ZXTDqWJlbiBheiDDtnNzemVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1vc3p0w6FseW7DoWwuIEhhIG5pbmNzIGJlamVneXrDqXMsIGFra29yIGF6IGFsYXDDqXJ0ZWxtZXpldHQgb3N6bG9wb2sgbGVzem5layBtZWdqZWxlbsOtdHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIENJLWsgbWVnamVsZW7DrXRldHQgb3N6bG9wYWl0IGEga2FwY3NvbGF0aSB0w6FibGEga29tcGxleCBuw6l6ZXTDqWJlbiBhIENJIG9zenTDoWx5dMOzbCBmw7xnZ8WRZW4uIE1pbmRlbiBiZWplZ3l6w6lzdCBheiBvc3psb3AgbmV2ZSDDqXMgZHVwbGEga2V0dMWRc3BvbnQgZWzFkXRhZ2dhbCBrZWxsIGVsbMOhdG5pIChhemF6IENvbXB1dGVyOjopLiBWYW4gbsOpaMOhbnkgb2x5YW4gQ0ktYXR0cmliw7p0dW0sIGFtZWx5IGvDtnrDtnMgbWluZGVuIENJLXZlbCAocMOpbGTDoXVsIGEgQ29tcHV0ZXIgb3N6dMOhbHluw6FsOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBBeiBlZ3nDqW5pIENJLWF0dHJpYsO6dHVtb2sgbWVnamVsZW7DrXTDqXPDqWhleiwgYWhvZ3kgYXpvayBhIENJLW1lZ2hhdMOhcm96w6FzYmFuIG1lZyB2YW5uYWsgYWR2YSwgYSBrw7Z2ZXRrZXrFkSBzw6ltw6F0IGtlbGwgaGFzem7DoWxuaSAocMOpbGTDoXVsIGEgQ29tcHV0ZXIgb3N6dMOhbHluw6FsKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEhhIGVneSBDSSBvc3p0w6FseWhveiBuaW5jcyBiZWplZ3l6w6lzLCBha2tvciBheiBhbGFww6lydGVsbWV6ZXR0IG9zemxvcG9rIGxlc3puZWsgbWVnamVsZW7DrXR2ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBtZWx5IGthcGNzb2xhdHTDrXB1c29rIChhIGplZ3kgbsOpesWRcG9udGrDoWLDs2wgZWxuZXZlenZlKSBiZWZvbHnDoXNvbGhhdGrDoWsgZWd5IGthcGNzb2x0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoWxsYXBvdMOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBqZWd5dMOtcHVzIGJlZm9secOhc29saGF0amEgZWd5IGthcGNzb2x0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoWxsYXBvdMOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZybMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfDnHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90IHN6w61uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdLZXR0xZF6w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0VuZ2Vkw6lseWV6aSBhIGtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtxbF2ZWxldCBmdW5rY2nDs3QgYXogw7xneWludMOpesWRaSBlbMWRdMOpdHByb2dyYW1uw6FsLCBob2d5IGVneXN6ZXJyZSBlZ3luw6lsIHTDtmJiIGtvbmZpZ3Vyw6FjacOzZWxlbW1lbCBkb2xnb3poYXNzb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdDc2FrIGEgZmVsc29yb2x0IGNzb3BvcnRva25hayBlbmdlZMOpbHllemkgYSBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQgZnVua2Npw7N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdFbmdlZMOpbHllemkgdmFneSBsZXRpbHRqYSBhenQgYSBmdW5rY2lvbmFsaXTDoXN0LCBhbWVseSBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGVneWVkaSBuZXZlaXQgZWxsZW7FkXJ6aS4gQSBsZWhldMWRc8OpZyBlbmdlZMOpbHllesOpc2UgZWzFkXR0IGVsbGVuxZFyaXpuaWUga2VsbCBhIHJlbmRzemVyw6l0LCBob2d5IHZhbm5hay1lIG3DoXIgbMOpdGV6xZEga29uZmlndXLDoWNpw7NlbGVtZWsga2V0dMWResO2dHQgbsOpdnZlbC4gRXp0IG1lZ3RlaGV0aSBhIGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcyBwYXJhbmNzZsOhamxsYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnRXNlbcOpbnltb2R1bCBhIGtvbmZpZ3Vyw6FjacOzZWxlbSDDoWxsYXBvdMOhbmFrIGJlw6FsbMOtdMOhc8OhaG96IGVneSBqZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBoaXZhdGtvesOhc8Ohbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50w6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnRWd5IG1vZHVsIGVneSBvc3p0w6FsecOpcnQgZmVsZWzFkXMgY3NvcG9ydCBlbGxlbsWRcnrDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdFZ3kgbW9kdWwgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbcOpcnQgZmVsZWzFkXMgY3NvcG9ydCBlbGxlbsWRcnrDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdFZ3kgbW9kdWwgSVRTTSBrb25maWd1csOhY2nDs2VsZW0gc3RhdGlzenRpa8OhayBlbMWRw6FsbMOtdMOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnT2JqZWt0dW0gaMOhdHTDqXJwcm9ncmFtIG1vZHVsIHJlZ2lzenRyw6FjacOzIGF6IGltcG9ydMOhbMOhcy9leHBvcnTDoWzDoXMgbW9kdWxob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ8OBdHRla2ludMOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgw7xneWbDqWwtdsOhbGxhbGF0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTFkWrDqW5layB2ZXrDqXJsxZFwdWx0IGjDoXR0w6lycHJvZ3JhbWrDoWhvei4gQSDigJ5MaW1pdOKAnSBheiBhbGFww6lydGVsbWV6ZXR0ZW4gbWVnamVsZW7DrXRldHQgYmVqZWd5esOpc2VrIHN6w6FtYS4gQSDigJ5Hcm91cOKAnSBoYXN6bsOhbGhhdMOzIGEgaG96esOhZsOpcsOpcyBrb3Jsw6F0b3rDoXPDoWhveiBhIGLFkXbDrXRtw6lueXJlIChww6lsZMOhdWwgR3JvdXA6IGFkbWluO2Nzb3BvcnQxO2Nzb3BvcnQyOykuIEEg4oCeRGVmYXVsdOKAnSBhenQgaGF0w6Fyb3p6YSBtZWcsIGhvZ3kgYSBixZF2w610bcOpbnkgYWxhcMOpcnRlbG1lemV0dGVuIGVuZ2Vkw6lseWV6dmUgdmFuLCB2YWd5IGhvZ3kgYSBmZWxoYXN6bsOhbMOzbmFrIGvDqXp6ZWwga2VsbCBlbmdlZMOpbHllem5pZSBhenQuIEEg4oCeQ2FjaGVUVExMb2NhbOKAnSBhIGLFkXbDrXRtw6lueSBneW9yc8OtdMOzdMOhciBpZGVqZSBwZXJjYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2sgc3rDrW5laWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90b2tob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMOhbHRhbMOhbm9zIGthdGFsw7NndXMgYXR0cmliw7p0dW1haW5hayBww6lsZGEgam9nb3N1bHRzw6FnIGNzb3BvcnRqYWlob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBheiBvbGRhbGFraG96IChhbWVseWVrZW4gYSBrb25maWd1csOhY2nDs2VsZW1layBtZWdqZWxlbm5laykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdKb2dvc3VsdHPDoWdpIGNzb3BvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0ga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzaSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBob3p6w6FhZMOhc2Ega8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0gc3plcmtlc3p0w6lzZSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVrIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0gbnlvbXRhdMOhc2Ega8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIHTDtnJsw6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsga2VyZXPDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICdLaXbDoWxhc3p0amEgYSBrb25maWd1csOhY2nDs2VsZW0gc3rDoW1lbMWRw6FsbMOtdMOzIG1vZHVsasOhdC4gQXog4oCeQXV0b0luY3JlbWVudOKAnSBuw7Z2ZWxpIGEga29uZmlndXLDoWNpw7NlbGVtIHN6w6Ftw6F0LCBhIGhhc3puw6FsdCBTeXN0ZW1JRCwgQ29uZmlnSXRlbUNsYXNzSUQgw6lzIHN6w6FtbMOhbMOzIMOpcnTDqWvDqXQuIEEgZm9ybcOhdHVtOiDigJ5TeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVy4oCdLCBww6lsZMOhdWw6IDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdFZ3kga29uZmlndXLDoWNpw7NlbGVtIGluY2lkZW5zw6FsbGFwb3TDoW5hayBhdXRvbWF0aWt1cyBiZcOhbGzDrXTDoXNhLCBhbWlrb3IgZWd5IGplZ3lldCBrYXBjc29sbmFrIGVneSBrb25maWd1csOhY2nDs2VsZW1oZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYXogw7x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdG90IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG3FsXZlbGV0IGvDqXBlcm55xZFqw6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZcOhbGzDrXRqYSBheiBpbmNpZGVuc8OhbGxhcG90b3QgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQga8OpcGVybnnFkWrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiwgYW1lbHkgbGVoZXTFkXbDqSB0ZXN6aSBlZ3kga29uZmlndXLDoWNpw7NlbGVtIMO2c3N6ZWthcGNzb2zDoXPDoXQgZWd5IG3DoXNpayBvYmpla3R1bW1hbCBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaW5layBlbMOpcsOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIMOhdHRla2ludMWRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpbmVrIGVsw6lyw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIHTDtnJsw6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGtldHTFkXrDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTFkWrDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGtldHTFkXrDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBzemVya2VzenTDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gbmFnecOtdMOhc2kgbsOpemV0aGV6IHZhbMOzIHZpc3N6YXTDqXLDqXNoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIG55b210YXTDoXPDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW1iZSB0w7ZydMOpbsWRIG5hZ3nDrXTDoXNob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdqZWxlbsOtdGkgYSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpdCAoZm9yZMOtdG90dCBzb3JyZW5kYmVuKSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdFZ3kga29uZmlndXLDoWNpw7NlbGVtIGF6b25vc8OtdMOzamEsIHDDqWxkw6F1bDogQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIEF6IGFsYXDDqXJ0ZWxtZXpldHQ6IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdvc3p0w6FseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iw6FsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdiZcO8emVtZWzDqXMgdXTDoW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ2Jlw7x6ZW1lbMOpcyBlbMWRdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ2Jlw7x6ZW1lbHZlJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/id_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aWRfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ3ViYWggZGVmaW5pc2kga2VsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1BlbmdlbG9sYWFuIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbid9ID0gJ0RlZmluaXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSd9ID0gJ1ViYWgnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnS29uZGlzaSBpbnNpZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0dXMgcGVueWViYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ0tlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcGUgc3RhdHVzIHBlbnllYmFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0tvbmRpc2kgaW5zaWRlbiBzYWF0IGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBlIFN0YXR1cyBpbnNpZGVuIHNhYXQgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1RlcmFraGlyIGRpdWJhaCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQWRkLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICdTYXJpbmdhbiB1bnR1ayBrZWxhcy1rZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdQaWxpaCBzYXR1IGtlbGFzIGRhcmkgZGF0YXIgdW50dWsgbWVtYnVhdCBzZWJ1YWggaXRlbSBrb25maWd1cmFzaSBiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnSXRlbSBrb25maWd1cmFzaSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnVGluZGFrYW4gbWFzYWwgSXRlbUtvbmZpZ3VyYXNpIElUU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1N0YXR1cyBwZW55ZWJhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhdHVzIGluc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnVGF1dGFuIHVudHVrIGtlIGxhaW5ueWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ05vbW9yIGl0ZW0ga29uZmlndXJhc2kgdGlkYWsgc2FoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0p1bWxhaCBpdGVtIGtvbmZpZ3VyYXNpIGxhaW5ueWEgeWFuZyBha2FuIGRpIGh1YnVuZ2thbic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYW1hIGluaSB0ZWxhaCBkaSBndW5ha2FuIG9sZWggSXRlbUtvbmZpZ3VyYXNpIGRlbmdhbiBub21vcihub21vci1ub21vcikgYmVyaWt1dDogJXMnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0lzaSBzZWphcmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdCdWF0V2FrdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUGFuZGFuZ2FuIGRla2F0JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ1NldHRpbmcgS29udGVrcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVtIGtvbmZpZ3VyYXNpIHBlciBoYWxhbWFuJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnQ2FyaSBkaSB2ZXJzaSBzZWJlbHVtbnlhIGp1Z2EgPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnSXRlbSBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2kgaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0dXMgcGVueWViYXJhYW4gc2FhdCBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVGVyYWtoaXIgZGlydWJhaCBvbGVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICdUdW5qdWthbiBzYXR1IHZlcnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnVHVuanVrYW4gc2VtdWEgdmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ1ZlcnNpIHN0YXR1cyBpbnNpZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ZlcnNpIHN0YXR1cyBwZW55ZWJhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTm9tb3IgdmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJ1JpbmNpYW4gdmVyc2kgaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJ01pbGlrJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdJdGVtS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnVGlkYWsgYWRhIGhhc2lsISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3VyYXNpIHBlbmNhcmlhbiBuaWxhaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXR1cyBwZW55ZWJhcmFuIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdHVzIGluc2lkZW4gaXRlbSBrb25maWd1cmFzaSBpbmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRGlhbnRhcmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnSnVtbGFoIG1ha3NpbXVtIGRhcmkgMSBlbGVtZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnQmlkYW5nIGtvc29uZyBtZW5naW5kaWthc2lrYW4gYmFod2EgbmlsYWkgc2FhdCBpbmkgZGlzaW1wYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ0RpbGV3YXRpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICdOb21vciBzZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICdSYW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnSGFyZCBEaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnS2FwYXNpdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnQWRhcHRlciBKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCBsZWJpaCBkYXJpIERIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJ0FsYW1hdCBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICdBZGFwdGVyIGdyYWZpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICdQZXJhbGF0YW4gbGFpbm55YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICdUYW5nZ2FsIGthZGFsdWFyc2EgZ2FyYW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICdUYW5nZ2FsIGluc3RhbGFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnVGVsZXBvbiAxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICdUZWxlcG9uIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJ0FsYW1hdCBKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ1N1Ym5ldCBNYXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICdHYXRld2F5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ1RpcGUgTGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJ0t1bmNpIGxpc2Vuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICdLdWFudGl0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnVGFuZ2dhbCBLYWRhbHVhcnNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnTWVkaWEnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdUZWxhaCBrYWRhbHVhcnNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnUGVtZWxpaGFyYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1RlbGFoIGRpcmVuY2FuYWthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1BlcmJhaWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaXVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1VsYXNhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVWppL1FBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRGVza3RvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICdQREEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnTGFpbi1sYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICdNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICdQZW5jZXRhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICdUdWthcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICdSb3V0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdUaXRpayBha3NlcyBXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJ1BlcmFuZ2thdCBrZWFtYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnUGVyYW5na2F0IEJhY2t1cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2V5Ym9hcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnS2FtZXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ0JlYW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ01vZGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnS2FydHUgUENNQ0lBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICdQZXJhbmdrYXQgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ1N0YXNpdW4gZG9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICdQZW1pbmRhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ01lbWJhbmd1bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdLYW50b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICdMYW50YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1J1YW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJ1Jhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICdUZW1wYXQga2VyamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnT3V0bGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnRmFzaWxpdGFzIElUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJ1RlbGNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJ0dTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICdBcGxpa2FzaSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ01pZGRsZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnQXBsaWthc2kgc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJ09TIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdPUyBTZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ1BlcmFsYXRhbiBBZG1pbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICdQZXJhbGF0YW4gcGVuZ2d1bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICdUZXJ0YW5hbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ0xpc2Vuc2kgdHVuZ2dhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ1BlciBQZW5nZ3VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnUGVyIFByb3Nlc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICdQZXIgc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnUGVyIE5vZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICdMaXNlbnNpIEppbGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJ0xpc2Vuc2kgcGVydXNhaGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ0xpc2Vuc2kgcGVuZ2VtYmFuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnRGVtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICdEaWJhdGFzaSB3YWt0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnU3VtYmVyIFRlcmJ1a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAnVGlkYWsgdGVyYmF0YXMnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUGVyaWtzYSBoYW55YSBuYW1hIHVuaWsgc2FqYSBkaSBkYWxhbSBrZWxhcyhcJ2tlbGFzXCcpIGl0ZW1rb25maWd1cmFzaSB5YW5nIHNhbWEgYXRhdSBzZWNhcmEgZ2xvYmFsIChcJ2dsb2JhbCksIHlhbmcgYmVyYXJ0aSBzZXRpYXAgSXRlbUtvbmZpZ3VyYXNpIHlhbmcgYWRhIGFrYW4gZGlwZXJoaXR1bmdrYW4ga2V0aWthIG1lbmNhcmkgZHVwbGlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgcGVyaXN0aXdhIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBtZW5nYWt0aWZrYW4gbG9nZ2luZyBrZSByaXdheWF0IHBhZGEgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQmF0YXMgaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3V0ZXIgcGVuY2FyaWFuIGJhY2tlbmQgaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdCdWF0IGRhbiBhdHVyIGRlZmluaXNpIC0gZGVmaW5pc2kgdW50dWsgaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBpemluIHlhbmcgZGkgYnV0dWhrYW4gdW50dWsgbWVuY2lwdGFrYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRlbmdhbiBtZW5nZ3VuYWthbiBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gaXppbiB5YW5nIGRpIGJ1dHVoa2FuIHVudHVrIG1lbmRhcGF0a2FuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkZW5nYW4gbWVuZ2d1bmFrYW4gYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBpemluIHlhbmcgZGkgYnV0dWhrYW4gdW50dWsgbWVuY2FyaSBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGVuZ2FuIG1lbmdndW5ha2FuIGFudGFybXVrYSB1bXVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gaXppbiB5YW5nIGRpIGJ1dHVoa2FuIHVudHVrIG1lbXBlcmJhcnVpIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkZW5nYW4gbWVuZ2d1bmFrYW4gYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIG1vZHVsIGdhbWJhcmFuIHVudHVrIG1lbnVuanVrYW4gdGFtcGlsYW4ga2VjaWwgZGFyaSBzZWJ1YWggZGFmdGFyIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGVrc3ByZXNpIHJlZ3VsYXIgc2VjYXJhIGluZGl2aWR1YWwgdW50dWsgc2V0aWFwIGtlbGFzIEl0ZW1Lb25maWd1cmFzaSB1bnR1ayBtZW1lcmlrc2EgbmFtYSBJdGVtS29uZmlndXJhc2kgdW50dWsgbWVudW5qdWthbiBwZXNhbiBlcnJvciB5YW5nIHNlc3VhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBzdWJvYmplayBkZWZhdWx0IGRhcmkga2VsYXMgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBqdW1sYWggYmFyaXMgdW50dWsgcGVuZ3ViYWggZGVmaW5pc2lDSSBwYWRhIGFudGFybXVrYSBBZG1pbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBiYXRhcyBwZW5jYXJpYW4gdW50dWsgbGF5YXIgQWdlbnRJVFNNQ29uZmlnSXRlbSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBiYXRhcyBwZW5jYXJpYW4gdW50dWsgTGF5YXIgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4ga29sb20geWFuZyBkaSB0dW5qdWthbiBwYWRhIGdhbWJhcmFuIGl0ZW0ga29uZmlndXJhc2kuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXBlbmdhcnVoaSBwb3Npc2kga29sb20uIENhdGF0YW46IGtvbG9tIGtlbGFzIHNlbGFsdSB0ZXJzZWRpYSBqaWthIHNhcmluZ2FuIFwnU2VtdWFcJyBkaXBpbGloLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBrb2xvbSB5YW5nIGRpdHVuanVrYW4gZGlkYWxhbSBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaS4gUGlsaWhhbiBpbmkgdGlkYWsgbWVtcGVuZ2FydWhpIHBvc2lzaSBrb2xvbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBrb2xvbSB5YW5nIGRpdHVuanVrYW4gb2xlaCBDSSBkaSBkYWxhbSBnYW1iYXJhbiBpdGVtIGtvbmZpZ3VyYXNpIHRlcmdhbnR1bmcgcGFkYSBrZWxhcyBDSS4gU2V0aWFwIGVudHJpIGhhcnVzIGRpYXdhbGkgZGVuZ2FuIG5hbWEga2VsYXMgZGFuIGR1YSB0YW5kYSB0aXRpayBkdWEgKGNvbnRvaG55YSBrb21wdXRlcjo6KS4gQWRhIGJlYmVyYXBhIENJLUF0cmlidXQgeWFuZyB1bXVtIHBhZGEgc2VtdWEgQ0kgKENvbnRvaCB1bnR1ayBrZWxhcyBLb21wdXRlcjogS29tcHV0ZXI6Ok5hbWEsIEtvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIEtvbXB1dGVyOjpXYWt0dXBlbWJ1YXRhbikuIFVudHVrIG1lbnVuanVrYW4gQ0ktQXRyaWJ1dCBzZWNhcmEgaW5kaXZpZHVhbCBzZXBlcnRpIHlhbmcgZGlkZWZpbmlzaWthbiBkaSBkYWxhbSBDSS1EZWZpbmlzaSwgU2tlbWEgYmVyaWt1dCBpbmkgaGFydXMgZGkgZ3VuYWthbiAoQ29udG9oIHVudHVrIGtlbGFzIEtvbXB1dGVyKTogS29tcHV0ZXI6OkhhcmREaXNrOjoxLCBrb21wdXRlcjo6SGFyZERpc2s6OjE6OmthcGFzaXRhczo6MSwga29tcHV0ZXI6OkhhcmREaXNrOjoyLCBLb21wdXRlcjo6SGFyZERpc2s6OjI6OkthcGFzaXRhczo6MS4gSmlrYSB0aWRhayBhZGEgZW50cmkgdW50dWsgc2VidWFoIGtlbGFzIENJLCBNYWthIGtvbG9tIGRlZmF1bHQgeWFuZyBha2FuIGRpdHVuanVrYW4gc2VzdWFpIGRlbmdhbiB5YW5nIGRpIHRlbnR1a2FuIHBhZGEgcGVuZ2F0dXJhbklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4ga29sb20geWFuZyBkaXRhbXBpbGthbiBkYXJpIENJIGRhbGFtIHBlbmNhcmlhbiBjb25maWcgYmFyYW5nIHRlcmdhbnR1bmcgcGFkYSBrZWxhcyBDSS4gU2V0aWFwIGVudHJpIGhhcnVzIGRpYXdhbGkgZGVuZ2FuIG5hbWEga2VsYXMgZGFuIHRpdGlrIGR1YSBnYW5kYSAoaS5lLiBDb21wdXRlcjo6KS4gQWRhIGJlYmVyYXBhIENJLUF0cmlidXQgeWFuZyB1bXVtIHVudHVrIHNlbXVhIENJIChDb250b2ggdW50dWsgS29tcHV0ZXIga2VsYXM6IEtvbXB1dGVyIDo6IE5hbWEsIEtvbXB1dGVyIDo6IEN1ckRlcGxTdGF0ZSwgS29tcHV0ZXIgOjogQ3JlYXRlVGltZSkuIFVudHVrIG1lbnVuanVra2FuIGluZGl2aWR1IENJLUF0cmlidXQgc2ViYWdhaW1hbmEgZGlkZWZpbmlzaWthbiBkYWxhbSBDSS1EZWZpbml0aW9uLCBza2VtYSBiZXJpa3V0IGhhcnVzIGRpZ3VuYWthbiAobWlzYWxueWEgdW50dWsgS29tcHV0ZXIga2VsYXMpOiAgQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEppa2EgdGlkYWsgYWRhIGVudHJpIHVudHVrIGtlbGFzIENJLCBtYWthIGtvbG9tIHN0YW5kYXIgZGl0YW1waWxrYW4gc2ViYWdhaW1hbmEgZGlkZWZpbmlzaWthbiBkYWxhbSBwZW5nYXR1cmFuIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBrb2xvbSB5YW5nIGRpdGFtcGlsa2FuIGRhcmkgQ0kgZGkgbGluayB0YWJlbCB0YW1waWxhbiB5YW5nIGtvbXBsZWtzLCB0ZXJnYW50dW5nIHBhZGEga2VsYXMgQ0kuIFNldGlhcCBlbnRyaSBoYXJ1cyBkaWF3YWxpIGRlbmdhbiBuYW1hIGtlbGFzIGRhbiB0aXRpayBkdWEgZ2FuZGEgKGkuZS4gQ29tcHV0ZXI6OikuIEFkYSBiZWJlcmFwYSBDSS1BdHJpYnV0IHlhbmcgdW11bSB1bnR1ayBzZW11YSBDSSAoQ29udG9oIHVudHVrIEtvbXB1dGVyIGtlbGFzOiBLb21wdXRlciA6OiBOYW1hLCBLb21wdXRlciA6OiBDdXJEZXBsU3RhdGUsIEtvbXB1dGVyIDo6IENyZWF0ZVRpbWUpLiBVbnR1ayBtZW51bmp1a2thbiBpbmRpdmlkdSBDSS1BdHJpYnV0IHNlYmFnYWltYW5hIGRpZGVmaW5pc2lrYW4gZGFsYW0gQ0ktRGVmaW5pdGlvbiwgc2tlbWEgYmVyaWt1dCBoYXJ1cyBkaWd1bmFrYW4gKG1pc2FsbnlhIHVudHVrIEtvbXB1dGVyIGtlbGFzKTogIENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBKaWthIHRpZGFrIGFkYSBlbnRyaSB1bnR1ayBrZWxhcyBDSSwgbWFrYSBrb2xvbSBzdGFuZGFyIGRpdGFtcGlsa2FuIHNlYmFnYWltYW5hIGRpZGVmaW5pc2lrYW4gZGFsYW0gcGVuZ2F0dXJhbiBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdNZW11bmdraW5rYW4gZml0dXIgaXRlbSBrb25maWd1cmFzaSB0aW5kYWthbiBtYXNzYWwgdW50dWsgYWdlbiBmcm9udGVuZCB1bnR1ayBiZWtlcmphIHBhZGEgbGViaWggZGFyaSBzYXR1IGl0ZW0ga29uZmlndXJhc2kgcGFkYSBzdWF0dSB3YWt0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBmaXR1ciB0aW5kYWthbiBtYXNzYWwgaXRlbSBrb25maWd1cmFzaSBoYW55YSB1bnR1ayBrZWxvbXBvayB0ZXJkYWZ0YXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ01lbmdha3RpZmthbiAvIG1lbm9uYWt0aWZrYW4gZnVuZ3NpIHVudHVrIG1lbWVyaWtzYSBDb25maWdJdGVtcyB1bnR1ayBuYW1hIHlhbmcgdW5pay4gU2ViZWx1bSBtZW5nYWt0aWZrYW4gb3BzaSBpbmkgQW5kYSBoYXJ1cyBtZW1lcmlrc2Egc2lzdGVtIGFuZGEgdW50dWsgcHJvZHVrLWNvbmZpZyB5YW5nIHN1ZGFoIGFkYSBkZW5nYW4gbmFtYSBkdXBsaWthdC4gQW5kYSBkYXBhdCBtZWxha3VrYW4gaW5pIGRlbmdhbiBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIHVudHVrIG1lbWVyaWtzYSBrZWxvbXBvayB5YW5nIGJlcnRhbmdndW5nIGphd2FiIHVudHVrIGtlbGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHVudHVrIG1lbWVyaWtzYSBrZWxvbXBvayB5YW5nIGJlcnRhbmdndW5nIGphd2FiIHVudHVrIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgdW50dWsgbWVuZ2hhc2lsa2FuIHN0YXRpc3RpayBjb25maWcgYmFyYW5nIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICdPYmplayBiYWNrZW5kIHBlbmRhZnRhcmFuIG1vZHVsIHVudHVrIG1vZHVsIGltcG9yIC8gZWtzcG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIHdhcm5hIHN0YXRlIHBlbnllYmFyYW4gZGFsYW0gcHJlZmVyZW5zaSBtZWxpaGF0IGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBzdGF0ZSBwZW55ZWJhcmFuIGRhbGFtIHByZWZlcmVuc2kgbWVsaWhhdCBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGdydXAgY29ub3RoIHBlcml6aW5hbiBkYXJpIGF0cmlidXQga2F0YWxvZyB1bXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBoYWxhbWFuIChkaSBtYW5hIGl0ZW0ga29uZmlndXJhc2kgYWthbiBkaXRhbXBpbGthbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2l6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIGxheWFyIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBrb25maWd1cmFzaSBJVFNNIGxheWFyIHBlbmNhcmlhbiBpdGVtIGRhbGFtIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBrb25maWd1cmFzaSBJVFNNIGl0ZW0gbGF5YXIgem9vbSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nZ3VuYWthbiBhZGQgSVRTTSBsYXlhciBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2l6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdndW5ha2FuIG1lbmdlZGl0IElUU00gbGF5YXIgaXRlbSBrb25maWd1cmFzaSBkYWxhbSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnaXppbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2VqYXJhaCBJVFNNIGxheWFyIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJemluIFlhbmcgZGlwZXJsdWthbiB1bnR1ayByZXZpZXcgdXNpbmcgU2VqYXJhaCBJVFNNIExheWFyIEl0ZW0gS29uZmlndXJhc2kgQW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnTWVtaWxpaCBpdGVtIGtvbmZpZ3VyYXNpIG1vZHVsIGdlbmVyYXRvciBub21vci4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudCBub21vciBpdGVtIGtvbmZpZ3VyYXNpLCBTeXN0ZW1JRCwgeWFuZyBDb25maWdJdGVtQ2xhc3NJRCBkYW4gbWVqYSB5YW5nIGRpZ3VuYWthbi4gRm9ybWF0bnlhIGFkYWxhaCAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIG1pc2FsbnlhIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdHVyIHN0YXR1cyBwZW55ZWJhcmFuIGRpIGl0ZW0ga29uZmlndXJhc2kgbGF5YXIgdGVyYmVzYXIgZGFyaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXR1ciBzdGF0dXMga2VqYWRpYW4gcGFkYSBpdGVtIGtvbmZpZ3VyYXNpIGxheWFyIHRlcmJlc2FyIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHlhbmcgbWVtdW5na2lua2FuIG1lbmdodWJ1bmdrYW4gaXRlbSBrb25maWd1cmFzaSBkZW5nYW4gb2JqZWsgbGFpbiBkaSBjb25maWcgYmFyYW5nIHBhbmRhbmdhbiB6b29tIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHVudHVrIG1lbmdha3NlcyBzZWphcmFoIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBpdGVtIGtvbmZpZ3VyYXNpIGdhbWJhcmFuIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gbGluayBkYWxhbSBtZW51IHVudHVrIG1lbmR1cGxpa2FzaSBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgaXRlbSBrb25maWd1cmFzaSBnYW1iYXJhbiBkYXJpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBsaW5rIGRhbGFtIG1lbnUgdW50dWsgbWVuZHVwbGlrYXNpIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gem9vbS1ueWEgZGFyaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5nZWRpdCBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGxpbmsgZGFsYW0gbWVudSB1bnR1ayBtZW5jZXRhayBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHpvb20tbnlhIGRhcmkgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBzZWphcmFoIGNvbmZpZyBpdGVtICh1cnV0YW4gdGVyYmFsaWspIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnUGVuZ2VuYWwgdW50dWsgaXRlbSBrb25maWd1cmFzaSwgbWlzYWxueWEgQ29uZmlnSXRlbSAjLCBNeUNvbmZpZyBJdGVtICMuIGRlZmF1bHQgYWRhbGFoIENvbmZpZ0l0ZW0gIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/it_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aXRfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ01vZGlmaWNhIGxhIGRlZmluaXppb25lIGRlbGxhIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdGlvbmUgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdDb25maWcgSXRlbSBDbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAnRGVmaW5pemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnTW9kaWZpY2EnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnU3RhdG8gZGVsbFwnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0byBkaSBpbXBsZW1lbnRhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdDbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBkaSBzdGF0byBkaSBkaXN0cmlidXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF0byBhdHR1YWxlIGRlbGxcJ0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRpIHN0YXRvIGRlbGxcJ2luY2lkZW50ZSBjb3JyZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdVbHRpbWEgbW9kaWZpY2EnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBlciBjbGFzc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnU2VsZXppb25hcmUgdW5hIGNsYXNzZSBkYWxsXCdlbGVuY28gcGVyIGNyZWFyZSB1biBudW92byBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdFbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnQXppb25lIGluIGJsb2NjbyBkaSBJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ1N0YXRvIGRpIGRpc3RyaWJ1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdTdGF0byBkZWxsXCdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnQ29sbGVnYSBhIHVuIGFsdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOdW1lcm8gYXJ0aWNvbG8gZGkgY29uZmlndXJhemlvbmUgbm9uIHZhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnSWwgbnVtZXJvIGRpIHVuIGFsdHJvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGNvbiBjdWkgY29sbGVnYXJzaS4nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnVnVvaSBkYXZ2ZXJvIGVsaW1pbmFyZSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmU/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSWwgbm9tZSBkaSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ0lsIG5vbWUgw6ggZ2nDoCBpbiB1c28gZGEgQ29uZmlnSXRlbXMgY29uIGkgc2VndWVudGUvaSBudW1lcihvKWk6ICVzJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ1N0b3JpYSBkZWxsYSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZW51dG8gZGVsbG8gc3Rvcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSXN0YW50ZSBkaSBjcmVhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzdGEgZGkgRGV0dGFnbGlvJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0ltcG9zdGF6aW9uaSBkaSBjb250ZXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcuIGFydGljb2xpIHBlciBwYWdpbmEnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJ1VuYSB0YWJlbGxhIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gZ2VuZXJpY2EnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnQ2VyY2FyZSBhbmNoZSBpbiB2ZXJzaW9uaSBwcmVjZWRlbnRpPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXppb25pIHN1bGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXRvIGF0dHVhbGUgZGkgaW1wbGVtZW50YXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1VsdGltYSBtb2RpZmljYSBlZmZldHR1YXRhIGRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICdNb3N0cmEgdW5hIHZlcnNpb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnTW9zdHJhIHR1dHRlIGxlIHZlcnNpb25pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF0byBpbmNpZGVudGUgdmVyc2lvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhdG8gZGkgZGlzdHJpYnV6aW9uZSBkZWxsYSB2ZXJzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ051bWVybyBkaSB2ZXJzaW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAnRGV0dGFnbGkgZGVsbGEgdmVyc2lvbmUgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICdQcm9wcmlldMOgJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnTm9uIMOoIGNvbmNlc3NvIGxcJ2FjY2Vzc28gYWxsYSBjbGFzc2UhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vbiB2aWVuZSBmb3JuaXRvIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfDiCBuZWNlc3NhcmlvIGFsbWVubyB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBzZWxlemlvbmF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdOb24gaGFpIGFjY2Vzc28gaW4gc2NyaXR0dXJhIGEgcXVlc3RvIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lOiAlcy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ1ZvY2UgZGkgY29uZmlndXJhemlvbmUgIiVzIiBub24gdHJvdmF0YSBuZWwgZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnSW1wb3NzaWJpbGUgZWxpbWluYXJlIGxcJ0lEIGRpIGNvbmZpZ3VyYXppb25lICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmVzc3VuYSB2ZXJzaW9uZSB0cm92YXRhIHBlciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vbiB2aWVuZSBmb3JuaXRvIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgbyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmVzc3VuIGFjY2Vzc28gw6ggY29uY2Vzc28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05lc3N1bmEgZGVmaW5pemlvbmUgw6ggc3RhdGEgZGVmaW5pdGEgcGVyIGxhIGNsYXNzZSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJpbGUgbW9zdHJhcmUgbGEgY3Jvbm9sb2dpYSwgbm9uIHZpZW5lIGZvcm5pdG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxhIGNyb25vbG9naWEsIG5lc3N1biBkaXJpdHRvIGRpIGFjY2Vzc28gY29uY2Vzc28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOdW92byBDb25maWdJdGVtIChJRCA9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdW92YSB2ZXJzaW9uZSAoSUQgPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXRvIGRpIGRpc3RyaWJ1emlvbmUgYWdnaW9ybmF0byAobnVvdm89JXMsIHZlY2NoaW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXRvIGRlbGxcJ2luY2lkZW50ZSBhZ2dpb3JuYXRvIChudW92bz0lcywgdmVjY2hpbz0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGVsaW1pbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdDb2xsZWdhbWVudG8gYSAlcyAodGlwbz0lcykgYWdnaXVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0NvbGxlZ2FtZW50byBhICVzICh0aXBvPSVzKSBlbGltaW5hdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluaXppb25lIGRpIENvbmZpZ0l0ZW0gYWdnaW9ybmF0YSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tZSBhZ2dpb3JuYXRvIChudW92bz0lcywgdmVjY2hpbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHRyaWJ1dG8gJXMgYWdnaW9ybmF0byBkYSAiJXMiIGEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaW9uZSAlcyBlbGltaW5hdGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQgbyBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLCBuZXNzdW4gZGlyaXR0byBkaSBhY2Nlc3NvIGNvbmNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBub24gdHJvdmF0byBuZWwgZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnVmVyc2lvbklEICVzIG5vbiB0cm92YXRvIG5lbCBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3N0YW1wYXRvIGRhICVzIGEgJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdDbGFzc0lEIG5vbiB2YWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVzc3VuIENsYXNzSUQgw6ggZGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOZXNzdW4gZGlyaXR0byBkaSBhY2Nlc3NvIHBlciBxdWVzdGEgY2xhc3NlIGRhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZXNzdW4gcmlzdWx0YXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0NvbmZpZ3VyYSBpIHJpc3VsdGF0aSBkZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdJbXBvc3NpYmlsZSBtb3N0cmFyZSBsXCdlbGVtZW50bywgbm9uIHZpZW5lIGNvbmNlc3NvIGFsY3VuIGRpcml0dG8gZGkgYWNjZXNzbyBwZXIgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2dmVydGltZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTG8gc3RhdG8gZGkgaW1wbGVtZW50YXppb25lIGRpIHF1ZXN0byBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xvIHN0YXRvIGRpIGluY2lkZW50ZSBkaSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBtb3N0cmF0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdmcmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTnVtZXJvIG1hc3NpbW8gZGkgdW4gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnSSBjYW1waSB2dW90aSBpbmRpY2FubyBjaGUgaSB2YWxvcmkgY29ycmVudGkgc29ubyBtYW50ZW51dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ1NhbHRhdG8nOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJ1NvY2lldMOgIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ051bWVybyBzZXJpYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICdSYW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnRGlzY28gZmlzc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICdDYXBhY2l0w6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICdTY2hlZGEgZGkgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCBzdSBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdJbmRpcml6em8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnU2NoZWRhIGdyYWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnQWx0cmkgYXBwYXJhdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnRGF0YSBkaSBzY2FkZW56YSBkZWxsYSBnYXJhbnppYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICdEYXRhIGRpIGluc3RhbGxhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ1RlbGVmb25vIDEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJ1RlbGVmb25vIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnRS1NYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJ0luZGlyaXp6byBkaSByZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnTWFzY2hlcmEgZGkgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnR2F0ZXdheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICdUaXBvIGRpIGxpY2VuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdDaGlhdmUgZGkgbGljZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ1F1YW50aXTDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICdEYXRhIGRpIHNjYWRlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnU3VwcG9ydG8nOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJ0NvbXB1dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnU2NhZHV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnV0ZW56aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQaWFuaWZpY2F0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JpcGFyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdSaXRpcmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpc2lvbmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdQb3J0YXRpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUGFsbWFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICdTZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBbHRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnU3RhbXBhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJ1N3aXRjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICdSb3V0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdXTEFOIEFjY2VzcyBQb2ludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICdEaXNwb3NpdGl2byBkaSBzaWN1cmV6emEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJ0Rpc3Bvc2l0aXZvIGRpIGNvcGlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYXN0aWVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdWaWRlb2NhbWVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICdCZWFtZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICdNb2RlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJ1NjaGVkYSBQQ01DSUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ0Rpc3Bvc2l0aXZvIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICdEb2NraW5nIFN0YXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ1NjYW5uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdFZGlmaWNpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdVZmZpY2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnUGlhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1N0YW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnQXJtYWRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICdQb3N0byBkaSBsYXZvcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnUHJlc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICdTdHJ1bWVudG8gSVQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICdXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVGVsY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ0FwcGxpY2F6aW9uZSBjbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ01pZGRsZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnQXBwbGljYXppb25lIHNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICdTTyBDbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJ1NPIHNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnU3RydW1lbnRpIGRpIGFtbWluaXN0cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICdTdHJ1bWVudGkgdXRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnSW50ZWdyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnTGljZW56YSBzaW5nb2xhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnUGVyIHV0ZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnUGVyIHByb2Nlc3NvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ1BlciBzZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICdQZXIgbm9kbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ0xpY2VuemEgcGVyIHZvbHVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICdMaWNlbnphIGF6aWVuZGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ0xpY2VuemEgZGkgc3ZpbHVwcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ0RpbW9zdHJhdGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICdMaW1pdGF0YSBuZWwgdGVtcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ09wZW4gU291cmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ0lsbGltaXRhdGEnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQ0lzIGFzc2VnbmF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0lzIGFzc2VnbmF0aSBhbGxhIHNvY2lldMOgIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNzZWduYXRpIGFsbFwndXRlbnphIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0ltcG9zdGF6aW9uaSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDZXJjYSB1biBub21lIHVuaXZvY28gc29sbyBhbGxcJ2ludGVybm8gZGVsbGEgc3Rlc3NhIGNsYXNzZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG8gZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBpbCBjaGUgc2lnbmlmaWNhIGNoZSBvZ25pIENvbmZpZ0l0ZW0gZXNpc3RlbnRlIHZpZW5lIHByZXNvIGluIGNvbnNpZGVyYXppb25lIHF1YW5kbyBzaSBjZXJjYW5vIGR1cGxpY2F0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZ2dpdW5naSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdNb2RpZmljYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsbyBldmVudGkgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgY2hlIGNvbnNlbnRlIGxhIHJlZ2lzdHJhemlvbmUgbmVsbGEgY3Jvbm9sb2dpYSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnQ29uZmlndXJhIGNyb25vbG9naWEgYXJ0aWNvbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1N0YW1wYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmEgbG8gem9vbSBkZWxsXCdvZ2dldHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnQ29uZmlnSXRlbU51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0ZSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgcGFnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhc2UgZGkgZ2VzdGlvbmUgZGVsbGEgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1bG8gZGkgbWFzc2EgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGRlbCBtb3RvcmUgZGkgcmljZXJjYSBkZWxsXCdpbnRlcmZhY2NpYSB1dGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhIGUgZ2VzdGlzY2kgbGUgZGVmaW5pemlvbmkgcGVyIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhemlvbmUgY29uIGN1aSBpbCBib3R0b25lIGRlaSBzZXR0YWdnaSDDqCBkaXNwb25pYmlsZSBpbiB1biBvZ2dldHRvIHdpZGdldCBjb2xsZWdhdG8gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTm90YXJlIGNoZSBxdWVzdGUgQWN0aW9ucyBkZXZvbm8gZXNzZXJlIHJlZ2lzdHJhdGUgbmVpIHNlZ3VlbnRpIGZpbGUgSlMgZSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaSBwZXJtZXNzaSBuZWNlc3NhcmkgcGVyIGNyZWFyZSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHV0aWxpenphbmRvIGxcJ2ludGVyZmFjY2lhIGdlbmVyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGkgcGVybWVzc2kgbmVjZXNzYXJpIHBlciBlbGltaW5hcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gdXRpbGl6emFuZG8gbFwnaW50ZXJmYWNjaWEgZ2VuZXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaSBwZXJtZXNzaSBuZWNlc3NhcmkgcGVyIG90dGVuZXJlIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHV0aWxpenphbmRvIGxcJ2ludGVyZmFjY2lhIGdlbmVyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGkgcGVybWVzc2kgbmVjZXNzYXJpIHBlciBsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gdXRpbGl6emFuZG8gbFwnaW50ZXJmYWNjaWEgZ2VuZXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaSBwZXJtZXNzaSBuZWNlc3NhcmkgcGVyIGFnZ2lvcm5hcmUgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gdXRpbGl6emFuZG8gbFwnaW50ZXJmYWNjaWEgZ2VuZXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSB1biBtb2R1bG8gZGkgcGFub3JhbWljYSBwZXIgbW9zdHJhcmUgbGEgdmlzdGEgcmlkb3R0YSBkaSB1biBlbGVuY28gZGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgZXNwcmVzc2lvbmkgcmVnb2xhcmkgc2luZ29sYXJtZW50ZSBwZXIgY2lhc2N1bmEgY2xhc3NlIENvbmZpZ0l0ZW0gcGVyIGNvbnRyb2xsYXJlIGlsIG5vbWUgQ29uZmlnSXRlbSBlIG1vc3RyYXJlIGkgbWVzc2FnZ2kgZGkgZXJyb3JlIGNvcnJpc3BvbmRlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaWwgc290dG8tb2dnZXR0byBwcmVkZWZpbml0byBkZWxsYSBjbGFzc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgaWwgbnVtZXJvIGRpIHJpZ2hlIHBlciBDSSBsXCdlZGl0b3IgZGVsbGUgZGVmaW5pemlvbmkgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgbmVsbFwnaW50ZXJmYWNjaWEgZGkgYW1taW5pc3RyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIGRlZ2xpIHN0YXRpIGRlZ2xpIGluY2lkZW50aSBkYSBhbHRvIChlcy4gY3JpdGljbykgYSBiYXNzbyAoZXMuIGZ1bnppb25hbGUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBnbGkgc3RhdGkgZGkgZGlzdHJpYnV6aW9uZSBwZXJ0aW5lbnRpIGluIGN1aSBpIHRpY2tldCBjb2xsZWdhdGkgcG9zc29ubyBpbmZsdWlyZSBzdWxsbyBzdGF0byBkaSB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzY2UgaWwgbGltaXRlIGRpIHJpY2VyY2EgcGVyIGxhIHNjaGVybWF0YSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIHZpc3VhbGl6emF0ZSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLiBRdWVzdGEgb3B6aW9uZSBub24gaGEgYWxjdW4gZWZmZXR0byBzdWxsYSBwb3NpemlvbmUgZGVsbGEgY29sb25uYS4gTm90YTogbGEgY29sb25uYSBDbGFzc2Ugw6ggc2VtcHJlIGRpc3BvbmliaWxlIHNlIMOoIHNlbGV6aW9uYXRvIGlsIGZpbHRybyAiVHV0dG8iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSB2aXN1YWxpenphdGUgbmVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4gUXVlc3RhIG9wemlvbmUgbm9uIGhhIGFsY3VuIGVmZmV0dG8gc3VsbGEgcG9zaXppb25lIGRlbGxhIGNvbG9ubmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIG1vc3RyYXRlIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIG5lbGxhIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgaW4gYmFzZSBhbGxhIGNsYXNzZSBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIHByZWNlZHV0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGR1ZSBwdW50aSAoYWQgZXNlbXBpbyBDb21wdXRlcjo6KS4gRXNpc3Rvbm8gYWxjdW5pIGF0dHJpYnV0aSBDSSBjb211bmkgYSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcjpDb21wdXRlcjo6Tm9tZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBQZXIgbW9zdHJhcmUgc2luZ29saSBhdHRyaWJ1dGkgQ0kgY29tZSBkZWZpbml0aSBuZWxsYSBkZWZpbml6aW9uZSBDSSwgw6ggbmVjZXNzYXJpbyB1dGlsaXp6YXJlIGlsIHNlZ3VlbnRlIHNjaGVtYSAoZXNlbXBpbyBwZXIgbGEgY2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXTDoDo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXTDoDo6MS4gU2Ugbm9uIMOoIHByZXNlbnRlIGFsY3VuYSB2b2NlIHBlciB1bmEgY2xhc3NlIENJLCBsZSBjb2xvbm5lIHByZWRlZmluaXRlIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGNvbWUgZGVmaW5pdG8gbmVsbFwnaW1wb3N0YXppb25lIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGNvbG9ubmUgbW9zdHJhdGUgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgbmVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBpbiBiYXNlIGFsbGEgY2xhc3NlIENJLiBPZ25pIHZvY2UgZGV2ZSBlc3NlcmUgcHJlY2VkdXRhIGRhIHVuIG5vbWUgZGkgY2xhc3NlIGUgZHVlIHB1bnRpIChhZCBlc2VtcGlvIENvbXB1dGVyOjopLiBFc2lzdG9ubyBhbGN1bmkgYXR0cmlidXRpIENJIGNvbXVuaSBhIHR1dHRpIGdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSAoZXNlbXBpbyBwZXIgbGEgY2xhc3NlIENvbXB1dGVyOkNvbXB1dGVyOjpOb21lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFBlciBtb3N0cmFyZSBzaW5nb2xpIGF0dHJpYnV0aSBDSSBjb21lIGRlZmluaXRpIG5lbGxhIGRlZmluaXppb25lIENJLCDDqCBuZWNlc3NhcmlvIHV0aWxpenphcmUgaWwgc2VndWVudGUgc2NoZW1hIChlc2VtcGlvIHBlciBsYSBjbGFzc2UgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gU2Ugbm9uIMOoIHByZXNlbnRlIGFsY3VuYSB2b2NlIHBlciB1bmEgY2xhc3NlIENJLCBsZSBjb2xvbm5lIHByZWRlZmluaXRlIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGNvbWUgZGVmaW5pdG8gbmVsbFwnaW1wb3N0YXppb25lIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGNvbG9ubmUgdmlzdWFsaXp6YXRlIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIG5lbCB3aWRnZXQgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgaW4gYmFzZSBhbGxhIGNsYXNzZSBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIHByZWNlZHV0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGR1ZSBwdW50aSAoYWQgZXNlbXBpbyBDb21wdXRlcjo6KS4gRXNpc3Rvbm8gYWxjdW5pIGF0dHJpYnV0aSBDSSBjb211bmkgYSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5vbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gUGVyIG1vc3RyYXJlIHNpbmdvbGkgYXR0cmlidXRpIENJIGNvbWUgZGVmaW5pdGkgbmVsbGEgZGVmaW5pemlvbmUgQ0ksIMOoIG5lY2Vzc2FyaW8gdXRpbGl6emFyZSBpbCBzZWd1ZW50ZSBzY2hlbWEgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gU2Ugbm9uIMOoIHByZXNlbnRlIGFsY3VuYSB2b2NlIHBlciB1bmEgY2xhc3NlIENJLCBsZSBjb2xvbm5lIHByZWRlZmluaXRlIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGNvbWUgZGVmaW5pdG8gbmVsbFwnaW1wb3N0YXppb25lIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChjaGlhdmUgRGVmYXVsdENvbHVtbnMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIGRpIHZpc3VhbGl6emF0ZSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBkaSBDSXMgbmVsbGEgdmlzdGEgY29tcGxlc3NhIGRlbGxhIHRhYmVsbGEgZGVpIGNvbGxlZ2FtZW50aSBwZXIgdHV0dGUgbGUgY2xhc3NpIENJLiBTZSBub24gw6ggcHJlc2VudGUgYWxjdW5hIHZvY2UsIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGxlIGNvbG9ubmUgcHJlZGVmaW5pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSB2aXN1YWxpenphdGUgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgbmVsbGEgdmlzdGEgY29tcGxlc3NhIGRlbGxhIHRhYmVsbGEgZGVpIGNvbGxlZ2FtZW50aSwgYSBzZWNvbmRhIGRlbGxhIGNsYXNzZSBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIHByZWNlZHV0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGR1ZSBwdW50aSAoYWQgZXNlbXBpbyBDb21wdXRlcjo6KS4gRXNpc3Rvbm8gYWxjdW5pIGF0dHJpYnV0aSBDSSBjb211bmkgYSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5vbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gUGVyIG1vc3RyYXJlIHNpbmdvbGkgYXR0cmlidXRpIENJIGNvbWUgZGVmaW5pdGkgbmVsbGEgZGVmaW5pemlvbmUgQ0ksIMOoIG5lY2Vzc2FyaW8gdXRpbGl6emFyZSBpbCBzZWd1ZW50ZSBzY2hlbWEgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBTZSBub24gw6ggcHJlc2VudGUgYWxjdW5hIHZvY2UgcGVyIHVuYSBjbGFzc2UgQ0ksIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGxlIGNvbG9ubmUgcHJlZGVmaW5pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBxdWFsZSB0aXBvIGRpIGNvbGxlZ2FtZW50byAoZGVub21pbmF0byBkYWxsYSBwcm9zcGV0dGl2YSBkZWwgdGlja2V0KSBwdcOyIGluZmx1aXJlIHN1bGxvIHN0YXRvIGRpIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lIGNvbGxlZ2F0byBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBxdWFsZSB0aXBvIGRpIHRpY2tldCBwdcOyIGluZmx1aXJlIHN1bGxvIHN0YXRvIGRpIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lIGNvbGxlZ2F0byBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsaW1pbmEgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb2xvcmUgZGVsbG8gc3RhdG8gZGkgZGlzdHJpYnV6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGFmZmluY2jDqSBpbCBmcm9udGVuZCBkZWxsXCdhZ2VudGUgZnVuemlvbmkgc3UgcGnDuSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBhbGxhIHZvbHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHNvbG8gcGVyIGkgZ3J1cHBpIGVsZW5jYXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBYmlsaXRhIC8gZGlzYWJpbGl0YSBsYSBmdW56aW9uYWxpdMOgIHBlciBjb250cm9sbGFyZSBDb25maWdJdGVtcyBwZXIgbm9taSB1bml2b2NpLiBQcmltYSBkaSBhYmlsaXRhcmUgcXVlc3RhIG9wemlvbmUsIMOoIG5lY2Vzc2FyaW8gY29udHJvbGxhcmUgaWwgc2lzdGVtYSBwZXIgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZ2nDoCBlc2lzdGVudGkgY29uIG5vbWkgZHVwbGljYXRpLiBQdW9pIGZhcmxvIGNvbiBsbyBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsbyBldmVudG8gcGVyIGltcG9zdGFyZSBsbyBzdGF0byBkaSBjb25maWd1cmF6aW9uZSBzdSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bG8gcGVyIGNvbnRyb2xsYXJlIGlsIGdydXBwbyByZXNwb25zYWJpbGUgcGVyIHVuYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxvIHBlciB2ZXJpZmljYXJlIGlsIGdydXBwbyByZXNwb25zYWJpbGUgZGkgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxvIHBlciBnZW5lcmFyZSBsZSBzdGF0aXN0aWNoZSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnUmVnaXN0cmF6aW9uZSBkZWwgbW9kdWxvIGJhY2stZW5kIG9nZ2V0dG8gcGVyIGlsIG1vZHVsbyBkaSBpbXBvcnRhemlvbmUgLyBlc3BvcnRhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Zpc3RhIEdsb2JhbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgYmFjay1lbmQgZGVsIGRhc2hib2FyZCBkZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGFydGljb2xpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxhIHNvY2lldMOgIGNsaWVudGUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLiAiTGltaXRlIiDDqCBpbCBudW1lcm8gZGkgdm9jaSB2aXN1YWxpenphdGUgcGVyIGltcG9zdGF6aW9uZSBwcmVkZWZpbml0YS4gIkdydXBwbyIgdmllbmUgdXRpbGl6emF0byBwZXIgbGltaXRhcmUgbFwnYWNjZXNzbyBhbCBwbHVnLWluIChhZCBlcy4gR3J1cHBvOiBhZG1pbjsgZ3J1cHBvMTsgZ3J1cHBvMjspLiAiUHJlZGVmaW5pdG8iIGRldGVybWluYSBzZSBpbCBwbHVnLWluIMOoIGFiaWxpdGF0byBwZXIgaW1wb3N0YXppb25lIHByZWRlZmluaXRhIG8gc2UgbFwndXRlbnRlIGRldmUgYWJpbGl0YXJsbyBtYW51YWxtZW50ZS4gIkNhY2hlVFRMTG9jYWwiIMOoIGlsIHRlbXBvIGRpIGNhY2hlIGluIG1pbnV0aSBwZXIgaWwgcGx1Z2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0kgcGFyYW1ldHJpIHBlciBnbGkgc3RhdGkgZGkgZGlzdHJpYnV6aW9uZSBjb2xvcmFubyBuZWxsYSB2aXN0YSBkZWxsZSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgcGVyIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIG5lbGxhIHZpc3RhIGRlbGxlIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmkgcGVyIGkgZ3J1cHBpIGRpIHBlcm1lc3NpIGRpIGVzZW1waW8gZGVnbGkgYXR0cmlidXRpIGRlbCBjYXRhbG9nbyBnZW5lcmFsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsZSBwYWdpbmUgKG5lbGxlIHF1YWxpIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBzb25vIG1vc3RyYXRpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBwbyBkaSBhdXRvcml6emF6aW9uaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgem9vbSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIEFnZ2l1bmdpIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgbW9kaWZpY2EgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBkZWxsYSBjcm9ub2xvZ2lhIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgc3RhbXBhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsZWdpIHJpY2hpZXN0aSBwZXIgZWxpbWluYXJlIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDZXJjYSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnU2VsZXppb25hIGlsIG1vZHVsbyBnZW5lcmF0b3JlIGRlbCBudW1lcm8gZGkgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRhIGlsIG51bWVybyBkZWxsYSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lLCB2ZW5nb25vIHV0aWxpenphdGkgU3lzdGVtSUQsIENvbmZpZ0l0ZW1DbGFzc0lEIGUgaWwgY29udGF0b3JlLiBJbCBmb3JtYXRvIMOoICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgYWQgZXMuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdJbXBvc3RhIGF1dG9tYXRpY2FtZW50ZSBsbyBzdGF0byBkZWxsXCdpbmNpZGVudGUgZGkgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUgcXVhbmRvIHVuIHRpY2tldCDDqCBjb2xsZWdhdG8gYSB1biBlbGVtZW50byBkZWxsYSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbXBvc3RhIGxvIHN0YXRvIGRpIGRpc3RyaWJ1emlvbmUgbmVsbGEgc2NoZXJtYXRhIGRpIG1hc3NhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW1wb3N0YSBsbyBzdGF0byBkZWxsXCdpbmNpZGVudGUgbmVsbGEgc2NoZXJtYXRhIGluIGJsb2NjbyBkZWxsXCdhcnRpY29sbyBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBjaGUgY29uc2VudGUgZGkgY29sbGVnYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGNvbiB1biBhbHRybyBvZ2dldHRvIG5lbGxhIHZpc3RhIHpvb20gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGFjY2VkZXJlIGFsbGEgY3Jvbm9sb2dpYSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgYWNjZWRlcmUgYWxsYSBjcm9ub2xvZ2lhIGRpIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGVsaW1pbmFyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBzdWEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgZHVwbGljYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBkdXBsaWNhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgc3VhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgbW9kaWZpY2FyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBzdWEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciB0b3JuYXJlIGluZGlldHJvIG5lbGxhIHZpc3RhIHpvb20gZGVsbGEgdm9jZSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgc3RhbXBhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgc3VhIHZpc3RhIHpvb20gZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGluZ3JhbmRpcmUgdW5hIHZvY2UgZGkgY29uZmlndXJhemlvbmUgbmVsbGEgcGFub3JhbWljYSBkZWxsZSB2b2NpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBsYSBjcm9ub2xvZ2lhIGRlZ2xpIGFydGljb2xpIGRpIGNvbmZpZ3VyYXppb25lIChvcmRpbmUgaW52ZXJzbykgbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmljYXRvcmUgcGVyIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLCBhZCBlcy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIExcJ2ltcG9zdGF6aW9uZSBwcmVkZWZpbml0YSDDqCBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVjdGl2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHV0dGl2YSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/ja_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6amFfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+OCr+ODqeOCueWumue+qeOCkuWkieabtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn5qeL5oiQ44Ki44Kk44OG44Og566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kv44Op44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICfoqJjov7AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAn5aSJ5pu0JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOeKtuazgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAn44Kv44Op44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOBruOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn54++5Zyo44Gu44Kk44Oz44K344OH44Oz44OI44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+ePvuWcqOOBruOCpOODs+OCt+ODh+ODs+ODiOODu+OCueODhuODvOOCv+OCueOBruOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfmnIDntYLlpInmm7Tml6XmmYInOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn44Kv44Op44K544Gn44OV44Kj44Or44K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+aWsOimj+OBruani+aIkOOCouOCpOODhuODoOOCkuS9nOaIkOOBmeOCi+OBq+OBr+OAgeODquOCueODiOOBi+OCieOCr+ODqeOCueOCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ+ani+aIkOOCouOCpOODhuODoCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og5LiA5ous44Ki44Kv44K344On44OzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfjgqTjg7Pjgrfjg4fjg7Pjg4jnirbms4EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn5LuW44Go44Oq44Oz44Kv44GZ44KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7lgKTjgYzkuI3mraPjgafjgZkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ+S7luOBruani+aIkOOCouOCpOODhuODoOOBuOOBruODquODs+OCr+aVsCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfmnKzlvZPjgavjgZPjga7mp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZfjgb7jgZnjgYvvvJ8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfjgZPjga4g5qeL5oiQ44Ki44Kk44OG44OgIOOBruWQjeensCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAn44GT44Gu5ZCN56ew44Gv44GZ44Gn44GrIE51bWJlcihzKTogJXMg44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gn5L2/55So5Lit44Gn44GZ44CCJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruWxpeattDogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn5bGl5q205YaF5a65JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfkvZzmiJDml6XmmYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn44K644O844Og44O744OT44Ol44O8JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+OCs+ODs+ODhuOCreOCueODiOOBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcx44Oa44O844K45q+O44Gu6Kit5a6a6aCF55uuJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICfjgrjjgqfjg43jg6rjg4Pjgq/mp4vmiJDjgqLjgqTjg4bjg6Djga7jg4bjg7zjg5bjg6snOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn44OX44Os44OT44Ol44O85pmC44CB5Lul5YmN44Gu44OQ44O844K444On44Oz44KC5qSc57Si5a++6LGh44Go44GX44G+44GZ44GL77yfJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+ePvuWcqOOBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDntYLlpInmm7TogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJ+iqrOaYjuOCkuihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJ+OBmeOBueOBpuOBruiqrOaYjuOCkuihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAn44Kk44Oz44K344OH44Oz44OI54q25oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+ODkOODvOOCuOODp+ODs+OBruODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ+ODkOODvOOCuOODp+ODs+ODiuODs+ODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu6Kmz57SwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAn6aCF55uuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAn44Kv44Op44K544G444Gu44Ki44Kv44K744K55qip44Gv44GC44KK44G+44Gb44KT77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JROOBjOaMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ+WwkeOBquOBj+OBqOOCgjHjgaTjga7pgbjmip7jgZXjgozjgZ/mp4vmiJDjgqLjgqTjg4bjg6DjgYzlv4XopoHjgafjgZnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfjgZPjga7mp4vmiJDjgqLjgqTjg4bjg6Djgbjjga7mm7jjgY3ovrzjgb/jgqLjgq/jgrvjgrnmqKnjgYzjgYLjgorjgb7jgZvjgpM6ICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AgIiVzIuOBjOODh+ODvOOCv+ODmeODvOOCueOBq+imi+OBpOOBi+OCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ+ani+aIkOOCouOCpOODhuODoElEJXPjgpLliYrpmaTjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/vvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCVz44Gu44OQ44O844K444On44Oz44GM6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JROOAgUR1cGxpY2F0ZUlE44CBQ2xhc3NJROOBr+aMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn44Ki44Kv44K744K55qip44Gv44GC44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ+OCr+ODqeOCuSVz44Gu5a6a576p44GM5a6a576p44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+WxpeattOOCkuihqOekuuOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OBjOOAgUNvbmZpZ0l0ZW1JROOBr+aMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+WxpeattOOCkuihqOekuuOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAguOCouOCr+OCu+OCueaoqeOBr+S4juOBiOOCieOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn5paw44GX44GE5qeL5oiQ44Ki44Kk44OG44OgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn5paw44GX44GE44OQ44O844K444On44Oz77yISUQgPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn44OH44OX44Ot44Kk44O744K544OG44O844K/44K544GM5pu05paw44GV44KM44G+44GX44Gf44CC77yI5paw6KaPPSVz44CB5YmNPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOeKtuaFi+OBjOabtOaWsOOBleOCjOOBvuOBl+OBn++8iOaWsOimjz0lc+OAgeWPpOOBhD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuWJiumZpCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJXPvvIjjgr/jgqTjg5c9JXPvvInjgbjjga7jg6rjg7Pjgq/jgYzov73liqDjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyVz77yI44K/44Kk44OXPSVz77yJ44G444Gu44Oq44Oz44Kv44GM5YmK6Zmk44GV44KM44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVt5a6a576p44GM5pu05paw44GV44KM44G+44GX44Gf77yISUQgPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5ZCN5YmN44GM5pu05paw44GV44KM44G+44GX44Gf77yI5paw6KaPPSVz44CB5Y+k44GEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn5bGe5oCnJXPjgYwgIiVzIuOBi+OCiSAiJXMi44Gr5pu05paw44GV44KM44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ+ODkOODvOOCuOODp+ODsyVz44GM5YmK6Zmk44GV44KM44G+44GX44GfJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlE44G+44Gf44GvVmVyc2lvbklE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuihqOekuuOBp+OBjeOBvuOBm+OCk+OAguOCouOCr+OCu+OCueaoqeOBr+OBguOCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCVz44Gv44OH44O844K/44OZ44O844K544Gr6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnVmVyc2lvbklEJXPjga/jg4fjg7zjgr/jg5njg7zjgrnjgavopovjgaTjgYvjgorjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ+ani+aIkOOCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJXPjgaclc+OBp+WNsOWIt+OBleOCjOOBvuOBl+OBnyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUTjgYznhKHlirnjgafjgZnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lE44Gv5oyH5a6a44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn44GT44Gu44Kv44Op44K544Gu44Ki44Kv44K744K55qip44Gv44GC44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfntZDmnpzjgYzjgYLjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7mpJzntKLntZDmnpwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOCkuihqOekuuOBp+OBjeOBvuOBm+OCk+OAguani+aIkOOCouOCpOODhuODoOOBruOCouOCr+OCu+OCueaoqeOBr+S4juOBiOOCieOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ+mAmuW4uOmBi+eUqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn6K2m5ZGKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn44Kk44Oz44K344OH44Oz44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfjgZPjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7jg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfjgZPjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7jgqTjg7Pjgrfjg4fjg7Pjg4jnirbmhYsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn44GT44Gu6ZaTJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ+S4gOOCqOODrOODoeODs+ODiOOBguOBn+OCiuOBruacgOWkp+aVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICfnqbrmrITjga7poIXnm67jga/nj77lnKjjga7lgKTjgYzkv53mjIHjgZXjgozjgovjgZPjgajmhI/lkbPjgZfjgb7jgZknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ+OCueOCreODg+ODl+OBleOCjOOBvuOBl+OBnyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn44Oi44OH44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICfpoaflrqLkvIHmpa0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ+OCt+ODquOCouODq+ODiuODs+ODkOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ+ODj+ODvOODieODh+OCo+OCueOCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJ+WuuemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ+ODjeODg+ODiOODr+ODvOOCr+OCouODgOODl+OCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdESENQ5pyJ5Yq5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdJUCDjgqLjg4njg6zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAn44Kw44Op44OV44Kj44OD44Kv44Ki44OA44OX44K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ+OBneOBruS7luOBruapn+WZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICfjg6/jg6njg7Pjg4bjgqPntYLkuobml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAn44Kk44Oz44K544OI44O844Or5pel5LuYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICfpm7voqbEgMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAn6Zu76KmxIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAn44Oh44O844Or44Ki44OJ44Os44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJ+ODjeODg+ODiOODr+ODvOOCr+OCouODieODrOOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ+OCteODluODjeODg+ODiOODnuOCueOCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAn44Ky44O844OI44Km44Kn44KkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ+ODqeOCpOOCu+ODs+OCueOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJ+ODqeOCpOOCu+ODs+OCueOCreODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ+aVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICfmnInlirnmnJ/pmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICfjg6Hjg4fjgqPjgqInOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJ+OCs+ODs+ODlOODpeODvOOCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ+ODj+ODvOODieOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn44ON44OD44OI44Ov44O844KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn44K944OV44OI44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfmnJ/pmZDliIfjgownOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfjg6Hjg7Pjg4bjg4rjg7PjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfjg5HjgqTjg63jg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ+ioiOeUuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+S/rueQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn5byV6YCAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+ODrOODk+ODpeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn44OG44K544OIIC8gUUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn44OO44O844OIUEMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+ODh+OCueOCr+ODiOODg+ODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICdQREEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAn44K144O844OQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn5LuWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICfjg6Ljg4vjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJ+ODl+ODquODs+OCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICfjgrnjgqTjg4Pjg4EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAn44Or44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnV0xBTiDjgqLjgq/jgrvjgrnjg53jgqTjg7Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAn44K744Kt44Ol44Oq44OG44Kj44OH44OQ44Kk44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICfjg5Djg4Pjgq/jgqLjg4Pjg5fjg7vjg4fjg5DjgqTjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfjg57jgqbjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfjgq3jg7zjg5zjg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAn44Kr44Oh44OpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ+ODl+ODreOCuOOCp+OCr+OCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ+ODouODh+ODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJ1BDTUNJQSDjgqvjg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1VTQuODh+ODkOOCpOOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICfjg4njg4Pjgq3jg7PjgrDjgrnjg4bjg7zjgrfjg6fjg7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ+OCueOCreODo+ODiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+ani+eviSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICfkuovli5nmiYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICfliIfmjajjgaYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+WupOWGhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAn44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJ+iBt+WgtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICfjgqLjgqbjg4jjg6zjg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICdJVOODleOCoeOCt+ODquODhuOCoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICdMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJ1dMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICfpm7voqbHkvJrnpL4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ+OCr+ODqeOCpOOCouODs+ODiOOCveODleODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAn44Of44OJ44Or44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJ+OCteODvOODkOOCveODleODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICfjgq/jg6njgqTjgqLjg7Pjg4hPUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICfjgrXjg7zjg5BPUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAn566h55CG44OE44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJ+ODpuODvOOCtuODu+ODhOODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ+Wfi+OCgei+vOOBv+OCquODluOCuOOCp+OCr+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ+OCt+ODs+OCsOODq+ODqeOCpOOCu+ODs+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ+ODpuODvOOCtuavjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAn44OX44Ot44K744OD44K15q+OJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICfjgrXjg7zjg5Dmr44nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICfjg47jg7zjg4nmr44nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICfjg5zjg6rjg6Xjg7zjg6Djg6njgqTjgrvjg7PjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAn44Ko44Oz44K/44O844OX44Op44Kk44K644O744Op44Kk44K744Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAn6ZaL55m66ICF44Op44Kk44K744Oz44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICfjg4fjg6InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAn5pmC6ZaT5Yi26ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn44OV44Oq44O844Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAn44Kq44O844OX44Oz44K944O844K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ+eEoeWItumZkCc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQuOBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn5ZCM44GYQ29uZmlnSXRlbeOCr+ODqeOCue+8iCBcJ2NsYXNzXCfvvInlhoXjgb7jgZ/jga/jgrDjg63jg7zjg5Djg6vvvIggXCdnbG9iYWxcJ++8ieWGheOBp+OBruOBv+S4gOaEj+OBruWQjeWJjeOCkueiuuiqjeOBl+OBvuOBmeOAguOBk+OCjOOBr+OAgemHjeikh+OCkuaknOe0ouOBmeOCi+OBqOOBjeOBq+aXouWtmOOBrkNvbmZpZ0l0ZW3jgYzjgZnjgbnjgabogIPmha7jgZXjgozjgovjgZPjgajjgpLmhI/lkbPjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn5qeL5oiQ44Ki44Kk44OG44OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5L+u5q2jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIVXZWLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7lsaXmrbTjgpLoqJjpjLLjgZnjgovmp4vmiJDjgqLjgqTjg4bjg6Djga7jgqTjg5njg7Pjg4jjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7lsaXmrbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5Y2w5Yi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu44K644O844OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Dnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5Yi26ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfjg5rjg7zjgrjjgYLjgZ/jgorjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7ooajnpLrliLbpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ+ani+aIkOeuoeeQhuODh+ODvOOCv+ODmeODvOOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5LiA5ous44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruani+aIkOOCouOCpOODhuODoOOBruaknOe0ouODkOODg+OCr+OCqOODs+ODieODq+ODvOOCv+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5L2c5oiQ44G+44Gf44Gv5aSJ5pu0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfjg6rjg7Pjgq/jgqrjg5bjgrjjgqfjgq/jg4jjgqbjgqPjgrjjgqfjg4Pjg4jvvIhMaW5rT2JqZWN0IDo6IFZpZXdNb2RlID0gImNvbXBsZXgi77yJ44Gn6Kit5a6a44Oc44K/44Oz44KS5L2/55So44Gn44GN44KL44Ki44Kv44K344On44Oz44KS5a6a576p44GX44G+44GZ44CCIOOBk+OCjOOCieOBruOCouOCr+OCt+ODp+ODs+OBr+OAgeasoeOBrkpT44GK44KI44GzQ1NT44OV44Kh44Kk44Or44KS55m76Yyy44GX44Gm44GE44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PjgIFDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz44CBQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz44CBQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanPjgIHlj4rjgbNDb3JlLkFnZW50IC5MaW5rT2JqZWN0LmpzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfjgrjjgqfjg43jg6rjg4Pjgq/jgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgpLmtLvnlKjjgZfjgabmp4vmiJDjgqLjgqTjg4bjg6DjgpLkvZzmiJDjgZnjgovmqKnpmZDjgpLlrprnvqnjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCuOOCp+ODjeODquODg+OCr+ODu+OCpOODs+OCv+ODvOODleOCp+ODvOOCueOCkua0u+eUqOOBl+OBpuani+aIkOOCouOCpOODhuODoOOCkuWJiumZpOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn44K444Kn44ON44Oq44OD44Kv44Kk44Oz44K/44O844OV44Kn44Kk44K544KS5rS755So44GX44Gm5qeL5oiQ44Ki44Kk44OG44Og44KS5Y+W5b6X44GZ44KL5qip6ZmQ44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfjgrjjgqfjg43jg6rjg4Pjgq/jgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgpLmtLvnlKjjgZfjgabmp4vmiJDjgqLjgqTjg4bjg6DjgpLmpJzntKLjgZnjgovmqKnpmZDjgpLlrprnvqnjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCuOOCp+ODjeODquODg+OCr+OCpOODs+OCv+ODvOODleOCp+OCpOOCueOCkua0u+eUqOOBl+OBpuani+aIkOOCouOCpOODhuODoOOCkuWkieabtOOBmeOCi+aoqemZkOOCkuWumue+qeOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLlrprnvqnjgZfjgabjgIHmp4vmiJDjgqLjgqTjg4bjg6Djga7jg6rjgrnjg4jjga7lsI/jgZXjgarjg5Pjg6Xjg7zjgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ+WQhENvbmZpZ0l0ZW3jgq/jg6njgrnjga7mraPopo/ooajnj77jgpLlgIvliKXjgavlrprnvqnjgZfjgabjgIFDb25maWdJdGVt5ZCN44KS56K66KqN44GX44CB5a++5b+c44GZ44KL44Ko44Op44O844Oh44OD44K744O844K444KS6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOBruOCr+ODqeOCueOBruODh+ODleOCqeODq+ODiOOBruOCteODluOCquODluOCuOOCp+OCr+ODiOOCkuWumue+qeOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfnrqHnkIbjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrkgQ2wg5a6a576p44Ko44OH44Kj44K/44Gu6KGM5pWw44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ+OCpOODs+OCt+ODh+ODs+ODiOeKtuaFi+OBrumrmO+8iOS+izog5Y2x6Zm677yJ44GL44KJ5L2O77yI5L6LOiDmg4XloLHvvInjgbjjga7jgqTjg7Pjgrfjg4fjg7Pjg4jnirbmhYvjga7poIbluo/jgpLlrprnvqnjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfjg6rjg7Pjgq/jgZXjgozjgZ/jg4HjgrHjg4Pjg4jjgYxDSeOBruOCueODhuODvOOCv+OCueOBq+W9semfv+OCkuS4juOBiOOCi+WPr+iDveaAp+OBjOOBguOCi+OAgemWoumAo+OBmeOCi+ODh+ODl+ODreOCpOODu+OCueODhuODvOOCv+OCueOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOBrueUu+mdouOBruaknOe0ouWItumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOBruaknOe0oueUu+mdouOBruaknOe0ouWItumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7kuIDopqfjgavooajnpLrjgZXjgozjgovliJfjgpLlrprnvqnjgZfjgb7jgZnjgIIg44GT44Gu44Kq44OX44K344On44Oz44Gv5YiX44Gu5L2N572u44Gr44Gv5b2x6Z+/44GX44G+44Gb44KT44CCIOazqO+8muOCr+ODqeOCueWIl+OBr+OAgeODleOCo+ODq+OCv+ODvOOAjOWFqOOBpuOAjeOBjOmBuOaKnuOBleOCjOOBpuOBhOOCi+WgtOWQiOOBr+W4uOOBq+S9v+eUqOWPr+iDveOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7mpJzntKLjgavooajnpLrjgZXjgozjgovliJfjgpLlrprnvqnjgZfjgb7jgZnjgIIg44GT44Gu44Kq44OX44K344On44Oz44Gv5YiX44Gu5L2N572u44Gr44Gv5b2x6Z+/44GX44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ0NJ44Kv44Op44K544Gr5b+c44GY44Gm44CB6KGo56S644GV44KM44KLQ0njga7liJfjgpLoqK3lrprpoIXnm67jga7mpoLopoHjgaflrprnvqnjgZfjgb7jgZnjgIIg5ZCE44Ko44Oz44OI44Oq44Gu5YWI6aCt44Gr44Gv44CB44Kv44Op44K55ZCN44Go5LqM6YeN44Kz44Ot44Oz77yI44Gk44G+44KK44CBQ29tcHV0ZXI6OinjgpLku5jjgZHjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILlhajjgabjga5DSeOBq+WFsemAmuOBrkNJ5bGe5oCn44GM44GE44GP44Gk44GL44GC44KK44G+44GZ44CC77yI44Kz44Oz44OU44Ol44O844K/44Kv44Op44K544Gu5L6L77yaQ29tcHV0ZXI6Ok5hbWXjgIFDb21wdXRlcjo6Q3VyRGVwbFN0YXRl44CBQ29tcHV0ZXI6OkNyZWF0ZVRpbWXvvIkKwqBDSeWumue+qeOBp+Wumue+qeOBleOCjOOBpuOBhOOCi+WAi+OAheOBrkNJ5bGe5oCn44KS6KGo56S644GZ44KL44Gr44Gv44CB5Lul5LiL44Gu44K544Kt44O844Og44KS5L2/55So44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ77yI44Kz44Oz44OU44Ol44O844K/44Kv44Op44K544Gu5L6L77yJ44CCCkNvbXB1dGVyOjpIYXJkRGlzazo6MSwKQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwKQ29tcHV0ZXI6OkhhcmREaXNrOjoyLApDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxCkNJ44Kv44Op44K544Gu44Ko44Oz44OI44Oq44GM44Gq44GE5aC05ZCI44Gv44CBSVRTTUNvbmZpZ0l0ZW0gOjogRnJvbnRlbmQgOjogQWdlbnRJVFNNQ29uZmlnSXRlbSAjIyMgU2hvd0NvbHVtbnPjga7oqK3lrprjgaflrprnvqnjgZXjgozjgabjgYTjgovjg4fjg5Xjgqnjg6vjg4jjga7liJfjgYzooajnpLrjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44GfQ0njga7jgrnjg4bjg7zjgr/jgrnjgavlvbHpn7/jgZnjgovjg6rjg7Pjgq/jga7jgr/jgqTjg5fvvIjjg4HjgrHjg4Pjg4jjga7oprPngrnjgYvjgonlkI3liY3jgYzku5jjgZHjgonjgozjgb7jgZnvvInjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+ODquODs+OCr+OBleOCjOOBn0NJ44Gu44K544OG44O844K/44K544Gr5b2x6Z+/44GZ44KL44OB44Kx44OD44OI44Gu44K/44Kk44OX44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjga7jgqvjg6njg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn44Kz44OU44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheODleODreODs+ODiOOCqOODs+ODieOBjOS4gOW6puOBq+ikh+aVsOOBruioreWumumgheebruOBp+apn+iDveOBmeOCi+OCiOOBhuOBq+ioreWumumgheebruS4gOaLrOaTjeS9nOapn+iDveOCkuacieWKueOBq+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn44Oq44K544OI44GV44KM44Gf44Kw44Or44O844OX44Gu5qeL5oiQ44Ki44Kk44OG44Og5LiA5ous5Yem55CG5qmf6IO944Gu44G/44KS5pyJ5Yq544Gr44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ+ODgeOCseODg+ODiOani+aIkOOCouOCpOODhuODoOOBruODquODs+OCr+OBq+ani+aIkOOCouOCpOODhuODoOOBruOCueODhuODvOOCv+OCueOCkuioreWumuOBmeOCi+OCpOODmeODs+ODiOODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Djga7kuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ+OCr+ODqeOCueOCkuaLheW9k+OBmeOCi+OCsOODq+ODvOODl+OCkuODgeOCp+ODg+OCr+OBmeOCi+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOCkuaLheW9k+OBmeOCi+OCsOODq+ODvOODl+OCkuODgeOCp+ODg+OCr+OBmeOCi+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ+ani+aIkOOCv+OCpOODhuODoOOBruODrOODneODvOODiOOCkueUn+aIkOOBmeOCi+OBn+OCgeOBruODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAn44Kk44Oz44Od44O844OIL+OCqOOCr+OCueODneODvOODiOODouOCuOODpeODvOODq+OBruOCquODluOCuOOCp+OCr+ODiOODkOODg+OCr+OCqOODs+ODieODouOCuOODpeODvOODq+eZu+mMsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfmpoLopoEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44OH44OX44Ot44Kk44Oh44Oz44OI44Gu44OR44Op44Oh44O844K/44Gv44CB5ouF5b2T6ICFV2Vi44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gn6Imy44KS56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gn5bGV6ZaL54q25oWL44Gu44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ+OCuOOCp+ODjeODqeODq+OCq+OCv+ODreOCsOWxnuaAp+OBruODkeODvOODn+ODg+OCt+ODp+ODs+OCsOODq+ODvOODl+OAgOOBruioreWumuWApCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfjg5rjg7zjgrjjga7jg5Hjg6njg6Hjg7zjgr/vvIjmp4vmiJDjgqLjgqTjg4bjg6DjgYzooajnpLrjgZXjgozjgb7jgZnvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ+aoqemZkOOCsOODq+ODvOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn5qeL5oiQ44Ki44Kk44OG44Og55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueani+aIkOOCouOCpOODhuODoOOBruOCuuODvOODoOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBrui/veWKoOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBrue3qOmbhueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIVXZWLjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjgafmp4vmiJDjgqLjgqTjg4bjg6Djga7lsaXmrbTnlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODleOCp+ODvOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBruWNsOWIt+eUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5YmK6Zmk44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq54m55qipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44KS5qSc57SiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn44OB44Kx44OD44OI44GMQ0njgavjg6rjg7Pjgq/jgZXjgozjgabjgYTjgovloLTlkIjjgIFDSeOBruOCpOODs+OCt+ODh+ODs+ODiOOBruOCueODhuODvOOCv+OCueOCkuiHquWLleeahOOBq+ioreWumuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Oh44OL44Ol44O844Gr44Oq44Oz44Kv44KS6KGo56S644GX44Gm44CB5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844Og6KGo56S644Gn6Kit5a6a6aCF55uu44KS5YmK6Zmk44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBruWxpeattO+8iOmAhumghu+8ieOCkuihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44Gu6K2Y5Yil5a2Q44CCIENvbmZpZ0l0ZW3vvIPjgIFNeUNvbmZpZ0l0ZW3vvIPjgIEg44OH44OV44Kp44Or44OI44GvQ29uZmlnSXRlbe+8g+OBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfjgq/jg6njgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn44Kw44Ot44O844OQ44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn5qyh44Gu55Sf55SjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICflho3nlJ/nlKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ+eUn+eUoyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/ko_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6a29fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICcnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/lt_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bHRfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQcml0cmF1a3RpIGFwxb52YWxnxIUnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdUYXJwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdCaXVyYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/lv_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bHZfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdTdGFycCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJyc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAnQmlyb2pzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/mk_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bWtfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9Cf0YDQvtC80LXQvdC4INC00LXRhNC40L3QuNGG0LjRmNCwINC90LAg0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC9INCc0LXQvdCw0Z/QvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAn0JTQtdGE0LjQvdC40YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0L7RgdGC0L7RmNCx0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICfQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INC90LAg0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCg0LDRgdC/0L7RgNC10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ9Ch0LXQs9Cw0YjQvdCwINCh0L7RgdGC0L7RmNCx0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ch0LXQs9Cw0YjQtdC9INCi0LjQvyDQvdCwINCh0L7RgdGC0L7RmNCx0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9Cf0L7RgdC70LXQtNC90L4g0L/RgNC+0LzQtdC90LXRgtC+JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1BZGQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ9Ck0LjQu9GC0LXRgCDQt9CwINCa0LvQsNGB0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAn0J7QtNCx0LXRgNC4INCa0LvQsNGB0LAg0L7QtCDQu9C40YHRgtCw0YLQsCDQt9CwINC00LAg0LrRgNC10LjRgNCw0YLQtSDQvdC+0LIg0JrQvtC90YTQuNCzINCn0LvQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQsyDQp9C70LXQvSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSDQmtC+0L3RhNC40LPQp9C70LXQvSBCdWxrIEFjdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KDQsNGB0L/QvtGA0LXQtNGD0LLQsNGH0LrQsCDRgdC+0YHRgtC+0ZjQsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHQvtGB0L7RgtGY0LHQsCDQvdCwINCY0L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn0J/QvtCy0YDQt9C4INGB0L4g0LTRgNGD0LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ9Cd0LXQstCw0LvQuNC00LXQvSDQmtC+0YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQsdGA0L7RmCDQvdCwINCn0LvQtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfQkdGA0L7RmNC+0YIg0L3QsCDQtNGA0YPQsyDQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9INGB0L4g0LvQuNC90Log0YjQuNGA0LjQvdCwLic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQmNC80LXRgtC+INC90LAg0L7QstC+0Zgg0LrQvtC90YTQuNCzINGH0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfQmNC80LXRgtC+INC1INCy0LXRnNC1INCy0L4g0YPQv9C+0YLRgNC10LHQsCDQvtC0INGB0YLRgNCw0L3QsCDQvdCwINCa0L7QvdGE0LjQs9Cn0LvQtdC90L7QstC40YLQtSDRgdC+INGB0LvQtdC00L3QvtCyL9GC0LUg0JHRgNC+0Zgo0LXQstC4KTogJXMnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ9CX0YPQvNC40YDQsNGYJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfQmtC+0L3RhNC40LMg0KfQu9C10L3QvtCy0Lgg0L/QviDRgdGC0YDQsNC90LjRhtCwJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn0JjRgdGC0L4g0YLQsNC60LAg0LHQsNGA0LDRmCDQstC+INC/0YDQtdGC0YXQvtC00L3QuNGC0LUg0LLQtdGA0LfQuD8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0KfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQp9C70LXQvSDQmNC90YTQvtGA0LzQsNGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ch0LXQs9Cw0YjQvdCwINCh0L7RgdGC0L7RmNCx0LAg0L3QsCDQoNCw0YHQv9C+0YDQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAn0J/RgNC40LrQsNC20Lgg0LXQtNC90LAg0LLQtdGA0LfQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICfQn9GA0LjQutCw0LbQuCDQs9C4INGB0LjRgtC1INCy0LXRgNC30LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAn0JLQtdGA0LfQuNGY0LAg0L3QsCDQmNC90YbQuNC00LXQvdGCINCh0L7RgdGC0L7RmNCx0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAn0JLQtdGA0LfQuNGY0LAg0L3QsCDQodC+0YHRgtC+0ZjQsdCwINC90LAg0KDQsNGB0L/QvtGA0LDQtNGD0LLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfQkdGA0L7RmCDQvdCwINCS0LXRgNC30LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9INCU0LXRgtCw0LvQuCDQt9CwINCS0LXRgNC30LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAn0KHQstC+0ZjRgdGC0LLQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0KfQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KDQsNGB0L/QvtGA0LXQtNGD0LLQsNGH0LrQsNGC0LAg0YHQvtGB0YLQvtGY0LHQsCDQvdCwINC+0LLQvtGYINC60L7QvdGE0LjQsyDRh9C70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9CY0L3QuNC00LXQvdGCINGB0L7RgdGC0L7RmNCx0LAg0L3QsCDQvtCy0L7RmCDQutC+0L3RhNC40LMg0YfQu9C10L0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn0JjQt9C80LXRk9GDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvQtdC9INCx0YDQvtGYINC90LAg0LXQtNC10L0g0LXQu9C10LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAn0J/RgNCw0LfQvdC40YLQtSDQv9C+0LvQuNGa0LAg0LjQvdC00LjRhtC40YDQsNCw0YIg0LTQtdC60LAg0YHQtdCz0LDRiNC90LjRgtC1INCy0YDQtdC00L3QvtGB0YLQuCDRgdC1INC30LDQtNGA0LbQsNC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ9Ch0LrQvtC60L3QsNGC0L4nOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ9Cc0L7QtNC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAn0KHQtdGA0LjRgdC60Lgg0JHRgNC+0ZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn0J/RgNC+0YbQtdGB0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICdSYW0g0LzQtdC80L7RgNC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICfQotCy0YDQtCDQlNC40YHQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJ9Ca0LDQv9Cw0YbQuNGC0LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ9Cc0YDQtdC20LXQvSDQkNC00LDQv9GC0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCDQv9GA0LXQutGDIERIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJ0lQINCQ0LTRgNC10YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICfQk9GA0LDRhNC40YfQutC4INCQ0LTQsNC/0YLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ9CU0YDRg9Cz0LAg0J7Qv9GA0LXQvNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ9CU0LDRgtGD0Lwg0L3QsCDQmNGB0YLQtdC60YPQstCw0ZrQtSDQvdCwINCT0LDRgNCw0L3RhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICfQlNCw0YLRg9C8INC90LAg0LjQvdGB0YLQsNC70LjRgNCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAn0KLQtdC70LXRhNC+0L0gMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAn0KLQtdC70LXRhNC+0L0gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAn0JzRgNC10LbQvdCwINCQ0LTRgNC10YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ9Cc0LDRgdC60LAg0L3QsCDQn9C+0LTQvNGA0LXQttCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICfQn9C+0YDRgtCw0LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAn0KLQuNC/INC90LAg0JvQuNGG0LXQvdGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICfQmtC70YPRhyDQvdCwINCb0LjRhtC10L3RhtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAn0JrQstCw0L3RgtC40YLQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJ9CU0LDRgtCwINC90LAg0LjRgdGC0LXQutGD0LLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICfQnNC10LTQuNCwJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjRgdGC0LXRh9C10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ce0LTRgNC20YPQstCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Cf0LjQu9C+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9Cf0LvQsNC90LjRgNCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9Cf0L7Qv9GA0LDQstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfQn9GA0LXQutC40L3QsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn0J/RgNC10LPQu9C10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9Ci0LXRgdGCL1FBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9Cb0LDQv9GC0L7Qvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn0KDQsNCx0L7RgtC90LAg0L/QvtCy0YDRiNC40L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICdQREEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAn0KHQtdGA0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn0JTRgNGD0LPQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAn0JzQvtC90LjRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJ9Cf0LXRh9Cw0YLQsNGHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJ9Cf0YDQtdC60LvQvtC/0L3QuNC6KFN3aXRjaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAn0KDRg9GC0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJ9CR0LXQttC40YfQvdCwINCb0L7QutCw0LvQvdCwINCc0YDQtdC20LAg0JzQtdGB0YLQviDQt9CwINCf0YDQuNGB0YLQsNC/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJ9CR0LXQt9Cx0LXQtNC90L7RgdC10L0g0KPRgNC10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJ9CR0LXQutCw0L8g0KPRgNC10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQk9C70YPRiNC10YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfQotCw0YHRgtCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAn0JrQsNC80LXRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ9CR0LjQvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICfQnNC+0LTQtdC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnUENNQ0lBINCa0LDRgNGC0LjRh9C60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1VTQiDQo9GA0LXQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICfQn9GA0LjQutC70YPRh9C90LAg0KHRgtCw0L3QuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ9Ch0LrQtdC90LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9CT0YDQsNC00LXRmNGc0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAn0JrQsNC90YbQtdC70LDRgNC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ9Cf0L7QtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0KHQvtCx0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJ9Cg0LDQvNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAn0KDQsNCx0L7RgtC90L7QvNC10YHRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJ9CY0LfQu9C10LfQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnSVQg0J7QsdGY0LXQutGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ9Cb0L7QutCw0LvQvdCwINCc0YDQtdC20LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJ9CR0LXQttC40YfQvdCwINCb0L7QutCw0LvQvdCwINCc0YDQtdC20LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICdUZWxjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICdHU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAn0JrQu9C40LXQvdGCINCQ0L/Qu9C40LrQsNGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICdNaWRkbGV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJ9Ch0LXRgNCy0LjRgdC90LAg0JDQv9C70LjQutCw0YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAn0JrQu9C40LXQvdGCINCe0KEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAn0KHQtdGA0LLQtdGAINCe0KEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ9CQ0LTQvNC40L0g0JDQu9Cw0YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJ9Ca0L7RgNC40YHQvdC40Log0JDQu9Cw0YLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAn0JLQs9GA0LDQtNC10L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ9CV0LTQuNC90LXRh9C90LAg0JvQuNGG0LXQvdGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICfQn9C+INCa0L7RgNC40YHQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJ9Cf0L4g0J/RgNC+0YbQtdGB0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAn0J/QviDQodC10YDQstC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICfQn9C+INCI0LDQt9C+0LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICfQktC+0LvRg9C80LXQvdGCINC90LAg0JvQuNGG0LXQvdGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAn0J/RgNC10YLQv9GA0LjRmNCw0YLQuNC1INCb0LjRhtC10L3RhtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAn0KDQsNC30LLQuNCy0LDRhyDQm9C40YbQtdC90YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAn0JTQtdC80L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAn0JLRgNC10LzQtSDQvdCwINCX0LDQsdGA0LDQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdGB0L/Qu9Cw0YLQtdC9INGB0L7RhNGC0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAn0J7RgtCy0L7RgNC10L0g0JjQt9Cy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICfQndC10L7Qs9GA0LDQvdC40YfQtdC90L4nOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0YDQvtCy0LXRgNC4INC30LAg0YPQvdC40LrQsNGC0L3QviDQuNC80LUg0YHQsNC80L4g0LLQviDRgNCw0LzQutC40YLQtSDQvdCwINC40YHRgtCwINCa0L7QvdGE0LjQs9Cn0LvQtdC9INC60LvQsNGB0LAgKFwnY2xhc3NcJykg0LjQu9C4INCz0LvQvtCx0LDQu9C90L4gKFwnZ2xvYmFsXCcpLCDRiNGC0L4g0LfQvdCw0YfQuCDQtNC10LrQsCDRgdC10LrQvtGYINC/0L7RgdGC0L7RmNCw0YfQutC4INCa0L7QvdGE0LjQs9Cn0LvQtdC9INC1INC30LXQvNC10L0g0LLQviDQv9GA0L7RhNC40LvQvtGCINC60L7Qs9CwINGB0LUg0LHQsNGA0LDQsNGCINC00YPQv9C70LjQutCw0YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JrQvtC90YTQuNCzINCn0LvQtdC90L7QstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0L3RhNC40LMg0YfQu9C10L0g0L3QsNGB0YLQsNC9INC80L7QtNGD0LvQuCDQutC+0Lgg0L7QstC+0LfQvNC+0LbRg9Cy0LDQsNGCINC30LDQv9C40YjRg9Cy0LDQsNGCINC70L7Qs9C+0LLQuCDQstC+INC40YHRgtC+0YDQuNGY0LAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9INCb0LjQvNC40YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQmtGA0LXQuNGA0LDRmCDQuCDQvNC10L3QsNGf0LjRgNCw0Zgg0LTQtdGE0LjQvdC40YbQuNC4INC30LAg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQp9C70LXQvdC+0LLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQkdCw0YDQsNC90Lgg0L/QtdGA0LzQuNGB0LjQuCDQtNCwINC60YDQtdC40YDQsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L3QvtCy0Lgg0LrQvtGA0LjRgdGC0LXRmNGc0Lgg0JPQtdC90LXRgNC40YfQutC4INCY0L3RgtC10YDRhNC10ZjRgdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCR0LDRgNCw0L3QuCDQv9C10YDQvNC40YHQuNC4INC30LAgINC00LAg0LfQtdC80LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC90L7QstC4INC60L7RgNC40YHRgtC10ZjRnNC4INCT0LXQvdC10YDQuNGH0LrQuCDQmNC90YLQtdGA0YTQtdGY0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCR0LDRgNCw0L3QuCDQv9C10YDQvNC40YHQuNC4INC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC90L7QstC4INC60L7RgNC40YHRgtC10ZjRnNC4INCT0LXQvdC10YDQuNGH0LrQuCDQmNC90YLQtdGA0YTQtdGY0YHQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0JHQsNGA0LDQvdC4INC/0LXRgNC80LjRgdC40Lgg0LfQsCDQvdCw0LTQs9GA0LDQtNCx0LAg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L3QvtCy0Lgg0L3QsCDQk9C10L3QtdGA0LjRh9C60Lgg0JjQvdGC0LXRgNGE0LXRmNGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0YDQtdCz0LvQtdC0INC80L7QtNGD0Lsg0LfQsCDQv9GA0LjQutCw0Lcg0L3QsCDQvNCw0Lsg0L/RgNC10LPQu9C10LQg0L3QsCDQutC+0YTQuNCz0YPRgNCw0YbQuNGB0LrQsCDQu9GH0LXQvSDQu9C40YHRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDRgNC10LPRg9C70LDRgNC90Lgg0LjQt9GA0LDQt9C4INC40L3QtNC40LLQuNC00YPQsNC70L3QviDQt9CwINGB0LXQutC+0ZjQsCDQmtC+0L3RhNC40LPQp9C70LXQvSDQutC70LDRgdCwINC30LAg0LTQsCDQv9GA0L7QstC10YDQuCDQmtC+0L3RhNC40LPQp9C70LXQvSDQuNC80LUg0Lgg0LTQsCDQs9C4INC/0YDQuNC60LDQttC1INCz0YDQtdGI0L3QuNGC0LUg0LrQvtGA0LXRgdC/0L7QvdC00LjRgNCw0YfQutC40YLQtSDQv9C+0YDQsNC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0YHRgtCw0L3QtNCw0YDQtNC10L0g0YHRg9Cx0L7QsdGY0LXQutGCINC30LAg0LrQu9Cw0YHQsNGC0LAgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINCx0YDQvtGYINC90LAg0YDQtdC00LjRhtC4INC30LAgQ0kg0LTQtdGE0LjQvdC40YbQuNGB0LrQuNC+0YIg0YPRgNC10LTQvdC40Log0LLQviDQsNC00LzQuNC9INC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LvQuNC80LjRgiDQt9CwINCx0LDRgNCw0ZrQsCDQt9CwIEFnZW50SVRTTUNvbmZpZ0l0ZW0g0LXQutGA0LDQvdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQu9C40LzQuNGCINC30LAg0LHQsNGA0LDRmtCwINC30LAgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCDQtdC60YDQsNC90L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9GA0LjQutCw0Lcg0L3QsCDQutC+0LvQvtC90Lgg0LLQviDQutC+0L3RhNC40LMg0YfQu9C10L3QvtGCINC/0YDQtdCz0LvQtdC0LiDQntCy0LDQsCDQvtC/0YbQuNGY0LAg0L3QtdC80LAg0LXRhNC10LrRgiDQvdCwINC/0L7Qt9C40YbQuNGY0LDRgtCwINC90LAg0LrQvtC70L7QvdC4LiDQl9Cw0LHQtdC70LXRiNC60LA6INCa0LvQsNGB0L3QuCDQutC+0LvQvtC90Lgg0YHQtSDRgdC10LrQvtCz0LDRiCDQtNC+0YHRgtCw0L/QvdC4INCw0LrQviDRhNC40LvRgtC10YDQvtGCIFwnQWxsXCcg0LUg0L7QtNCx0YDQsNC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0YDQuNC60LDQtyDQvdCwINC60L7Qu9C+0L3QuCDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSDQsdCw0YDQsNGa0LUuINCe0LLQsNCwINC+0L/RhtC40ZjQsCDQvdC10LzQsCDQtdGE0LXQutGCINC90LAg0L/QvtC30LjRhtC40ZjQsNGC0LAg0L3QsCDQutC+0LvQvtC90LjRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0YDQuNC60LDQtyDQvdCwINC60L7Qu9C+0L3QuCDQvtC0IENJcyDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvdC+0YIg0L/RgNC10LPQu9C10LTQvtGCINCy0L4g0LfQsNCy0LjRgdC90L7RgdGCINC+0LQgQ0kg0LrQu9Cw0YHQsNGC0LAuINCh0LXQutC+0Zgg0LLQu9C10Lcg0LzQvtGA0LAg0LTQsCDQuNC80LAg0L/RgNC10YTQuNC60YEg0YHQviDQutC70LDRgdC90L4g0LjQvNC1INC4INC00LLQvtGY0L3QuCDQutC+0LvQvtC90LggKGkuZS4gQ29tcHV0ZXI6OikuINCY0LzQsCDQvdC10LrQvtC70LrRgyBDSS3QkNGC0YDQuNCx0YPRgtC4INC60L7QuCDRgdC1INGH0LXRgdGC0Lgg0YHQviDRgdC40YLQtSBDSXMgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0YLQsCBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4g0JfQsCDQv9GA0LjQutCw0Lcg0L3QsCDQuNC00LjQstC40LTRg9Cw0LvQvdC4IENJLUF0dHJpYnV0ZXMg0LrQsNC60L4g0YjRgtC+INGB0LUg0LTQtdGE0LjQvdC40YDQsNC90Lgg0LLQviAgQ0kt0JTQtdGE0LjQvdC40YbQuNGY0LDRgtCwLCDRgdC70LXQtNC90LDQstCwINGI0LXQvNCwINC80L7RgNCwINC00LAg0LHQuNC00LUg0LjRgdC60L7RgNC40YHRgtC10L3QsCAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHQsNGC0LAgIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCQ0LrQviDQvdC10LzQsCDQstC70LXQtyDQt9CwIENJINC60LvQsNGB0LAsINGC0L7Qs9Cw0Ygg0YHRgtCw0L3QtNCw0YDQtNC90LjRgtC1INC60L7Qu9C+0L3QuCDRgdC1INC/0YDQuNC60LDQttCw0L3QuCDQutCw0LrQviDRiNGC0L4g0YHQtSDQtNC10YTQuNC90LjRgNCw0L3QuCDQstC+INC/0L7RgdGC0LDQstGD0LLQsNGa0LXRgtC+IElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9GA0LjQutCw0Lcg0L3QsCDQutC+0LvQvtC90Lgg0L7QtCBDSXMg0LLQviDQutC+0L3RhNC40LMg0YfQu9C10L3QvtGCINC/0YDQtdCz0LvQtdC00L7RgiDQstC+INC30LDQstC40YHQvdC+0YHRgiDQvtC0IENJINC60LvQsNGB0LDRgtCwLiDQodC10LrQvtGYINCy0LvQtdC3INC80L7RgNCwINC00LAg0LjQvNCwINC/0YDQtdGE0LjQutGBINGB0L4g0LrQu9Cw0YHQvdC+INC40LzQtSDQuCDQtNCy0L7RmNC90Lgg0LrQvtC70L7QvdC4IChpLmUuIENvbXB1dGVyOjopLiDQmNC80LAg0L3QtdC60L7Qu9C60YMgQ0kt0JDRgtGA0LjQsdGD0YLQuCDQutC+0Lgg0YHQtSDRh9C10YHRgtC4INGB0L4g0YHQuNGC0LUgQ0lzICjQv9GA0LjQvNC10YAg0LfQsCDQutC70LDRgdGC0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0L/RgNC40LrQsNC3INC90LAg0LjQtNC40LLQuNC00YPQsNC70L3QuCBDSS1BdHRyaWJ1dGVzINC60LDQutC+INGI0YLQviDRgdC1INC00LXRhNC40L3QuNGA0LDQvdC4INCy0L4gIENJLdCU0LXRhNC40L3QuNGG0LjRmNCw0YLQsCwg0YHQu9C10LTQvdCw0LLQsCDRiNC10LzQsCDQvNC+0YDQsCDQtNCwINCx0LjQtNC1INC40YHQutC+0YDQuNGB0YLQtdC90LAgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0LDRgtCwICBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQkNC60L4g0L3QtdC80LAg0LLQu9C10Lcg0LfQsCBDSSDQutC70LDRgdCwLCDRgtC+0LPQsNGIINGB0YLQsNC90LTQsNGA0LTQvdC40YLQtSDQutC+0LvQvtC90Lgg0YHQtSDQv9GA0LjQutCw0LbQsNC90Lgg0LrQsNC60L4g0YjRgtC+INGB0LUg0LTQtdGE0LjQvdC40YDQsNC90Lgg0LLQviDQv9C+0YHRgtCw0LLRg9Cy0LDRmtC10YLQviBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9GA0LjQutCw0Lcg0L3QsCDQutC+0LvQvtC90Lgg0L7QtCBDSXMg0LLQviDQutC+0L3RhNC40LMg0YfQu9C10L3QvtGCINC/0YDQtdCz0LvQtdC00L7RgiDQstC+INC30LDQstC40YHQvdC+0YHRgiDQvtC0IENJINC60LvQsNGB0LDRgtCwLiDQodC10LrQvtGYINCy0LvQtdC3INC80L7RgNCwINC00LAg0LjQvNCwINC/0YDQtdGE0LjQutGBINGB0L4g0LrQu9Cw0YHQvdC+INC40LzQtSDQuCDQtNCy0L7RmNC90Lgg0LrQvtC70L7QvdC4IChpLmUuIENvbXB1dGVyOjopLiDQmNC80LAg0L3QtdC60L7Qu9C60YMgQ0kt0JDRgtGA0LjQsdGD0YLQuCDQutC+0Lgg0YHQtSDRh9C10YHRgtC4INGB0L4g0YHQuNGC0LUgQ0lzICjQv9GA0LjQvNC10YAg0LfQsCDQutC70LDRgdGC0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0L/RgNC40LrQsNC3INC90LAg0LjQtNC40LLQuNC00YPQsNC70L3QuCBDSS1BdHRyaWJ1dGVzINC60LDQutC+INGI0YLQviDRgdC1INC00LXRhNC40L3QuNGA0LDQvdC4INCy0L4gIENJLdCU0LXRhNC40L3QuNGG0LjRmNCw0YLQsCwg0YHQu9C10LTQvdCw0LLQsCDRiNC10LzQsCDQvNC+0YDQsCDQtNCwINCx0LjQtNC1INC40YHQutC+0YDQuNGB0YLQtdC90LAgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0LDRgtCwICBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQkNC60L4g0L3QtdC80LAg0LLQu9C10Lcg0LfQsCBDSSDQutC70LDRgdCwLCDRgtC+0LPQsNGIINGB0YLQsNC90LTQsNGA0LTQvdC40YLQtSDQutC+0LvQvtC90Lgg0YHQtSDQv9GA0LjQutCw0LbQsNC90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn0JTRg9C/0LvQuNC60LDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQntCy0L7Qt9C80L7QttGD0LLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9IGJ1bGsgYWN0aW9uINC60LDRgNCw0LrRgtC10YDQuNGB0YLQuNC60Lgg0LfQsCDQsNCz0LXQvdGCINC/0YDQtdC00LXQvdC00LXQuyDQt9CwINC00LAg0YDQsNCx0L7RgtC4INGB0L4g0L/QvtCy0LXRmtC1INC+0LQg0LXRhNC10L0g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC40YHRgtC+INCy0YDQvNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0J7QstC+0LfQvNC+0LbRg9Cy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrIGFjdGlvbiDQutCw0YDQsNC60YLQtdGA0LjRgdGC0LjQutC4INGB0LDQvNC+INC30LAg0LPRgNGD0L/QvdC40YLQtSDQu9C40YHRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQntCy0L7Qt9C80L7QttGD0LLQsC/QvtC90LXQstC+0LfQvNC+0LbRg9Cy0LAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+0YHRgtC4INC30LAg0L/RgNC+0LLQtdGA0LrQsCDQvdCwINCa0L7QvdGE0LjQs9Cn0LvQtdC90L7QstC4INC30LAg0YPQvdC40LrQsNGC0L3QuCDQuNC80LjRmtCwLiDQn9GA0LXQtCDQtNCwINGY0LAg0L7QstC+0LfQvNC+0LbQuNGC0LUg0L7QstCw0LAg0L7Qv9GG0LjRmNCwINGC0YDQtdCx0LAg0LTQsCDQs9C+INC/0YDQvtCy0LXRgNC40YLQtSDQstCw0YjQuNC+0YIg0YHQuNGB0YLQtdC8INC00LDQu9C4INCy0LXRnNC1INC/0L7RgdGC0L7RmNCw0YIg0LrQvtC90YTQuNCzINGH0LvQtdC90L7QstC4INGB0L4g0LjRgdGC0L4g0LjQvNC1LiDQktC40LUg0LzQvtC20LXRgtC1INC00LAg0LPQviDQvdCw0L/RgNCw0LLQuNGC0LUg0YHQviDRgdC60YDQuNC/0LDRgtCwICBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn0JzQvtC00YPQuyDQt9CwINC/0YDQvtCy0LXRgNC60LAg0L3QsCDQvtC00LPQvtCy0L7RgNC90L7RgdGCINC90LAg0LPRgNGD0L/QsCDQt9CwINC60LvQsNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINC/0YDQvtCy0LXRgNC60LAg0L3QsCDQvtC00L7Qs9C+0LLRgNC90L7RgdGCINC90LAg0LPRgNGD0L/QsCDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn0JzQvtC00YPQuyDQt9CwINCz0LXQvdC10YDQuNGA0LDRmtC1IElUU00g0LrQvtC90YTQuNCzINGH0LvQtdC9INGB0YLQsNGC0LjRgdGC0LjQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAn0J7QsdGY0LXQutGCINC/0L7Qt9Cw0LTQuNC90YHQutC4INC80L7QtNGD0Lsg0YDQtdCz0LjRgNGB0YLQsNGG0LjQsCDQt9CwINGD0LLQvtC3L9C40LfQstC+0Lcg0LzQvtC00YPQu9C+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQsdC+0ZjQsCDQvdCwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0L/RgNC40LzQtdGAINC00L7Qt9Cy0L7Qu9C40YLQtSDQt9CwINCz0YDRg9C/0Lgg0L7QtCDQs9C10L3QtdGA0LDQu9C90Lgg0LrQsNGC0LDQu9C+0LMg0LDRgtGA0LjQsdGD0YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtGA0LDQvdC40LLQuCjQstC+INC60L7QuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC40YLQtSDRh9C70LXQvdC+0LLQuCDRgdC1INC/0YDQuNC60LDQttCw0L3QuCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0L/RgNC10LHQsNGA0YPQstCw0ZrQtSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQt9Cz0L7Qu9C10LzRg9Cy0LDRh9C60Lgg0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCDQtNC+0LTQsNCy0LDRmtC1INC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwINGD0YDQtdC00LggSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCDQuNGB0YLQvtGA0LjRmNCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAg0L/RgNC40L3RgiDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICfQntC00LHQuNGA0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQsdGA0L7RmCDQs9C10L3QtdGA0LjRgNCw0YfQutC4INC80L7QtNGD0LsuICAiQXV0b0luY3JlbWVudCIgINC40L3QutGA0LXQvNC10L3RgtC40YDQsCDQutC+0L3RhNC40LPRg9GA0LDQstC40YHQutC4INGH0LXQvSDQsdGA0L7RmCwgU3lzdGVtSUQsQ29uZmlnSXRlbUNsYXNzSUQgINC4INCx0YDQvtGY0LDRh9C+0YIg0LUg0LjRgdC60L7RgNC40YHRgtC10L0uINCk0L7RgNC80LDRgtC+0YIg0LUgICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwg0L8u0YAuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC10YLQuNGA0LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrINC10LrRgNCw0L3QvtGCINC+0LQg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC10YLQuNGA0LAg0LjQvdGG0LjQtNC10L3RgiDRgdC+0YHRgtC+0ZjQsdCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrINC10LrRgNCw0L3QvtGCINC+0LQg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQutC+0LUg0L7QstC+0LfQvNC+0LbRg9Cy0LAg0L/QvtCy0YDQt9GD0LLQsNGa0LUg0YHQviDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INGB0L4g0LTRgNGD0LMg0L7QsdGY0LXQutGCINCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9ICDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQutC+0LUg0L/RgNC40YHRgtCw0L/Rg9Cy0LAg0LLQviDQuNGB0YLQvtGA0LjRmNCw0YLQsCDQvdCwICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LrQvtC1INC+0LLQvtC30LzQvtC20YPQstCwINC/0YDQuNGB0YLQsNC/INC00L4g0LjRgdGC0L7RgNC40ZjQsNGC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC9ICDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDRgdC+INC00YPQv9C70LjQutCw0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INGB0L4g0LTRg9C/0LvQuNC60LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQt9CwINGD0YDQtdC00YPQstCw0ZrQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC30LAg0L/QtdGH0LDRgtC10ZrQtSDQstC+INC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0YHQviDQt9Cz0L7Qu9C10LzRg9Cy0LDRmtC1INC90LAg0LrQvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviAg0LrQvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAgINC60L7QvdGE0LjQsyDRh9C70LXQvSDQuNGB0YLQvtGA0LjRmNCwICjQstC+INC+0LHRgNCw0YLQtdC9INGA0LXQtNC+0YHQu9C10LQpINCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn0JjQtNC90LXRgtC40YTQuNC60YPQstCw0YfQvtGCINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSwg0L8u0YAuICBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4g0KHRgtCw0L3QtNCw0YDQtNC+0YIg0LUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/ms_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bXNfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1ViYWggZGVmaW5pc2kga2VsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ1Blbmd1cnVzYW4gQ29uZmlnIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbid9ID0gJ0RlZmluaXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSd9ID0gJ1ViYWgnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAnaW5zaWRlbiBrZWFkYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdLZWFkYWFuIFBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLZWxhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdKZW5pcyBQZXJ0dWthcmFuIEtlYWRhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0luc2lkZW4ga2VhZGFhbiBzZW1hc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTnlhdGFrYW4gSmVuaXMgSW5zaWRlbiBTZW1hc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnVGVya2luaSBiZXJ1YmFoJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1BZGQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ01lbmFwaXMgS2VsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnUGlsaWggS2VsYXMgZGFyaSBzZW5hcmFpIHVudHVrIG1ld3VqdWRrYW4gUGVya2FyYSBDb25maWcgYmFydS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSXRlbUtvbmZpZyBJVFNNIFRpbmRha2FuIFB1a2FsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdLZWFkYWFuIHBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdLZWFkYWFuIGluc2lkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUGF1dCBrZSBsYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgVGlkYWsgU2FoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOb21ib3IgQmFyYW5nYW4gS29uZmlndXJhc2kgbGFpbiB1bnR1ayBkaXBhdXRrYW4gZGVuZ2FuLic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdBbmRhIGJlbmFyIGluZ2luIG1lbWJ1YW5nIGl0ZW0gY29uZmlnIGluaT8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYW1hIGNvbmZpZyBpdGVtIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmFtYSBzdWRhaCBkaWd1bmFrYW4gb2xlaCBDb25maWdJdGVtcyBkZW5nYW4gTm9tYm9yKG5vbWJvci1ub21ib3IpIGJlcmlrdXQ6ICVzJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdLYW5kdW5nYW4gc2VqYXJhaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnQ2lwdGEgbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQYW5kYW5nYW4gZGliZXNhcmthbic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdrb250ZWtzIFRldGFwYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnSXRlbSBjb25maWcgcGVyIGhhbGFtYW4nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdKdWdhIG1lbmNhcmkgZGFsYW0gdmVyc2kgc2ViZWx1bW55YT8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BlcmthcmEga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnTWFrbHVtYXQgQmFyYW5nYW4gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnUGVydHVrYXJhbiBrZWFkYWFuIHNlbWFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdUZXJha2hpciBkaXViYWggb2xlaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnVHVuanVra2FuIHNhdHUgdmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICdUdW5qdWtrYW4gc2VtdWEgdmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ1ZlcnNpIEluc2lkZW4gTmVnZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1ZlcnNpIEtlYWRhYW4gUGVydHVrYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ0JpbGFuZ2FuIHZlcnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICdLb25maWd1cmFzaSBWZXJzaSBJdGVtIEtlcGVyaW5jaGlhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJ2hhcnRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpYWRhIEtlcHV0dXNhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdIYXNpbCBjYXJpYW4gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0tlYWRhYW4gcGVuZW1wYXRhbiBpdGVtIGluaSBjb25maWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdLZWFkYWFuIGluc2lkZW4gYmFnaSBjb25maWcgaXRlbSBpbmknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdCaWxhbmdhbiBtYWtzaW11bSBzYXR1IGVsZW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICdNZWRhbiBrb3NvbmcgbWVudW5qdWtrYW4gYmFoYXdhIG5pbGFpIHNlbWFzYSBkaXNpbXBhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnTWVsYW5na2F1aSc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnTm9tYm9yIFNlcmllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnbWVtb3JpIHV0YW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ0Nha2VyYSBLZXJhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJ011YXRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ05ldHdvcmsgQWRhcHRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCBsZWJpaCBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdJUCBBZGRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICdQZW55ZXN1YWkgZ3JhZmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ1BlcmFsYXRhbiBsYWluLWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnVGFyaWtoIFdhcmFudGkgUGVsdXB1dGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJ1Bhc2FuZyBUYXJpa2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ1RlbGVmb24gMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnVGVsZWZvbiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICdBbGFtYXQgUmFuZ2thaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnU3VibmV0IE1hc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ0dlcmJhbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnSmVuaXMgTGVzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdLdW5jaSBMZXNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ0t1YW50aXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJ1RhcmlraCBUYW1hdCBUZW1wb2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICdNZWRpYSc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1RhbWF0IFRlbXBvaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ3BlbnllbGVuZ2dhcmFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdEaXJhbmNhbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdNZW1iYWlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnYmVyc2FyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdtZW5na2FqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVWppYW4vUUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJ1BEQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICdQZWxheWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnbGFpbi1sYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICdNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICdwZW5jZXRhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICdUdWthcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICdSb3V0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdwdXNhdCBha3NlcyBXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJ1BlcmFudGkgS2VzZWxhbWF0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJ1BlcmFsYXRhbiBCYWNrdXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICd0ZXRpa3VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnSnVydXRla25payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdLYW1lcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnQmVhbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTW9kZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdQQ01DSUEgS2FkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICdQZXJhbnRpIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICdEb2sgU3Rlc2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICdQZW5naW1iYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCYW5ndW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdQZWphYmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAndGluZ2thdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnQmlsaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJ1Jhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICdUZW1wYXQga2VyamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnT3V0bGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnSVQgS2VtdWRhaGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJ1RlbGtvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJ0dTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICdBcGxpa2FzaSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ01pZGRsZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnUGVybW9ob25hbiBQZWxheWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJ09TIFBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdTZXJ2ZXIgT1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ0FkbWluIFRvb2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnQWxhdCBwZW5nZ3VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ3RlcmJlbmFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnTGVzZW4gU2FoYWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnc2V0aWFwIFBlbmdndW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICd1bnR1ayBQZW1wcm9zZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ1NldGlhcCBwZWxheWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAncGVyIE5vZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ0xlc2VuIEppbGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJ0xlc2VuIEVudGVycHJpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICdMZXNlbiBQZW1hanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ0RlbW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnbWFzYSBUZXJoYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ1N1bWJlciBUZXJidWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ1RpYWRhIGJhdGFzYW4nOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU2VtYWsgbmFtYSB5YW5nIHVuaWsgc2FoYWphIGRpIGRhbGFtIGtlbGFzIENvbmZpZ0l0ZW0geWFuZyBzYW1hIChcJ2tlbGFzXCcpIGF0YXUgZGkgcGVyaW5na2F0IGdsb2JhbCAoXCdnbG9iYWxcJyksIHlhbmcgYmVybWFrc3VkIHNldGlhcCBDb25maWdJdGVtIHNlZGlhIGFkYSBkaWFtYmlsIGtpcmEga2V0aWthIG1lbmNhcmkgcGVuZHVhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdCYXJhbmdhbiBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ1RhbWJhaCBpdGVtIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0IGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgYWNhcmEgYmFyYW5nYW4ga29uZmlndXJhc2kgeWFuZyBtZW1iZW5hcmthbiB1bnR1ayBsb2cga2Ugc2VqYXJhaCBkYWxhbSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ1NlamFyYWggaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NldGFrIGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ1p1bSBpdGVtIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdIYWQgQmFyYW5nYW4gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXJhc2kgUGVuZ3VydXNhbiBQYW5na2FsYW4gRGF0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3VyYXNpIGl0ZW0gbW9kdWwgcHVrYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyBSb3V0ZXIgY2FyaWFuIGJlbGFrYW5nIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDaXB0YSBkYW4gdXJ1cyB0YWtyaWZhbiB1bnR1ayBCYXJhbmdhbiBLb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBUaW5kYWthbiBkaW1hbmEgYnV0YW5nIHRldGFwYW4gaXR1IGFkYSBkYWxhbSB3aWRnZXQgb2JqZWsgYmVyc2FtYnVuZyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBTaWxhIHBhc3Rpa2FuIHlhbmcgVGluZGFrYW4gaW5pIHBlcmx1IGRpZGFmdGFya2FuIHlhbmcgYmVyaWt1dCBmYWlsLWZhaWwgSlMgZGFuIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmNpcHRhIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBrZWl6aW5hbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVtYnVhbmcgaXRlbSBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFyYW11a2EgVW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmRhcGF0a2FuIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmNhcmkgYmFyYW5nYW4ga29uZmlndXJhc2kgSVRTTSBtZW5nZ3VuYWthbiBBbnRhcmEgTXVrYSBHZW5lcmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGtlYmVuYXJhbiB5YW5nIGRpcGVybHVrYW4gdW50dWsgbWVuZ2VtYXNraW5pIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIG1vZHVsIGdhbWJhcmFuIHVudHVrIG1lbnVuanVra2FuIHBhbmRhbmdhbiB5YW5nIGtlY2lsIHNlbmFyYWkgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB1bmdrYXBhbiBiaWFzYSBzZWNhcmEgaW5kaXZpZHUgdW50dWsgc2V0aWFwIGtlbGFzIEl0ZW1Lb25maWcgdW50dWsgbWVtZXJpa3NhIG5hbWEgSXRlbUtvbmZpZyBkYW4gdW50dWsgbWVudW5qdWtrYW4gbWVzZWogcmFsYXQgc2VwYWRhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1TdWJvYmplY3QgZGVyIEtsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGJpbGFuZ2FuIGJhcmlzIHVudHVrIGVkaXRvciBkZWZpbmlzaSBDSSBkYWxhbSBhbnRhcmEgbXVrYSBhZG1pbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnVGFrcmlma2FuIHN1c3VuYW4ga2VhZGFhbiBpbnNpZGVuIGRhcmlwYWRhIHRpbmdnaSAoY3RoLiBrcml0aWthbCkga2UgcmVuZGFoIChjdGguIGZ1bmdzaWFuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdUYWtyaWZrYW4ga2VhZGFhbiBwZW5lbXBhdGFuIHlhbmcgcmVsZXZlbiBkaW1hbmEgdGlrZXQgYmVyc2FtYnVuZyBib2xlaCBtZW5qZWphc2thbiBzdGF0dXMgYmFnaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gaGFkIGNhcmlhbiB1bnR1ayBza3JpbiBJdGVtS29uZmlnSVRTTUFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGhhZCBjYXJpYW4gdW50dWsgc2tyaW4gQ2FyaWFuSXRlbUtvbmZpZ0lUU01BZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcnVhbmdhbiBkaXR1bmp1a2thbiBkYWxhbSBnYW1iYXJhbiBrZXNlbHVydWhhbiBpdGVtIGtvbmZpZy4gUGlsaWhhbiBpbmkgdGlkYWsgbWVtcHVueWFpIGtlc2FuIGtlIGF0YXMga2VkdWR1a2FuIHJ1YW5nYW4uIE5vdGE6IHJ1YW5nYW4gS2VsYXMgc2VudGlhc2EgYWRhIGppa2EgcGVuYXBpcyBcJ1NlbXVhXCcgZGlwaWxpaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHJ1YW5nYW4geWFuZyBkaXR1bmp1a2thbiBkYWxhbSBjYXJpYW4gaXRlbSBrb25maWcuIFBpbGloYW4gaW5pIHRpZGFrIG1lbXB1bnlhaSBrZXNhbiBrZSBhdGFzIGtlZHVkdWthbiB0aWFuZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHJ1YW5nYW4gZGl0dW5qdWtrYW4gZGFyaXBhZGEgQ0lzIGRhbGFtIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIGl0ZW0ga29uZmlnIGJlcmdhbnR1bmcga2VwYWRhIGtlbGFzIENJIC4gU2V0aWFwIHBlbnllcnRhYW4gaGVuZGFrbGFoIGRpbXVsYWthbiBkZW5nYW4gbmFtYSBrZWxhcyBkYW4gdGl0aWsgYmVydGluZGloIGR1YSAoaWFpdHUgS29tcHV0ZXI6OikuIFRlcmRhcGF0IGJlYmVyYXBhIHNpZmF0LUNJIHlhbmcgYWRhIHBhZGEga2VzZW11YSBDSXMgKGNvbnRvaCB1bnR1ayBrZWxhcyBLb21wdXRlcjpLb21wdXRlcjo6TmFtYSwgS29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgS29tcHV0ZXI6Ok1hc2FDaXB0YSkuIFVudHVrIG1lbnVuanVra2FuIHNpZmF0IGluZGl2aWR1IENJIHNlYmFnYWltYW5hIHlhbmcgZGl0YWtyaWZrYW4gZGFsYW0gRGVmaW5pc2ktQ0ksIHNraW0gYmVyaWt1dCBtZXN0aSBkaWd1bmFrYW4gKGNvbnRvaCB1bnR1ayBrZWxhcyBLb21wdXRlcik6IEtvbXB1dGVyOjpoYXJkZGlzazo6MSwgS29tcHV0ZXI6OmhhcmRkaXNrOjoxOjpLYXBhc2l0aTo6MSwga29tcHV0ZXI6OmhhcmRkaXNrOjoyLCBLb21wdXRlcjo6aGFyZGRpc2s6OjI6OkthcGFzaXRpOjoxLiBKaWthIHRpYWRhIHBlbnllcnRhYW4gdW50dWsga2VsYXMgQ0ksIG1ha2EgcnVhbmdhbiBkZWZhdWx0IGRpdHVuanVra2FuIHNlYmFnYWltYW5hIHlhbmcgZGl0YWtyaWZrYW4gZGFsYW0gSVRTTUtvbmZpZ0l0ZW06OkJhaGFnaWFuIERlcGFuOjpBZ2VudElUU01Lb25maWdJdGVtIyMjVHVuanVrUnVhbmdhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBydWFuZ2FuIGRpdHVuanVra2FuIGRhcmlwYWRhIENJcyBkYWxhbSBnYW1iYXJhbiBrZXNlbHVydWhhbiBpdGVtIGtvbmZpZyBiZXJnYW50dW5nIGtlcGFkYSBrZWxhcyBDSSAuIFNldGlhcCBwZW55ZXJ0YWFuIGhlbmRha2xhaCBkaW11bGFrYW4gZGVuZ2FuIG5hbWEga2VsYXMgZGFuIHRpdGlrIGJlcnRpbmRpaCBkdWEgKGlhaXR1IEtvbXB1dGVyOjopLiBUZXJkYXBhdCBiZWJlcmFwYSBzaWZhdC1DSSB5YW5nIGFkYSBwYWRhIGtlc2VtdWEgQ0lzIChjb250b2ggdW50dWsga2VsYXMgS29tcHV0ZXI6S29tcHV0ZXI6Ok5hbWEsIEtvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIEtvbXB1dGVyOjpNYXNhQ2lwdGEpLiBVbnR1ayBtZW51bmp1a2thbiBzaWZhdCBpbmRpdmlkdSBDSSBzZWJhZ2FpbWFuYSB5YW5nIGRpdGFrcmlma2FuIGRhbGFtIERlZmluaXNpLUNJLCBza2ltIGJlcmlrdXQgbWVzdGkgZGlndW5ha2FuIChjb250b2ggdW50dWsga2VsYXMgS29tcHV0ZXIpOiBLb21wdXRlcjo6aGFyZGRpc2s6OjEsIEtvbXB1dGVyOjpoYXJkZGlzazo6MTo6S2FwYXNpdGk6OjEsIGtvbXB1dGVyOjpoYXJkZGlzazo6MiwgS29tcHV0ZXI6OmhhcmRkaXNrOjoyOjpLYXBhc2l0aTo6MS4gSmlrYSB0aWFkYSBwZW55ZXJ0YWFuIHVudHVrIGtlbGFzIENJLCBtYWthIHJ1YW5nYW4gZGVmYXVsdCBkaXR1bmp1a2thbiBzZWJhZ2FpbWFuYSB5YW5nIGRpdGFrcmlma2FuIGRhbGFtIElUU01Lb25maWdJdGVtOjpCYWhhZ2lhbiBEZXBhbjo6QWdlbnRJVFNNS29uZmlnSXRlbSMjI1R1bmp1a1J1YW5nYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBydWFuZ2FuIGRpdHVuanVra2FuIENJcyBkYWxhbSBwYW5kYW5nYW4gcGF1dGFuIGphZHVhbCBrb21wbGVrcywgYmVyZ2FudHVuZyBrZXBhZGEga2VsYXMgQ0kgLiBTZXRpYXAgcGVueWVydGFhbiBoZW5kYWtsYWggZGltdWxha2FuIGRlbmdhbiBuYW1hIGtlbGFzIGRhbiB0aXRpayBiZXJ0aW5kaWggZHVhIChpYWl0dSBLb21wdXRlcjo6KS4gVGVyZGFwYXQgYmViZXJhcGEgU2lmYXQtc2lmYXQtQ0kgeWFuZyBzYW1hIGtlcGFkYSBzZW11YSBDSXMgKGNvbnRvaCB1bnR1ayBrZWxhcyBLb21wdXRlcjpLb21wdXRlcjo6TmFtYSwgS29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgS29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBVbnR1ayBtZW51bmp1a2thbiBzaWZhdCBpbmRpdmlkdSBDSSBzZWJhZ2FpbWFuYSB5YW5nIGRpdGFrcmlma2FuIGRhbGFtIERlZmluaXNpLUNJLCBza2ltIGJlcmlrdXQgbWVzdGkgZGlndW5ha2FuIChjb250b2ggdW50dWsga2VsYXMgS29tcHV0ZXIpOiBLb21wdXRlcjo6aGFyZGRpc2s6OjEsIEtvbXB1dGVyOjpoYXJkZGlzazo6MTo6S2FwYXNpdGk6OjEsIGtvbXB1dGVyOjpoYXJkZGlzazo6MiwgS29tcHV0ZXI6OmhhcmRkaXNrOjoyOjpLYXBhc2l0aTo6MS4gSmlrYSB0aWFkYSBwZW55ZXJ0YWFuIHVudHVrIGtlbGFzIENJLCBtYWthIHJ1YW5nYW4gZGVmYXVsdCBkaXBhcGFya2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdUYWtyaWZrYW4gamVuaXMgc2FtYnVuZ2FuIHlhbmcgbWFuYSAoZGluYW1ha2FuIGRhcmlwYWRhIHBlcnNwZWt0aWYgdGlrZXQpIGJvbGVoIG1lbmplamFza2FuIHN0YXR1cyBiYWdpIHNhdHUgc2FtYnVuZ2FuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnVGFrcmlma2FuIGplbmlzIHRpa2V0IHlhbmcgbWFuYSBib2xlaCBtZW5qZWphc2thbiBzdGF0dXMgYmFnaSBzYXR1IHNhbWJ1bmdhbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ1BlbmVtcGF0YW4gS2VhZGFhbiBXYXJuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnR2FuZGFrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnTWVtYm9sZWhrYW4gY2lyaSB0aW5kYWthbiBwdWthbCBpdGVtIGtvbmZpZ3VyYXNpIHVudHVrIGZyb250ZW5kIGVqZW4gdW50dWsgYmVrZXJqYSBwYWRhIGxlYmloIGRhcmlwYWRhIHNhdHUgaXRlbSBrb25maWd1cmFzaSBwYWRhIHNhdHUgbWFzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ01lbWJvbGVoa2FuIGNpcmkgaXRlbSBrb25maWd1cmFzaSB0aW5kYWthbiBwdWthbCBoYW55YSB1bnR1ayBrdW1wdWxhbiB5YW5nIGRpc2VuYXJhaWthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnTWVtYm9sZWhrYW4vbWVsdW1wdWhrYW4gZnVuZ3NpIHVudHVrIG1lbnllbWFrIEtvbmZpZ0l0ZW0gdW50dWsgbmFtYS1uYW1hIHlhbmcgdW5pay4gU2ViZWx1bSBtZW1ib2xlaGthbiBwaWxpaGFuIGluaSBhbmRhIHBlcmx1IG1lbnllbWFrIHNpc3RlbSBhbmRhIHVudHVrIGJhcmFuZ2FuIGtvbmZpZyB5YW5nIHRlbGFoIHNlZGlhIGFkYSBkZW5nYW4gbmFtYSB5YW5nIHNhbWEuIEFuZGEgYm9sZWggbWVsYWt1a2FuIGluaSBkZW5nYW4gYmluIHNrcmlwL290cnMuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kZWwgYWNhcmEgdW50dWsgbWVueWVkaWFrYW4gc3RhdHVzLWl0ZW1jb25maWcgYXRhcyBzYW1idW5nYW4taXRlbWNvbmZpZy10aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAncGFuZGFuZ2FuIGl0ZW0gY29uZmlnIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB1bnR1ayBtZW55ZW1hayBrdW1wdWxhbiBiZXJ0YW5nZ3VuZ2phd2FiIHVudHVrIGtlbGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHVudHVrIG1lbnllbWFrIGt1bXB1bGFuIGJlcnRhbmdndW5namF3YWIgdW50dWsgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB1bnR1ayBtZW5qYW5hIHN0YXRpc3RpayBrb25maWcgaXRlbSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnT2JqZWt0LUJhY2tlbmQgTW9kdWwgUmVnaXN0cmF0aW9uIGRlcyBJbXBvcnQvRXhwb3J0IE1vZHVscy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUGFuZGFuZ2FuIGtlc2VsdXJ1aGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsgd2FybmEga2VhZGFhbiBtZW5nYXR1ciBrZWR1ZHVrYW4gZGFsYW0gcGFwYXJhbiBwaWxpaGFuIGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBjb250b2gga3VtcHVsYW4geWFuZyBkaWJlbmFya2FuIHBhZGEgY2lyaS1jaXJpIGthdGFsb2cuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBtdWthIHN1cmF0IChkaSBtYW5hIGl0ZW0ga29uZmlndXJhc2kgZGl0dW5qdWtrYW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiB6dW0gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiB0YW1iYWggaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBlZGl0IGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIHNlamFyYWggaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGNldGFrIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdLZWlzdGltZXdhYW4ta2Vpc3RpbWV3YWFuIGRpa2VoZW5kYWtpIHVudHVrIG1lbWFkYW1rYW4gYmFyYW5nLWJhcmFuZyBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQ2FyaSBiYXJhbmctYmFyYW5nIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnTWVtaWxpaCBpdGVtIGtvbmZpZ3VyYXNpIG1vZHVsIHBlbmphbmEgbm9tYm9yLiAiUGVuYW1iYWhhbkF1dG8iIG1lbmFtYmFoIGJpbGFuZ2FuIGl0ZW0gdGF0YXJhamFoLCBTaXN0ZW1JRCwgS29uZmlnSXRlbUNsYXNzSUQgZGFuIGthdW50ZXIgZGlndW5ha2FuLiBGb3JtYXQgaW5pIGFkYWxhaCAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciAiLCBjb250b2hueWEgMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4ga2VhZGFhbiBpbnNpZGVuIGJhZ2kgQ0kgc2VjYXJhIGF1dG9tYXRpayBhcGFiaWxhIHN1YXR1IFRpa2V0IGRpc2FtYnVuZ2thbiBrZXBhZGEgc3VhdHUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0IGtlYWRhYW4gcGVuZW1wYXRhbiBkYWxhbSBza3JpbiBwdWthbCBpdGVtIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldCBrZWFkYWFuIGluc2lkZW4gZGFsYW0gc2tyaW4gcHVrYWwgaXRlbSBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHlhbmcgbWVtYm9sZWhrYW4gbWVuZ2h1YnVuZ2thbiBpdGVtIGtvbmZpZ3VyYXNpIGRlbmdhbiBvYmplayBsYWluIGRhbGFtIHBhbmRhbmdhbiB6dW0gaXRlbSBrb25maWcgYmFnaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1R1bmp1ayBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIGRpIGRhbGFtIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIGl0ZW0ga29uZmlndXJhc2kgYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2Frc2VzIHNlamFyYWggaXRlbSBrb25maWd1cmFzaSBkYWxhbSBwYW5kYW5nYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gc2F0dSBzYW1idW5nYW4ga2VwYWRhIG1lbnUgdW50dWsgbWVtYWRhbSBzYXR1IGJhcmFuZyBrb25maWd1cmFzaSAgZGFsYW0gcGFuZGFuZ2FuIHp1bW55YSBkYXJpcGFkYSBhbnRhcmFtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHVuanVrIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbnlhbGluIGl0ZW0ga29uZmlndXJhc2kgZGkgZGFsYW0gZ2FtYmFyYW4ga2VzZWx1cnVoYW4gaXRlbSBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW55YWxpbiBiYXJhbmdhbiBrb25maWd1cmFzaSBkYWxhbSBwYW5kYW5nYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBlZGl0IGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRhbGFtIHBhbmRhbmdhbiB6dW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ21lbnVuanVra2FuIHN1YXR1IHNhbWJ1bmdhbiBwYWRhIG1lbnUgdW50dWsga2VtYmFsaSBkYWxhbSB6b29tIGl0ZW0ga29uZmlndXJhc2kgZGFyaXBhZGEgYW50YXJhIG11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbmNldGFrIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRhbGFtIHBhbmRhbmdhbiB6dW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgenVtIGtlIGRhbGFtIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRpIGRhbGFtIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgc2VqYXJhaCBiYXJhbmdhbiBrb25maWcgKHVydXRhbiB0ZXJiYWxpaykgZGFsYW0gYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1BlbmdlY2FtIHVudHVrIGl0ZW0ga29uZmlndXJhc2ksIGNvbnRvaDogQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIERlZmF1bHQgaWFsYWggQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tlbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/nb_NO_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bmJfTk9fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0VuZHJlIGtsYXNzZWRlZmluaXNqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0FkbWluaXN0cmFzam9uIGF2IGtvbmZpZ3VyYXNqb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXRza2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICdEZWZpbmlzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSd9ID0gJ0VuZHJlJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0hlbmRlbHNlc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdQcm9kdWtzam9uc3NldHRpbmdzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBwcm9kdWtzam9uc3NldHRpbmdzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ07DpXbDpnJlbmRlIGhlbmRlbHNlc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ07DpXbDpnJlbmRlIHR5cGUgaGVuZGVsc2VzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU2lzdCBlbmRyZXQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdGVyIGZvciBrbGFzc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1ZlbGcgZW4ga2xhc3NlIGZyYSBsaXN0ZW4gZm9yIMOlIG9wcHJldHRlIGVuIG55IGtvbmZpZ3VyYXNqb25zZW5oZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnTWFzc2VyZWRpZ2VyaW5nIGF2IGtvbmZpZ3VyYXNqb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnUHJvZHVrc2pvbnNzZXR0aW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnSGVuZGVsc2VzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnS29ibGUgdGlsIGVuIGFubmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdVZ3lsZGlnIGtvbmZpZ3VyYXNqb25zZW5oZXRzbnVtbWVyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOdW1tZXJldCB0aWwgZW4gYW5uZW4ga29uZmlndXJhc2pvbnNlbmhldCBkdSB2aWwga29ibGUgdGlsLic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdWaWwgZHUgdmlya2VsaWcgZmplcm5lIGRlbm5lIGtvbmZpZ3VyYXNqb25zZW5oZXRlbj8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdOYXZuZXQgdGlsIGRlbm5lIGtvbmZpZ3VyYXNqb25zZW5oZXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmF2bmV0IGVyIGFsbGVyZWRlIGkgYnJ1ayBmb3Iga29uZmlndXJhc2pvbnNlbmhldGVyIG1lZCBmw7hsZ2VuZGUgbnVtbWVyOiAlcyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdIaXN0b3JpZW4gdGlsIGtvbmZpZ3VyYXNqb25zZW5oZXRlbjogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWtrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdPcHByZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnWm9vbSB2aXNuaW5nJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ0tvbnRla3N0dmFsZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdLb25maWd1cmFzam9uc2VuaGV0ZXIgcGVyIHNpZGUnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJ0VuIGdlbmVyaXNrIElUU00ga29uZmlndXJhc2pvbnNlbmhldHN0YWJlbGwnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnT2dzw6Ugc8O4a2UgaSB0aWRsaWdlcmUgdmVyc2pvbmVyPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdPcHBseXNuaW5nZXIgb20ga29uZmlndXJhc2pvbnNlbmhldGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ07DpXbDpnJlbmRlIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdTaXN0IGVuZHJldCBhdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnVmlzIMOpbiB2ZXJzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnVmlzIGFsbGUgdmVyc2pvbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICdIZW5kZWxzZXN0aWxzdGFuZCBmb3IgdmVyc2pvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1Byb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCBmb3IgdmVyc2pvbmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAnVmVyc2pvbnNkZXRhbGplciBmb3IgZW5oZXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJ0VnZW5za2FwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnSW5nZW4gdGlsZ2FuZyBlciBnaXR0IHRpbCBrbGFzc2VuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdJbmdlbiBrb25maWd1cmFzam9uc2VuaGV0c0lEIGVyIGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnRHUgbcOlIHZlbGdlIG1pbnN0IGVuIGtvbmZpZ3VyYXNqb25zZW5oZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnRHUgaGFyIGlra2Ugc2tyaXZldGlsZ2FuZyB0aWwgZGVubmUga29uZmlndXJhc2pvbnNlbmhldDogJXMuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdGYW50IGlra2Uga29uZmlndXJhc2pvbnNlbmhldGVuICIlcyIgaSBkYXRhYmFzZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnS3VubmUgaWtrZSBzbGV0dGUga29uZmlndXJhc2pvbnNlbmhldGVuIG1lZCBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0luZ2VuIHZlcnNqb24gZnVubmV0IGZvciBrb25maWd1cmFzam9uc2VuaGV0ZW4gbWVkIElEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnSW5nZW4gcmVzdWx0YXRlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhZHZhcnNlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2hlbmRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdQcm9kdWtzam9uc3NldHRpbmdzdGlsc3RhbmQgZm9yIGRlbm5lIGtvbmZpZ3VyYXNqb25zZW5oZXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0hlbmRlbHNlc3RpbHN0YW5kZW4gZm9yIGRlbm5lIGtvbmZpZ3VyYXNqb25zZW5oZXRlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdNZWxsb20nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWFrcy4gYW50YWxsIGF2IGV0dCBlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJ1RvbW1lIGZlbHRlciBpbmRpa2VyZXIgYXQgZGUgbsOldsOmcmVuZGUgdmVyZGllbmUgYmVob2xkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ0hvcHBldCBvdmVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnU2VyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvc2Vzc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJ0ludGVybm1pbm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ0hhcmRkaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnS2FwYXNpdGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnTmV0dHZlcmtza29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCBmcmEgREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnSVAtYWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICdHcmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ0FubmV0IHV0c3R5cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICdVdGzDuHBzZGF0byBmb3IgZ2FyYW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICdJbnN0YWxsYXNqb25zZGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnVGVsZWZvbiAxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICdUZWxlZm9uIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJ05ldHR2ZXJrc2FkcmVzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICdTdWJuZXR0bWFza2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ1J1dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ0xpc2Vuc3R5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdMaXNlbnNuw7hra2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnQW50YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJ1V0Z8OlciBkYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnTWVkaWEnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0dHZlcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQcm9ncmFtdmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVXRnw6V0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1ZlZGxpa2Vob2xkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5sYWd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnVXRmYXNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdFdmFsdWVyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L0t2YWxpdGV0c2tvbnRyb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0LDpnJiYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1N0YXNqb27DpnInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ1RqZW5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FubmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICdTa2plcm0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJ1Nrcml2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnU3ZpdHNqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ1J1dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnV0xBTi1iYXNlc3Rhc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICdTaWtrZXJoZXRzZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJ0JhY2t1cC1lbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ011cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RhdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJ0thbWVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICdQcm9zamVrdMO4cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ01vZGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnUENNQ0lBLWtvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1VTQi1lbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICdEb2traW5nc3Rhc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnU2thbm5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J5Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAnS29udG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnRXRhc2plJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdSb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJ1JhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnQXJiZWlkc3N0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnS29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJ0lULWZhc2lsaXRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICdMb2thbG5ldHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJ1dMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICdUZWxldXRzdHlyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJ0dTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICdLbGllbnQtYXBwbGlrYXNqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ01lbGxvbXZhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnVGplbmVyLWFwcGxpa2Fzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJ0tsaWVudC1PUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdUamVuZXItT1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ0FkbWluaXN0cmF0b3J2ZXJrdMO4eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICdCcnVrZXJ2ZXJrdMO4eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ0lubmVieWdkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnRW5rZWx0bGlzZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnUGVyIEJydWtlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnUGVyIFByb3Nlc3Nvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnUGVyIFRqZW5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJ1BlciBOb2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnVm9sdW1saXNlbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnRW50ZXJwcmlzZS1saXNlbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICdVdHZpa2xlcmxpc2Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnRGVtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICdUaWRzYmVncmVuc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnR3JhdGlzIHByb2dyYW12YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnw4VwZW4ga2lsZGVrb2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ1ViZWdyZW5zZXQnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRmFyZ2UgZm9yIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaXPDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJzaWt0IG92ZXIgSVRTTSBrb25maWd1cmFzam9uc2VuaGV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdPdmVyc2lrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIHRpbGdhbmdzZ3J1cHBlLWVrc2VtcGVsIGkgYXR0cmlidXR0ZW5lIGZvciBnZW5lcmVsbCBrYXRhbG9nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1RpbGdhbmdzZ3J1cHBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdTw7hrIGV0dGVyIGtvbmZpZ3VyYXNqb25zZW5oZXRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/nl_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bmxfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1dpanppZyBkZWZpbml0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGJlaGVlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAnRGVmaW5pdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSd9ID0gJ1dpanppZ2VuJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50c3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdIdWlkaWdlIEluY2lkZW50c3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdMYWF0c3QgZ2V3aWp6aWdkJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1BZGQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciBvcCBrbGFzc2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ1NlbGVjdGVlciBlZW4ga2xhc3NlIHVpdCBkZSBsaWpzdCBvbSBlZW4gbmlldXcgY29uZmlndXJhdGllLWl0ZW0gYWFuIHRlIG1ha2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGUgbmFhbSB2YW4gZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ0dlc2NoaWVkZW5pc2luaG91ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnTWFhayB0aWpkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ0RldGFpbG92ZXJ6aWNodCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdDb250ZXh0aW5zdGVsbGluZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0FhbnRhbCBjb25maWd1cmF0aWUtaXRlbXMgcGVyIHBhZ2luYSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ09vayBpbiBlZXJkZXJlIHZlcnNpZXMgem9la2VuPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gaW5mb3JtYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBY3R1ZWxlIHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdMYWF0c3QgZ2V3aWp6aWdkIGRvb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJ1Rvb24gw6nDqW4gdmVyc2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnVG9vbiBhbGxlIHZlcnNpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ1ZlcnNpZSBJbmNpZGVudC1zdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnVmVyc2llbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICdDb25maWd1cmF0aWUtaXRlbSB2ZXJzaWUgZGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJ0F0dHJpYnV1dCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0dlZW4gcmVzdWx0YWF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aW9uZWVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd3YWFyc2NodXdpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGUgc3RhdHVzIHZhbiBkaXQgY29uZmlndXJhdGllLWl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdEZSBpbmNpZGVudHN0YXR1cyB2YW4gZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ1R1c3Nlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXhpbWFsZSBob2V2ZWVsaGVpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ092ZXJnZXNsYWdlbic7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnU2VyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJ1JBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICdIYXJkZSBzY2hpamYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICdDYXBhY2l0ZWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnTmV0d2VyayBhZGFwdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ0lQIHZpYSBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdJUCBhZHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICdWaWRlb2thYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ092ZXJpZ2UgdWl0cnVzdGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICdFaW5kZGF0dW0gZ2FyYW50aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnSW5zdGFsbGF0aWVkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnVGVsZWZvb24gMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnVGVsZWZvb24gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAnTmV0d2Vya2FkcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnU3VibmV0IE1hc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ0dhdGV3YXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnTGljZW50aWV0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAnTGljZW50aWVzbGV1dGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnSG9ldmVlbGhlaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnRXhwaXJhdGllZGF0dW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICdNZWRpYSc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1ZlcmxvcGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnSW4gb25kZXJob3VkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0dlcGxhbm5lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ0luIHJlcGFyYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnVWl0Z2VmYXNlZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ1NlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FuZGVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnUHJpbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICdTd2l0Y2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnUm91dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnV0xBTiBBY2Nlc3MgUG9pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnU2VjdXJpdHkgZGV2aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICdCYWNrdXBhcHBhcmFhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ011aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUb2V0c2VuYm9yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdDYW1lcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnQmVhbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTW9kZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdQQ01DSUEga2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1VTQiBhcHBhcmFhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICdEb2NraW5nIHN0YXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ1NjYW5uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdHZWJvdXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAnS2FudG9vcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ0V0YWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdLYW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICdXZXJrcGxlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICdBYW5zbHVpdGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJ1NlcnZlcnJ1aW10ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICdMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJ1dMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICdUZWxjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICdHU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnQ2xpZW50dG9lcGFzc2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAnTWlkZGxld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICdTZXJ2ZXJ0b2VwYXNzaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJ0NsaWVudCBiZXN0dXJpbmdzc3lzdGVlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdTZXJ2ZXIgYmVzdHVyaW5nc3N5c3RlZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ0FkbWluIFRvb2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnVXNlciBUb29sJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICdTaW5nbGUgTGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ1BlciBnZWJydWlrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJ1BlciBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ1BlciBzZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICdQZXIgbm9kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ1ZvbHVtZSBMaWNlbnRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICdFbnRlcnByaXNlbGljZW50aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICdPbnR3aWtrZWxhYXJzbGljZW50aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ0RlbW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnVGltZSByZXN0cmljdGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICdPcGVuIFNvdXJjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICdPbmdlbGltaXRlZXJkJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdDb25maWd1cmF0aWUtaXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdBYW5tYWtlbiBlbiBiZWhlcmVuIHZhbiBkZWZpbml0aWVzIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pZWVyIGFjdGllcyB3YWFyYmlqIGVlbiBpbnN0ZWxsaW5nZW5rbm9wIGJlc2NoaWtiYWFyIGlzIGluIGRlIHdpZGdldCB2b29yIGdla29wcGVsZGUgb2JqZWN0ZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gSG91ZCBlciByZWtlbmluZyBtZWUgZGF0IGRlemUgYWN0aWVzIGRlIHZvbGdlbmRlIEpTLSBlbiBDU1MtYmVzdGFuZGVuIG1vZXRlbiBoZWJiZW4gZ2VyZWdpc3RyZWVyZDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZW4gQ29yZS5BZ2VudCAuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljZXJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSB2b29yYmVlbGRtYWNodGlnaW5nc2dyb2VwZW4gdmFuIGRlIGFsZ2VtZW5lIGNhdGFsb2d1c2tlbm1lcmtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdUb2VzdGVtbWluZ3Nncm9lcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/pl_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cGxfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ1ptaWXFhCBkZWZpbmljasSZIGtsYXN5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdaYXJ6xIVkemFuaWUgRWxlbWVudGVtIEtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0tsYXNhIEVsZW1lbnR1IEtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAnRGVmaW5pY2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSd9ID0gJ1ptaWFuYSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudERhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpYy50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGFuIHpkYXJ6ZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwIHN0YW51IHdkcm/FvGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHVhbG55IHN0YW4gaW5jeWRlbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0FrdHVhbG55IHR5cCBzdGFudSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdPc3RhdG5pbyB6bWllbmlvbmUnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHIgZGxhIGtsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uJ30gPSAnWmF6bmFjeiBrbGFzxJkgbmEgbGnFm2NpZSBhYnkgdXR3b3J6ecSHIG5vd3kgZWxlbWVudCBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnRWxlbWVudCBLb25maWd1cmFjamknOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ0FrY2phIGdydXBvd2EgbmEgRWxlbWVudGFjaCBLb25maWd1cmFjamkgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnU3RhbiB6ZGFyemVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUG/FgsSFY3ogeiBpbm55bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAnTmllcHJhd2lkxYJvd3kgbnVtZXIgZWxlbWVudHUga29uZmlndXJhY2ppISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdOdW1lciBpbm5lZ28gZWxlbWVudHUga29uZmlndXJhY2ppIGRvIHBvxYLEhWN6ZW5pYS4nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0ZW4gZWxlbWVudCBrb25maWd1cmFjamk/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTmF6d2EgdGVnbyBlbGVtZW50dSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ05hendhIGplc3QganXFvCB1xbx5d2FuYSBwcnpleiBDSSBvIG5hc3TEmXB1asSFY3ljaCBudW1lcmFjaDogJXMnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdG9yaWEgRWxlbWVudHUgS29uZmlndXJhY2ppOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdaYXdhcnRvxZvEhyBoaXN0b3JpaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVXR3b3J6b25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1dpZG9rIHN6Y3plZ8OzxYJvd3knOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnVXN0YXdpZW5pYSBrb250ZWtzdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnTGljemJhIEVsZW1lbnTDs3cgS29uZmlndXJhY2ppIG5hIHN0cm9uxJknOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJ09nw7NsbmEgdGFiZWxhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnVXd6Z2zEmWRuacSHIHBvcHJ6ZWRuaWUgd2Vyc2plPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxlbWVudCBLb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBvIEVsZW1lbmNpZSBLb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnQWt0dWFsbnkgc3RhbiB3ZHJvxbxlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ09zdGF0bmlvIHptaWVuaW9uZSBwcnpleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnUG9rYcW8IGplZG7EhSB3ZXJzasSZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnUG9rYcW8IHdzenlzdGtpZSB3ZXJzamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ1N0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhbiB3ZHJvxbxlbmlhIHdlcnNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1dlcnNqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAnU3pjemVnw7PFgnkgd2Vyc2ppIEVsZW1lbnR1IEtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJ1fFgmHFm2Npd2/Fm8SHJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnTmllIHVkemllbG9ubyBkb3N0xJlwdSBkbyBrbGFzeSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIG9rcmXFm2xvbm8gSUQgZGxhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdQb3RyemVibnkgamVzdCBjbyBuYWptbmllaiBqZWRlbiB3eWJyYW55IGVsZW1lbnQga29uZmlndXJhY2ppISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05pZSBtYXN6IHByYXdhIHphcGlzdSBkbyB0ZWdvIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaTogJXMuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdFbGVtZW50IGtvbmZpZ3VyYWNqaSAiJXMiIG5pZSB6bmFsZXppb255IHcgYmF6aWUgZGFueWNoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05pZSBtb8W8bmEgYnnFgm8gdXN1bsSFxIcgZWxlbWVudHUga29uZmlndXJhY2ppIG8gaWRlbnR5ZmlrYXRvcnplICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmllIHpuYWxlemlvbm8gd2Vyc2ppIGRsYSBlbGVtZW50dSBrb25maWd1cmFjamkgbyBpZGVudHlmaWthdG9yemUgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pZSBva3JlxZtsb25vIElEIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSwgemR1cGxpa293YW5lZ28gSUQgbHViIElEIGtsYXN5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmllIHVkemllbG9ubyBkb3N0xJlwdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnQnJhayBkZWZpbmljamkgZGxhIGtsYXN5ICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOaWUgbW/FvG5hIHd5xZt3aWV0bGnEhyBoaXN0b3JpaSwgbmllIHBvZGFubyBJRCBlbGVtZW50dSBrb25maWd1cmFjamkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmllIG1vxbxuYSB3ecWbd2lldGxpxIcgaGlzdG9yaWksIG5pZSB1ZHppZWxvbm8gcHJhd2EgZG9zdMSZcHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3d5IGVsZW1lbnQga29uZmlndXJhY2ppIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vd2Egd2Vyc2phIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdaYWt0dWFsaXpvd2FubyBzdGFuIHdkcm/FvGVuaWEgKG5vd3k9JXMsIHN0YXJ5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdaYWt0dWFsaXpvd2FubyBzdGFuIHpkYXJ6ZW5pYSAobm93eT0lcywgc3Rhcnk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnRWxlbWVudCBrb25maWd1cmFjamkgKElEPSVzKSB1c3VuacSZdHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfFgcSFY3plIGRvICVzICh0eXA9JXMpIGRvZGFuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnxYHEhWN6ZSBkbyAlcyAodHlwPSVzKSB1c3VuacSZdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cnlidXQgJXMgem1pZW5pb255IHogIiVzIiBuYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1dlcnNqYSAlcyB1c3VuacSZdGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdFbGVtZW50IEtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdCcmFrIFd5bmlrw7N3ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1d5bmlraSB3eXN6dWtpd2FuaWEgRWxlbWVudMOzdyBLb25maWd1cmFjamknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhY3lqbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ29zdHJ6ZcW8ZW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY3lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGFuIHdkcm/FvGVuaWEgdGVnbyBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YW4gemRhcnplbmlhIHRlZ28gQ0knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdQb2themFuZSBlbGVtZW50eSBrb25maWd1cmFjamknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnUG9tacSZZHp5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01ha3N5bWFsbmEgbGljemJhIHd5c3TEhXBpZcWEIHBvamVkbnljemVnbyBlbGVtZXRudHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnUHVzdGUgcG9sYSB6bmFjemFqxIUsIMW8ZSB6YXRyenltYW5lIGLEmWTEhSBiaWXFvMSFY2Ugd2FydG/Fm2NpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICdQb21pbmnEmXRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICdOdW1lciBzZXJ5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb2Nlc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJ1JBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICdEeXNrIHR3YXJkeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJ1BvamVtbm/Fm8SHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnS2FydGEgc2llY2lvd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnQWRyZXMgSVAgeiBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdBZHJlcyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICdLYXJ0YSBncmFmaWN6bmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnUG96b3N0YcWCZSB3eXBvc2HFvGVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnRGF0YSB3eWdhxZtuacSZY2lhIGd3YXJhbmNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICdEYXRhIGluc3RhbGFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ1RlbGVmb24gMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnVGVsZWZvbiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICdBZHJlcyBzaWVjaW93eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ01hc2thIHNpZWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICdCcmFtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICdUeXAgbGljZW5jamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdLbHVjeiBsaWNlbmN5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnSWxvxZvEhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICdEYXRhIHd5Z2HFm25pxJljaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICdOb8WbbmlrJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnV3lnYXPFgm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdVdHJ6eW1hbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RhxbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5vd2FueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ05hcHJhd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1d5Y29mYW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1ByemVnbMSFZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ1Nlcndlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0lubmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJ01vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJ0RydWthcmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJ1N3aXRjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICdSdXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJ0FjY2VzcyBQb2ludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICdVcnrEhWR6ZW5pZSB6YWJlenBpZWN6YWrEhWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICdVcnrEhWR6ZW5pZSBkbyB0d29yemVuaWEga29waWkgemFwYXNvd2VqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXlzemthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhd2lhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdLYW1lcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnUHJvamVrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTW9kZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdLYXJ0YSBQQ01DSUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1VyesSFZHplbmllIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICdTdGFjamEgZG9rdWrEhWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICdTa2FuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWR5bmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ0JpdXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnUGnEmXRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUG9rw7NqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICdSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJ01pZWpzY2UgcHJhY3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnUHVua3Qgc3ByemVkYcW8eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJ0R6aWHFgiBJVCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICdMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJ1dMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICdUZWxjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICdHU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnQXBsaWthY2phIGtsaWVuY2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICdNaWRkbGV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJ0FwbGlrYWNqYSBzZXJ3ZXJvd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnU3lzdGVtIGtsaWVuY2tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJ1N5c3RlbSBzZXJ3ZXJvd3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ05hcnrEmWR6aWUgYWRtaW5pc3RyYXRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnTmFyesSZZHppZSBVxbx5dGtvd25pa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICdPc2Fkem9ueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ1BvamVkecWEY3phIGxpY2VuY2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnTmEgVcW8eXRrb3duaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICdOYSBwcm9jZXNvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnTmEgc2Vyd2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnTmEgdXJ6xIVkemVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICdaYmlvcmN6YSBsaWNlbmNqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICdMaWNlbmNqYSBFbnRlcnByaXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnTGljZW5jamEgZGV2ZWxvcGVyc2thJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICdEZW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJ0N6YXNvd28gb2dyYW5pY3pvbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ09wZW4gc291cmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ0JleiBsaW1pdHUnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0IGxpY3pieSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1R3b3J6ZW5pZSBpIHphcnrEhWR6YW5pZSBkZWZpbmljamFtaSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGFrY2plIGRsYSBrdMOzcnljaCBqZXN0IGRvc3TEmXBueSBwcnp5Y2lzayB1c3Rhd2llxYQgdyB3aWTFvGVjaWUgcG/FgsSFY3pvbnljaCBvYmlla3TDs3cgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gWndyw7PEhyB1d2FnxJksIMW8ZSB0ZSBha2NqZSBtdXN6xIUgbWllxIcgemFyZWplc3Ryb3dhbmUgbmFzdMSZcHVqxIVjZSBwbGlraSBKUyBpIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUHJ6ZWdsxIVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IGRsYSBwcnp5a8WCYWRvd3ljaCBncnVwIHVwcmF3bmllxYQgYXRyeWJ1dMOzdyBrYXRhbG9ndSBnxYLDs3duZWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1VwcmF3bmllbmlhIGdydXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/pt_BR_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cHRfQlJfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ011ZGFyIGRlZmluacOnw6NvIGRlIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VyZW5jaWFtZW50byBkZSBJdGVucyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NsYXNzZSBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICdEZWZpbmnDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UnfSA9ICdBbHRlcmFyJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBJbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBJbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgRXN0YWRvIGRlIEltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkbyBJbmNpZGVudGUgQXR1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIEF0dWFsIGRlIEluY2lkZW50ZSBwb3IgdGlwbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1hIG1vZGlmaWNhw6fDo28nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBhcmEgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY2lvbmUgdW1hIGNsYXNzZSBhIHBhcnRpciBkYSBsaXN0YSBwYXJhIGNyaWFyIHVtIG5vdm8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdJdGVtIGRlIENvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBw6fDo28gZW0gTWFzc2EgZW0gSUNzIElUU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0VzdGFkbyBkZSBpbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdBc3NvY2lhciBhIG91dHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOw7ptZXJvIGRlIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdPIG7Dum1lcm8gZGUgb3V0cm8gSXRlbSBkZSBDb25maWd1cmHDp8OjbyBwYXJhIGFzc29jaWFyLic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdEZXNlamEgcmVhbG1lbnRlIGV4Y2x1aXIgZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ08gbm9tZSBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOb21lIGrDoSBlbSB1c28gcGVsb3MgSUNzIGNvbSBvcyBzZWd1aW50ZXMgTsO6bWVybyhzKTogJXMnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdDb250ZcO6ZG8gZG8gSGlzdMOzcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzw6NvIGRlIGRldGFsaGUnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnQ29uZmlndXJhw6fDtWVzIGRlIENvbnRleHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0l0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHBvciBww6FnaW5hJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICdVbWEgdGFiZWxhIGdlbsOpcmljYSBkZSBJdGVucyBkZSBDb25maWd1cmHDp8OjbyBHU1RJJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1Byb2N1cmFyIG5hcyB2ZXLDtWVzIGFudGVyaW9yZXMgdGFtYsOpbT8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEltcGxhbnRhw6fDo28gQXR1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnVmlzdWFsaXphciB1bWEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJ1Zpc3VhbGl6YXIgdG9kYXMgYXMgdmVyc8O1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBJbmNpZGVudGUgZGEgVmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGFudGHDp8OjbyBkYSBWZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICdEZXRhbGhlcyBkYSBWZXJzw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICdQcm9wcmllZGFkZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBhY2Vzc28gcGFyYSBhIGNsYXNzZSDDqSBkYWRvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW5odW0gQ29uZmlnSXRlbUlEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnVm9jw6ogcHJlY2lzYSBzZWxlY2lvbmFyIHBlbG8gbWVub3MgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdWb2PDqiBuw6NvIHRlbSBhY2Vzc28gZGUgZXNjcml0YSBwYXJhIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbzogJXMuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvICIlcyIgbsOjbyBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGV4Y2x1aXIgbyBJRCBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmVuaHVtYSB2ZXJzw6NvIGVuY29udHJhZGEgcGFyYSBvIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3UgQ2xhc3NJRCDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIGFjZXNzbyDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOZW5odW1hIGRlZmluacOnw6NvIHBhcmEgYSBjbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIGV4aWJpciBoaXN0w7NyaWNvLiBOZW5odW0gQ29uZmlnSXRlbUlEIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgZXhpYmlyIGhpc3TDs3JpY28uIE5lbmh1bSBkaXJlaXRvIGRlIGFjZXNzbyDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm92byBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdmEgdmVyc8OjbyAoSUQgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIGF0dWFsaXphZG8gKG5vdm89JXMgLCBhbnRpZ289JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZSBpbmNpZGVudGUgYXR1YWxpemFkbyAobm92bz0lcywgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0l0ZW0gZGUgQ29uZmlndXJhw6fDo28gKElEPSVzKSBleGNsdcOtZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdWw61uY3VsbyBwYXJhICVzICh0aXBvPSVzKSBhZGljaW9uYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdWw61uY3VsbyBwYXJhICVzICh0aXBvPSVzKSBkZWxldGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnRGVmaW5pw6fDo28gZGUgSXRlbSBkZSBDb25maWd1cmHDp8OjbyAoSUQ9JXMpIGF0dWFsaXphZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21lIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0byAlcyBhdHVhbGl6YWRvIGRlICIlcyIgcGFyYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnPDo28gJXMgZXhjbHXDrWRhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIENvbmZpZ0l0ZW1JRCBvdSBWZXJzaW9uSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGV4aWJpciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBOZW5odW0gZGlyZWl0byBkZSBhY2Vzc28gw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbsOjbyBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnVmVyc2lvbklEICVzIG7Do28gZW5jb250cmFkbyBuYSBiYXNlIGRlIGRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnSW1wcmVzc28gcG9yICVzIGVtICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIENsYXNzSUQgw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOZW5odW0gZGlyZWl0byBkZSBhY2Vzc28gcGFyYSBlc3RhIGNsYXNzZSDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmVuaHVtIHJlc3VsdGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSZXN1bHRhZG9zIGRhIHBlc3F1aXNhIGRlIEl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdOw6NvIGZvaSBwb3Nzw612ZWwgZXhpYmlyIGl0ZW0uIE5lbmh1bSBkaXJlaXRvIGRlIGFjZXNzbyBwYXJhIENvbmZpZ0l0ZW0gw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBlc3RhZG8gZGUgaW1wbGFudGHDp8OjbyBkZXN0ZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBlc3RhZG8gZGUgaW5jaWRlbnRlIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFeGliaXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGRlIHVtIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJ09zIGNhbXBvcyB2YXppb3MgaW5kaWNhbSBxdWUgb3MgdmFsb3JlcyBhdHVhaXMgc8OjbyBtYW50aWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnRGVzY29uc2lkZXJhZG9zJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBTw6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzc2Fkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnTWVtw7NyaWEgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ0Rpc2NvIFLDrWdpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICdDYXBhY2lkYWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnQWRhcHRhZG9yIGRlIFJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnRW5kZXJlw6dvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJ0FkYXB0YWRvciBHcsOhZmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICdPdXRybyBFcXVpcGFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICdEYXRhIGRlIEV4cGlyYcOnw6NvIGRhIEdhcmFudGlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJ0RhdGEgSW5zdGFsYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICdUZWxlZm9uZSAxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICdUZWxlZm9uZSAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJ0UtTWFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICdFbmRlcmXDp28gZGUgUmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ03DoXNjYXJhIGRlIFN1YnJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ1JvdGVhZG9yIFBhZHLDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnVGlwbyBkZSBMaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJ0NoYXZlIGRlIExpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnUXVhbnRpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICdEYXRhIGRlIEV4cGlyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnTcOtZGlhJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICdDb21wdXRhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW51dGVuw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5lamFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnUHJvZHXDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0ZSBkZSBRdWFsaWRhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ1NlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnT3V0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJ01vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJ0ltcHJlc3NvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnU3dpdGNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ1JvdGVhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnV0xBTiBBY2Nlc3MgUG9pbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnRGlzcG9zaXRpdm8gZGUgU2VndXJhbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnRGlzcG9zaXRpdm8gZGUgQmFja3VwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTW91c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJ0PDom1lcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnUHJvamV0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICdNb2RlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJ0NhcnTDo28gUENNQ0lBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICdEaXNwb3NpdGl2byBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnRG9ja2luZyBTdGF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICdTY2FubmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnVmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdFc2NyaXTDs3Jpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ0FuZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdTYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICdSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJ0xvY2FsIGRlIFRyYWJhbGhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJ1RvbWFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJ0RlcGFydGFtZW50byBkZSBUSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICdSRURFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICdXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVGVsZWNvbXVuaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ0FwbGljYcOnw6NvIENsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ01pZGRsZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnQXBsaWNhw6fDo28gU2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnU08gQ2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdTTyBTZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnRmVycmFtZW50YSBkZSBBZG1pbmlzdHJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnRmVycmFtZW50YSBkbyBVc3XDoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ0ludGVncmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ0xpY2Vuw6dhIMOabmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ1BvciBVc3XDoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnUG9yIFByb2Nlc3NhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICdQb3IgU2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICdQb3IgTsOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnTGljZW7Dp2EgcG9yIFZvbHVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICdMaWNlbsOnYSBDb3Jwb3JhdGl2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ0xpY2Vuw6dhIGRlIERlc2Vudm9sdmVkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ0RlbW9uc3RyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJ1RlbXBvIFJlc3RyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnTGl2cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICdDw7NkaWdvIGFiZXJ0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICdJbGltaXRhZGEnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdJQyBhdHJpYnVpZG8gw6AgZW1wcmVzYSBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnSUMgYXRyaWJ1aWRvIGFvIHVzdcOhcmlvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NvbmZpZ3VyYcOnw7VlcyBkbyBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWZXJpZmlxdWUgc2UgbyBub21lIMOpIMO6bmljbyBhcGVuYXMgZGVudHJvIGRhIG1lc21hIGNsYXNzZSBkZSBJQyAoXCdjbGFzc2UpIG91IGdsb2JhbG1lbnRlIChcJ2dsb2JhbFwnKSwgbyBxdWUgc2lnbmlmaWNhIHF1ZSBjYWRhIElDIGV4aXN0ZW50ZSDDqSBsZXZhZG8gZW0gY29udGEgYW8gcHJvY3VyYXIgcG9yIGR1cGxpY2HDp8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0l0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQWRpY2lvbmFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdGFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBwZXJtaXRlIHJlZ2lzdHJhciBvIGhpc3TDs3JpY28gZGEgaW50ZXJmYWNlIGRvIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0w7NyaXZvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJlc3PDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdab29tIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICdDb25maWdJdGVtTnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0ZSBkZSBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdMaW1pdGUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0NvbmZpZ3VyYcOnw6NvIGRvIEdlcmVuY2lhbWVudG8gZG8gQmFuY28gZGUgRGFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIGHDp8OjbyBlbSBtYXNzYSBlbSBJdGVucyBkZSBDb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm90ZWFkb3IgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JpYXIgZSBnZXJlbmNpYXIgYXMgZGVmaW5pw6fDtWVzIGRlIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5hIEHDp8O1ZXMgb25kZSB1bSBib3TDo28gZGUgY29uZmlndXJhw6fDtWVzIGVzdMOhIGRpc3BvbsOtdmVsIG5vIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlPSJjb21wbGV4IikuIE9ic2VydmUgcXVlIGVzc2FzIGHDp8O1ZXMgZGV2ZW0gdGVyIHJlZ2lzdHJhZG8gb3Mgc2VndWludGVzIGFycXVpdm9zIEpTIGUgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBlIENvcmUuQWdlbnQgLkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgcmVxdWVyaWRhcyBwYXJhIGNyaWFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXNhbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHBlcm1pc3PDo28gbmVjZXNzw6FyaW8gcGFyYSByZW1vdmVyIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvIHVzYW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgcmVxdWVyaWRhcyBwYXJhIG9idGVyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXNhbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyByZXF1ZXJpZGFzIHBhcmEgbG9jYWxpemFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXNhbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyByZXF1ZXJpZGFzIHBhcmEgYXR1YWxpemFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXNhbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgdmlzw6NvIGdlcmFsIHBhcmEgbW9zdHJhciBhIHZpc8OjbyBwZXF1ZW5hIGRhIGxpc3RhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5pZSBleHByZXNzw7VlcyByZWd1bGFyZXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgY2FkYSBjbGFzc2UgZGUgSUMgcGFyYSB2ZXJpZmljYXIgbyBub21lIGRvIElDIGUgcGFyYSBleGliaXIgYXMgbWVuc2FnZW5zIGRlIGVycm8gY29ycmVzcG9uZGVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmUgbyBzdWJvYmpldG8gcGFkcsOjbyBkYSBjbGFzc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBuw7ptZXJvIGRlIGxpbmhhcyBkbyBlZGl0b3IgZGUgZGVmaW5pw6fDo28gZG8gSUMgbmEgaW50ZXJmYWNlIGRlIGFkbWluaXN0cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gZG9zIGVzdGFkb3MgZGUgaW5jaWRlbnRlIGRlIGFsdG8gKGV4OiBjcsOtdGljbykgcGFyYSBiYWl4byAoZXg6IGZ1bmNpb25hbCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgb3MgZXN0YWRvcyBkZSBpbXBsYW50YcOnw6NvIG9uZGUgY2hhbWFkb3MgYXNzb2NpYWRvcyBwb2RlbSBhZmV0YXIgbyBlc3RhZG9zIGRlIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIGEgdGVsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBleGliaWRhcyBuYSB2aXPDo28gZ2VyYWwgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28uIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gbmEgcG9zacOnw6NvIGRhIGNvbHVuYS4gTm90YTogQSBjb2x1bmEgY2xhc3NlIGVzdMOhIHNlbXByZSBkaXNwb27DrXZlbCBzZSBvIGZpbHRybyAiVG9kb3MiIGVzdGl2ZXIgc2VsZWNpb25hZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBuYSBidXNjYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhIGNvbHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGUgSUNzIGV4aWJpZGFzIG5hIHZpc8OjbyBnZXJhbCBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBwcmVmaXhhZGEgY29tIG8gbm9tZSBkYSBjbGFzc2UgZSBkdXBsbyBkb2lzIHBvbnRvcyAoZXguIENvbXB1dGFkb3I6OikuIEjDoSBhbGd1bnMgYXRyaWJ1dG9zIGRlIElDIHF1ZSBzw6NvIGNvbXVucyBhIHRvZG9zIG9zIElDcyAodGFsIGNvbW8gYSBjbGFzc2UgQ29tcHV0YWRvcjogQ29tcHV0YWRvcjo6Tm9tZSwgQ29tcHV0YWRvcjo6RXN0YWRvSW1wbEF0dWFsLCBDb21wdXRhZG9yOjpIb3JhQ3JpYWNhbykuIFBhcmEgZXhpYmlyIGF0cmlidXRvcyBkZSBJQyBpbmRpdmlkdWFsbWVudGUgY29tbyBkZWZpbmlkbyBuYSBkZWZpbmnDp8OjbyBkbyBJQywgbyBzZWd1aW50ZSBlc3F1ZW1hIGRldmUgc2VyIHVzYWRvIChjbGFzc2UgQ29tcHV0YWRvciwgcG9yIGV4ZW1wbG8pOiBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6MSwgQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjE6OkNhcGFjaWRhZGU6OjEsIENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoyLCBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6Mjo6Q2FwYWNpZGFkZTo6MS4gU2UgbsOjbyBow6EgZW50cmFkYSBwYXJhIGEgY2xhc3NlIElDLCBlbnTDo28gYXMgY29sdW5hcyBwYWRyw6NvIHPDo28gZXhpYmlkYXMgY29tbyBkZWZpbmlkbyBuYSBjb25maWd1cmHDp8OjbyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRlIElDcyBleGliaWRhcyBuYSB0ZWxhIGRlIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgc2VyIHByZWZpeGFkYSBjb20gbyBub21lIGRhIGNsYXNzZSBlIGR1cGxvIGRvaXMgcG9udG9zIChleC4gQ29tcHV0YWRvcjo6KS4gSMOhIGFsZ3VucyBhdHJpYnV0b3MgZGUgSUMgcXVlIHPDo28gY29tdW5zIGEgdG9kb3Mgb3MgSUNzICh0YWwgY29tbyBhIGNsYXNzZSBDb21wdXRhZG9yOiBDb21wdXRhZG9yOjpOb21lLCBDb21wdXRhZG9yOjpFc3RhZG9JbXBsQXR1YWwsIENvbXB1dGFkb3I6OkhvcmFDcmlhY2FvKS4gUGFyYSBleGliaXIgYXRyaWJ1dG9zIGRlIElDIGluZGl2aWR1YWxtZW50ZSBjb21vIGRlZmluaWRvIG5hIGRlZmluacOnw6NvIGRvIElDLCBvIHNlZ3VpbnRlIGVzcXVlbWEgZGV2ZSBzZXIgdXNhZG8gKGNsYXNzZSBDb21wdXRhZG9yLCBwb3IgZXhlbXBsbyk6IENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoxLCBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6MTo6Q2FwYWNpZGFkZTo6MSwgQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjIsIENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoyOjpDYXBhY2lkYWRlOjoxLiBTZSBuw6NvIGjDoSBlbnRyYWRhIHBhcmEgYSBjbGFzc2UgSUMsIGVudMOjbyBhcyBjb2x1bmFzIHBhZHLDo28gc8OjbyBleGliaWRhcyBjb21vIGRlZmluaWRvIG5hIGNvbmZpZ3VyYcOnw6NvIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgZXhpYmlkYXMgbmEgdGVsYSBkZSB0YWJlbGEgY29tcGxleGEgZGUgbGlua3MsIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgcHJlZml4YWRhIGNvbSBvIG5vbWUgZGEgY2xhc3NlIGUgZHVwbG8gZG9pcyBwb250b3MgKGV4LiBDb21wdXRhZG9yOjopLiBIw6EgYWxndW5zIGF0cmlidXRvcyBkZSBJQyBxdWUgc8OjbyBjb211bnMgYSB0b2RvcyBvcyBJQ3MgKHRhbCBjb21vIGEgY2xhc3NlIENvbXB1dGFkb3I6IENvbXB1dGFkb3I6Ok5vbWUsIENvbXB1dGFkb3I6OkVzdGFkb0ltcGxBdHVhbCwgQ29tcHV0YWRvcjo6SG9yYUNyaWFjYW8pLiBQYXJhIGV4aWJpciBhdHJpYnV0b3MgZGUgSUMgaW5kaXZpZHVhbG1lbnRlIGNvbW8gZGVmaW5pZG8gbmEgZGVmaW5pw6fDo28gZG8gSUMsIG8gc2VndWludGUgZXNxdWVtYSBkZXZlIHNlciB1c2FkbyAoY2xhc3NlIENvbXB1dGFkb3IsIHBvciBleGVtcGxvKTogQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjEsIENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoxOjpDYXBhY2lkYWRlOjoxLCBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6MiwgQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjI6OkNhcGFjaWRhZGU6OjEuIFNlIG7Do28gaMOhIGVudHJhZGEgcGFyYSBhIGNsYXNzZSBJQywgZW50w6NvIGFzIGNvbHVuYXMgcGFkcsOjbyBzw6NvIGV4aWJpZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXVhbCB0aXBvIGRlIGFzc29jaWHDp8OjbyAobm9tZWFkbyBhIHBhcnRpciBkYSBwZXJzcGVjdGl2YSBkbyBjaGFtYWRvKSBwb2RlIGFmZXRhciBvIGVzdGFkbyBkZSB1bSBJQyBhc3NvY2lhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXVhbCB0aXBvIGRlIGNoYW1hZG8gcG9kZSBhZmV0YXIgbyBlc3RhZG8gZGUgdW0gSUMgYXNzb2NpYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRXhjbHVpciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ29yIGRvIEVzdGFkbyBkZSBJbXBsYW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2FyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuw6fDo28gZGUgYcOnw6NvIGVtIG1hc3NhIGVtIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUgcGFyYSB0cmFiYWxoYXIgZW0gbWFpcyBkZSB1bSBJQyBwb3IgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnSGFiaWxpdGEgYSBmdW7Dp8OjbyBkZSBhw6fDo28gZW0gbWFzc2EgZW0gaXRlbnMgZGUgY29uZmlndXJhw6fDo28gYXBlbmFzIHBhcmEgZ3J1cG9zIGxpc3RhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdIYWJpbGl0YS9kZXNhYmlsaXRhIGEgZnVuY2lvbmFsaWRhZGUgZGUgdmVyaWZpY2HDp8OjbyBkZSBub21lcyDDum5pY29zIGRlIElDcy4gQW50ZXMgZGUgaGFiaWxpdGFyIGVzdGEgb3DDp8Ojbywgdm9jw6ogZGV2ZSB2ZXJpZmljYXIgc2UgaMOhIElDcyBjb20gbm9tZXMgZHVwbGljYWRvcyBlbSBzZXUgc2lzdGVtYS4gVm9jw6ogcG9kZSBmYXplciBpc3NvIHBvciBtZWlvIGRvIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIEV2ZW50byBwYXJhIGNvbmZpZ3VyYXIgbyBlc3RhZG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBxdWFuZG8gdW0gY2hhbWFkbyBmb3IgYXNzb2NpYWRvIGEgdW0gSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1Zpc8OjbyBHZXJhbCAgZG8gSXRlbSBkZSBDb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgbyBncnVwbyByZXNwb25zw6F2ZWwgcG9yIHVtYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VyYXIgZXN0YXTDrXN0aWNhcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICdNb2R1bG8gZGUgcmVnaXN0cm8gZGUgb2JqZXRvIHBhcmEgbyBtw7NkdWxvIGRlIGltcG9ydGHDp8Ojby9leHBvcnRhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Zpc8OjbyBHZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBhIGNvciBkb3MgZXN0YWRvcyBkZSBpbXBsYW50YcOnw6NvIG5hIHRlbGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRlIGVzdGFkbyBkZSBpbXBsYW50YcOnw6NvIG5hcyBwcmVmZXLDqm5jaWFzIGRlIGV4aWJpw6fDo28gZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZG8gZ3J1cG9zIGRlIHBlcm1pc3PDo28gZGUgZXhlbXBsbyBkb3MgYXRyaWJ1dG9zIGRvIGNhdMOhbG9nbyBnZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGFzIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc8OjbyBtb3N0cmFkb3MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgYWRpw6fDo28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgZWRpw6fDo28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBpbXByZXNzw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsw6lnaW9zIG5lY2Vzc8OhcmlvcyBwYXJhIGFwYWdhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdQcm9jdXJhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnU2VsZWNpb25hIG8gbcOzZHVsbyBkZSBnZXJhw6fDo28gZGUgbsO6bWVybyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiAiQXV0b2luY3JlbWVudG8iIGluY3JlbWVudGEgbyBuw7ptZXJvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIG8gU3lzdGVtSUQsIG8gQ29uZmlnSXRlbUNsYXNzSUQgZSBvIENvdW50ZXIgc8OjbyB1c2Fkb3MuIE8gZm9ybWF0byDDqSAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIHBvciBleGVtcGxvLCAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQ29uZmlndXJhciBvIGVzdGFkbyBkZSB1bSBJQyBhdXRvbWF0aWNhbWVudGUgcXVhbmRvIHVtIENoYW1hZG8gZm9yIGFzc29jaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmEgbyBlc3RhZG8gZGUgaW1wbGFudGHDp8OjbyBuYSB0ZWxhIGRlIGHDp8OjbyBlbSBtYXNzYSBkZSBJQ3MgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhIG8gZXN0YWRvIGRlIGluY2lkZW50ZSBuYSB0ZWxhIGRlIGHDp8OjbyBlbSBtYXNzYSBkZSBJQ3MgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGFzc29jaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIHVtIG91dHJvIG9iamV0byBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhY2Vzc2FyIG8gaGlzdMOzcmljbyBkZSB1bSBJQyBuYSB2aXPDo28gZ2VyYWwgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZXNzYXIgbyBoaXN0w7NyaWNvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIG1lc21vIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFwYWdhciBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgVmlzw6NvIERldGFsaGFkYSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBkdXBsaWNhciB1bSBJQyBuYSB2aXPDo28gZ2VyYWwgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIG1lc21vIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIG1lc21vIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgcmV0b3JuYXIgw6AgdGVsYSBkZSB2aXPDo28gZGUgZGV0YWxoZXMgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBpbXByaW1pciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc8OjbyBkZSBkZXRhbGhlcyBkbyBtZXNtbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBkZXRhbGhhciB1bSBJQyBuYSB2aXPDo28gZ2VyYWwgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBvIGhpc3TDs3JpY28gZG8gaXRlbSBjb25maWd1cmHDp8OjbyAob3JkZW0gcmV2ZXJzYSkgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGV4LiBJdGVtQ29uZmlnIywgTWV1SXRlbUNvbmZpZyMuIE8gcGFkcsOjbyDDqSBJdGVtQ29uZmlnIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnY2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncMOzcy1wcm9kdXRpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ2ltcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdXRpdm8nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/pt_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cHRfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ011ZGFyIGRlZmluacOnw6NvIGRlIGNsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnR2VzdMOjbyBkZSBJdGVucyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBDbGFzcyd9ID0gJ0NvbmZpZyBjbGFzc2UgZG8gSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAnRGVmaW5pw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnQWx0ZXJhcic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudERhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpYy50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgSW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnQ2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGUgRXN0YWRvIGRlIEltcGxlbWVudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gQXR1YWwgZGUgSW5jaWRlbnRlIHBvciB0aXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ8OabHRpbWEgYWx0ZXJhw6fDo28nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJvIHBhcmEgQ2xhc3Nlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdTZWxlY2lvbmUgdW1hIGNsYXNzZSBhIHBhcnRpciBkYSBsaXN0YSBwYXJhIGNyaWFyIHVtIG5vdm8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdJdGVtIGRlIENvbmZpZ3VyYcOnw6NvJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdBw6fDo28gZW0gbWFzc2EgSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICdFc3RhZG8gZGUgSW1wbGVtZW50YcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAnRXN0YWRvIGRlIGluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvIGFub3RoZXInfSA9ICdMaWdhciBhIG91dHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOw7ptZXJvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdPIG7Dum1lcm8gZGUgb3V0cm8gSXRlbSBkZSBDb25maWd1cmHDp8OjbyBhIGxpZ2FyLic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdQcmV0ZW5kZSBtZXNtbyBlbGltaW5hciBlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBub21lIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ08gbm9tZSBqw6EgZXN0w6EgYSBzZXIgdXRpbGl6YWRvIHBlbG8gQ29uZmlnSXRlbXMgY29tIG8ocykgc2VndWludGUocykgbsO6bWVybyhzKTogJXMnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnSGlzdMOzcmljbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdIaXN0w7NyaWNvIGRvIGNvbnRlw7pkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnSG9yYSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnVmlzdGEgZGUgZGV0YWxoZSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdDb25maWd1cmHDp8O1ZXMgZGUgQ29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnSXRlbnMgZGUgY29uZmlndXJhw6fDo28gcG9yIHDDoWdpbmEnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJ1VtYSB0YWJlbGEgZ2Vuw6lyaWNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnUHJvY3VyYXIgbmFzIHZlcnPDtWVzIGFudGVyaW9yZXMgdGFtYsOpbT8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEltcGxlbWVudGHDp8OjbyBBdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfDmmx0aW1hIGFsdGVyYcOnw6NvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnVmlzdWFsaXphciB1bWEgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJ1Zpc3VhbGl6YXIgdG9kYXMgYXMgdmVyc8O1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkYSBWZXJzw6NvIGRlIEluY2lkZW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIGltcGxlbWVudGHDp8OjbyBkYSB2ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTsO6bWVybyBkYSB2ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICdEZXRhbGhlcyBkYSBWZXJzw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICdQcm9wcmllZGFkZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJ07Do28gw6kgZGFkbyBhY2Vzc28gw6AgY2xhc3NlISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnSXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdTZW0gcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmF0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhdmlzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTyBlc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdPIGVzdGFkbyBkZSBpbmNpZGVudGUgZGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgdW0gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnT3MgY2FtcG9zIHZhemlvcyBpbmRpY2FtIHF1ZSBvcyB2YWxvcmVzIGF0dWFpcyBzw6NvIG1hbnRpZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICdEZXNjb25zaWRlcmFkb3MnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIFPDqXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdQcm9jZXNzYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICdNZW3Ds3JpYSBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnRGlzY28gUsOtZ2lkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJ0NhcGFjaWRhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICdBZGFwdGFkb3IgZGUgUmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdFbmRlcmXDp28gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnQWRhcHRhZG9yIEdyw6FmaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ091dHJvIEVxdWlwYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ0RhdGEgZGUgRXhwaXJhw6fDo28gZGEgR2FyYW50aWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnRGF0YSBJbnN0YWxhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ1RlbGVmb25lIDEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJ1RlbGVmb25lIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBkZSBSZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnTcOhc2NhcmEgZGUgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ1RpcG8gZGUgTGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdDaGF2ZSBkZSBMaWNlbsOnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ1F1YW50QW50aWd1aWRhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnRGF0YSBkZSBFeHBpcmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJ01lZGlhJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW51dGVuw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5lYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0ZSBkZSBRdWFsaWRhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAncG9ydMOhdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICdTZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ091dHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJ0ltcHJlc3NvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnU3dpdGNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ1JvdXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICdEaXNwb3NpdGl2byBkZSBTZWd1cmFuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICdEaXNwb3NpdGl2byBkZSBCYWNrdXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGVjbGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdDw6JtYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ1Byb2pldG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnUGxhY2EgUENNQ0lBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICdEaXNwb3NpdGl2byBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICdTY2FubmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnUHLDqWRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdHYWJpbmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ1Bpc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1NhbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICdMb2NhbCBkZSBUcmFiYWxobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICdUb21hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICdEZXBhcnRhbWVudG8gZGUgVEknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnUkVERSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVGVsZWNvbXVuaWNhw6fDtWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICdBcGxpY2HDp8OjbyBDbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnQXBsaWNhw6fDo28gc2Vydmlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnU08gQ2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICdTTyBTZXJ2aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnRmVycmFtZW50YSBkZSBBZG1pbmlzdHJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnRmVycmFtZW50YSBkZSBVdGlsaXphZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnSW50ZWdyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnTGljZW7Dp2Egw5puaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnUG9yIFV0aWxpemFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJ1BvciBQcm9jZXNzYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnUG9yIFNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnUG9yIFBvc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnTGljZW7Dp2EgcG9yIFZvbHVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICdMaWNlbsOnYSBDb3Jwb3JhdGl2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ0xpY2Vuw6dhIGRlIGRlc2Vudm9sdmltZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnRGVtb25zdHJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnVGVtcG8gUmVzdHJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdMaXZyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ0PDs2RpZ28gYWJlcnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ0lsaW1pdGFkYSc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnSXRlbnMgZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVlIHBlcm1pdGUgcmVnaXN0YXIgbyBoaXN0w7NyaWNvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0ZSBkZSBJdGVtcyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3V0ZXIgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JpYXIgZSBnZXJpciBhcyBkZWZpbmnDp8O1ZXMgZGUgSXRlbnMgZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmlyIEFjw6fDtWVzIG9uZGUgdW0gYm90w6NvIGRlIGNvbmZpZ3VyYcOnw7VlcyBlc3TDoSBkaXNwb27DrXZlbCBuYSB3aWRnZXQgdGhlIG9iamVjdG9zIGxpZ2Fkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gRXN0YXMgQWPDp8O1ZXMgZGV2ZW0gZXN0YXIgcmVnaXN0YWRhcyBub3Mgc2VndWludGVzIGZpY2hlaXJvcyBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBtw7NkdWxvIGRlIHZpc3RhIGdlcmFsIHBhcmEgbW9zdHJhciBhIHZpc3RhIHBlcXVlbmEgZGEgbGlzdGEgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lIG8gc3Vib2JqZXRvIHBvciBvbWlzc8OjbyBkYSBjbGFzc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBtb3N0cmFkYXMgbmEgYnVzY2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXN0YSBvcMOnw6NvIG7Do28gdGVtIGVmZWl0byBzb2JyZSBhIHBvc2nDp8OjbyBkYSBjb2x1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2FyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgbyBncnVwbyByZXNwb25zw6F2ZWwgcG9yIHVtYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VyYXIgZXN0YXTDrXN0aWNhcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICdNb2R1bG8gZGUgcmVnaXN0byBkZSBvYmpldG8gcGFyYSBvIG3Ds2R1bG8gZGUgaW1wb3J0YcOnw6NvL2V4cG9ydGHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzw6NvIEdlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBlc3RhZG8gZGUgaW1wbGVtZW50YcOnw6NvIG5hcyBwcmVmZXLDqm5jaWFzIGRlIHZpc3VhbGl6YcOnw6NvIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgb3MgZ3J1cG9zIGRlIHBlcm1pc3PDo28gZGUgZXhlbXBsbyBkb3MgYXRyaWJ1dG9zIGRvIGNhdMOhbG9nbyBnZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGFzIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc8OjbyB2aXN1YWxpemFkb3MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIG8gZm9ybXVsw6FyaW8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIG8gZm9ybXVsw6FyaW8gZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGRldGFsaGVzIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGFkacOnw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGVkacOnw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBoaXN0w7NyaWNvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIG8gZm9ybXVsw6FyaW8gZGUgaW1wcmVzc8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICdTZWxlY2lvbmEgbyBtw7NkdWxvIGRlIGdlcmHDp8OjbyBkZSBuw7ptZXJvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uICJBdXRvaW5jcmVtZW50byIgaW5jcmVtZW50YSBvIG7Dum1lcm8gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgbyBTeXN0ZW1JRCwgbyBDb25maWdJdGVtQ2xhc3NJRCBlIG8gQ291bnRlciBzw6NvIHV0aWxpemFkb3MuIE8gZm9ybWF0byDDqSAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIHBvciBleGVtcGxvLCAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcXVlIHBlcm1pdGUgYXNzb2NpYXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBhIG91dHJvIG9iamV0byBuYSB2aXN0YSBkZSBkZXRhbGhlcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZWRlciBvIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBkdXBsaWNhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgaW1wcmltaXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBkZXRhbGhlcyBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgbyBoaXN0w7NyaWNvIGRvIGl0ZW0gY29uZmlndXJhw6fDo28gKG9yZGVtIGludmVyc2EpIG5vIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/ro_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cm9fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdWZWRlcmUgZGUgZGV0YWxpdSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2ZXJ0aXphcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnU8SDcml0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICcnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBbHRlbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ0Jpcm91JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/ru_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cnVfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0L7Qv9C40YHQsNC90LjQtSDQutC70LDRgdGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INCa0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9C80Lgg0LXQtNC40L3QuNGG0LDQvNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAn0JrQu9Cw0YHRgSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UnfSA9ICfQmNC30LzQtdC90LXQvdC40LUnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAn0JrQu9Cw0YHRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0KHQvtGB0YLQvtGP0L3QuNGPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfQotC10LrRg9GJ0LXQtSDRgdC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDQotC10LrRg9GJ0LXQs9C+INGB0L7RgdGC0L7Rj9C90LjRjyDQuNC90YbQuNC00LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn0JLRgNC10LzRjyDQv9C+0YHQu9C10LTQvdC10LPQviDQuNC30LzQtdC90LXQvdC40Y8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn0KTQuNC70YzRgtGAINC00LvRjyDQutC70LDRgdGB0L7Qsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICfQktGL0LHQtdGA0LjRgtC1INC60LvQsNGB0YEg0LjQtyDRgdC/0LjRgdC60LAg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7QuSDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAn0J7RgdC90L7QstC90YvQtSDRgdGA0LXQtNGB0YLQstCwJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIENvbmZpZ0l0ZW0g0LzQsNGB0YHQvtCy0L7QtSDQtNC10LnRgdGC0LLQuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ9Ch0LLRj9C30LDRgtGMINGBINC00YDRg9Cz0LjQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn0J3QtdCy0LXRgNC90YvQuSDQvdC+0LzQtdGAINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQtNGA0YPQs9C40YUg0JrQlSDQtNC70Y8g0YHQstGP0LfRi9Cy0LDQvdC40Y8uJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgz8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQmNC80Y8g0Y3RgtC+0LPQviDRg9GH0LXRgtC90L7Qs9C+INGN0LvQtdC80LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9CY0LzRjyDRg9C20LUg0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00YDRg9Cz0L7QuSDQmtCVINGB0L4g0YHQu9C10LTRg9GO0YnQuNC8INC90L7QvNC10YDQvtC8ICjQsNC80LgpOiAlcyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICfQmNGB0YLQvtGA0LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRizogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn0KHQvtC00LXRgNC20LjQvNC+0LUg0LjRgdGC0L7RgNC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9CS0YDQtdC80Y8g0YHQvtC30LTQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfQn9C+0LTRgNC+0LHQvdGL0Lkg0L/QvtC60LDQtyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LrQvtC90YLQtdC60YHRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhiDQvdCwINGB0YLRgNCw0L3QuNGG0YMnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJ9Ce0LHRidCw0Y8g0YLQsNCx0LvQuNGG0LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ9CY0YHQutCw0YLRjCDQuCDQsiDQv9GA0LXQtNGL0LTRg9GJ0LjRhSDQstC10YDRgdC40Y/RhT8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QsNGPINC10LTQuNC90LjRhtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyDQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDQmtC+0L3RhC4g0LXQtC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KLQtdC60YPRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ9CQ0LLRgtC+0YAg0L/QvtGB0LvQtdC00L3QtdCz0L4g0LjQt9C80LXQvdC10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICfQn9C+0LrQsNC30LDRgtGMINC+0LTQvdGDINCy0LXRgNGB0LjRjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJ9Cf0L7QutCw0LfQsNGC0Ywg0LLRgdC1INCy0LXRgNGB0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCDQstC10YDRgdC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINCy0LXRgNGB0LjQuCDQvtCx0YrQtdC60YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0LLQtdGA0YHQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICfQn9C+0LvQvdCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0JrQlSDQstGL0LHRgNCw0L3QvdC+0Lkg0LLQtdGA0YHQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAn0KHQstC+0LnRgdGC0LLQvic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJ9Cd0LXRgiDQtNC+0YHRgtGD0L/QsCDQuiDQutC70LDRgdGB0YMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LXRgiBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn0JLQsNC8INC90YPQttC90LAg0YXQvtGC0Y8g0LHRiyDQvtC00L3QsCDQstGL0LHRgNCw0L3QvdCw0Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn0KMg0LLQsNGBINC90LXRgiDQtNC+0YHRgtGD0L/QsCDQvdCwINC30LDQv9C40YHRjCDRjdGC0L7QuSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRizogJXMuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCAiJXMiINC90LUg0L3QsNC50LTQtdC90LAg0LIg0LHQsNC30LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDRg9C00LDQu9C40YLRjCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgyDRgSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ9Cd0LUg0L3QsNC50LTQtdC90LAg0LLQtdGA0YHQuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfQndC1INC/0YDQuNGB0LLQvtC10L0gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDQuNC70LggQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9Cd0LXRgiDQtNC+0YHRgtGD0L/QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn0JrQu9Cw0YHRgSAlcyDQvdC1INCx0YvQuyDQvtC/0YDQtdC00LXQu9C10L0hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC/0L7QutCw0LfQsNGC0Ywg0LjRgdGC0L7RgNC40Y4sINC90LXRgiBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L/QvtC60LDQt9Cw0YLRjCDQuNGB0YLQvtGA0LjRjiwg0L3QtdC00L7RgdGC0LDRgtC+0YfQvdC+INC/0YDQsNCyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn0J3QvtCy0LDRjyDQmtCVIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ9Cd0L7QstCw0Y8g0LLQtdGA0YHQuNGPIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L7QsdC90L7QstC70LXQvdC+ICjQvdC+0LLQvtC1PSVzLCDRgdGC0LDRgNC+0LU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9Ch0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAg0L7QsdC90L7QstC70LXQvdC+ICjQvdC+0LLQvtC1PSVzLCDRgdGC0LDRgNC+0LU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn0JrQlSAoSUQ9JXMpINGD0LTQsNC70LXQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn0KHQstGP0LfRjCDRgSAlcyAo0YLQuNC/PSVzKSDQtNC+0LHQsNCy0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9Ch0LLRj9C30Ywg0YEgJXMgKNGC0LjQvz0lcykg0YPQtNCw0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ9Ce0L/QuNGB0LDQvdC40LUg0JrQlSDQvtCx0L3QvtCy0LvQtdC90L4gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9CY0LzRjyDQvtCx0L3QvtCy0LvQtdC90L4gKNC90L7QstC+0LU9JXMsINGB0YLQsNGA0L7QtT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfQkNGC0YDQuNCx0YPRgiAlcyDQvtCx0L3QvtCy0LvQtdC9INGBICIlcyIg0LTQviAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ9CS0LXRgNGB0LjRjyAlcyDRg9C00LDQu9C10L3QsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0L/RgNC40YHQstC+0LXQvSBDb25maWdJdGVtSUQg0LjQu9C4IFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMsINC90LXRgiDQtNC+0YHRgtGD0L/QsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCAlcyDQvdC1INC90LDQudC00LXQvdCwINCyINCx0LDQt9C1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9CS0LXRgNGB0LjRjyAlcyDQvdC1INC90LDQudC00LXQvdCwINCyINCx0LDQt9C1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdCw0Y8g0LXQtNC40L3QuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ9C90LDQv9C10YfQsNGC0LDQvdC+ICVzINCyICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn0J3QtdCy0LXRgNC90YvQuSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NsYXNzSUQg0L3QtSDQv9GA0LjRgdCy0L7QtdC9ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ9Cd0LXRgiDQtNC+0YHRgtGD0L/QsCDQtNC70Y8g0Y3RgtC+0LPQviDQutC70LDRgdGB0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfQndC10YIg0YDQtdC30YPQu9GM0YLQsNGC0LAv0KDQtdGI0LXQvdC40Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn0KDQtdC30YPQu9GM0YLQsNGC0Ysg0L/QvtC40YHQutCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn0J3QtdCy0L7Qt9C80L7QttC90L4g0L7RgtC+0LHRgNCw0LfQuNGC0Ywg0Y3Qu9C10LzQtdC90YIsINC90LXQtNC+0YHRgtCw0YLQvtGH0L3QviDQv9GA0LDQsiDQtNC70Y8g0JrQlSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINGN0YLQvtC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwINC00LvRjyDRjdGC0L7QuSDQmtCVJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ9Cc0LXQttC00YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INC+0LTQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJ9Cf0YPRgdGC0YvQtSDQv9C+0LvRjyDQv9C+0LrQsNC30YvQstCw0Y7Rgiwg0YfRgtC+INGC0LXQutGD0YnQuNC1INC30L3QsNGH0LXQvdC40Y8g0YHQvtGF0YDQsNC90Y/RgtGB0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ9Cf0YDQvtC/0YPRidC10L3Qvic7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn0JzQvtC00LXQu9GMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ9Ch0LXRgNC40LnQvdGL0Lkg0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQptCf0KMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAn0J7Ql9CjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ9CW0LXRgdGC0LrQuNC5INC00LjRgdC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAn0J7QsdGK0LXQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ9Ch0LXRgtC10LLQvtC5INCw0LTQsNC/0YLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ0lQINC/0L4gREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnSVAg0LDQtNGA0LXRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICfQktC40LTQtdC+INCw0LTQsNC/0YLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ9CU0YDRg9Cz0L7QtSDQvtCx0L7RgNGD0LTQvtCy0LDQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAn0KHRgNC+0Log0LjRgdGC0LXRh9C10L3QuNGPINCz0LDRgNCw0L3RgtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAn0JTQsNGC0LAg0YPRgdGC0LDQvdC+0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICfQotC10LvQtdGE0L7QvSAxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICfQotC10LvQtdGE0L7QvSAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJ0UtTWFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICfQodC10YLQtdCy0L7QuSDQsNC00YDQtdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAn0JzQsNGB0LrQsCDQv9C+0LTRgdC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAn0KjQu9GO0LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAn0KLQuNC/INC70LjRhtC10L3Qt9C40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICfQm9C40YbQtdC90LfQuNC+0L3QvdGL0Lkg0LrQu9GO0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICfQodGA0L7QuiDQu9C40YbQtdC90LfQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAn0JzRg9C70YzRgtC40LzQtdC00LjQudC90YvQtSDRgdGA0LXQtNGB0YLQstCwJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICfQmtC+0LzQv9GM0Y7RgtC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfQkNC/0L/QsNGA0LDRgtC90L7QtSDQvtCx0LXRgdC/0LXRh9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfQodC10YLRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ9Cf0YDQvtCz0YDQsNC80LzQvdC+0LUg0L7QsdC10YHQv9C10YfQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0KPRgdGC0LDRgNC10LvQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ci0LXRhdC90LjRh9C10YHQutC+0LUg0L7QsdGB0LvRg9C20LjQstCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn0K3QutGB0L/QtdGA0LjQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn0JfQsNC/0LvQsNC90LjRgNC+0LLQsNC90L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9Cg0LXQvNC+0L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0KHQv9C40YHQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn0K3QutGB0L/QtdGA0YLQuNC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9Ci0LXRgdGC0LjRgNC+0LLQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfQndC+0YPRgtCx0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn0J3QsNGB0YLQvtC70YzQvdGL0Lkg0J/Qmic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICdQREEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAn0KHQtdGA0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn0JTRgNGD0LPQvtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICfQnNC+0L3QuNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAn0J/RgNC40L3RgtC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAn0JrQvtC80LzRg9GC0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAn0JzQsNGA0YjRgNGD0YLQuNC30LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdXTEFOINGC0L7Rh9C60LAg0LTQvtGB0YLRg9C/0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAn0KHQvNCw0YDRgi3QutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICfQo9GB0YLRgNC+0LnRgdGC0LLQviDQsdGN0LrQsNC/0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQnNGL0YjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn0JrQu9Cw0LLQuNCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAn0JrQsNC80LXRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ9Cf0YDQvtC10LrRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICfQnNC+0LTQtdC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnUENNQ0lBINC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1VTQiDRg9GB0YLRgNC+0LnRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICfQlNC+0Lot0YHRgtCw0L3RhtC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ9Ch0LrQsNC90LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9CX0LTQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICfQntGE0LjRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ9Ct0YLQsNC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfQmtCw0LHQuNC90LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAn0KHRgtC+0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJ9Cg0LDQsdC+0YfQtdC1INC80LXRgdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAn0KDQvtC30LXRgtC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICfQmNCiINC+0LHRitC10LrRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICfQodC10YLQtdCy0LDRjyDQutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICdXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVGVsY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ9Ca0LvQuNC10L3RgtGB0LrQvtC1INC/0YDQuNC70L7QttC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICfQn9GA0L7QvNC10LbRg9GC0L7Rh9C90L7QtSDQn9CeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJ9Ch0LXRgNCy0LXRgNC90L7QtSDQv9GA0LjQu9C+0LbQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICfQmtC70LjQtdC90YLRgdC60LDRjyDQntChJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJ9Ch0LXRgNCy0LXRgNC90LDRjyDQntChJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICfQodC40YHRgtC10LzQvdGL0LUg0YPRgtC40LvQuNGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAn0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40LUg0YPRgtC40LvQuNGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICfQktGB0YLRgNC+0LXQvdC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ9Ce0LTQvdC+0LrRgNCw0YLQvdCw0Y8g0LvQuNGG0LXQvdC30LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ9Cd0LAg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICfQndCwINCm0J/Qoyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAn0J3QsCDRgdC10YDQstC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICfQndCwINC90L7QtNGDKNGD0LfQtdC7KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ9Ca0L7RgNC/0L7RgNCw0YLQuNCy0L3QsNGPINC70LjRhtC10L3Qt9C40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAn0JrQvtGA0L/QvtGA0LDRgtC40LLQvdCw0Y8g0LvQuNGG0LXQvdC30LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ9Cb0LjRhtC10L3Qt9C40Y8g0LTQu9GPINGA0LDQt9GA0LDQsdC+0YLRh9C40LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAn0JTQtdC80L4t0LLQtdGA0YHQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXQvdC90LDRjyDQv9C+INCy0YDQtdC80LXQvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn0JHQtdGB0L/Qu9Cw0YLQvdC+0LUg0J/Qnic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ9Cf0J4g0YEg0L7RgtC60YDRi9GC0YvQvCDQutC+0LTQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ9CR0LXQtyDQvtCz0YDQsNC90LjRh9C10L3QuNC5JzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0YDQvtCy0LXRgNC60LAg0YPQvdC40LrQsNC70YzQvdC+0YHRgtC4INCY0LzQtdC90Lgg0LLQvdGD0YLRgNC4INGC0LXQutGD0YnQtdCz0L4g0LrQu9Cw0YHRgdCwINCa0JUoXCdjbGFzc1wnKSDQuNC70Lgg0LPQu9C+0LHQsNC70YzQvdC+IChcJ2dsb2JhbFwnKSzRh9GC0L4g0L7Qt9C90LDRh9Cw0LXRgiwg0YfRgtC+INC70Y7QsdCw0Y8g0YHRg9GJ0LXRgdGC0LLRg9GO0YnQsNGPINCa0JUg0YPRh9C40YLRi9Cy0LDQtdGC0YHRjyDQv9GA0Lgg0L/QvtC40YHQutC1INC00YPQsdC70LjQutCw0YLQvtCyICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvQtSDQtdC00LjQvdC40YbRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9Ch0L7Qt9C00LDRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZyBpdGVtICjQmtCVKSBldmVudCBtb2R1bGUg0LLQtdC00YPRidC40Lkg0LfQsNC/0LjRgdGMINCyINC40YHRgtC+0YDQuNGOINCyINCw0LPQtdC90YLRgdC60L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfQmNGB0YLQvtGA0LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfQn9C10YfQsNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfQn9GA0L7RgdC80L7RgtGAINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICfQndC+0LzQtdGAINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QvtC5INC10LTQuNC90LjRhtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyDQm9C40LzQuNGCINCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ9Cb0LjQvNC40YIg0JrQlSDQvdCwINGB0YLRgNCw0L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ9CR0LDQt9CwINGD0L/RgNCw0LLQu9C10L3QuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQtdC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfQntCx0YrQtdC80L3Ri9C5INC80L7QtNGD0LvRjCDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQv9C+0LjRgdC60LAg0JrQlSDQsiDQsNCz0LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9Ch0L7Qt9C00LDQvdC40LUg0Lgg0YPQv9GA0LDQstC70LXQvdC40LUg0L7Qv9C40YHQsNC90LjRj9C80Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQutC+0LPQtNCwINC60L3QvtC/0LrQsCDQvdCw0YHRgtGA0L7QudC60Lgg0LTQvtGB0YLRg9C/0L3QsCDQsiDRgdCy0Y/Qt9Cw0L3QvdC+0Lwg0LLQuNC00LbQtdGC0LUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9GC0L4g0Y3RgtC4INCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQtNC+0LvQttC90Ysg0LjQvNC10YLRjCDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0LUgSlMg0LjQu9C4IENTUyDRhNCw0LnQu9GLOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDQuCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNGC0Ywg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8gSVRTTSDQmtCVINGBINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LwgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNGC0Ywg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINGD0LTQsNC70LXQvdC40Y8gSVRTTSDQmtCVINGBINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LwgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyBJVFNNINCa0JUg0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgtGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0L/QvtC40YHQutCwIElUU00g0JrQlSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IEdlbmVyaWMgSW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC+0LTQvdC+0LLQu9C10L3QuNGPIElUU00g0JrQlSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IEdlbmVyaWMgSW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNC+0LTRg9C70Ywg0L/RgNC+0YHQvNC+0YLRgNCwINCa0JUg0LIg0LrRgNCw0YLQutC+0Lwg0LLQuNC00LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YDQtdCz0YPQu9GP0YDQvdGL0LUg0LLRi9GA0LDQttC10L3QuNGPINC00LvRjyDQutCw0LbQtNC+0LPQviDQvtGC0LTQtdC70YzQvdC+0LPQviDQutC70LDRgdGB0LAg0LTQu9GPINC/0YDQvtCy0LXRgNC60Lgg0LjQvNC10L0g0JrQlSDQuCDQstGL0LTQsNGH0Lgg0YHQvtC+0LHRidC10L3QuNC5INC+0LEg0L7RiNC40LHQutCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRg9C80LDQu9GH0LjQstCw0LzRi9C5INC/0L7QtNC+0LHRitC10LrRgiDQtNC70Y8g0LrQu9Cw0YHRgdCwIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC60L7Qu9C40YfQtdGB0YLQstC+INGB0YLRgNC+0Log0LTQu9GPINGA0LXQtNCw0LrRgtC+0YDQsCDQvtC/0LjRgdCw0L3QuNC5INCa0JUgKENJKSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNC00LzQuNC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQv9C+0YDRj9C00L7QuiDRgdC+0YHRgtC+0Y/QvdC40Lkg0LjQvdGG0LjQtNC10L3RgtC+0LIg0L7RgiDQstGL0YHQvtC60LjRhSAo0L3QsNC/0YDQuNC80LXRgCwg0LrRgNC40YLQuNGH0LXRgdC60LjRhSkg0LTQviDQvdC40LfQutC40YUgKNC90LDQv9GA0LjQvNC10YAsINGE0YPQvdC60YbQuNC+0L3QsNC70YzQvdGL0YUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC40LUg0YHQvtGB0YLQvtGP0L3QuNGPINGA0LDQt9Cy0LXRgNGC0YvQstCw0L3QuNGPLCDQutC+0LPQtNCwINGB0LLRj9C30LDQvdC90YvQtSDQt9Cw0Y/QstC60Lgg0LzQvtCz0YPRgiDQstC70LjRj9GC0Ywg0L3QsCDRgdGC0LDRgtGD0YEg0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LvQuNC80LjRgiDQv9C+0LjRgdC60LAg0L7QsdGK0LXQutGC0L7QsiDQtNC70Y8g0Y3QutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LvQuNC80LjRgiDQv9C+0LjRgdC60LAg0L7QsdGK0LXQutGC0L7QsiDQtNC70Y8g0Y3QutGA0LDQvdCwIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0L/QuNGB0L7QuiDQv9C+0LrQsNC30YvQstCw0LXQvNGL0YUg0YHRgtC+0LvQsdGG0L7QsiDQsiDQvtCx0LfQvtGA0LUg0JrQlS4g0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQvdC1INCy0LvQuNGP0LXRgiDQvdCwINC40YUg0L/QvtGA0Y/QtNC+0LouINCf0L7QvNC90LjRgtC1OiDQodGC0L7Qu9Cx0LXRhiDQmtC70LDRgdGBINC00L7RgdGC0YPQv9C10L0g0YLQvtC70YzQutC+INC/0YDQuCDRg9GB0LvQvtCy0LjQuCDQstGL0LHQvtGA0LAg0LIg0YTQuNC70YzRgtGA0LUgItCS0YHQtSIoQWxsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHQv9C40YHQvtC6INC/0L7QutCw0LfRi9Cy0LDQtdC80YvRhSDRgdGC0L7Qu9Cx0YbQvtCyINCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINCa0JUuINCt0YLQvtGCINC/0LDRgNCw0LzQtdGC0YAg0L3QtSDQstC70LjRj9C10YIg0L3QsCDQv9C+0YDRj9C00L7QuiDQuNGFINC+0YLQvtCx0YDQsNC20LXQvdC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgdC/0LjRgdC+0Log0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINGB0YLQvtC70LHRhtC+0LIg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDRgdC/0LjRgdC60L7QsiDQmtCVINCyINC30LDQstC40YHQuNC80L7RgdGC0Lgg0L7RgiDQutC70LDRgdGB0LAuINCa0LDQttC00L7QtSDQuNC80Y8g0LDRgtGA0LjQsdGD0YLQsCDQtNC+0LvQttC90L4g0LjQvNC10YLRjCDQsiDQutCw0YfQtdGB0YLQstC1INC/0YDQtdGE0LjQutGB0LAgLSDQuNC80Y8g0LrQu9Cw0YHRgdCwINC4INC00LLQsCDQtNCy0L7QtdGC0L7Rh9C40Y8gKGkuZS4gQ29tcHV0ZXI6OikuINCV0YHRgtGMINGA0Y/QtCDQsNGC0YDQuNCx0YPRgtC+0LIsINC+0LHRidC40YUg0LTQu9GPINCy0YHQtdGFINC60LvQsNGB0YHQvtCyICjQvdCw0L/RgNC40LzQtdGALCDQtNC70Y8g0LrQu9Cw0YHRgdCwIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDQlNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDQuNC90LTQuNCy0LjQtNGD0LDQu9GM0L3Ri9GFINCw0YLRgNC40LHRg9GC0L7Qsiwg0YHQv9C10YbQuNGE0LjRh9C90YvRhSDQtNC70Y8g0LrQvtC90LrRgNC10YLQvdC+0LPQviDQutC70LDRgdGB0LAg0LjQtyDQvtC/0LjRgdCw0L3QuNGPINCa0JUgKENJLURlZmluaXRpb24pLCDQuNGB0L/QvtC70YzQt9GD0LXRgtGB0Y8g0YHQu9C10LTRg9GO0YnQuNC5INGB0LjQvdGC0LDQutGB0LjRgSAo0L3QsNC/0YDQuNC80LXRgCwg0LTQu9GPINC60LvQsNGB0YHQsCBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQldGB0LvQuCDQvdC10YIg0LDRgtGA0LjQsdGD0YLQvtCyINC00LvRjyDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC60LvQsNGB0YHQsCwg0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINGB0YLQvtC70LHRhtGLINC30LDQtNCw0L3QvdGL0LUg0L/QsNGA0LDQvNC10YLRgNC+0LwgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHQv9C40YHQvtC6INC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDRgdGC0L7Qu9Cx0YbQvtCyINCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINCa0JUg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINCy0YvQsdGA0LDQvdC90L7Qs9C+INC60LvQsNGB0YHQsC4g0JrQsNC20LTQvtC1INC40LzRjyDQsNGC0YDQuNCx0YPRgtCwINC00L7Qu9C20L3QviDQuNC80LXRgtGMINCyINC60LDRh9C10YHRgtCy0LUg0L/RgNC10YTQuNC60YHQsCAtINC40LzRjyDQutC70LDRgdGB0LAg0Lgg0LTQstCwINC00LLQvtC10YLQvtGH0LjRjyAoaS5lLiBDb21wdXRlcjo6KS4g0JXRgdGC0Ywg0YDRj9C0INCw0YLRgNC40LHRg9GC0L7Qsiwg0L7QsdGJ0LjRhSDQtNC70Y8g0LLRgdC10YUg0LrQu9Cw0YHRgdC+0LIgKNC90LDQv9GA0LjQvNC10YAsINC00LvRjyDQutC70LDRgdGB0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCU0LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC40L3QtNC40LLQuNC00YPQsNC70YzQvdGL0YUg0LDRgtGA0LjQsdGD0YLQvtCyLCDRgdC/0LXRhtC40YTQuNGH0L3Ri9GFINC00LvRjyDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC60LvQsNGB0YHQsCDQuNC3INC+0L/QuNGB0LDQvdC40Y8g0JrQlSAoQ0ktRGVmaW5pdGlvbiksINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgdC70LXQtNGD0Y7RidC40Lkg0YHQuNC90YLQsNC60YHQuNGBICjQvdCw0L/RgNC40LzQtdGALCDQtNC70Y8g0LrQu9Cw0YHRgdCwIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCV0YHQu9C4INC90LXRgiDQsNGC0YDQuNCx0YPRgtC+0LIg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LrQu9Cw0YHRgdCwLCDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0YHRgtC+0LvQsdGG0Ysg0LfQsNC00LDQvdC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0L7QvCBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0LXRgNC10YfQtdC90Ywg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINGB0YLQvtC70LHRhtC+0LIg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINCa0JUg0LIg0YLQsNCx0LvQuNGG0LUg0L/RgNC4INGB0L7Qt9C00LDQvdC40Lgg0YHQstGP0LfQuCwg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60LvQsNGB0YHQsC4g0JrQsNC20LTQvtC1INC40LzRjyDQsNGC0YDQuNCx0YPRgtCwINC00L7Qu9C20L3QviDQuNC80LXRgtGMINCyINC60LDRh9C10YHRgtCy0LUg0L/RgNC10YTQuNC60YHQsCAtINC40LzRjyDQutC70LDRgdGB0LAg0Lgg0LTQstCwINC00LLQvtC10YLQvtGH0LjRjyAoaS5lLiBDb21wdXRlcjo6KS4g0JXRgdGC0Ywg0YDRj9C0INCw0YLRgNC40LHRg9GC0L7Qsiwg0L7QsdGJ0LjRhSDQtNC70Y8g0LLRgdC10YUg0LrQu9Cw0YHRgdC+0LIgKNC90LDQv9GA0LjQvNC10YAsINC00LvRjyDQutC70LDRgdGB0LAgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCU0LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC40L3QtNC40LLQuNC00YPQsNC70YzQvdGL0YUg0LDRgtGA0LjQsdGD0YLQvtCyLCDRgdC/0LXRhtC40YTQuNGH0L3Ri9GFINC00LvRjyDQutC+0L3QutGA0LXRgtC90L7Qs9C+INC60LvQsNGB0YHQsCDQuNC3INC+0L/QuNGB0LDQvdC40Y8g0JrQlSAoQ0ktRGVmaW5pdGlvbiksINC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDRgdC70LXQtNGD0Y7RidC40Lkg0YHQuNC90YLQsNC60YHQuNGBICjQvdCw0L/RgNC40LzQtdGALCDQtNC70Y8g0LrQu9Cw0YHRgdCwIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuINCV0YHQu9C4INC90LXRgiDQsNGC0YDQuNCx0YPRgtC+0LIg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0LrQu9Cw0YHRgdCwLCDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0YHRgtC+0LvQsdGG0Ysg0LfQsNC00LDQvdC90YvQtSDQv9Cw0YDQsNC80LXRgtGA0L7QvCBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIsINC60LDQutC+0Lkg0YLQuNC/INGB0LLRj9C30LggKNC90LDQt9Cy0LDQvdC90YvQuSDRgSDRgtC+0YfQutC4INC30YDQtdC90LjRjyDQt9Cw0Y/QstC60LgpINC80L7QttC10YIg0L/QvtCy0LvQuNGP0YLRjCDQvdCwINGB0YLQsNGC0YPRgSDRgdCy0Y/Qt9Cw0L3QvdC+0Lkg0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCLCDQutCw0LrQvtC5INGC0LjQvyDQt9Cw0Y/QstC60Lgg0LzQvtC20LXRgiDQv9C+0LLQu9C40Y/RgtGMINC90LAg0YHRgtCw0YLRg9GBINGB0LLRj9C30LDQvdC90L7QuSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0KPQtNCw0LvQuNGC0Ywg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGD0Y4g0LXQtNC40L3QuNGG0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfQptCy0LXRgiDRgdC+0YHRgtC+0Y/QvdC40Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn0KDQtdC30LXRgNCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQvNCw0YHRgdC+0LLRi9GFINC00LXQudGB0YLQstC40Lkg0YEg0JrQlSDQtNC70Y8g0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwINC00LvRjyDRgNCw0LHQvtGC0Ysg0YEg0L3QtdGB0LrQvtC70YzQutC40LzQuCDQmtCVINC+0LTQvdC+0LLRgNC10LzQtdC90L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNC10YIg0LLQvtC30LzQvtC20L3QvtGB0YLRjCDQvNCw0YHRgdC+0LLRi9GFINC00LXQudGB0YLQstC40Lkg0YEg0JrQlSDRgtC+0LvRjNC60L4g0LTQu9GPINC/0LXRgNC10YfQuNGB0LvQtdC90L3Ri9GFINCz0YDRg9C/0L8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNC10YIv0LLRi9C60LvRjtGH0LDQtdGCINC/0YDQvtCy0LXRgNC60YMg0YPQvdC40LrQsNC70YzQvdC+0YHRgtC4INC40LzQtdC9INCa0JUuINCU0L4g0LLQutC70Y7Rh9C10L3QuNGPINGN0YLQvtCz0L4g0L/QsNGA0LDQvNC10YLRgNCwLCDQv9GA0L7QstC10YDRjNGC0LUg0LLQsNGI0YMg0JHQlCDQvdCwINC90LDQu9C40YfQuNC1INC00YPQsdC70LjQutCw0YLQvtCyINC40LzQtdC9INCa0JUuINCS0Ysg0LzQvtC20LXRgtC1INGB0LTQtdC70LDRgtGMINGN0YLQviDRgSDQv9C+0LzQvtGJ0YzRjiDRgdC60YDQuNC/0YLQsCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINGD0YHRgtCw0L3QvtCy0LrQuCDRgdGC0LDRgtGD0YHQsCDQmtCVINC00LvRjyDRgdCy0Y/Qt9Cw0L3QvdC+0Lkg0YEg0L3QtdC5INC30LDRj9Cy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn0J7QsdC30L7RgCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDQs9GA0YPQv9C/0Ysg0L7RgtCy0LXRgtGB0YLQstC10L3QvdC+0Lkg0LfQsCDQutC70LDRgdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC00LvRjyDQv9GA0L7QstC10YDQutC4INCz0YDRg9C/0L/RiyDQvtGC0LLQtdGC0YHRgtCy0LXQvdC90L7QuSDQt9CwINCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C70Ywg0YTQvtGA0LzQuNGA0L7QstCw0L3QuNGPINGB0YLQsNGC0LjRgdGC0LjQutC4INC/0L4g0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJ09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24g0LTQu9GPINC80L7QtNGD0LvRjyBJbXBvcnQvRXhwb3J0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfQntCx0LfQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YbQstC10YLQvtCyINC+0LHQvtC30L3QsNGH0LDRjtGJ0LjRhSDRgdC+0YHRgtC+0Y/QvdC40Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0JrQlSDQsiDQvdCw0YHRgtGA0L7QudC60LDRhSDQvtCx0LfQvtGA0L7QsiDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDRgdC+0YHRgtC+0Y/QvdC40Lkg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0JrQlSDQsiDQvdCw0YHRgtGA0L7QudC60LDRhSDQvtCx0LfQvtGA0L7QsiDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0L/RgNC40LzQtdGA0L3Ri9GFINCz0YDRg9C/0L/QvtCy0YvRhSDQv9GA0LDQsiDQtNC70Y8g0LDRgtGA0LjQsdGD0YLQvtCyINCe0LHRidC10LPQviDQutCw0YLQsNC70L7Qs9CwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0YHRgtGA0LDQvdC40YYgKNC90LAg0LrQvtGC0L7RgNGL0YUg0L7RgtC+0LHRgNCw0LbQsNGO0YLRgdGPINCa0JUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9C/0LAg0LTQvtGB0YLRg9C/0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQvtCx0LfQvtGA0LAg0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC/0L7QuNGB0LrQsCDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQv9C+0LvQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAg0JrQlSAoem9vbSB2aWV3KSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINCa0JUg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINGB0L7QtNC10YDQttC40LzQvtCz0L4g0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQv9GA0L7RgdC80L7RgtGA0LAg0LjRgdGC0L7RgNC40Lgg0YHQvtC00LXRgNC20LjQvNC+0LPQviDQmtCVINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQv9C10YfQsNGC0Lgg0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfQndC10L7QsdGF0L7QtNC40LzRiyDQv9GA0LDQstCwINC00LvRjyDRg9C00LDQu9C10L3QuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfQn9C+0LjRgdC6INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAn0JLRi9Cx0L7RgCDQvNC+0LTRg9C70Y8g0LPQtdC90LXRgNCw0YbQuNC4INC90L7QvNC10YDQsCDQmtCVLiAiQXV0b0luY3JlbWVudCIg0L/QvtGB0LvQtdC00L7QstCw0YLQtdC70YzQvdC+INGD0LLQtdC70LjRh9C40LLQsNC10YIg0L3QvtC80LXRgCDQvdCwIDEu0JTQu9GPINGE0L7RgNC80LjRgNC+0LLQsNC90LjRjyDQvdC+0LzQtdGA0LAg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPIFN5c3RlbUlELCBDb25maWdJdGVtQ2xhc3NJRCDQuCDRgdGH0LXRgtGH0LjQui4g0KTQvtGA0LzQsNGCIC0gIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCDRgi7QtS4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ9Cj0YHRgtCw0L3QvtCy0LjRgtGMINGB0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAg0JrQlSDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCwg0LrQvtCz0LTQsCDQt9Cw0Y/QstC60LAg0YHQstGP0LfQsNC90LAg0YEg0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC90LAg0Y3QutGA0LDQvdC1INC80LDRgdGB0L7QstGL0YUg0LTQtdC50YHRgtCy0LjQuSDRgSDQmtCVINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAg0L3QsCDRjdC60YDQsNC90LUg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0KHQstGP0LfQsNGC0YwgKExpbmspINC00LvRjyDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INGB0LLRj9C30Lgg0JrQlSDRgSDQtNGA0YPQs9C40Lwg0L7QsdGK0LXQutGC0L7QvCDQvdCwINGN0LrRgNCw0L3QtSDQv9C+0LvQvdC+0LPQviAoem9vbSB2aWV3KSDQv9GA0L7RgdC80L7RgtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINC00LvRjyDQtNC+0YHRgtGD0L/QsCDQuiDQuNGB0YLQvtGA0LjQuCDQmtCVINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0JrQlSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0JjRgdGC0L7RgNC40Y8g0LTQu9GPINC/0YDQvtGB0LzQvtGC0YDQsCDQuNGB0YLQvtGA0LjQuCDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQtNC70Y8g0YPQtNCw0LvQtdC90LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyDQv9GA0Lgg0L/QvtC00YDQvtCx0L3QvtC8INC/0YDQvtGB0LzQvtGC0YDQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQlNGD0LHQu9C40YDQvtCy0LDRgtGMINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0Lkg0JrQlSDQv9GD0YLQtdC8INC60L7Qv9C40YDQvtCy0LDQvdC40Y8g0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0YLQtdC60YPRidC10Lkg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCU0YPQsdC70LjRgNC+0LLQsNGC0Ywg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7QuSDQmtCVINC/0YPRgtC10Lwg0LrQvtC/0LjRgNC+0LLQsNC90LjRjyDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDRgtC10LrRg9GJ0LXQuSDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC00LvRjyDQuNC30LzQtdC90LXQvdC40Y8g0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQndCw0LfQsNC0INC/0YDQuCDQv9C+0LTRgNC+0LHQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhiDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQn9C10YfQsNGC0Ywg0LTQu9GPINC/0LXRh9Cw0YLQuCDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQtNC70Y8g0L/QvtC00YDQvtCx0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwINCa0JUg0L/RgNC4INC+0LHQt9C+0YDQtSDQmtCVINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQtyDQuNGB0YLQvtGA0LjQuCDRgdC+0LTQtdGA0LbQuNC80L7Qs9C+INCa0JUgKNC/0L7RgNGP0LTQvtC6INC/0L7QutCw0LfQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAICjQv9GA0LXRhNC40LrRgSkg0Log0L3QvtC80LXRgNGDINCa0JUsINGCLtC1INCa0JVf4oSWLCDQmtCVIywg0KPRh9C10YLQvdGL0Llf0Y3Qu9C10LzQtdC90YJf4oSWLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiAtIENvbmZpZ0l0ZW0jICjQuNC70Lgg0LXQs9C+INC/0LXRgNC10LLQvtC0KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn0LrQu9Cw0YHRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvRjNC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9C/0L7RgdGC0L/RgNC+0LTRg9C60YLQuNCy0L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LXQtNC/0YDQvtC00YPQutGC0LjQstC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YLQuNCy0L3Ri9C5JzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/sk_SK_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c2tfU0tfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdadsOkxI3FoWnFpSBwb2jEvmFkJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2NraW5nIFN0YXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdLYW5jZWzDoXJpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICdPayc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNlYXJjaCBhdHRyaWJ1dGUgZm9yIENJIHNlYXJjaCBzY3JlZW4uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/sl_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c2xfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdQb3ZlxI1hbiBwb2dsZWQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdNZWQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAxJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICcnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ1Bpc2FybmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Language/sr_Cyrl_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3JfQ3lybF9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FkbWluRHluYW1pY0ZpZWxkQ29uZmlnSXRlbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCBhbmQgdGhlIHZhbHVlIG11c3QgYmUgYWxwaGFudW1lcmljLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNdXN0IGJlIHVuaXF1ZSBhbmQgb25seSBhY2NlcHRzIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIHRoZSBvcmRlciBpbiB3aGljaCB0aGlzIGZpZWxkIHdpbGwgYmUgc2hvd24gb24gdGhlIHNjcmVlbnMgd2hlcmUgaXQgaXMgYWN0aXZlLid9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FkbWluRHluYW1pY0ZpZWxkQ29uZmlnSXRlbS9Db25maWcudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGNsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzZWxlY3RlZCBjb25maWcgaXRlbSBjbGFzcyBpcyBpbnZhbGlkIG9yIGRvZXMgbm90IGV4aXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGRlcGxveW1lbnQgc3RhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGxpbmsgdHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBsaW5rIHR5cGUgdG8gZW5hYmxlIGxpbmtpbmcgYmV0d2VlbiB0aGUgdGlja2V0IGFuZCB0aGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW1zLiBOb3RlIHRoYXQgbGlua2luZyBpcyBvbmx5IGF2YWlsYWJlIGZvciBkeW5hbWljIGZpZWxkcyBvZiB0aWNrZXRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGxpbmsgc291cmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGxpbmsgcmVtb3ZhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byByZW1vdmUgbGlua3MgYmV0d2VlbiB0aGUgdGlja2V0IGFuZCBjb25maWcgaXRlbXMgdGhhdCBhcmUgcmVtb3ZlZCBmcm9tIHRoaXMgZmllbGQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0ga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgZmlsbGVkIHdpdGggdmFsdWVzIG9mIHRoZSBzYW1lIHNlbGVjdGVkIGNvbmZpZyBpdGVtKHMpLid9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FkbWluSVRTTUNvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAn0JTQtdGE0LjQvdC40YbQuNGY0LAg0LrQu9Cw0YHQtSDQv9GA0L7QvNC10L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn0KPQv9GA0LDQstGZ0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjQvCDRgdGC0LDQstC60LDQvNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAn0JrQu9Cw0YHQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uJ30gPSAn0JTQtdGE0LjQvdC40YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAn0J/RgNC+0LzQtdC90LgnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnREYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWMudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IFN0YXRlJ30gPSAn0KHRgtCw0ZrQtSDQuNC90YbQuNC00LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ch0YLQsNGC0YPRgSDRgNCw0YHQv9C+0YDQtdGS0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ9Ca0LvQsNGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfQotGA0LXQvdGD0YLQvdC+INGB0YLQsNGa0LUg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDRgtGA0LXQvdGD0YLQvdC+0LMg0YHRgtCw0YLRg9GB0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9CX0LDQtNGa0Lgg0L/Rg9GCINC/0YDQvtC80LXRmtC10L3Qvic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQWRkLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgZm9yIENsYXNzZXMnfSA9ICfQpNC40LvRgtC10YAg0LfQsCDQutC70LDRgdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ9CY0LfQsNCx0LXRgNC40YLQtSDQutC70LDRgdGDINC40Lcg0LvQuNGB0YLQtSDRgNCw0LTQuCDQutGA0LXQuNGA0LDRmtCwINC90L7QstC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNINC80LDRgdC+0LLQvdCwINCw0LrRhtC40ZjQsCDQvdCwINGC0LjQutC10YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn0KHRgtCw0YLRg9GBINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn0KHRgtCw0ZrQtSDQuNC90YbQuNC00LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn0J/QvtCy0LXQttC4INGB0LAg0LTRgNGD0LPQuNC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfQndC10LjRgdC/0YDQsNCy0LDQvSDQsdGA0L7RmCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn0JHRgNC+0Zgg0LTRgNGD0LPQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQt9CwINC/0L7QstC10LfQuNCy0LDRmtC1Lic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICfQlNCwINC70Lgg0YHRgtCy0LDRgNC90L4g0LbQtdC70LjRgtC1INC00LAg0L7QsdGA0LjRiNC10YLQtSDQvtCy0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3RgyDRgdGC0LDQstC60YM/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0J3QsNC30LjQsiDQvtCy0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ9Cd0LDQt9C40LIg0ZjQtSDQstC10Zsg0YMg0YPQv9C+0YLRgNC10LHQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjQvCDRgdGC0LDQstC60LDQvNCwINCx0YDQvtGYOiAlcyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICfQmNGB0YLQvtGA0LjRmNCw0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ9Ch0LDQtNGA0LbQsNGYINC40YHRgtC+0YDQuNGY0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ9CS0YDQtdC80LUg0LrRgNC10LjRgNCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfQo9Cy0LXRm9Cw0L3QuCDQv9GA0LXQs9C70LXQtCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfQn9C+0LTQtdGI0LDQstCw0ZrQtSDQutC+0L3RgtC10LrRgdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L/QviDRgdGC0YDQsNC90LgnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJ9CT0LXQvdC10YDQuNGH0LrQsCDRgtCw0LHQtdC70LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQn9GA0LXRgtGA0LDQttC40YLQtSDQuCDRgyDQv9GA0LXRgtGF0L7RgtC90LjQvCDQstC10YDQt9C40ZjQsNC80LA/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdCwINGB0YLQsNCy0LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRmNCwINC+INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L7RmCDRgdGC0LDQstC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn0KLRgNC10L3Rg9GC0L3QuCDRgdGC0LDRgtGD0YEg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn0J/RgNC+0LzQtdC90LjQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAn0J/RgNC40LrQsNC20Lgg0ZjQtdC00L3RgyDQstC10YDQt9C40ZjRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJ9Cf0L7QutCw0LbQuCDRgdCy0LUg0LLQtdGA0LfQuNGY0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ9CS0LXRgNC30LjRmNCwIC0g0YHRgtCw0YLRg9GBINC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICfQktC10YDQt9C40ZjQsCAtINGB0YLQsNGC0YPRgSDQv9GA0LjQvNC10L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ9CR0YDQvtGYINCy0LXRgNC30LjRmNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICfQlNC10YLQsNGZ0Lgg0LLQtdGA0LfQuNGY0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICfQodCy0L7RmNGB0YLQstC+JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINC/0YDQuNGB0YLRg9C/INC60LvQsNGB0LghJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn0J/QvtGC0YDQtdCx0L3QsCDRmNC1INCx0LDRgCDRmNC10LTQvdCwINC40LfQsNCx0YDQsNC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn0J3QtdC80LDRgtC1INC/0YDQsNCy0L4g0YPQv9C40YHQsCDQt9CwINC+0LLRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdGDINGB0YLQsNCy0LrRgzogJXMuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdCwINGB0YLQsNCy0LrQsCAiJXMiINC90LjRmNC1INC90LDRktC10L3QsCDRgyDQsdCw0LfQuCDQv9C+0LTQsNGC0LDQutCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ9Cd0LjRmNC1INCx0LjQu9C+INC80L7Qs9GD0ZvQtSDQvtCx0YDQuNGB0LDRgtC4IENvbmZpZ0l0ZW1JRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ9Cd0LjRmNC1INC/0YDQvtC90LDRktC10L3QsCDQstC10YDQt9C40ZjQsCDQt9CwIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGB0YMg0LTQsNGC0LggQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCDQuNC70LggQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiDQv9GA0LjRgdGC0YPQvyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn0J3QuNGY0LUg0L/RgNC+0L3QsNGS0LXQvdCwINC00LXRhNC40L3QuNGG0LjRmNCwINC30LAg0LrQu9Cw0YHRgyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDRgdC1INC/0YDQuNC60LDQt9Cw0YLQuCDQuNGB0YLQvtGA0LjRmNCw0YIsINGY0LXRgCDQvdC40ZjQtSDQtNCw0YIgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9GA0LjQutCw0LfQsNGC0Lgg0LjRgdGC0L7RgNC40ZjQsNGCLCDQvdC40ZjQtSDQtNC+0LfQstC+0ZnQtdC9INC/0YDQuNGB0YLRg9C/ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn0J3QvtCy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn0J3QvtCy0LAg0LLQtdGA0LfQuNGY0LAgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9CQ0LbRg9GA0LjRgNCw0L3QviDRgdGC0LDRmtC1INGA0LDRgdC/0L7RgNC10LTQsCAo0L3QvtCy0L49JXMsINGB0YLQsNGA0L49JXMpICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQkNC20YPRgNC40YDQsNC90L4g0YHRgtCw0ZrQtSDQuNC90YbQuNC00LXQvdGC0LAgKNC90L7QstC+PSVzLCDRgdGC0LDRgNC+PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ9Ce0LHRgNC40YHQsNC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9Cf0L7QstC10LfQsNC90L4g0YHQsCAlcyAo0YLQuNC/PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn0J7QsdGA0LjRgdCw0L3QsCDQstC10LfQsCDRgdCwICVzICjRgtC40L89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfQkNC20YPRgNC40YDQsNC90LAg0LTQtdGE0LjQvdC40YbQuNGY0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ9CQ0LbRg9GA0LjRgNCw0L0g0L3QsNC30LjQsiAo0L3QvtCy0Lg9JXMsINGB0YLQsNGA0Lg9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn0JDQttGD0YDQuNGA0LDQvSDQsNGC0YDQuNCx0YPRgiVzINGB0LAgIiVzIiDQvdCwICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn0JLQtdGA0LfQuNGY0LAgJXMg0ZjQtSDQvtCx0YDQuNGB0LDQvdCwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGB0YMg0LTQsNGC0LggQ29uZmlnSXRlbUlEINC40LvQuCBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9GA0LjQutCw0LfQsNGC0Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAsINC90LjRmNC1INC00LDRgiDQv9GA0LjRgdGC0YPQvyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQmNCUINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1ICVzINC90LjRmNC1INC90LDRktC10L0g0YMg0LHQsNC30Lgg0L/QvtC00LDRgtCw0LrQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfQmNC0INCy0LXRgNC30LjRmNC1ICVzINC90LjRmNC1INC90LDRktC10L0g0YMg0LHQsNC30Lgg0L/QvtC00LDRgtCw0LrQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfRiNGC0LDQvNC/0LDQvdGDINC+0LQg0YHRgtGA0LDQvdC1ICVzINGDICVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn0J3QtdC40YHQv9GA0LDQstCw0L0g0JjQlCDQutC70LDRgdC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiDQmNCUINC60LvQsNGB0LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINC/0YDQuNGB0YLRg9C/INC+0LLQvtGYINC60LvQsNGB0LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfQndC10LzQsCDRgNC10LfRg9C70YLQsNGC0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn0KDQtdC30YPQu9GC0LDRgiDQv9GA0LXRgtGA0LDQs9C1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9GA0LjQutCw0LfQsNGC0Lgg0YHRgtCw0LLQutCwLCDQvdC40ZjQtSDQtNCw0YIg0L/RgNC40YHRgtGD0L8g0LfQsCDQvtCy0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3RgyDRgdGC0LDQstC60YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn0L7Qv9C10YDQsNGC0LjQstC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9GD0L/QvtC30L7RgNC10ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ9C40L3RhtC40LTQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0YLQsNGC0YPRgSDQv9GA0LjQvNC10L3QtSDQvtCy0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQodGC0LDRgtGD0YEg0LjQvdGG0LjQtNC10L3RgtCwINC+0LLQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ9Cf0YDQuNC60LDQt9Cw0L3QtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfQmNC30LzQtdGS0YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn0JzQsNC60YHQuNC80LDQu9C90Lgg0LHRgNC+0Zgg0ZjQtdC00L3QvtCzINC10LvQtdC80LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAn0J/RgNCw0LfQvdCwINC/0L7RmdCwINGD0LrQsNC30YPRmNGDINC00LAg0ZvQtSDQsNC60YLRg9C10LvQvdC1INCy0YDQtdC00L3QvtGB0YLQuCDQsdC40YLQuCDQt9Cw0LTRgNC20LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICfQn9GA0LXRgdC60L7Rh9C10L3Qvic7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn0JzQvtC00LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAn0KTQuNGA0LzQsCDQutC70LjRmNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICfQodC10YDQuNGY0YHQutC4INCx0YDQvtGYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ9Cf0YDQvtGG0LXRgdC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ9Cl0LDRgNC0INC00LjRgdC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAn0JrQsNC/0LDRhtC40YLQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAn0JzRgNC10LbQvdC4INCw0LTQsNC/0YLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ0lQINC/0YDQtdC60L4gREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnSVAg0LDQtNGA0LXRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJ9CT0YDQsNGE0LjRh9C60Lgg0LDQtNCw0L/RgtC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAn0JTRgNGD0LPQsCDQvtC/0YDQtdC80LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAn0JTQsNGC0YPQvCDQuNGB0YLQuNGG0LDRmtCwINCz0LDRgNCw0L3RhtC40ZjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICfQlNCw0YLRg9C8INC40L3RgdGC0LDQu9Cw0YbQuNGY0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ9Ci0LXQu9C10YTQvtC9IDEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJ9Ci0LXQu9C10YTQvtC9IDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAn0JjQvNC10ZjQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICfQnNGA0LXQttC90LAg0LDQtNGA0LXRgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAn0J/QvtC00LzRgNC10LbQvdCwINC80LDRgdC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ9Cc0YDQtdC20L3QuCDQv9GA0L7Qu9Cw0LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAn0KLQuNC/INC70LjRhtC10L3RhtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAn0JvQuNGG0LXQvdGG0L3QuCDQutGZ0YPRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ9Ca0L7Qu9C40YfQuNC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAn0JTQsNGC0YPQvCDQuNGB0YLQuNGG0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAn0JzQtdC00LjRmNCwJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICfQoNCw0YfRg9C90LDRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9Cl0LDRgNC00LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfQnNGA0LXQttCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn0KHQvtGE0YLQstC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9CY0YHRgtC10LrQu9C+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn0J7QtNGA0LbQsNCy0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn0J/QuNC70L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn0J/Qu9Cw0L3QuNGA0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn0J3QsCDQv9C+0L/RgNCw0LLRhtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfQoNCw0YHRhdC+0LTQvtCy0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Cg0LXRhtC10L3Qt9C40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn0KLQtdGB0YIvUUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn0JvQsNC/0YLQvtC/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfQlNC10YHQutGC0L7Qvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICdQREEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAn0KHQtdGA0LLQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn0JTRgNGD0LPQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAn0JzQvtC90LjRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJ9Co0YLQsNC80L/QsNGHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJ9Ch0LLQuNGHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ9Cg0YPRgtC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdXTEFOINC/0YDQuNGB0YLRg9C/0L3QsCDRgtCw0YfQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJ9Ch0LjQs9GD0YDQvdC+0YHQvdC4INGD0YDQtdGS0LDRmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAn0KPRgNC10ZLQsNGYINC30LAg0YDQtdC30LXRgNCy0L3QtSDQutC+0L/QuNGY0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQnNC40YgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfQotCw0YHRgtCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAn0JrQsNC80LXRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ9Cf0YDQvtGY0LXQutGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ9Cc0L7QtNC10LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdQQ01DSUEg0LrQsNGA0YLQuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1VTQiDRg9GA0LXRktCw0ZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAn0J/RgNC40LrRmdGD0YfQvdCwINGB0YLQsNC90LjRhtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICfQodC60LXQvdC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfQl9Cz0YDQsNC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAn0JrQsNC90YbQtdC70LDRgNC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ9Ch0L/RgNCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9Ch0L7QsdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICfQoNC10LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAn0KDQsNC00L3QviDQvNC10YHRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJ9Cj0YLQuNGH0L3QuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICfQmNCiINC+0LHRmNC10LrQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJ1RlbGNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJ0dTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICfQmtC70LjRmNC10L3RgtGB0LrQsCDQsNC/0LvQuNC60LDRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAn0J/QvtGB0YDQtdC00L3QuNGH0LrQuCDQv9GA0L7Qs9GA0LDQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICfQodC10YDQstC10YDRgdC60LAg0LDQv9C70LjQutCw0YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAn0JrQu9C40ZjQtdC90YLRgdC60LggT1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAn0KHQtdGA0LLQtdGA0YHQutC4IE9TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGC0LjQstC90Lgg0LDQu9Cw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAn0JrQvtGA0LjRgdC90LjRh9C60Lgg0LDQu9Cw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICfQo9Cz0YDQsNGS0LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ9Cf0L7RmNC10LTQuNC90LDRh9C90LAg0LvQuNGG0LXQvdGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICfQn9C+INC60L7RgNC40YHQvdC40LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAn0J/QviDQv9GA0L7RhtC10YHQvtGA0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ9Cf0L4g0YHQtdGA0LLQtdGA0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICfQn9C+INGH0LLQvtGA0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICfQmtC+0LvQuNGH0LjQvdGB0LrQtSDQu9C40YbQtdC90YbQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICfQmtC+0LzQv9Cw0L3QuNGY0YHQutCwINC70LjRhtC10L3RhtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAn0KDQsNC30LLQvtGY0L3QsCDQu9C40YbQtdC90YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAn0JTQtdC80L7QvdGB0YLRgNCw0YbQuNC+0L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICfQktGA0LXQvNC10L3RgdC60Lgg0L7Qs9GA0LDQvdC40YfQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfQkdC10YHQv9C70LDRgtC90LggKionOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICfQntGC0LLQvtGA0LXQvdC4INC60L7QtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICfQndC10L7Qs9GA0LDQvdC40YfQtdC90L4nOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICfQoyDRgNC10LTRgyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn0JTQvtC00LXRmdC10L3QtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0LTQvtC00LXRmdC10L3QtSDRhNC40YDQvNC4INC60LvQuNGY0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQtNC+0LTQtdGZ0LXQvdC1INC60LvQuNGY0LXQvdGC0YMg0LrQvtGA0LjRgdC90LjQutGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCINC/0L7QtNC10YjQsNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQn9GA0L7QstC10YDQsCDRmNC10LTQuNC90YHRgtCy0LXQvdC+0LMg0LjQvNC10L3QsCDRgdCw0LzQviDRgyDQvtC60LLQuNGA0YMg0LjRgdGC0LUg0LrQu9Cw0YHQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4IChcJ9C60LvQsNGB0LBcJykg0LjQu9C4INCz0LvQvtCx0LDQu9C90L4gKFwn0LPQu9C+0LHQsNC70L3QvlwnKSwg0YjRgtC+INC30L3QsNGH0Lgg0LTQsCDRmNC1INGB0LLQsNC60LAg0L/QvtGB0YLQvtGY0LXRm9CwINCa0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwINGD0LfQtdGC0LAg0YMg0L7QsdC30LjRgCDRgyDQv9GA0L7QstC10YDQuCDQtNGD0L/Qu9C40LrQsNGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn0JTQvtC00LDQstCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfQo9GA0LXRktC40LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC00L7Qs9Cw0ZLQsNGY0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQutC+0ZjQuCDQvtC80L7Qs9GD0ZvQsNCy0LAg0LHQtdC70LXQttC10ZrQtSDRgyDQuNGB0YLQvtGA0LjRmNCw0YIg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ9CY0YHRgtC+0YDQuNGY0LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn0KjRgtCw0LzQv9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn0JTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJ9CR0YDQvtGYINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC/0L4g0YHRgtGA0LDQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn0JHQsNC30LAg0L/QvtC00LDRgtCw0LrQsCDRg9C/0YDQsNCy0ZnQsNGa0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGY0L7QvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LzQsNGB0L7QstC90LUg0LDQutGG0LjRmNC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNC8INGB0YLQsNCy0LrQsNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwINC/0YDQtdGC0YDQsNC20YPRmNC1INC/0L7Qt9Cw0LTQuNC90YHQutC4INGA0YPRgtC10YAg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn0JrRgNC10LjRgNCw0ZrQtSDQuCDRg9C/0YDQsNCy0ZnQsNGa0LUg0LTQtdGE0LjQvdC40YbQuNGY0LAg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LDQutGG0LjRmNC1INCz0LTQtSDRmNC1INC00YPQs9C80LUg0L/QvtGB0YLQsNCy0LrQuCDQtNC+0YHRgtGD0L/QvdC+INGDINC/0L7QstC10LfQsNC90L7QvCDQs9GA0LDRhNC40YfQutC+0Lwg0LXQu9C10LzQtdC90YLRgyDQvtCx0ZjQtdC60YLQsCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDQnNC+0LvQuNC80L4g0LTQsCDQuNC80LDRgtC1INC90LAg0YPQvNGDINC00LAg0L7QstC1INCQ0LrRhtC40ZjQtSDQvNC+0YDQsNGY0YMg0LTQsCDQsdGD0LTRgyDRgNC10LPQuNGB0YLRgNC+0LLQsNC90LUg0YMg0YHQu9C10LTQtdGb0LjQvCBKUyDQuCBDU1Mg0LTQsNGC0L7RgtC10LrQsNC80LA6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzINC4IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L3QtdC+0L/RhdC+0LTQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0LrRgNC10LjRgNCw0ZrQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrQvtGA0LjRiNGb0LXRmtC10Lwg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDQsdGA0LjRgdCw0ZrQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrRgNC+0Lcg0LPQtdC90LXRgNC40YfQutC4INC40L3RgtC10YDRhNC10ZjRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L3QtdC+0L/RhdC+0LTQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0LTQvtCx0LjRmNCw0ZrQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrQvtGA0LjRiNGb0LXRmtC10Lwg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC90LXQvtC/0YXQvtC00L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINC/0YDQtdGC0YDQsNCz0YMgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RgNC40YjRm9C10ZrQtdC8INCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvdC10L7Qv9GF0L7QtNC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDQsNC20YPRgNC40YDQsNGa0LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RgNC40YjRm9C10ZrQtdC8INCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC80L7QtNGD0Lsg0L/RgNC10LPQu9C10LTQsCDQt9CwINC80LDQu9C4INC/0YDQuNC60LDQtyDQu9C40YHRgtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LguICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgNC10LPRg9C70LDRgNC90LUg0LjQt9GA0LDQt9C1INC30LAg0YHQstCw0LrRgyDQutC70LDRgdGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGA0LDQtNC4INC/0YDQvtCy0LXRgNC1INC90LDQt9C40LLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQuCDQv9GA0LjQutCw0LfQsCDQv9GA0LjQv9Cw0LTQsNGY0YPRm9C40YUg0L/QvtGA0YPQutCwINC+INCz0YDQtdGI0LrQsNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/QvtC00L7QsdGY0LXQutCw0YIg0LrQu9Cw0YHQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INCx0YDQvtGYINGA0LXQtNC+0LLQsCDQt9CwINC10LTQuNGC0L7RgCDQtNC10YTQuNC90LjRhtC40ZjQtSBDSSDRgyDQsNC00LzQuNC90LjRgdGC0YDQsNGC0LjQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgNC10LTQvtGB0LvQtdC0INC40L3RhtC40LTQtdC90YLQvdC40YUg0YHRgtCw0ZrQsCDQvtC0INCy0LjRgdC+0LrQvtCzICjQvdC/0YAg0LrRgNC40YLQuNGH0L3Qvikg0LTQviDQvdC40YHQutC+0LMgKNC90L/RgCDRhNGD0L3QutGG0LjQvtC90LDQu9C90L4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0YDQtdC70LXQstCw0L3RgtC90LAg0YHRgtCw0ZrQsCDRgNCw0YHQv9C+0YDQtdGS0LjQstCw0ZrQsCDQs9C00LUg0L/QvtCy0LXQt9Cw0L3QuCDRgtC40LrQtdGC0Lgg0LzQvtCz0YMg0LTQsCDRg9GC0LjRh9GDINC90LAg0YHRgtCw0YLRg9GBIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LPRgNCw0L3QuNGG0YMg0L/RgNC10YLRgNCw0LPQtSDQt9CwINC10LrRgNCw0L0gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCz0YDQsNC90LjRhtGDINC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQtdC60YDQsNC9IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDRgyDQv9GA0LXQs9C70LXQtNGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LguINCe0LLQsCDQvtC/0YbQuNGY0LUg0L3QtdC80LAg0YPRgtC40YbQsNGYINC90LAg0L/QvtC30LjRhtC40ZjQtSDQutC+0LvQvtC90LAuINCd0LDQv9C+0LzQtdC90LA6INGD0LrQvtC70LjQutC+INGY0LUg0LjQt9Cw0LHRgNCw0L0g0YTQuNC70YLQtdGAIFwn0KHQstC1XCcg0LrQu9Cw0YHQsCDQutC+0LvQvtC90LUg0ZjQtSDRg9Cy0LXQuiDQtNC+0YHRgtGD0L/QvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0YDQuNC60LDQt9Cw0L3QtSDQutC+0LvQvtC90LUg0YMg0L/RgNC10YLRgNCw0LfQuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4LiDQntCy0LAg0L7Qv9GG0LjRmNC1INC90LXQvNCwINGD0YLQuNGG0LDRmCDQvdCwINC/0L7Qt9C40YbQuNGY0LUg0LrQvtC70L7QvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0YDQuNC60LDQt9Cw0L3QtSDQutC+0LvQvtC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDRgyDQv9GA0LXQs9C70LXQtNGDINGDINC30LDQstC40YHQvdC+0YHRgtC4INC+0LQg0LrQu9Cw0YHQtS4g0KHQstCw0LrQuCDRg9C90L7RgSDQvNC+0YDQsCDRgdCw0LTRgNC20LDRgtC4INC/0YDQtdGE0LjQutGBINGB0LAg0L3QsNC30LjQstC+0Lwg0LrQu9Cw0YHQtSDQuCDQtNCy0L7RgtCw0YfQutC+0LwgKNC90L/RgC4gQ29tcHV0ZXI6OikuINCf0L7RgdGC0L7RmNC4INC/0LDRgCDQsNGC0YDQuNCx0YPRgtCwINC60L7RmNC4INGB0YMg0LfQsNGY0LXQtNC90LjRh9C60Lgg0LfQsCDRgdCy0LUg0LrQu9Cw0YHQtSAo0L3Qv9GALiDQt9CwINC60LvQsNGB0YMgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0L/RgNC40LrQsNC3INC/0L7RmNC10LTQuNC90LDRh9C90LjRhSDQsNGC0YDQuNCx0YPRgtCwINC40Lcg0LTQtdGE0LjQvdC40YbQuNGY0LUsINC80L7RgNCw0YLQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0YHQu9C10LTQtdGb0YMg0YjQtdC80YMgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0YMgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0KPQutC+0LvQuNC60L4g0L3QtSDQv9C+0YHRgtC+0ZjQuCDRg9C90L7RgSDQt9CwINC/0L7RmNC10LTQuNC90LDRh9C90YMg0LrQu9Cw0YHRgywg0LHQuNGb0LUg0L/RgNC40LrQsNC30LDQvdC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC1INC60L7Qu9C+0L3QtSDQtNC10YTQuNC90LjRgdCw0L3QtSDRgyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INGDINC/0YDQtdGC0YDQsNC30Lgg0YMg0LfQsNCy0LjRgdC90L7RgdGC0Lgg0L7QtCDQutC70LDRgdC1LiDQodCy0LDQutC4INGD0L3QvtGBINC80L7RgNCwINGB0LDQtNGA0LbQsNGC0Lgg0L/RgNC10YTQuNC60YEg0YHQsCDQvdCw0LfQuNCy0L7QvCDQutC70LDRgdC1INC4INC00LLQvtGC0LDRh9C60L7QvCAo0L3Qv9GALiBDb21wdXRlcjo6KS4g0J/QvtGB0YLQvtGY0Lgg0L/QsNGAINCw0YLRgNC40LHRg9GC0LAg0LrQvtGY0Lgg0YHRgyDQt9Cw0ZjQtdC00L3QuNGH0LrQuCDQt9CwINGB0LLQtSDQutC70LDRgdC1ICjQvdC/0YAuINC30LAg0LrQu9Cw0YHRgyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4g0JfQsCDQv9GA0LjQutCw0Lcg0L/QvtGY0LXQtNC40L3QsNGH0L3QuNGFINCw0YLRgNC40LHRg9GC0LAg0LjQtyDQtNC10YTQuNC90LjRhtC40ZjQtSwg0LzQvtGA0LDRgtC1INC60L7RgNC40YHRgtC40YLQuCDRgdC70LXQtNC10ZvRgyDRiNC10LzRgyAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHRgyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQo9C60L7Qu9C40LrQviDQvdC1INC/0L7RgdGC0L7RmNC4INGD0L3QvtGBINC30LAg0L/QvtGY0LXQtNC40L3QsNGH0L3RgyDQutC70LDRgdGDLCDQsdC40ZvQtSDQv9GA0LjQutCw0LfQsNC90LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90LUg0LrQvtC70L7QvdC1INC00LXRhNC40L3QuNGB0LDQvdC1INGDIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9GA0LjQutCw0LfQsNC90LUg0LrQvtC70L7QvdC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0YMg0LTQvtC00LDRgtC60YMg0LrQvtC80LDQvdC00L3QtSDRgtCw0LHQu9C1INGDINC30LDQstC40YHQvdC+0YHRgtC4INC+0LQg0LrQu9Cw0YHQtS4g0KHQstCw0LrQuCDRg9C90L7RgSDQvNC+0YDQsCDRgdCw0LTRgNC20LDRgtC4INC/0YDQtdGE0LjQutGBINGB0LAg0L3QsNC30LjQstC+0Lwg0LrQu9Cw0YHQtSDQuCDQtNCy0L7RgtCw0YfQutC+0LwgKNC90L/RgC4gQ29tcHV0ZXI6OikuINCf0L7RgdGC0L7RmNC4INC/0LDRgCDQsNGC0YDQuNCx0YPRgtCwINC60L7RmNC4INGB0YMg0LfQsNGY0LXQtNC90LjRh9C60Lgg0LfQsCDRgdCy0LUg0LrQu9Cw0YHQtSAo0L3Qv9GALiDQt9CwINC60LvQsNGB0YMgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0L/RgNC40LrQsNC3INC/0L7RmNC10LTQuNC90LDRh9C90LjRhSDQsNGC0YDQuNCx0YPRgtCwINC40Lcg0LTQtdGE0LjQvdC40YbQuNGY0LUsINC80L7RgNCw0YLQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0YHQu9C10LTQtdGb0YMg0YjQtdC80YMgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0YMgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0KPQutC+0LvQuNC60L4g0L3QtSDQv9C+0YHRgtC+0ZjQuCDRg9C90L7RgSDQt9CwINC/0L7RmNC10LTQuNC90LDRh9C90YMg0LrQu9Cw0YHRgywg0LHQuNGb0LUg0L/RgNC40LrQsNC30LDQvdC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC1INC60L7Qu9C+0L3QtSDQtNC10YTQuNC90LjRgdCw0L3QtSDRgyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAo0LrRmdGD0YcgRGVmYXVsdENvbHVtbnMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INGDINGC0LDQsdC10LvQuCDQstC10LfQsCDRgyDQt9Cw0LLQuNGB0L3QvtGB0YLQuCDQvtC0INC60LvQsNGB0LUuINCj0LrQvtC70LjQutC+INC90LUg0L/QvtGB0YLQvtGY0Lgg0YPQvdC+0YEg0LfQsCDQv9C+0ZjQtdC00LjQvdCw0YfQvdGDINC60LvQsNGB0YMsINCx0LjRm9C1INC/0YDQuNC60LDQt9Cw0L3QtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QtSDQutC+0LvQvtC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0YDQuNC60LDQt9Cw0L3QtSDQutC+0LvQvtC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDRgyDRgtCw0LHQtdC70Lgg0LLQtdC30LAg0YMg0LfQsNCy0LjRgdC90L7RgdGC0Lgg0L7QtCDQutC70LDRgdC1LiDQodCy0LDQutC4INGD0L3QvtGBINC80L7RgNCwINGB0LDQtNGA0LbQsNGC0Lgg0L/RgNC10YTQuNC60YEg0YHQsCDQvdCw0LfQuNCy0L7QvCDQutC70LDRgdC1INC4INC00LLQvtGC0LDRh9C60L7QvCAo0L3Qv9GALiBDb21wdXRlcjo6KS4g0J/QvtGB0YLQvtGY0Lgg0L/QsNGAINCw0YLRgNC40LHRg9GC0LAg0LrQvtGY0Lgg0YHRgyDQt9Cw0ZjQtdC00L3QuNGH0LrQuCDQt9CwINGB0LLQtSDQutC70LDRgdC1ICjQvdC/0YAuINC30LAg0LrQu9Cw0YHRgyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4g0JfQsCDQv9GA0LjQutCw0Lcg0L/QvtGY0LXQtNC40L3QsNGH0L3QuNGFINCw0YLRgNC40LHRg9GC0LAg0LjQtyDQtNC10YTQuNC90LjRhtC40ZjQtSwg0LzQvtGA0LDRgtC1INC60L7RgNC40YHRgtC40YLQuCDRgdC70LXQtNC10ZvRgyDRiNC10LzRgyAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHRgyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDQo9C60L7Qu9C40LrQviDQvdC1INC/0L7RgdGC0L7RmNC4INGD0L3QvtGBINC30LAg0L/QvtGY0LXQtNC40L3QsNGH0L3RgyDQutC70LDRgdGDLCDQsdC40ZvQtSDQv9GA0LjQutCw0LfQsNC90LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90LUg0LrQvtC70L7QvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC60L7RmNC4INGC0LjQvyDQstC10LfQtSAo0LPQu9C10LTQsNC90L4g0LjQtyDQv9C10YDRgdC/0LXQutGC0LjQstC1INGC0LjQutC10YLQsCkg0LzQvtC20LUg0LTQsCDRg9GC0LjRh9C1INC90LAg0L/QvtCy0LXQt9Cw0L3RgyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LrQvtGY0Lgg0YLQuNC/INGC0LjQutC10YLQsCDQvNC+0LbQtSDQtNCwINGD0YLQuNGH0LUg0L3QsCDRgdGC0LDRgtGD0YEg0L/QvtCy0LXQt9Cw0L3QtSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9CR0YDQuNGB0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0JHQvtGY0LAg0YHRgtCw0YLRg9GB0LAg0YDQsNGB0L/QvtGA0LXRktC40LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn0JTRg9C/0LvQuNC60LDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfQntC80L7Qs9GD0ZvQsNCy0LAg0LzQsNGB0L7QstC90YMg0LDQutGG0LjRmNGDINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNC8INGB0YLQsNCy0LrQsNC80LAg0YMg0L/RgNC40YHRgtGD0L/QvdC+0Lwg0YHQuNGB0YLQtdC80YMg0L7Qv9C10YDQsNGC0LXRgNCwINC90LAg0LLQuNGI0LUg0L7QtCDRmNC10LTQvdC1INGB0YLQsNCy0LrQtSDQuNGB0YLQvtCy0YDQtdC80LXQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn0JDQutGC0LjQstC40YDQsCDRgdCy0L7RmNGB0YLQstC+INC80LDRgdC+0LLQvdC1INCw0LrRhtC40ZjQtSDQvdCwINC60L7QvdGE0LjQs9C40YDQsNGG0LjQvtC90LjQvCDRgdGC0LDQstC60LDQvNCwINGB0LDQvNC+INC30LAg0LjQt9C70LjRgdGC0LDQvdC1INCz0YDRg9C/0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LAv0LTQtdCw0LrRgtC40LLQuNGA0LAg0YTRg9C90LrRhtC40ZjRgyDQt9CwINC/0YDQvtCy0LXRgNGDINGY0LXQtNC40L3RgdGC0LLQtdC90L7RgdGC0Lgg0LjQvNCw0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4LiDQn9GA0LUg0LDQutGC0LjQstC40YDQsNGa0LAg0L7QstC1INC+0L/RhtC40ZjQtSDRgtGA0LXQsdCw0YLQtSDQv9GA0L7QstC10YDQuNGC0Lgg0YMg0LLQsNGI0LXQvCDRgdC40YHRgtC10LzRgyDQv9C+0YHRgtC+0ZjQsNGa0LUg0LTRg9C/0LvQuNC60LDRgtCwINC90LAg0L/QvtGB0YLQvtGY0LXRm9C40Lwg0YHRgtCw0LLQutCw0LzQsC4g0KLQviDQvNC+0LbQtdGC0LUg0YPRgNCw0LTQuNGC0Lgg0L/QvtC80L7Rm9GDINGB0LrRgNC40L/RgtCwIGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQtNC+0LPQsNGS0LDRmNCwINC30LAg0L/QvtC00LXRiNCw0LLQsNGa0LUg0YHRgtCw0YLRg9GB0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQv9GA0LjQu9C40LrQvtC8INC/0L7RgdGC0LDQstGZ0LDRmtCwINCy0LXQt9CwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICfQn9GA0LXQs9C70LXQtCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn0JzQvtC00YPQuyDQt9CwINC/0YDQvtCy0LXRgNGDINCz0YDRg9C/0LUg0L7QtNCz0L7QstC+0YDQvdC1INC30LAg0LrQu9Cw0YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC+0LLQtdGA0YMg0LPRgNGD0L/QtSDQvtC00LPQvtCy0L7RgNC90LUg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdGDINGB0YLQsNCy0LrRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0LPQtdC90LXRgNC40YHQsNGa0LUg0YHRgtCw0YLQuNGB0YLQuNC60LUgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwINC80L7QtNGD0LvQsCDQvtCx0ZjQtdC60YLQsCDQt9CwINC00L7QtNCw0YLQsNC6INGD0LLQvtC3L9C40LfQstC+0LcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ9Cf0YDQtdCz0LvQtdC0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQv9C+0LfQsNC00LjQvdGB0LrQuCDQv9GA0LjQutCw0Lcg0LrQvtC90YLRgNC+0LvQvdC1INGC0LDQsdC70LUg0LvQuNGB0YLQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INGE0LjRgNC80LUg0LrQu9C40ZjQtdC90YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuICJMaW1pdCIg0LTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsdGA0L7RmCDQv9GA0LjQutCw0LfQsNC90LjRhSDRgdGC0LDQstC60LguICJHcm91cCIg0YHQtSDQutC+0YDQuNGB0YLQuCDQtNCwINC+0LPRgNCw0L3QuNGH0Lgg0L/RgNC40YHRgtGD0L8g0LTQvtC00LDRgtC60YMgKNC90L/RgC4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiINC+0LTRgNC10ZLRg9GY0LUg0LTQsCDQu9C4INGY0LUg0LTQvtC00LDRgtCw0Log0L/QvtC00YDQsNC30YPQvNC10LLQsNC90L4g0LDQutGC0LjQstC40YDQsNC9INC40LvQuCDQtNCwINGY0LUg0L3QtdC+0L/RhdC+0LTQvdC+INC00LAg0LPQsCDQutC+0YDQuNGB0L3QuNC6INC80LDQvdGD0LXQu9C90L4g0LDQutGC0LjQstC40YDQsC4gIkNhY2hlVFRMTG9jYWwiINGY0LUg0LLRgNC10LzQtSDRgyDQvNC40L3Rg9GC0LjQvNCwINC30LAg0LrQtdGI0LjRgNCw0ZrQtSDQtNC+0LTQsNGC0LrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQsdC+0ZjQtSDRgdGC0LDRgtGD0YHQsCDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINCw0YLRgNC40LHRg9GC0LUg0YPQt9C+0YDQutCwINCz0YDRg9C/0LUg0LfQsCDQtNC+0LfQstC+0LvQtSDQvtC/0YjRgtC10LMg0LrQsNGC0LDQu9C+0LPQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0YDQsNC90LjRhtC1ICjQvdCwINC60L7RmNC40LzQsCDRgdGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC/0YDQuNC60LDQt9Cw0L3QtSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9CwINC/0YDQuNGB0YLRg9C/0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDRg9C/0L7RgtGA0LXQsdGDINC10LrRgNCw0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0YLRgNC10LHQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0YPQv9C+0YLRgNC10LHRgyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC00LXRgtCw0LvQvdC+0LMg0L/RgNC40LrQsNC30LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC00L7QtNCw0LLQsNGa0LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC40LfQvNC10L3QtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINC40YHRgtC+0YDQuNGY0LDRgtCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtGC0YDQtdCx0L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINGD0L/QvtGC0YDQtdCx0YMg0LXQutGA0LDQvdCwINGI0YLQsNC80L/QtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0L7RgtGA0LXQsdC90LAg0L/RgNCw0LLQsCDQt9CwINCx0YDQuNGB0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9Cf0YDQtdGC0YDQsNCz0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAn0JHQuNGA0LAg0LzQvtC00YPQuyDQvtC/0LXRgNCw0YLQvtGA0LAg0LDRg9GC0L7QvNCw0YLRgdC60L7QsyDRg9Cy0LXRm9Cw0ZrQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4g0J7Qv9C10YDQsNGC0L7RgCDQsNGD0YLQvtC80LDRgtGB0LrQvtCzINGD0LLQtdGb0LDRmtCwINC/0L7QstC10ZvQsNCy0LAg0LHRgNC+0Zgg0YHRgtCw0LLQutC1LCBTeXN0ZW1JRCwgQ29uZmlnSXRlbUNsYXNzSUQg0Lgg0LrQvtGA0LjRiNGb0LXQvdC4INCx0YDQvtGY0LDRhy4g0KTQvtGA0LzQsNGCINGY0LUgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELtCx0YDQvtGY0LDRhyIsINC90L/RgCAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn0J/QvtGB0YLQsNCy0ZnQsCDRgdGC0LDRmtC1INC40L3RhtC40LTQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQutCw0LTQsCDRmNC1INGC0LjQutC10YIg0L/QvtCy0LXQt9Cw0L0g0YHQsCDRgdGC0LDQstC60L7QvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INGB0YLQsNGC0YPRgSDQv9GA0LjQvNC10L3QtSDQvdCwINC10LrRgNCw0L3RgyDQvNCw0YHQvtCy0L3QtSDQsNC60YbQuNGY0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INGB0YLQsNGC0YPRgSDQuNC90YbQuNC00LXQvdGC0LAg0L3QsCDQtdC60YDQsNC90YMg0LzQsNGB0L7QstC90LUg0LDQutGG0LjRmNC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC60L7RmNCwINC+0LzQvtCz0YPRm9Cw0LLQsCDQv9C+0LLQtdC30LjQstCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgdCwINC00YDRg9Cz0LjQvCDQvtCx0ZjQtdC60YLQvtC8INC90LAg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40ZjQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC/0YDQuNGB0YLRg9C/INC40YHRgtC+0YDQuNGY0LDRgtGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0L/RgNC10LPQu9C10LTRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9GA0LjRgdGC0YPQvyDQuNGB0YLQvtGA0LjRmNCw0YLRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQsdGA0LjRgdCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINGa0LXQvdC+0Lwg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGD0LzQvdC+0LbQsNCy0LDRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0L/RgNC10LPQu9C10LTRgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRg9C80L3QvtC20LDQstCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINGa0LXQvdC+0Lwg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0LjQt9C80LXQvdGDINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC90LAg0ZrQtdC90L7QvCDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9C+0LLRgNCw0YLQsNC6INC90LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1ICDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGI0YLQsNC80L/RgyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINGa0LXQvdC+0Lwg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQvdCwINC/0YDQtdCz0LvQtdC00YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC30YPRmNC1INC40YHRgtC+0YDQuNGY0LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSAo0L7QsdGA0L3Rg9GCINGA0LXQtNC+0YHQu9C10LQpINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGAINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3RgyDRgdGC0LDQstC60YMsINC90L/RgC4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuINCf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGY0LUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9C60LvQsNGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn0LPQu9C+0LHQsNC70L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9C/0L7RgdGCLdC/0YDQvtC00YPQutGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LUt0L/RgNC+0LTRg9C60YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ9C/0YDQvtC00YPQutGG0LjRmNCwJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/sr_Latn_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3JfTGF0bl9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FkbWluRHluYW1pY0ZpZWxkQ29uZmlnSXRlbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCBhbmQgdGhlIHZhbHVlIG11c3QgYmUgYWxwaGFudW1lcmljLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNdXN0IGJlIHVuaXF1ZSBhbmQgb25seSBhY2NlcHRzIGFscGhhbnVtZXJpYyBjaGFyYWN0ZXJzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIHRoZSBvcmRlciBpbiB3aGljaCB0aGlzIGZpZWxkIHdpbGwgYmUgc2hvd24gb24gdGhlIHNjcmVlbnMgd2hlcmUgaXQgaXMgYWN0aXZlLid9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FkbWluRHluYW1pY0ZpZWxkQ29uZmlnSXRlbS9Db25maWcudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGNsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzZWxlY3RlZCBjb25maWcgaXRlbSBjbGFzcyBpcyBpbnZhbGlkIG9yIGRvZXMgbm90IGV4aXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGRlcGxveW1lbnQgc3RhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGxpbmsgdHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBsaW5rIHR5cGUgdG8gZW5hYmxlIGxpbmtpbmcgYmV0d2VlbiB0aGUgdGlja2V0IGFuZCB0aGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW1zLiBOb3RlIHRoYXQgbGlua2luZyBpcyBvbmx5IGF2YWlsYWJlIGZvciBkeW5hbWljIGZpZWxkcyBvZiB0aWNrZXRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGxpbmsgc291cmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGxpbmsgcmVtb3ZhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byByZW1vdmUgbGlua3MgYmV0d2VlbiB0aGUgdGlja2V0IGFuZCBjb25maWcgaXRlbXMgdGhhdCBhcmUgcmVtb3ZlZCBmcm9tIHRoaXMgZmllbGQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0ga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgZmlsbGVkIHdpdGggdmFsdWVzIG9mIHRoZSBzYW1lIHNlbGVjdGVkIGNvbmZpZyBpdGVtKHMpLid9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FkbWluSVRTTUNvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnRGVmaW5pY2lqYSBrbGFzZSBwcm9tZW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdVcHJhdmxqYW5qZSBrb25maWd1cmFjaW9uaW0gc3RhdmthbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLbGFzYSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbid9ID0gJ0RlZmluaWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnUHJvbWVuaSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudERhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpYy50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGFuamUgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGF0dXMgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnS2xhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdUcmVudXRubyBzdGFuamUgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcCB0cmVudXRub2cgc3RhdHVzYSBpbmNpZGVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnWmFkbmppIHB1dCBwcm9tZW5qZW5vJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1BZGQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ0ZpbHRlciB6YSBrbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdJemFiZXJpdGUga2xhc3UgaXogbGlzdGUgcmFkaSBrcmVpcmFuamEgbm92ZSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlndXJhY2lvbmEgc3RhdmthJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nfSA9ICdJVFNNIG1hc292bmEgYWtjaWphIG5hIHRpa2V0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnU3RhdHVzIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ1N0YW5qZSBpbmNpZGVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnUG92ZcW+aSBzYSBkcnVnaW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ05laXNwcmF2YW4gYnJvaiBrb25maWd1cmFjaW9uZSBzdGF2a2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ0Jyb2ogZHJ1Z2Uga29uZmlndXJhY2lvbmUgc3RhdmtlIHphIHBvdmV6aXZhbmplLic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIHJlbGF0ZWQgY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdEYSBsaSBzdHZhcm5vIMW+ZWxpdGUgZGEgb2JyacWhZXRlIG92dSBrb25maWd1cmFjaW9udSBzdGF2a3U/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTmF6aXYgb3ZlIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnTmF6aXYgamUgdmXEhyB1IHVwb3RyZWJpIG5hIGtvbmZpZ3VyYWNpb25pbSBzdGF2a2FtYSBicm9qOiAlcyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdJc3RvcmlqYXQga29uZmlndXJhY2lvbmUgc3RhdmtlOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdTYWRyxb5haiBpc3RvcmlqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAnVnJlbWUga3JlaXJhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1V2ZcSHYW5pIHByZWdsZWQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnUG9kZcWhYXZhbmplIGtvbnRla3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UgcG8gc3RyYW5pJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICdHZW5lcmnEjWthIHRhYmVsYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdQcmV0cmHFvml0ZSBpIHUgcHJldGhvdG5pbSB2ZXJ6aWphbWE/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1cmFjaW9uYSBzdGF2a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpamEgbyBrb25maWd1cmFjaW9ub2ogc3RhdmtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1RyZW51dG5pIHN0YXR1cyByYXNwb3JlxJFpdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnUHJvbWVuaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJ1ByaWthxb5pIGplZG51IHZlcnppanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICdQb2thxb5pIHN2ZSB2ZXJ6aWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICdWZXJ6aWphIC0gc3RhdHVzIGluY2lkZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICdWZXJ6aWphIC0gc3RhdHVzIHByaW1lbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICdCcm9qIHZlcnppamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJ0RldGFsamkgdmVyemlqZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICdTdm9qc3R2byc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IHByaXN0dXAga2xhc2khJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdQb3RyZWJuYSBqZSBiYXIgamVkbmEgaXphYnJhbmEga29uZmlndXJhY2lvbmEgc3RhdmthISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05lbWF0ZSBwcmF2byB1cGlzYSB6YSBvdnUga29uZmlndXJhY2lvbnUgc3Rhdmt1OiAlcy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ3VyYWNpb25hIHN0YXZrYSAiJXMiIG5pamUgbmHEkWVuYSB1IGJhemkgcG9kYXRha2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTmlqZSBiaWxvIG1vZ3XEh2Ugb2JyaXNhdGkgQ29uZmlnSXRlbUlEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmlqZSBwcm9uYcSRZW5hIHZlcnppamEgemEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaXN1IGRhdGkgQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBpbGkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IHByaXN0dXAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05pamUgcHJvbmHEkWVuYSBkZWZpbmljaWphIHphIGtsYXN1ICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZSBtb8W+ZSBzZSBwcmlrYXphdGkgaXN0b3JpamF0LCBqZXIgbmlqZSBkYXQgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lIG1vxb5lIHNlIHByaWthemF0aSBpc3RvcmlqYXQsIG5pamUgZG96dm9samVuIHByaXN0dXAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3ZhIGtvbmZpZ3VyYWNpb25hIHN0YXZrYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3ZhIHZlcnppamEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0HFvnVyaXJhbm8gc3RhbmplIHJhc3BvcmVkYSAobm92bz0lcywgc3Rhcm89JXMpICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdBxb51cmlyYW5vIHN0YW5qZSBpbmNpZGVudGEgKG5vdm89JXMsIHN0YXJvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ09icmlzYW5hIGtvbmZpZ3VyYWNpb25hIHN0YXZrYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnUG92ZXphbm8gc2EgJXMgKHRpcD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ09icmlzYW5hIHZlemEgc2EgJXMgKHRpcD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0HFvnVyaXJhbmEgZGVmaW5pY2lqYSBrb25maWd1cmFjaW9uZSBzdGF2a2UgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0HFvnVyaXJhbiBuYXppdiAobm92aT0lcywgc3Rhcmk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQcW+dXJpcmFuIGF0cmlidXQlcyBzYSAiJXMiIG5hICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyemlqYSAlcyBqZSBvYnJpc2FuYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05pc3UgZGF0aSBDb25maWdJdGVtSUQgaWxpIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmUgbW/FvmUgc2UgcHJpa2F6YXRpIGtvbmZpZ3VyYWNpb25hIHN0YXZrYSwgbmlqZSBkYXQgcHJpc3R1cCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdJRCBrb25maWd1cmFjaW9uZSBzdGF2a2UgJXMgbmlqZSBuYcSRZW4gdSBiYXppIHBvZGF0YWthISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0lkIHZlcnppamUgJXMgbmlqZSBuYcSRZW4gdSBiYXppIHBvZGF0YWthISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnS29uZmlndXJhY2lvbmEgc3RhdmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfFoXRhbXBhbnUgb2Qgc3RyYW5lICVzIHUgJXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZWlzcHJhdmFuIElEIGtsYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IElEIGtsYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05pamUgZGF0IHByaXN0dXAgb3ZvaiBrbGFzaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05lbWEgcmV6dWx0YXRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1JlenVsdGF0IHByZXRyYWdlIGtvbmZpZ3VyYWNpb25paCBzdGF2a2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05lIG1vxb5lIHNlIHByaWthemF0aSBzdGF2a2EsIG5pamUgZGF0IHByaXN0dXAgemEgb3Z1IGtvbmZpZ3VyYWNpb251IHN0YXZrdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpdm5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd1cG96b3JlbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXR1cyBwcmltZW5lIG92ZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF0dXMgaW5jaWRlbnRhIG92ZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdQcmlrYXphbmUga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0l6bWXEkXUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWFrc2ltYWxuaSBicm9qIGplZG5vZyBlbGVtZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICdQcmF6bmEgcG9samEgdWthenVqdSBkYSDEh2UgYWt0dWVsbmUgdnJlZG5vc3RpIGJpdGkgemFkcsW+YW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICdQcmVza2/EjWVubyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJ0Zpcm1hIGtsaWplbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICdTZXJpanNraSBicm9qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb2Nlc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJ1JBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICdIYXJkIGRpc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICdLYXBhY2l0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICdNcmXFvm5pIGFkYXB0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnSVAgcHJla28gREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJ0dyYWZpxI1raSBhZGFwdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ0RydWdhIG9wcmVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICdEYXR1bSBpc3RpY2FuamEgZ2FyYW5jaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc3RhbGwgRGF0ZSd9ID0gJ0RhdHVtIGluc3RhbGFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICdUZWxlZm9uIDEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJ1RlbGVmb24gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICdJbWVqbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICdNcmXFvm5hIGFkcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ1BvZG1yZcW+bmEgbWFza2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ01yZcW+bmkgcHJvbGF6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ1RpcCBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAnTGljZW5jbmkga2xqdcSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnS29sacSNaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJ0RhdHVtIGlzdGljYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJ01lZGlqYSc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnUmHEjXVuYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkdmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdNcmXFvmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0dmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdJc3Rla2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnT2Ryxb5hdmFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmlyYW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnTmEgcG9wcmF2Y2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1Jhc2hvZG92YW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1JlY2VuemlqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ1NlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0RydWdvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICdNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICfFoHRhbXBhxI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnU3ZpxI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnUnV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdXTEFOIHByaXN0dXBuYSB0YcSNa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAnU2lndXJub3NuaSB1cmXEkWFqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICdVcmXEkWFqIHphIHJlemVydm5lIGtvcGlqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01pxaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYXN0YXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAnS2FtZXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ1Byb2pla3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ01vZGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnUENNQ0lBIGthcnRpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1VTQiB1cmXEkWFqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ1ByaWtsanXEjW5hIHN0YW5pY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ1NrZW5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1pncmFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdLYW5jZWxhcmlqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ1NwcmF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdTb2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICdSZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnUmFkbm8gbWVzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAnVXRpxI1uaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnSVQgb2JqZWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICdMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJ1dMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICdUZWxjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICdHU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnS2xpamVudHNrYSBhcGxpa2FjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICdQb3NyZWRuacSNa2kgcHJvZ3JhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICdTZXJ2ZXJza2EgYXBsaWthY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICdLbGlqZW50c2tpIE9TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJ1NlcnZlcnNraSBPUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAnQWRtaW5pc3RyYXRpdm5pIGFsYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnS29yaXNuacSNa2kgYWxhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ1VncmHEkWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnUG9qZWRpbmHEjW5hIGxpY2VuY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICdQbyBrb3Jpc25pa3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJ1BvIHByb2Nlc29ydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnUG8gc2VydmVydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJ1BvIMSNdm9ydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ0tvbGnEjWluc2tlIGxpY2VuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnS29tcGFuaWpza2EgbGljZW5jYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ1JhenZvam5hIGxpY2VuY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ0RlbW9uc3RyYWNpb25pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJ1ZyZW1lbnNraSBvZ3JhbmnEjWVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0Jlc3BsYXRuaSAqKic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJ090dm9yZW5pIGtvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICdOZW9ncmFuacSNZW5vJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnVSByZWR1JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdEb2RlbGplbmUga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UgZG9kZWxqZW5lIGZpcm1pIGtsaWplbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnS29uZmlndXJhY2lvbmUgc3RhdmtlIGRvZGVsamVuZSBrbGlqZW50dSBrb3Jpc25pa3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgcG9kZcWhYXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQcm92ZXJhIGplZGluc3R2ZW5vZyBpbWVuYSBzYW1vIHUgb2t2aXJ1IGlzdGUga2xhc2Uga29uZmlndXJhY2lvbmloIHN0YXZraSAoXCdrbGFzYVwnKSBpbGkgZ2xvYmFsbm8gKFwnZ2xvYmFsbm9cJyksIMWhdG8gem5hxI1pIGRhIGplIHN2YWthIHBvc3RvamXEh2EgS29uZmlndXJhY2lvbmEgc3RhdmthIHV6ZXRhIHUgb2J6aXIgdSBwcm92ZXJpIGR1cGxpa2F0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnRG9kYXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdVcmXEkWl2YW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCBkb2dhxJFhamEga29uZmlndXJhY2lvbmloIHN0YXZraSBrb2ppIG9tb2d1xIdhdmEgYmVsZcW+ZW5qZSB1IGlzdG9yaWphdCB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0lzdG9yaWphdCBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ8WgdGFtcGEga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnRGV0YWxqbmkgcHJpa2F6IGtvbmZpZ3VyYWNpbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnQnJvaiBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnT2dyYW5pxI1lbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnT2dyYW5pxI1lbmplIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgcG8gc3RyYW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmF6YSBwb2RhdGFrYSB1cHJhdmxqYW5qYSBrb25maWd1cmFjaWpvbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ01vZHVsIG1hc292bmUgYWtjaWplIG5hIGtvbmZpZ3VyYWNpb25pbSBzdGF2a2FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJhY2lvbmEgc3RhdmthIHByZXRyYcW+dWplIHBvemFkaW5za2kgcnV0ZXIgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0tyZWlyYW5qZSBpIHVwcmF2bGphbmplIGRlZmluaWNpamEgemEga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGFrY2lqZSBnZGUgamUgZHVnbWUgcG9zdGF2a2kgZG9zdHVwbm8gdSBwb3ZlemFub20gZ3JhZmnEjWtvbSBlbGVtZW50dSBvYmpla3RhIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIE1vbGltbyBkYSBpbWF0ZSBuYSB1bXUgZGEgb3ZlIEFrY2lqZSBtb3JhanUgZGEgYnVkdSByZWdpc3Ryb3ZhbmUgdSBzbGVkZcSHaW0gSlMgaSBDU1MgZGF0b3Rla2FtYTogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgaSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmnFoWUgbmVvcGhvZG5lIGRvenZvbGUgemEga3JlaXJhbmplIElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraSBrb3JpxaHEh2VuamVtIGdlbmVyacSNa29nIGludGVyZmVqc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgcG90cmVibmUgZG96dm9sZSB6YSBicmlzYW5qZSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga3JveiBnZW5lcmnEjWtpIGludGVyZmVqcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBuZW9waG9kbmUgZG96dm9sZSB6YSBkb2JpamFuamUgSVRTTSBrb25maWd1cmFjaW9uaWggc3RhdmtpIGtvcmnFocSHZW5qZW0gZ2VuZXJpxI1rb2cgaW50ZXJmZWpzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBuZW9waG9kbmUgZG96dm9sZSB6YSBwcmV0cmFndSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga29yacWhxIdlbmplbSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIG5lb3Bob2RuZSBkb3p2b2xlIHphIGHFvnVyaXJhbmplIElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraSBrb3JpxaHEh2VuamVtIGdlbmVyacSNa29nIGludGVyZmVqc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtb2R1bCBwcmVnbGVkYSB6YSBtYWxpIHByaWtheiBsaXN0ZSBrb25maWd1cmFjaW9uaWggc3RhdmtpLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSByZWd1bGFybmUgaXpyYXplIHphIHN2YWt1IGtsYXN1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSByYWRpIHByb3ZlcmUgbmF6aXZhIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBpIHByaWthemEgcHJpcGFkYWp1xIdpaCBwb3J1a2EgbyBncmXFoWthbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb2RyYXp1bWV2YW5pIHBvZG9iamVrYXQga2xhc2UgSVRTTSBrb25maWd1cmFjaW9uYSBzdGF2a2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBicm9qIHJlZG92YSB6YSBlZGl0b3IgZGVmaW5pY2lqZSBDSSB1IGFkbWluaXN0cmF0aXZub20gaW50ZXJmZWpzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnT2RyZcSRdWplIHJlZG9zbGVkIGluY2lkZW50bmloIHN0YW5qYSBvZCB2aXNva29nIChucHIga3JpdGnEjW5vKSBkbyBuaXNrb2cgKG5wciBmdW5rY2lvbmFsbm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSByZWxldmFudG5hIHN0YW5qYSByYXNwb3JlxJFpdmFuamEgZ2RlIHBvdmV6YW5pIHRpa2V0aSBtb2d1IGRhIHV0acSNdSBuYSBzdGF0dXMgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGdyYW5pY3UgcHJldHJhZ2UgemEgZWtyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgZ3JhbmljdSBwcmV0cmFnZSB6YSBla3JhbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICdPZHJlxJF1amUgcHJpa2F6YW5lIGtvbG9uZSB1IHByZWdsZWR1IGtvbmZpZ3VyYWNpb25paCBzdGF2a2kuIE92YSBvcGNpamUgbmVtYSB1dGljYWogbmEgcG96aWNpamUga29sb25hLiBOYXBvbWVuYTogdWtvbGlrbyBqZSBpemFicmFuIGZpbHRlciBcJ1N2ZVwnIGtsYXNhIGtvbG9uZSBqZSB1dmVrIGRvc3R1cG5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcHJpa2F6YW5lIGtvbG9uZSB1IHByZXRyYXppIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kuIE92YSBvcGNpamUgbmVtYSB1dGljYWogbmEgcG96aWNpamUga29sb25hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcHJpa2F6YW5lIGtvbG9uZSBrb25maWd1cmFjaW9uaWggc3RhdmtpIHUgcHJlZ2xlZHUgdSB6YXZpc25vc3RpIG9kIGtsYXNlLiBTdmFraSB1bm9zIG1vcmEgc2FkcsW+YXRpIHByZWZpa3Mgc2EgbmF6aXZvbSBrbGFzZSBpIGR2b3RhxI1rb20gKG5wci4gQ29tcHV0ZXI6OikuIFBvc3RvamkgcGFyIGF0cmlidXRhIGtvamkgc3UgemFqZWRuacSNa2kgemEgc3ZlIGtsYXNlIChucHIuIHphIGtsYXN1IENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBaYSBwcmlrYXogcG9qZWRpbmHEjW5paCBhdHJpYnV0YSBpeiBkZWZpbmljaWplLCBtb3JhdGUga29yaXN0aXRpIHNsZWRlxId1IMWhZW11IChwcmltZXIgemEga2xhc3UgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gVWtvbGlrbyBuZSBwb3N0b2ppIHVub3MgemEgcG9qZWRpbmHEjW51IGtsYXN1LCBiacSHZSBwcmlrYXphbmUgcG9kcmF6dW1ldmFuZSBrb2xvbmUgZGVmaW5pc2FuZSB1IElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHByaWthemFuZSBrb2xvbmUga29uZmlndXJhY2lvbmloIHN0YXZraSB1IHByZXRyYXppIHUgemF2aXNub3N0aSBvZCBrbGFzZS4gU3Zha2kgdW5vcyBtb3JhIHNhZHLFvmF0aSBwcmVmaWtzIHNhIG5heml2b20ga2xhc2UgaSBkdm90YcSNa29tIChucHIuIENvbXB1dGVyOjopLiBQb3N0b2ppIHBhciBhdHJpYnV0YSBrb2ppIHN1IHphamVkbmnEjWtpIHphIHN2ZSBrbGFzZSAobnByLiB6YSBrbGFzdSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gWmEgcHJpa2F6IHBvamVkaW5hxI1uaWggYXRyaWJ1dGEgaXogZGVmaW5pY2lqZSwgbW9yYXRlIGtvcmlzdGl0aSBzbGVkZcSHdSDFoWVtdSAocHJpbWVyIHphIGtsYXN1IENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIFVrb2xpa28gbmUgcG9zdG9qaSB1bm9zIHphIHBvamVkaW5hxI1udSBrbGFzdSwgYmnEh2UgcHJpa2F6YW5lIHBvZHJhenVtZXZhbmUga29sb25lIGRlZmluaXNhbmUgdSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgdSBkb2RhdGt1IGtvbWFuZG5lIHRhYmxlIHUgemF2aXNub3N0aSBvZCBrbGFzZS4gU3Zha2kgdW5vcyBtb3JhIHNhZHLFvmF0aSBwcmVmaWtzIHNhIG5heml2b20ga2xhc2UgaSBkdm90YcSNa29tIChucHIuIENvbXB1dGVyOjopLiBQb3N0b2ppIHBhciBhdHJpYnV0YSBrb2ppIHN1IHphamVkbmnEjWtpIHphIHN2ZSBrbGFzZSAobnByLiB6YSBrbGFzdSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gWmEgcHJpa2F6IHBvamVkaW5hxI1uaWggYXRyaWJ1dGEgaXogZGVmaW5pY2lqZSwgbW9yYXRlIGtvcmlzdGl0aSBzbGVkZcSHdSDFoWVtdSAocHJpbWVyIHphIGtsYXN1IENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIFVrb2xpa28gbmUgcG9zdG9qaSB1bm9zIHphIHBvamVkaW5hxI1udSBrbGFzdSwgYmnEh2UgcHJpa2F6YW5lIHBvZHJhenVtZXZhbmUga29sb25lIGRlZmluaXNhbmUgdSBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2xqdcSNIERlZmF1bHRDb2x1bW5zKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcHJpa2F6YW5lIGtvbG9uZSBrb25maWd1cmFjaW9uaWggc3RhdmtpIHUgdGFiZWxpIHZlemEgdSB6YXZpc25vc3RpIG9kIGtsYXNlLiBVa29saWtvIG5lIHBvc3RvamkgdW5vcyB6YSBwb2plZGluYcSNbnUga2xhc3UsIGJpxIdlIHByaWthemFuZSBwb2RyYXp1bWV2YW5lIGtvbG9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgdSB0YWJlbGkgdmV6YSB1IHphdmlzbm9zdGkgb2Qga2xhc2UuIFN2YWtpIHVub3MgbW9yYSBzYWRyxb5hdGkgcHJlZmlrcyBzYSBuYXppdm9tIGtsYXNlIGkgZHZvdGHEjWtvbSAobnByLiBDb21wdXRlcjo6KS4gUG9zdG9qaSBwYXIgYXRyaWJ1dGEga29qaSBzdSB6YWplZG5pxI1raSB6YSBzdmUga2xhc2UgKG5wci4gemEga2xhc3UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFphIHByaWtheiBwb2plZGluYcSNbmloIGF0cmlidXRhIGl6IGRlZmluaWNpamUsIG1vcmF0ZSBrb3Jpc3RpdGkgc2xlZGXEh3UgxaFlbXUgKHByaW1lciB6YSBrbGFzdSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBVa29saWtvIG5lIHBvc3RvamkgdW5vcyB6YSBwb2plZGluYcSNbnUga2xhc3UsIGJpxIdlIHByaWthemFuZSBwb2RyYXp1bWV2YW5lIGtvbG9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnT2RyZcSRdWplIGtvamkgdGlwIHZlemUgKGdsZWRhbm8gaXogcGVyc3Bla3RpdmUgdGlrZXRhKSBtb8W+ZSBkYSB1dGnEjWUgbmEgcG92ZXphbnUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdPZHJlxJF1amUga29qaSB0aXAgdGlrZXRhIG1vxb5lIGRhIHV0acSNZSBuYSBzdGF0dXMgcG92ZXphbmUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdCcmlzYW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdCb2phIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ09tb2d1xIdhdmEgbWFzb3ZudSBha2NpanUgbmEga29uZmlndXJhY2lvbmltIHN0YXZrYW1hIHUgcHJpc3R1cG5vbSBzaXN0ZW11IG9wZXJhdGVyYSBuYSB2acWhZSBvZCBqZWRuZSBzdGF2a2UgaXN0b3ZyZW1lbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBa3RpdmlyYSBzdm9qc3R2byBtYXNvdm5lIGFrY2lqZSBuYSBrb25maWdpcmFjaW9uaW0gc3RhdmthbWEgc2FtbyB6YSBpemxpc3RhbmUgZ3J1cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FrdGl2aXJhL2RlYWt0aXZpcmEgZnVua2NpanUgemEgcHJvdmVydSBqZWRpbnN0dmVub3N0aSBpbWFuYSBrb25maWd1cmFjaW9uaWggc3RhdmtpLiBQcmUgYWt0aXZpcmFuamEgb3ZlIG9wY2lqZSB0cmViYXRlIHByb3Zlcml0aSB1IHZhxaFlbSBzaXN0ZW11IHBvc3RvamFuamUgZHVwbGlrYXRhIG5hIHBvc3RvamXEh2ltIHN0YXZrYW1hLiBUbyBtb8W+ZXRlIHVyYWRpdGkgcG9tb8SHdSBza3JpcHRhIGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWwgZG9nYcSRYWphIHphIHBvZGXFoWF2YW5qZSBzdGF0dXNhIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgcHJpbGlrb20gcG9zdGF2bGphbmphIHZlemEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZWdsZWQgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB6YSBwcm92ZXJ1IGdydXBlIG9kZ292b3JuZSB6YSBrbGFzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCB6YSBwcm92ZXJ1IGdydXBlIG9kZ292b3JuZSB6YSBrb25maWd1cmFjaW9udSBzdGF2a3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgemEgZ2VuZXJpc2FuamUgc3RhdGlzdGlrZSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIG9iamVrdGEgemEgZG9kYXRhayB1dm96L2l6dm96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmVnbGVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgcG96YWRpbnNraSBwcmlrYXoga29udHJvbG5lIHRhYmxlIGxpc3RlIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgZmlybWUga2xpamVudGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4gIkxpbWl0IiBkZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBicm9qIHByaWthemFuaWggc3RhdmtpLiAiR3JvdXAiIHNlIGtvcmlzdGkgZGEgb2dyYW5pxI1pIHByaXN0dXAgZG9kYXRrdSAobnByLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgb2RyZcSRdWplIGRhIGxpIGplIGRvZGF0YWsgcG9kcmF6dW1ldmFubyBha3RpdmlyYW4gaWxpIGRhIGplIG5lb3Bob2RubyBkYSBnYSBrb3Jpc25payBtYW51ZWxubyBha3RpdmlyYS4gIkNhY2hlVFRMTG9jYWwiIGplIHZyZW1lIHUgbWludXRpbWEgemEga2XFoWlyYW5qZSBkb2RhdGthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBib2plIHN0YXR1c2EgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBhdHJpYnV0ZSB1em9ya2EgZ3J1cGUgemEgZG96dm9sZSBvcMWhdGVnIGthdGFsb2dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdHJhbmljZSAobmEga29qaW1hIHN1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBwcmlrYXphbmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cGEgcHJpc3R1cGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgcHJldHJhZ2UgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgZGV0YWxub2cgcHJpa2F6YSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIGRvZGF2YW5qYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIGl6bWVuZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBpc3RvcmlqYXRhIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSDFoXRhbXBlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb3RyZWJuYSBwcmF2YSB6YSBicmlzYW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnUHJldHJhZ2Ega29uZmlndXJhY2lvbmloIHN0YXZraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnQmlyYSBtb2R1bCBvcGVyYXRvcmEgYXV0b21hdHNrb2cgdXZlxIdhbmphIGtvbmZpZ3VyYWNpb25lIHN0YXZrZS4gT3BlcmF0b3IgYXV0b21hdHNrb2cgdXZlxIdhbmphIHBvdmXEh2F2YSBicm9qIHN0YXZrZSwgU3lzdGVtSUQsIENvbmZpZ0l0ZW1DbGFzc0lEIGkga29yacWhxIdlbmkgYnJvamHEjS4gRm9ybWF0IGplICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5icm9qYcSNIiwgbnByIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdQb3N0YXZsamEgc3RhbmplIGluY2lkZW50YSBrb25maWd1cmFjaW9uZSBzdGF2a2Uga2FkYSBqZSB0aWtldCBwb3ZlemFuIHNhIHN0YXZrb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHN0YXR1cyBwcmltZW5lIG5hIGVrcmFudSBtYXNvdm5lIGFrY2lqZSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIHN0YXR1cyBpbmNpZGVudGEgbmEgZWtyYW51IG1hc292bmUgYWtjaWplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IGtvamEgb21vZ3XEh2F2YSBwb3Zleml2YW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2Ugc2EgZHJ1Z2ltIG9iamVrdG9tIG5hIGRldGFsam5vbSBwcmlrYXp1IGtvbmZpZ3VyYWNpamUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwcmlzdHVwIGlzdG9yaWphdHUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIHByZWdsZWR1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBwcmlzdHVwIGlzdG9yaWphdHUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgYnJpc2FuamUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIG5qZW5vbSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHVtbm/FvmF2YW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgcHJlZ2xlZHUga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHVtbm/FvmF2YW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgbmplbm9tIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBpem1lbnUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIG5qZW5vbSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgcG92cmF0YWsgbmEgZGV0YWxqbmkgcHJpa2F6IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSAgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSDFoXRhbXB1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBuamVub20gZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBkZXRhbGpuaSBwcmlrYXoga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIHByZWdsZWR1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2F6dWplIGlzdG9yaWphdCBrb25maWd1cmFjaW9uZSBzdGF2a2UgKG9icm51dCByZWRvc2xlZCkgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa2F0b3IgemEga29uZmlndXJhY2lvbnUgc3Rhdmt1LCBucHIuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBQb2RyYXp1bWV2YW5vIGplIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iYWxubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3QtcHJvZHVrY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlLXByb2R1a2NpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a2NpamEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/sv_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3ZfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ8OEbmRyYSBrbGFzc2RlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gTWFuYWdlbWVudCd9ID0gJ0hhbnRlcmluZyBhdiBrb25maWd1cmF0aW9uc2VuaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbid9ID0gJ0RlZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnw4RuZHJhJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0RyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICdLbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdEcmlmdGzDpGdlc3R5cGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdOdXZhcmFuZGUgaW5jaWRlbnRsw6RnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdOdXZhcmFuZGUgdHlwIGF2IGluY2lkZW50bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU2VuYXN0IMOkbmRyYWQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnRmlsdHJlcmEga2xhc3Nlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWw6RsaiBlbiBrbGFzcyBmcsOlbiBsaXN0YW4gZsO2ciBhdHQgc2thcGEgZW4gbnkga29uZmlndXJhdGlvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAnRHJpZnRsw6RnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0luY2lkZW50bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnTMOkbmthIHRpbGwgYW5uYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTmFtbmV0IHDDpSBkZW5uYSBrb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdOYW1uZXQgYW52w6RuZHMgcmVkYW4gaSBrb25maWd1cmF0aW9uc2VuaGV0ZXIgbWVkIGbDtnJsamFuZGUgbnVtbWVyOiAlcyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAnSGlzdG9yaWtpbm5laMOlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1RpZHB1bmt0IGbDtnIgc2thcGFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnRm9rdXN2eSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdBbnBhc3NhIHZ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXRlciBwZXIgc2lkYSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1PDtmsgw6R2ZW4gaSB0aWRpZ2FyZSB2ZXJzaW9uZXI/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9uIG9tIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTnV2YXJhbmRlIGRyaWZ0bMOkZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnU2VuYXN0IMOkbmRyYWQgYXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJ1Zpc2EgZW4gdmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJ1Zpc2EgYWxsYSB2ZXJzaW9uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ0luY2lkZW50bMOkZ2UgZsO2ciB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1ZlcnNpb25zbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICdWZXJzaW9uc2luZm9ybWF0aW9uIGbDtnIga29uZmlndXJhdGlvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJ0VnZW5za2FwJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0luZ2V0IHJlc3VsdGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RyaWZ0bMOkZ2UgZsO2ciBrb25maWd1cmF0aW9uc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSW5jaWRlbnRsw6RnZSBmw7ZyIGtvbmZpZ3VyYXRpb25zZW5oZXQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWVsbGFuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heCBhbnRhbCBhdiBldHQgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICdUb21tYSBmw6RsdCBhbmdlciBhdHQgdGlkaWdhcmUgdsOkcmRlbiBza2EgYW52w6RuZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnSG9wcGFkZSDDtnZlcic7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ1NlcmllbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICdSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAnSMOlcmRkaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnS2FwYWNpdGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAnTsOkdHZlcmtza29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCDDtnZlciBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdJUC1hZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnR3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICdBbm5hbiB1dHJ1c3RuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ1Npc3RhIGRhZyBmw7ZyIGdhcmFudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnSW5zdGFsbGF0aW9uc2RhdHVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICdUZWxlZm9uIDEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJ1RlbGVmb24gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAnTsOkdHZlcmtzYWRyZXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnU3VibsOkdG1hc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ0dhdGV3YXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnTGljZW5zdHlwZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdMaWNlbnNueWNrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICdNw6RuZ2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnTMO2cGVyIHV0IGRhdHVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnTWVkaWEnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdMw7ZwdCB1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1VuZGVyaMOlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmxhZ2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBlcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfDlnZlcnN5bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdMYXB0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ1NlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FubmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICdNb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICdTa3JpdmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICdTd2l0Y2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnUm91dGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnV0xBTiBBY2Nlc3NwdW5rdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICdTw6RrZXJoZXRzdXRydXN0bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnQmFja3VwZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUYW5nZW50Ym9yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdLYW1lcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnQmVhbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTW9kZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdQQ01DSUEta29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgRGV2aWNlJ30gPSAnVVNCLWVuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ0RvY2tuaW5nc3N0YXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ1NjYW5uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCeWdnbmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ0tvbnRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ1bDpW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1J1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAnUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICdBcmJldHNwbGF0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICdWw6RnZ2tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICdJVC1ieWdnbmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJ1RlbGNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJ0dTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICdLbGllbnRhcHBsaWthdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAnTWlkZGxld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICdTZXJ2ZXJhcHBsaWthdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICdLbGllbnQtT1MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAnU2VydmVyLU9TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICdBZG1pbmlzdHJhdGlvbnN2ZXJrdHlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJ0FudsOkbmRhcnZlcmt0eWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICdFbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ0Vuc3Rha2EgbGljZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnUGVyIGFudsOkbmRhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJ1BlciBwcm9jZXNzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ1BlciBzZXJ2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICdQZXIgbm9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnVm9seW1saWNlbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnRW50ZXJwcmlzZWxpY2Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJ1V0dmVja2xhcmxpY2Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnRGVtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICdUaWRzYmVncsOkbnNhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnw5ZwcGVuIGvDpGxsa29kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ09iZWdyw6Ruc2FkJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnT2snOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWd1cmF0aW9uc2VuaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdCZWdyw6Ruc25pbmcga29uZmlndXJhdGlvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnU2thcGEgb2NoIGhhbnRlcmEgZGVmaW5pdGlvbmVyIGbDtnIga29uZmlndXJhdGlvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlciBhbnRhbCByYWRlciBmw7ZyIEtFLWVkaXRvcm4gaSBhZG1pbmdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4gTm90ZTogQ2xhc3MgY29sdW1uIGlzIGFsd2F5cyBhdmFpbGFibGUgaWYgZmlsdGVyIFwnQWxsXCcgaXMgc2VsZWN0ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgaXMgdXNlZCB0byBsaW5rIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGVuZHNPbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBleGVtcGVsIHDDpSBiZWjDtnJpZ2hldHNlZ3J1cHBlciBpIGdydW5ka2F0YWxvZ2VucyBhdHRyaWJ1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/sw_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3dfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ0JhZGlsaSB1ZmFmYW51emkgd2EgdGFiYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIE1hbmFnZW1lbnQnfSA9ICdVc2FuaWRpIHdhIHVzaW1hbWl6aSB3YSBraXBlbmdlbGUgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICdVZmFmYW51emknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnQmFkaWxpc2hhJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ0hhbGkgeWEgdHVraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0hhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ1RhYmFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdBaW5hIHlhIGhhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyBsYSBzYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0FpbmEgeWEgaGFsaSB5YSB0dWtpbyBsYSBzYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ013aXNobyBrdWJhZGlsaXNod2EnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnQ2h1amEga3dhIGFqaWxpIHlhIG1hdGFiYWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ0NoYWd1YSB0YWJha2Ega3V0b2thIGt3ZW55ZSBvcm9kaGEgeWEga3V0ZW5nZW5lemEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGtpcHlhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdVc2FuaWRpIHdhIEtpcGVuZ2VsZSAnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbid9ID0gJ1ZpdGVuZG8gdnlhIHdpbmdpIHZ5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ0hhbGkgeWEga3V0dW1pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSd9ID0gJ0hhbGkgeWEgdHVraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnVW5nYW5pc2hhIG5hIG55aW5naW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICdOYW1iYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgbiBiYXRpbGkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLid9ID0gJ05hbWJhIHlhIGtpcGVuZ2VsZSBraW5naW5lIGNoYSB1c2FuaWRpIGNoYSBrdXVuZ2FuaXNoYSBuYWNoby4nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSmluYSBsYSBoaWtpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnSmluYSBoaWxpIHRheWFyaSBsaW1la3dpc2hhIHR1bWlrYW5hIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGVueWUgbmFtYmEgaSh6KWZ1YXRhem86ICVzJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdNYXVkaHVpIHlhIGhpc3RvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICdNdWRhIHdhIGt1dGVuZ2VuZXphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ01hbmRoYXJpIGlsaXlva3V6d2EnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnTWlwYW5naWxpbyB5YSBtdWt0YWRoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdWaXBlbmdlbGUgdnlhIHVzYW5pZGkga3dhIGtpbGEgdWt1cnVzYSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1BpYSB0YWZ1dGEga2F0aWthIHRvbGVvIGxpbGlsb3BpdGE/JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLaXBlbmdlbGUgY2hhIFVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnVGFhcmlmYSB6YSBraXBlbmdlbGUgY2hhIHVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnSGFsaSB5YSBrdXR1bWlhIHlhIHNhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTXdpc2hvIGt1YmFkaWxpc2h3YSBuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAnT255ZXNoYSB0b2xlbyBtb2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAnT255ZXNoYSBtYXRvbGVvIHlvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ1RvbGVvIGxhIGhhbGkgeWEgdHVraW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAnSGFsaSB5YSB0b2xlbyBsYSBrdXR1bWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAnTmFtYmEgeWEgdG9sZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJ1RvbGVvIGxhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrd2EgdW5kYW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJ01hbGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdIYWxpIHlhIG1hdHVtaXppIHlhIGhpaSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnSGFsaSB5YSB0dWtpbyB5YSBoaWtpIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdLYXRpa2F0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdLaW1hIGNoYSBqdXUgY2hhIG5hbWJhIHlhIGVsZW1lbnRpIG1vamF3YXBvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJ1VnYSB6aWxpem93YXppIHppbmFvbnllc2hhIGt3YW1iYSB0aGFtYW5pIHphIHNhc2EgemltZXdla3dhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAnUnVrd2EnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01mYW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ05hbWJhIHRhbWJ1bGlzaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJ1JhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICdEaXNraSBrdXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICdVd2V6byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ0FkYXB0YSB5YSBtdGFuZGFvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ0lQIGt3YSBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdBbndhbmkgeWEgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnQWRhcHRhIHlhIE1jaG9ybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICdWaWZhYSB2aW5naW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ1RhcmVoZSB5YSBrdWlzaGEga3cgYXVkaGFtaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICdUYXJlaGUgeWEga3VzYWtpbmlzaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ1NpbXUgeWEgMSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnU2ltdSB5YSAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICdBbndhbmkgeWEgbXRhbmRhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ1N1Ym5ldCBtYXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICdLaWNoYW5nYW5pc2hpIG10YW5kYW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnQWluYSB5YSBsZXNlbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICdOZW5vIGt1dSBsYSBsZXNlbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICdXaW5naSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICdUYXJlaGUgeWEgbXdpc2hvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnTWlkaWEnOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTXRhbmRhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnSW1laXNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hdGVuZ2VuZXpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnS3dhbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdJbGl5b3Bhbmd3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1Jla2ViaXNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnU3RhYWZ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ01hcGl0aW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ0phcmliaW8vIE1hc3dhbGkgbmEgTWFqaWJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0tvbXB5dXRhIHlhIG1rb25vbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0VuZW8ga2F6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICdQREEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnU2V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0VuZ2luZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnTW9uaXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICdLaWNoYXBpc2hpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJ1N3aWNoaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICdLaXBhbmdhIG5qaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdLaXVuZ28gdWZpa2l2dSBjaGEgV0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICdLaWZhYSBjaGEgdWxpbnppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICdLaWZhYSBjaGEgY2hlbGV6byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ0tpcGFueWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCb2Fib255ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdLYW1lcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnUHJvamVjdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnTW9kZW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnS2FkaSB5YSBQQ01DSUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ0tpZmFhIGNoYSBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnS2l0dW8gZWdlc2hpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICdLaXRhbWJhem8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdKZW5nbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdPZmlzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ1Nha2FmdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnQ2h1bWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICdSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJ0VuZW8gbGEga2F6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICdTZWhlbXUgeWEga3V0b2tlYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICdXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVGVsY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ1Byb2dyYW11LXR1bWl6aSBhIG10ZWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICdNaWRkbGV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJ1NldmEgeWEgcHJvZ3JhbXUtdHVtaXppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJ09TIHlhIG10ZWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJ09TIHlhIHNldmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ0tpZmFhIGNoYSBraW9uZ296aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICdLaWZhYSBjaGEgbXR1bWlhamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICdQYWtpY2h3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ0xlc2VuaSBtb2phJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnS3dhIG10dW1pYWppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICdLd2Ega2ljaGFrYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICdLd2Egc2V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJ0t3YSBmdW5kbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ0xlc2VuaSB5YSBzYXV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICdMZXNlbmkgeWEgRW50ZXJwcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnTGVzZW5pIHlhIG10ZW5nZW5lemFqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnT255ZXNobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICdNdWRhIHVtZXp1aWxpd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdQcm9ncmFtdSB5YSBidXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAnQ2hhbnpvIGNoYSB3YXppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ0hhaW5hIGtpa29tbyc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ1Nhd2EnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FuZ2FsaWEgbWFqaW5hIHlhIGtpcGVrZWUgdHUga2F0aWthIHRhYmFrYSBzYXdhIGxhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSAoXCdUYWJha2FcJykgYXUgem90ZSAoXCdab3RlXCcpLCBhbWJheW8gaW5hbWFhbmlzaGEga2lsYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2lsaWNob3BvIGtpbWVqdW11aXNod2Egd2FrYXRpIG5ha2FsYSBwYWNoYSB6aW5hYW5nYWxpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ1ZpcGVuZ2VsZSB2eWEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2FuaWRpIG1vZHVsaSB5YSB0dWtpbyB5YSBraXBlbmdlbGUgYW1iYWNobyBraW5hd2V6ZXNoYSBrdWluZ2lhIGthdGlrYSBoaXN0b3JpYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0tpa29tbyBjaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tpcGFuZ2EgbmppYSBjaGEgbWF6aW5naXJhIHlhIG55dW1hIGNoYSB1dGFmdXRhamkgd2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBraW9sZXN1cmEgY2hhIHdha2FsYS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdUZW5nZW5lemEgbmEgc2ltYW1pYSB1ZmFmYW51emkgd2EgdmlwZW5nZWxlIHZ5YSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHJ1aHVzYSB6aW5hem9oaXRhamlrYSBrdXRlbmdlbmV6YSB2aXBlbmdlbGUgdnlhIHVzYW5pZGkgdnlhIElUU00ga3dhIGt1dHVtaWEga2lvbGVzdXJhIGNoYSBqZW5lcmlraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBydWh1c2EgemluYXpvaGl0YWppa2Ega3VwYXRhdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZ5YSBJVFNNIGt3YSBrdXR1bWlhIGtpb2xlc3VyYSBjaGEgamVuZXJpa2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHJ1aHVzYSB6aW5hem9oaXRhamlrYSBrdXRhZnV0YSB2aXBlbmdlbGUgdnlhIHVzYW5pZGkgdnlhIElUU00ga3dhIGt1dHVtaWEga2lvbGVzdXJhIGNoYSBqZW5lcmlraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1c2FzaXNoYSB2aXBlbmdlbGUgdnlhIHVzYW5pZGkgdnlhIElUU00ga3dhIGt1dHVtaWEga2lvbGVzdXJhIGNoYSBqZW5lcmlraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtb2R1bGkgeWEgbWFwaXRpbyBrdW9ueWVzaGEgbWFuZGhhcmkgbmRvZ28geWEgb3JvZGhhIHlhIHZpcGVuZ2VsZSB2eWEgdXNhbmlkaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2VtaSB6YSBtYXJhIGt3YSBtYXJhIG1vamFtb2phIGt3YSBraWxhIHRhYmFrYSBsYSBraXBlbmdlbGUgY2ggdXNhbmlkaSBrdWFuZ2FsaWEgamluYSBsYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgbmEga3Vvbnllc2hhIHVqdW1iZSB3YSBtYWtvc2EgeWFuYXlvaHVzaWFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBraXBlbmdlbGUgY2hhIGNoYWd1byBtc2luZ2kgY2hhIHRhYmFrYSBsYSBcJ0tpcGVuZ2VsZWNoYSBVc2FuaWRpIGNoYSBJVFNNXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgbmFtYmEgeWEgc2FmdSBtbGFsbyBrd2EgbWhhcmlyaSB3YSB1ZmFmYW51emkgd2EgQ0kga2F0aWthIGtpb2xlc3VyYSBjaGEga2lvbmdvemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSB1cGVvIHdhIGt1dGFmdXRhIGt3YSBza2VyaW5pIHlhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lrb21vIGNoYSBrdXRhZnV0YSBrd2Egc2tyaW5pIHlhIEt1dGFmdXRhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSAgY2hhIFdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnSW5hZWxlemVhIHNhZnUgd2ltYSB6b3RlIHppbGl6b29ueWVzaHdhIGthdGlrYSBtYXBpdGlvIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaS4gSGlsaSBjaGFndW8gaGFsaW5hIG1hZGhhcmEga2F0aWthIG5hZmFzaSB5YSBzYWZ1d2ltYS4gS2lkb2tlem86IFRhYmFrYSBsYSBzYWZ1d2ltYSBsaW5hcGF0aWthbmEgbWFyYSB6b3RlIGthbWEga2ljaHVqaW8gXCdWeW90ZVwnIGl0YWNoYWd1bGl3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzYWZ1IHdpbWEgemlsaXpvb255ZXNod2Ega2F0aWthIHV0YWZ1dGFqaSB3YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkuIENoYWd1byBoaWxpIGhhbGluYSBtYWRoYXJhIGthdGlrYSBuYWZhc2kgeWEgc2FmdXdpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2FmdSB3aW1hIHphIENJIHppbGl6b29ueWVzaHdhIGthdGlrYSBtYXBpdGlvIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrdXRlZ2VtZWFuYSBuYSB0YWJha2EgbGEgQ0kuIEtpbGEgaW5naXpvIGxhemltYSBsaXdlIG5hIGtpYW1iaXNoaSBhd2FsaSBqaW5hIGxhIHRhYmFrYSBuYSA6OiAoIG1mYW5vIFRhcmFraWxpc2hpOjopS3VuYSB2aXVtYmkgdmljaGFjaGUgdnlhIENJIGFtYmF2eW8gdmlwbyBrd2EgQ0kgem90ZSAobWZhbm8ga3dlbnllIHRhYmFrYSBsYSB0YXJha2lsaXNoaTogdGFyYWtpbGlzaGk6OmppbmEsIFRhcmFraWxpc2hpOjpIYWxpIHlhQ3VyRGVwLCBUYXJha2lsaXNoaTo6TXVkYSB3YSBrdXRlbmdlbmV6YSkuIEt1b255ZXNoYSBraXVtYmkgY2hhIENJIGtpbW9qYSBraW1vamEga2FtYSB2aWxpdnlvIGZhZmFudWxpd2Ega3dlbnllIHVmYWZhbnV6aSB3YSBDSSwgbXBhbmdpbGlvIHVmdWF0YW8gbGF6aW1hIHV0dW1pa2UgKG1mYW5vIGt3ZW55ZSB0YWJha2EgdGFyYWtpbGlzaGkpOiBUYXJha2lsaXNoaTo6ZGlza2kga3V1OjoxLCBUYXJha2lsaXNoaTo6RGlza2kga3V1IG5ndW11OjoxVXdlem86OjEsIFRhcmFraWxpc2hpOjpEaXNraSBrdXUgbmd1bXU6OjIsIFRhcmFraWxpc2hpOjpEaXNraSBrdXUgbmd1bXU6OjI6OlV3ZXpvOjoxLiBLYW1hIGhha3VuYSBpbmdpem8ga3dhIHRhYmFrYSBsYSBDSSwgc2FmdXdpbWEgY2hhZ3VvIG1zaW5naSB6aW5hb255ZXNod2Ega2FtYSB6aWxpdnlvZmFmYW51bGl3YSBrYXRpa2EgbXBhbmdpbGlvCklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNhZnUgd2ltYSB6YSBDSSB6aWxpem9vbnllc2h3YSBrYXRpa2Ega3V0YWZ1dGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGt1dGVnZW1lYW5hIG5hIHRhYmFrYSBsYSBDSS4gS2lsYSBpbmdpem8gbGF6aW1hIGxpd2UgbmEga2lhbWJpc2hpIGF3YWxpIGppbmEgbGEgdGFiYWthIG5hIDo6ICggbWZhbm8gVGFyYWtpbGlzaGk6OilLdW5hIHZpdW1iaSB2aWNoYWNoZSB2eWEgQ0kgYW1iYXZ5byB2aXBvIGt3YSBDSSB6b3RlIChtZmFubyBrd2VueWUgdGFiYWthIGxhIHRhcmFraWxpc2hpOiB0YXJha2lsaXNoaTo6amluYSwgVGFyYWtpbGlzaGk6OkhhbGkgeWFDdXJEZXAsIFRhcmFraWxpc2hpOjpNdWRhIHdhIGt1dGVuZ2VuZXphKS4gS3Vvbnllc2hhIGtpdW1iaSBjaGEgQ0kga2ltb2phIGtpbW9qYSBrYW1hIHZpbGl2eW8gZmFmYW51bGl3YSBrd2VueWUgdWZhZmFudXppIHdhIENJLCBtcGFuZ2lsaW8gdWZ1YXRhbyBsYXppbWEgdXR1bWlrZSAobWZhbm8ga3dlbnllIHRhYmFrYSB0YXJha2lsaXNoaSk6IFRhcmFraWxpc2hpOjpkaXNraSBrdXU6OjEsIFRhcmFraWxpc2hpOjpEaXNraSBrdXUgbmd1bXU6OjFVd2V6bzo6MSwgVGFyYWtpbGlzaGk6OkRpc2tpIGt1dSBuZ3VtdTo6MiwgVGFyYWtpbGlzaGk6OkRpc2tpIGt1dSBuZ3VtdTo6Mjo6VXdlem86OjEuIEthbWEgaGFrdW5hIGluZ2l6byBrd2EgdGFiYWthIGxhIENJLCBzYWZ1d2ltYSBjaGFndW8gbXNpbmdpIHppbmFvbnllc2h3YSBrYW1hIHppbGl2eW9mYWZhbnVsaXdhIGthdGlrYSBtcGFuZ2lsaW8KSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzYWZ1IHdpbWEgemEgQ0kgemlsaXpvb255ZXNod2Ega2F0aWthIG1hbmRoYXJpIHlhIGplZHdhbGkgdGF0YSBsYSBraXVuZ28sa3V0ZWdlbWVhbmEgbmEgdGFiYWthIGxhIENJLiBLaWxhIGluZ2l6byBsYXppbWEgbGl3ZSBuYSBraWFtYmlzaGkgYXdhbGkgamluYSBsYSB0YWJha2EgbmEgOjogKCBtZmFubyBUYXJha2lsaXNoaTo6KS5LdW5hIHZpdW1iaSB2aWNoYWNoZSB2eWEgQ0kgYW1iYXZ5byB2aXBvIGt3YSBDSSB6b3RlIChtZmFubyBrd2VueWUgdGFiYWthIGxhIHRhcmFraWxpc2hpOiB0YXJha2lsaXNoaTo6amluYSwgVGFyYWtpbGlzaGk6OkhhbGkgeWFDdXJEZXAsIFRhcmFraWxpc2hpOjpNdWRhIHdhIGt1dGVuZ2VuZXphKS4gS3Vvbnllc2hhIGtpdW1iaSBjaGEgQ0kga2ltb2phIGtpbW9qYSBrYW1hIHZpbGl2eW8gZmFmYW51bGl3YSBrd2VueWUgdWZhZmFudXppIHdhIENJLCBtcGFuZ2lsaW8gdWZ1YXRhbyBsYXppbWEgdXR1bWlrZSAobWZhbm8ga3dlbnllIHRhYmFrYSB0YXJha2lsaXNoaSk6IFRhcmFraWxpc2hpOjpkaXNraSBrdXU6OjEsIFRhcmFraWxpc2hpOjpEaXNraSBrdXUgbmd1bXU6OjFVd2V6bzo6MSwgVGFyYWtpbGlzaGk6OkRpc2tpIGt1dSBuZ3VtdTo6MiwgVGFyYWtpbGlzaGk6OkRpc2tpIGt1dSBuZ3VtdTo6Mjo6VXdlem86OjEuIEthbWEgaGFrdW5hIGluZ2l6byBrd2EgdGFiYWthIGxhIENJLCBzYWZ1d2ltYSBjaGFndW8gbXNpbmdpIHppbmFvbnllc2h3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdOYWthbGEgcGFjaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSBraXBlbmdlbGUgY2hhIGtpdGVuZG8gY2ggd2luZ2kgY2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrd2EgbWFpbmdpcmEgeWEgbWJlbGUgeWEgd2FrYWxhIGt1ZmFueWEga2F6aSBrYXRpa2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIHphaWRpIHlhIGtpbW9qYSBrd2EgbXVkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0luYXdlemVzaGEga2lwZW5nZWxlIGNoYSBraXRlbmRvIGNoYSB3aW5naSBjaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGt3YSBtYWt1bmRpIHlhbGl5b29yb2RoZXNod2EgdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1dlemVzaGEvS3V0b3dlemVzaGEga2l0ZW5kZWFrYXppIGNoYSBrdWFuZ2FsaWEgdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIGt3YSBtYWppbmEgeWEgcGVrZWUuIEthYmxhIHlhIGt1d2V6ZXNoYSBjaGFndW8gaGlsaSB1bmF0YWtpd2Ega3VhbmdhbGlhIG1mdW1vIHdha28ga3dhIHZpcGVuZ2VsZSB2eWEgdXNhbmlkaSBrYW1hIHZpcG8gdGF5YXJpIGt3YSBtYWppbmEgbmFrYWxhIHBhY2hhLiBVbmF3ZXphIGt1ZmFueWEgaGl2aSBuYSBtYWFuZGlrbyBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxpIHlhIGt1YW5nYWxpYSBtYWt1bmRpIHlhbmF5b2h1c2lrYSBuYSB0YWJha2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHlhIGt1YW5nYWxpYSBtYWt1bmRpIHlhbmF5b2h1c2lrYSBuYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxpIHlhIGt1dGVuZ2VuZXphIHRha3dpbXUgemEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNPic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnVXNhamlsaSB3YSBtb2R1bGkgeWEgbWF6aW5naXJhIHlhIG55dW1hIHlhIGtpcGVuZ2VlIGt3YSBtb2R1bGkgeWEgS3VpbmdpemEva3VoYW1pc2hhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSByYW5naSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIGhhbGkgemEgbWF0dW1pemkga2FtYSBtYW5kaGFyaSB5YSBtYXBlbmRlbGVvIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdWaWdlem8ga3dhIG1mYW5vIHJ1aHVzYSB6YSB2aWt1bmRpIGt3YSBzaWZhIHphIGthdGFsb2dpIHphIHVqdW1sYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSB1a3VyYXNhIChhbWJhdnlvIHZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2aW1lb255ZXNod2EpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBrdXRhZnV0YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIGlsaXlva3V6d2EgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBraWxpY2hvb25nZXphIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBraWxpY2hvaGFyaXJpd2Ega2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEgaGlzdG9yaWEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00gY2hhIGt1Y2hhcGlzaGEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJ0luYWNoYWd1YSBtb2R1bGkgeWEga3V6YWxpc2hhIG5hbWJhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaS4gIk9uZ2V6YU90b21hdGlraSIgaW5hb25nZXphIG5hbWJhIHlhIGtpcGVuZ2VsZSB5YSB1c2FuaWRpLCBraXRhbWJ1bGlzaG8gY2hhIG1mdW1vLCBraXRhbWJ1bGlzaG8gY2hhIHRhYmFrYSBsYSBraXBlbmdlbGUgc2FuaWRpIG5hIGtpaGVzYWJ1amkgdmluYXR1bWlrYS4gVW1iaXpvIG5pICJLaXRhbWJ1bGlzaG8gY2hhIG1mdW1vLmtpdGFtYnVsaXNobyBjaGEgdGFiYWthIGxhIGtpcGVuZ2VsZSBzYW5pZGkuS2loZXNhYnVqaSIuIG1mYW5vIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmF3ZWthIGhhbGkgeWEga3V0dW1pYSBrYXRpa2Egc2tyaW5pIHlhIHdpbmdpIHdhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hd2VrYSBoYWxpIHlhIHR1a2lvIGthdGlrYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2lvbmdvIGthdGlrYSBtZW55dSBhbWJhY2hvIGtpbmF1bmdhbmlzaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIG5hIGtpcGVuZ2VlIGtpbmdpbmUga2F0aWthIG1hbmRoYXJpIGlsaXlva3V6d2EgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xldXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrd2VueWUgIG1lbnl1IGt1d2V6YSBrdWZpa2lhIGhpc3RvcmlhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFwaXRpbyB5YSBraXBlbmdlbGUgeWEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga3dlbnllICBtZW55dSBrdXdlemEga3VmaWtpYSBoaXN0b3JpYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgaWxpeW9rdXp3YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3V0b2EgbmFrYWxhIHBhY2hhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFwaXRpbyB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBrdXRvYSBuYWthbGEgcGFjaGEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYW5kaGFyaSB5YWtlIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3VoYXJpcmkgIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSBpbGl5b2t1endhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1Y2hhcGlzaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYW5kaGFyaSB5YWtlIGlsaXlva3V6d2EgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1a3V6YSBrYXRpa2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYXBpdGlvIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEgaGlzdG9yaWEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIChrd2EgbXBhbmdpbGlvIHdhIGt1cnVkaSBueXVtYSkga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnS2l0YW1idWxpc2hpIGNoYSBraXBlbmdlbGUgY2hhIHVzYW5pZGksIG1mYW5vLkNvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBDaGFndS1tc2luZ2kgbmkgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/th_TH_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6dGhfVEhfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+C4meC4tOC4ouC4suC4oeC4guC4reC4h+C4hOC4peC4suC4quC4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn4LiB4Liy4Lij4LiI4Lix4LiU4LiB4Liy4LijIENvbmZpZyBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICfguJnguLTguKLguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAn4LmA4Lib4Lil4Li14LmI4Lii4LiZJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C5gOC4q+C4leC5jOC4geC4suC4o+C4k+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAn4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4quC4luC4suC4meC4oOC4suC4nuC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmM4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C5gOC4q+C4leC5jOC4geC4suC4o+C4k+C5jOC4m+C4seC4iOC4iOC4uOC4muC4seC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfguIHguLLguKPguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguKXguYjguLLguKrguLjguJQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn4LiV4Lix4Lin4LiB4Lij4Lit4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+C5gOC4peC4t+C4reC4geC4hOC4peC4suC4quC4iOC4suC4geC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4quC4o+C5ieC4suC4hyBDb25maWcgSXRlbSDguYPguKvguKHguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0nfSA9ICdDb25maWcgSXRlbSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAn4LiB4Liy4Lij4LiX4Liz4LiH4Liy4LiZ4LmA4Lib4LmH4LiZ4LiB4Lil4Li44LmI4Lih4LiC4Lit4LiHIElUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4Li44LiB4Liy4Lij4LiT4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ+C5gOC4iuC4t+C5iOC4reC4oeC5guC4ouC4h+C5hOC4m+C4l+C4teC5iOC4reC4t+C5iOC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENvbmZpZ3VyYXRpb24gSXRlbSBudW1iZXIhJ30gPSAn4LiI4Liz4LiZ4Lin4LiZ4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICfguIjguLPguJnguKfguJnguILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLLguK3guLfguYjguJnguYbguJfguLXguYjguJXguYnguK3guIfguIHguLLguKPguYDguIrguLfguYjguK3guKHguYLguKLguIcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgY29uZmlnIGl0ZW0/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnIOC4iuC4t+C5iOC4reC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4meC4teC5iVwnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICfguIrguLfguYjguK3guJfguLXguYjguJbguLnguIHguIHguLLguKPguYPguIrguYnguIfguLLguJnguYLguJTguKIgQ29uZmlnSXRlbXMg4Lih4Li14LiI4Liz4LiZ4Lin4LiZ4LiU4Lix4LiH4LiV4LmI4Lit4LmE4Lib4LiZ4Li14LmJIChzKTogJXMnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3Rvcnkgb2YgQ29uZmlnIEl0ZW06ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ+C5gOC4meC4t+C5ieC4reC4q+C4suC4m+C4o+C4sOC4p+C4seC4leC4tCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGV0aW1lJ30gPSAn4LmA4Lin4Lil4Liy4LiX4Li14LmI4Liq4Lij4LmJ4Liy4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ+C4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguYnguK3guITguKfguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIEl0ZW1zIOC5g+C4meC5geC4leC5iOC4peC4sOC4q+C4meC5ieC4sic7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ+C4hOC5ieC4meC4q+C4suC5gOC4p+C4reC4o+C5jOC4iuC4seC5iOC4meC4l+C4teC5iOC5geC4peC5ieC4p+C4lOC5ieC4p+C4ouC4q+C4o+C4t+C4reC5hOC4oeC5iD8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfguILguYnguK3guKHguLnguKXguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4peC5iOC4suC4quC4uOC4lOC5guC4lOC4oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAn4LmB4Liq4LiU4LiH4Lir4LiZ4Li24LmI4LiH4LmA4Lin4Lit4Lij4LmM4LiK4Lix4LmI4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAn4LmB4Liq4LiU4LiH4LmA4Lin4Lit4Lij4LmM4LiK4Lix4LmI4LiZ4LiX4Lix4LmJ4LiH4Lir4Lih4LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICfguYDguKfguK3guKPguYzguIrguLHguYjguJnguILguK3guIfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguLjguIHguLLguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAn4LmA4Lin4LmI4Lit4Lij4LmM4LiK4Lix4LmI4LiZ4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn4Lir4Lih4Liy4Lii4LmA4Lil4LiC4LmA4Lin4Lit4Lij4LmM4LiK4Lix4LmJ4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICfguYDguJnguLfguYnguK3guKvguLLguYDguKfguK3guKPguYzguIrguLHguYjguJkgQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAn4LiE4Li44LiT4Liq4Lih4Lia4Lix4LiV4Li0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+C5hOC4oeC5iOC4oeC4teC4nOC4peC4peC4seC4nuC4mOC5jCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguJ7guLHguJLguJnguLLguIHguLLguKPguILguK3guIcgY29uZmlnIGl0ZW0g4LiZ4Li14LmJICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jOC4guC4reC4hyBjb25maWcgaXRlbSDguJnguLUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn4Lij4Liw4Lir4Lin4LmI4Liy4LiHJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ+C4iOC4s+C4meC4p+C4meC4quC4ueC4h+C4quC4uOC4lOC4guC4reC4h+C4q+C4meC4tuC5iOC4h+C4reC4uOC4m+C4geC4o+C4k+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICfguYDguILguJXguILguYnguK3guKHguLnguKXguKfguYjguLLguIfguYDguJvguKXguYjguLLguJrguYjguIfguIrguLXguYnguKfguYjguLLguITguYjguLLguJvguLHguIjguIjguLjguJrguLHguJnguIjguLDguJbguLnguIHguYDguIHguYfguJrguYTguKfguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ+C4guC5ieC4suC4oeC5geC4peC5ieC4pyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn4LmC4Lih4LmA4LiU4LilJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ+C4q+C4oeC4suC4ouC5gOC4peC4guC4i+C4teC5gOC4o+C4teC4ouC4pSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfguIvguLXguJ7guLXguKLguLknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAn4LmB4Lij4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJ+C4ruC4suC4o+C5jOC4lOC4lOC4tOC4quC4geC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJ+C4hOC4p+C4suC4oeC4iOC4uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ+C4geC4suC4o+C5jOC4lOC5gOC4iuC4t+C5iOC4reC4oeC4leC5iOC4reC5gOC4hOC4o+C4t+C4reC4guC5iOC4suC4oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICdJUCDguJzguYjguLLguJkgREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAn4LiX4Li14LmI4Lit4Lii4Li54LmI4LmE4Lit4Lie4Li1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWMgQWRhcHRlcid9ID0gJ+C4leC4seC4p+C4m+C4o+C4seC4muC4leC5iOC4reC4geC4o+C4suC4n+C4n+C4tOC4hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICfguK3guLjguJvguIHguKPguJPguYzguK3guLfguYjguJkg4LmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ+C4geC4suC4o+C4o+C4seC4muC4m+C4o+C4sOC4geC4seC4meC4p+C4seC4meC4q+C4oeC4lOC4reC4suC4ouC4uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICfguKfguLHguJnguJXguLTguJTguJXguLHguYnguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ+C5guC4l+C4o+C4qOC4seC4nuC4l+C5jCAxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICfguYLguJfguKPguKjguLHguJ7guJfguYwgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAn4LiX4Li14LmI4Lit4Lii4Li54LmI4LmA4LiE4Lij4Li34Lit4LiC4LmI4Liy4LiiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAn4LmA4LiE4Lij4Li34Lit4LiC4LmI4Liy4Lii4Lii4LmI4Lit4Lii4Lih4Liy4Liq4LmM4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICfguJvguKPguLDguJXguLnguKrguLHguI3guI3guLLguJMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAn4Lib4Lij4Liw4LmA4Lig4LiX4Lil4Liy4Lii4LmA4LiL4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAn4LiB4Li44LiN4LmB4LiI4Lil4Liy4Lii4LmA4LiL4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAn4LiI4Liz4LiZ4Lin4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJ+C4p+C4seC4meC4q+C4oeC4lOC4reC4suC4ouC4uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJ+C4oeC4teC5gOC4lOC4teC4oic7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+C4q+C4oeC4lOC4reC4suC4ouC4uCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ+C4geC4suC4o+C4lOC4ueC5geC4peC4o+C4seC4geC4qeC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+C4geC4suC4o+C4meC4s+C4o+C5iOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn4LiB4Liy4Lij4Lin4Liy4LiH4LmB4Lic4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn4LiL4LmI4Lit4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfguYDguIHguKnguLXguKLguJMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfguJfguJTguKrguK3guJovUUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn4LmB4Lil4LmH4Lib4LiX4LmH4Lit4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfguYDguJTguKrguJfguK3guJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ+C5gOC4i+C4tOC4o+C5jOC4n+C5gOC4p+C4reC4o+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ+C4reC4t+C5iOC4meC5hic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAn4LiI4Lit4Lig4Liy4LieJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICfguYDguITguKPguLfguYjguK3guIfguJ7guLTguKHguJ7guYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAn4Liq4Lix4Lia4LmA4Lib4Lil4Li14LmI4Lii4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ+C5gOC4o+C4suC5gOC4leC4reC4o+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJ+C4iOC4uOC4lOC5gOC4iuC4t+C5iOC4reC4oeC4leC5iOC4rVdMQU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VjdXJpdHkgRGV2aWNlJ30gPSAn4Lit4Li44Lib4LiB4Lij4LiT4LmM4Lij4Lix4LiB4Lip4Liy4LiE4Lin4Liy4Lih4Lib4Lil4Lit4LiU4Lig4Lix4LiiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhY2t1cCBEZXZpY2UnfSA9ICfguK3guLjguJvguIHguKPguJPguYzguKrguLPguKPguK3guIfguILguYnguK3guKHguLnguKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfguYDguKHguYnguLLguKrguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfguYHguJvguYnguJnguJ7guLTguKHguJ7guYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FtZXJhJ30gPSAn4LiB4Lil4LmJ4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JlYW1lcid9ID0gJ+C4nOC4ueC5ieC4hOC4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbSd9ID0gJ+C5guC4oeC5gOC4lOC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJ+C4muC4seC4leC4oyBQQ01DSUEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ+C4reC4uOC4m+C4geC4o+C4k+C5jCBVU0InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAn4Liq4LiW4Liy4LiZ4Li1IERvY2tpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2Nhbm5lcid9ID0gJ+C5gOC4hOC4o+C4t+C5iOC4reC4h+C4quC5geC4geC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+C4geC4suC4o+C4quC4o+C5ieC4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICfguK3guK3guJ/guJ/guLTguKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmxvb3InfSA9ICfguIrguLHguYnguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ+C4q+C5ieC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrJ30gPSAn4LiI4Liz4Lie4Lin4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dvcmtwbGFjZSd9ID0gJ+C4l+C4teC5iOC4l+C4s+C4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICfguYDguK3guLLguJfguYzguYDguKXguYfguJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICfguKrguLTguYjguIfguK3guLPguJnguKfguKLguITguKfguLLguKHguKrguLDguJTguKfguIHguJTguYnguLLguJnguYTguK3guJfguLUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAnTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICdXTEFOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVGVsY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ+C5geC4reC4nuC4peC4tOC5gOC4hOC4iuC4seC4meC4guC4reC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAn4Lih4Li04LiU4LmA4LiU4Li04LmJ4Lil4LmB4Lin4Lii4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJ+C5geC4reC4nuC4peC4tOC5gOC4hOC4iuC4seC4meC5gOC4i+C4tOC4o+C5jOC4n+C5gOC4p+C4reC4o+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICdPUyDguILguK3guIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAnT1Mg4LmA4LiL4Li04Lij4LmM4Lif4LmA4Lin4Lit4Lij4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICfguYDguITguKPguLfguYjguK3guIfguKHguLfguK3guYHguK3guJTguKHguLTguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAn4LmA4LiE4Lij4Li34LmI4Lit4LiH4Lih4Li34Lit4LiC4Lit4LiH4Lic4Li54LmJ4LmD4LiK4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAn4LiB4Liy4Lij4Lid4Lix4LiH4LiV4Lix4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAn4Lil4Liy4Lii4LmA4LiL4LiZ4LiV4LmM4LmA4LiU4Li14Lii4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAn4LiV4LmI4Lit4Lic4Li54LmJ4LmD4LiK4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICfguKrguLPguKvguKPguLHguJrguJXguLHguKfguJvguKPguLDguKHguKfguKXguJzguKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ+C4leC5iOC4reC5gOC4i+C4tOC4o+C5jOC4n+C5gOC4p+C4reC4o+C5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJ+C4leC5iOC4reC4q+C4meC4tuC5iOC4h+C5guC4q+C4meC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ+C4peC4suC4ouC5gOC4i+C4meC4leC5jOC4reC4uOC4m+C4geC4o+C4k+C5jOC5gOC4quC4teC4ouC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICfguKXguLLguKLguYDguKfguJnguJXguYzguYDguK3guYfguJnguYDguJXguK3guKPguYzguYTguJ7guKPguKrguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICfguKXguLLguKLguYDguIvguJnguJXguYzguJzguLnguYnguJ7guLHguJLguJnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ+C4geC4suC4o+C4quC4suC4mOC4tOC4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICfguYDguKfguKXguLIg4LiI4Liz4LiB4Lix4LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn4Lif4Lij4Li14LmB4Lin4Lij4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAn4LmC4Lit4LmA4Lie4LiZ4LiL4Lit4Lij4LmM4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ+C5hOC4oeC5iOC4iOC4s+C4geC4seC4lCc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ+C5guC4reC5gOC4hCc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsdGVybmF0aXZlVG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F1dG9sb2FkaW5nIG9mIHVwbG9hZCBjYWNoZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn4LiV4Lij4Lin4LiI4Liq4Lit4Lia4LiK4Li34LmI4Lit4LmA4LiJ4Lie4Liy4Liw4LmA4LiX4LmI4Liy4LiZ4Lix4LmJ4LiZ4LiX4Li14LmI4Lit4Lii4Li54LmI4LmD4LiZIENvbmZpZ0l0ZW0g4LiK4Lix4LmJ4LiZ4LmA4LiU4Li14Lii4Lin4LiB4Lix4LiZICjguIrguLHguYnguJkpIOC4q+C4o+C4t+C4reC4l+C4seC5ieC4h+C4q+C4oeC4lCAo4LiX4Lix4LmJ4LiH4Lir4Lih4LiUKSDguIvguLbguYjguIfguKvguKHguLLguKLguITguKfguLLguKHguKfguYjguLJDb25maWdJdGVtIOC4l+C4teC5iOC4oeC4teC4reC4ouC4ueC5iOC4l+C4seC5ieC4h+C4q+C4oeC4lOC4iOC4sOC4luC4ueC4geC4meC4s+C5gOC4guC5ieC4suC4muC4seC4jeC4iuC4teC5gOC4nuC4t+C5iOC4reC4hOC5ieC4meC4q+C4suC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC4i+C5ieC4s+C4geC4seC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdDb25maWcgSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5guC4oeC4lOC4ueC4peC4geC4tOC4iOC4geC4o+C4o+C4oeC4guC4reC4h0NvbmZpZyBpdGVtIOC4l+C4teC5iOC4iuC5iOC4p+C4ouC5g+C4q+C5ieC5gOC4guC5ieC4suC4quC4ueC5iOC4o+C4sOC4muC4muC4m+C4o+C4sOC4p+C4seC4leC4tOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4quC4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfguIHguLLguKPguIjguLPguIHguLHguJQgQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gSXRlbSDguITguYnguJnguKvguLIgYmFja2VuZCByb3V0ZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfguKrguKPguYnguLLguIfguYHguKXguLDguIjguLHguJTguIHguLLguKPguITguLPguJnguLTguKLguLLguKHguKrguLPguKvguKPguLHguJogQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguLTguJfguJjguLTguYzguJfguLXguYjguIjguLPguYDguJvguYfguJnguYPguJnguIHguLLguKPguKrguKPguYnguLLguIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTeC5guC4lOC4ouC5g+C4iuC5ieC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguLTguJfguJjguLTguYzguJfguLXguYjguIjguLPguYDguJvguYfguJnguYPguJnguIHguLLguKPguYDguK3guLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTeC5guC4lOC4ouC5g+C4iuC5ieC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Liq4Li04LiX4LiY4Li04LmM4LiX4Li14LmI4LiI4Liz4LmA4Lib4LmH4LiZ4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU03guYLguJTguKLguYPguIrguYnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1cGRhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4quC4tOC4l+C4mOC4tOC5jOC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C4reC4seC4nuC5gOC4lOC4leC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNN4LmC4LiU4Lii4LmD4LiK4LmJ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Lix4LmI4Lin4LmE4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC5guC4oeC4lOC4ueC4peC4oOC4suC4nuC4o+C4p+C4oeC5g+C4meC4geC4suC4o+C5geC4quC4lOC4h+C4oeC4uOC4oeC4oeC4reC4h+C4guC4meC4suC4lOC5gOC4peC5h+C4geC4guC4reC4h+C4o+C4suC4ouC4geC4suC4oyAgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiZ4Li04Lie4LiI4LiZ4LmM4LiX4Lix4LmI4Lin4LmE4Lib4LmA4Lib4LmH4LiZ4Lij4Liy4Lii4Lia4Li44LiE4LiE4Lil4LmD4LiZQ29uZmlnSXRlbSDguYHguJXguYjguKXguLDguIrguLHguYnguJkg4LmA4Lie4Li34LmI4Lit4LiV4Lij4Lin4LiI4Liq4Lit4Lia4LiK4Li34LmI4LitIENvbmZpZ0l0ZW0g4LmB4Lil4Liw4LmA4Lie4Li34LmI4Lit4LmB4Liq4LiU4LiH4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4Lic4Li04LiU4Lie4Lil4Liy4LiU4LiX4Li14LmI4Liq4Lit4LiU4LiE4Lil4LmJ4Lit4LiH4LiB4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4reC4muC5gOC4iOC4geC4leC5jOC4ouC5iOC4reC4ouC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4hOC4peC4suC4qiBcJ0lUU01Db25maWdJdGVtXCcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiI4Liz4LiZ4Lin4LiZ4LmB4LiW4Lin4Liq4Liz4Lir4Lij4Lix4Lia4LiV4Lix4Lin4LmB4LiB4LmJ4LmE4LiC4LiB4Liy4Lij4LiZ4Li04Lii4Liy4LihIENJIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4quC4guC4reC4h+C4nOC4ueC5ieC4lOC4ueC5geC4peC4o+C4sOC4muC4mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguILguLXguJTguIjguLPguIHguLHguJTguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK0gQWdlbnRJVFNNQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4guC4teC4lOC4iOC4s+C4geC4seC4lOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4quC4s+C4q+C4o+C4seC4muC4q+C4meC5ieC4suC4iOC4rSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC4reC4peC4seC4oeC4meC5jOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4h2NvbmZpZyBpdGVtIOC4leC4seC4p+C5gOC4peC4t+C4reC4geC4meC4teC5ieC4iOC4sOC5hOC4oeC5iOC4oeC4teC4nOC4peC4leC5iOC4reC4leC4s+C5geC4q+C4meC5iOC4h+C4guC4reC4h+C4hOC4reC4peC4seC4oeC4meC5jCDguKvguKHguLLguKLguYDguKvguJXguLg6IOC4o+C4sOC4lOC4seC4muC4guC4reC4h+C4hOC4reC4peC4seC4oeC4meC5jOC4quC4suC4oeC4suC4o+C4luC5g+C4iuC5ieC5hOC4lOC5ieC5gOC4quC4oeC4reC4luC5ieC4suC4leC4seC4p+C4geC4o+C4reC4hyBcJ+C4l+C4seC5ieC4h+C4q+C4oeC4lFwnIOC4luC4ueC4geC5gOC4peC4t+C4reC4gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguK3guKXguLHguKHguJnguYzguJfguLXguYjguIjguLDguYHguKrguJTguIfguYPguJnguIHguLLguKPguITguYnguJnguKvguLIgY29uZmlnIGl0ZW0g4LiV4Lix4Lin4LmA4Lil4Li34Lit4LiB4LiZ4Li14LmJ4LiI4Liw4LmE4Lih4LmI4Lih4Li14Lic4Lil4LiV4LmI4Lit4LiV4Liz4LmB4Lir4LiZ4LmI4LiH4LiC4Lit4LiH4LiE4Lit4Lil4Lix4Lih4LiZ4LmMICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguK3guKXguLHguKHguJnguYzguJfguLXguYjguYHguKrguJTguIcgQ0lzIOC5g+C4meC4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4h+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4i+C4tuC5iOC4h+C4guC4tuC5ieC4meC4reC4ouC4ueC5iOC4geC4seC4muC4hOC4peC4suC4qiBDSSDguKPguLLguKLguIHguLLguKPguIHguLLguKPguJvguYnguK3guJnguYHguJXguYjguKXguLDguKPguLLguKLguIHguLLguKPguIjguLDguJXguYnguK3guIfguJnguLPguKvguJnguYnguLLguJTguYnguKfguKLguIrguLfguYjguK3guITguKXguLLguKrguYHguKXguLDguYDguITguKPguLfguYjguK3guIfguKvguKHguLLguKLguJfguKfguLTguKDguLLguITguITguLnguYggKOC5gOC4iuC5iOC4meC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDogOikg4Lih4Li14LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIENJIOC5gOC4nuC4teC4ouC4h+C5hOC4oeC5iOC4geC4teC5iOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jCDguJfguLXguYjguYPguIrguYnguIHguLHguJnguJfguLHguYjguKfguYTguJvguYPguJkgQ0lzIOC4l+C4seC5ieC4h+C4q+C4oeC4lCAo4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4Liq4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOiDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4iuC4t+C5iOC4rSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjpDdXJEZXBsU3RhdGUsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo6Q3JlYXRlVGltZSkg4LmD4LiZ4LiB4Liy4Lij4LmB4Liq4LiU4LiH4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIENJIOC4leC4suC4oeC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5ieC5g+C4meC4hOC4s+C4meC4tOC4ouC4suC4oSBDSSDguIjguLDguJXguYnguK3guIfguYPguIrguYnguKPguLnguJvguYHguJrguJrguJXguYjguK3guYTguJvguJnguLXguYko4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4Liq4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMKTog4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjEsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoxOjrguITguKfguLLguKHguIjguLg6OjEsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoyLCDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4ruC4suC4o+C5jOC4lOC4lOC4tOC4quC4geC5jDo6Mjo64LiE4Lin4Liy4Lih4LiI4Li4OjoxICDguKvguLLguIHguYTguKHguYjguKHguLXguIHguLLguKPguJvguYnguK3guJnguITguKXguLLguKrguJfguLXguYggQ0kg4LmB4Lil4LmJ4Lin4LiE4Lit4Lil4Lix4Lih4LiZ4LmM4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiI4Liw4LmB4Liq4LiU4LiH4LiV4Liy4Lih4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJ4LmD4LiZ4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU01Db25maWdJdGVtIDo6RnJvbnRlbmQgOjogQWdlbnRJVFNNQ29uZmlnSXRlbSAjIyMgU2hvd0NvbHVtbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC4reC4peC4seC4oeC4meC5jOC4l+C4teC5iOC5geC4quC4lOC4hyBDSXMg4LmD4LiZ4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiC4Lit4LiH4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiL4Li24LmI4LiH4LiC4Li24LmJ4LiZ4Lit4Lii4Li54LmI4LiB4Lix4Lia4LiE4Lil4Liy4LiqIENJIOC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4m+C5ieC4reC4meC5geC4leC5iOC4peC4sOC4o+C4suC4ouC4geC4suC4o+C4iOC4sOC4leC5ieC4reC4h+C4meC4s+C4q+C4meC5ieC4suC4lOC5ieC4p+C4ouC4iuC4t+C5iOC4reC4hOC4peC4suC4quC5geC4peC4sOC5gOC4hOC4o+C4t+C5iOC4reC4h+C4q+C4oeC4suC4ouC4l+C4p+C4tOC4oOC4suC4hOC4hOC4ueC5iCAo4LmA4LiK4LmI4LiZ4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOiA6KSDguKHguLXguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgQ0kg4LmA4Lie4Li14Lii4LiH4LmE4Lih4LmI4LiB4Li14LmI4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIOC4l+C4teC5iOC5g+C4iuC5ieC4geC4seC4meC4l+C4seC5iOC4p+C5hOC4m+C5g+C4mSBDSXMg4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguJXguLHguKfguK3guKLguYjguLLguIfguKrguLPguKvguKPguLHguJrguITguKXguLLguKrguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6IOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64LiK4Li34LmI4LitLCDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OkN1ckRlcGxTdGF0ZSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjpDcmVhdGVUaW1lKSDguYPguJnguIHguLLguKPguYHguKrguJTguIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgQ0kg4LiV4Liy4Lih4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJ4LmD4LiZ4LiE4Liz4LiZ4Li04Lii4Liy4LihIENJIOC4iOC4sOC4leC5ieC4reC4h+C5g+C4iuC5ieC4o+C4ueC4m+C5geC4muC4muC4leC5iOC4reC5hOC4m+C4meC4teC5iSjguJXguLHguKfguK3guKLguYjguLLguIfguKrguLPguKvguKPguLHguJrguITguKXguLLguKrguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYwpOiDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4ruC4suC4o+C5jOC4lOC4lOC4tOC4quC4geC5jDo6MSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjE6OuC4hOC4p+C4suC4oeC4iOC4uDo6MSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjIsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoyOjrguITguKfguLLguKHguIjguLg6OjEg4Lir4Liy4LiB4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4Lib4LmJ4Lit4LiZ4LiE4Lil4Liy4Liq4LiX4Li14LmIIENJIOC5geC4peC5ieC4p+C4hOC4reC4peC4seC4oeC4meC5jOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4iOC4sOC5geC4quC4lOC4h+C4leC4suC4oeC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5ieC5g+C4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNQ29uZmlnSXRlbSA6OkZyb250ZW5kIDo6IEFnZW50SVRTTUNvbmZpZ0l0ZW0gIyMjIFNob3dDb2x1bW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSB3aWRnZXQgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkgKGtleSBEZWZhdWx0Q29sdW1ucykuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC4reC4peC4seC4oeC4meC5jOC4l+C4teC5iOC5geC4quC4lOC4hyBDSXMg4LmD4LiZ4LiV4Liy4Lij4Liy4LiH4LiB4Liy4Lij4LmA4LiK4Li34LmI4Lit4Lih4LmC4Lii4LiH4Lih4Li44Lih4Lih4Lit4LiH4LiX4Li14LmI4LiL4Lix4Lia4LiL4LmJ4Lit4LiZ4LiL4Li24LmI4LiH4LiC4Li24LmJ4LiZ4Lit4Lii4Li54LmI4LiB4Lix4Lia4LiE4Lil4Liy4LiqIENJIOC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4m+C5ieC4reC4meC5geC4leC5iOC4peC4sOC4o+C4suC4ouC4geC4suC4o+C4iOC4sOC4leC5ieC4reC4h+C4meC4s+C4q+C4meC5ieC4suC4lOC5ieC4p+C4ouC4iuC4t+C5iOC4reC4hOC4peC4suC4quC5geC4peC4sOC5gOC4hOC4o+C4t+C5iOC4reC4h+C4q+C4oeC4suC4ouC4l+C4p+C4tOC4oOC4suC4hOC4hOC4ueC5iCAo4LmA4LiK4LmI4LiZ4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOiA6KSDguKHguLXguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgQ0kg4LmA4Lie4Li14Lii4LiH4LmE4Lih4LmI4LiB4Li14LmI4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmMIOC4l+C4teC5iOC5g+C4iuC5ieC4geC4seC4meC4l+C4seC5iOC4p+C5hOC4m+C5g+C4mSBDSXMg4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguJXguLHguKfguK3guKLguYjguLLguIfguKrguLPguKvguKPguLHguJrguITguKXguLLguKrguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6IOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64LiK4Li34LmI4LitLCDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OkN1ckRlcGxTdGF0ZSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjpDcmVhdGVUaW1lKSDguYPguJnguIHguLLguKPguYHguKrguJTguIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYwgQ0kg4LiV4Liy4Lih4LiX4Li14LmI4LiB4Liz4Lir4LiZ4LiU4LmE4Lin4LmJ4LmD4LiZ4LiE4Liz4LiZ4Li04Lii4Liy4LihIENJIOC4iOC4sOC4leC5ieC4reC4h+C5g+C4iuC5ieC4o+C4ueC4m+C5geC4muC4muC4leC5iOC4reC5hOC4m+C4meC4teC5iSjguJXguLHguKfguK3guKLguYjguLLguIfguKrguLPguKvguKPguLHguJrguITguKXguLLguKrguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYwpOiDguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYw6OuC4ruC4suC4o+C5jOC4lOC4lOC4tOC4quC4geC5jDo6MSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjE6OuC4hOC4p+C4suC4oeC4iOC4uDo6MSwg4LiE4Lit4Lih4Lie4Li04Lin4LmA4LiV4Lit4Lij4LmMOjrguK7guLLguKPguYzguJTguJTguLTguKrguIHguYw6OjIsIOC4hOC4reC4oeC4nuC4tOC4p+C5gOC4leC4reC4o+C5jDo64Liu4Liy4Lij4LmM4LiU4LiU4Li04Liq4LiB4LmMOjoyOjrguITguKfguLLguKHguIjguLg6OjEg4Lir4Liy4LiB4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4Lib4LmJ4Lit4LiZ4LiE4Lil4Liy4Liq4LiX4Li14LmIIENJIOC5geC4peC5ieC4p+C4hOC4reC4peC4seC4oeC4meC5jOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4iOC4sOC5geC4quC4lOC4h+C4leC4suC4oeC4l+C4teC5iOC4geC4s+C4q+C4meC4lOC5hOC4p+C5ieC5g+C4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNQ29uZmlnSXRlbSA6OkZyb250ZW5kIDo6IEFnZW50SVRTTUNvbmZpZ0l0ZW0gIyMjIFNob3dDb2x1bW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn4LiL4LmJ4LizJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ+C5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4o+C4suC4ouC4geC4suC4o+C4hOC4uOC4k+C4peC4seC4geC4qeC4k+C4sOC4guC4reC4h+C4geC4suC4o+C4l+C4s+C4h+C4suC4meC5gOC4m+C5h+C4meC4geC4peC4uOC5iOC4oSDguKrguLPguKvguKPguLHguJrguJ/guKPguK3guJnguJXguYzguYDguK3guJnguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYzguYDguJ7guLfguYjguK3guJfguLPguIfguLLguJnguIHguLHguJrguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLLguJfguLXguYjguKHguLXguKHguLLguIHguIHguKfguYjguLLguKvguJnguLbguYjguIfguYPguJnguKvguJnguLbguYjguIfguITguKPguLHguYnguIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+C5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4o+C4suC4ouC4geC4suC4o+C4hOC4uOC4k+C4peC4seC4geC4qeC4k+C4sOC4guC4reC4h+C4geC4suC4o+C4l+C4s+C4h+C4suC4meC5gOC4m+C5h+C4meC4geC4peC4uOC5iOC4oeC5gOC4ieC4nuC4suC4sOC4quC4s+C4q+C4o+C4seC4muC4geC4peC4uOC5iOC4oeC4l+C4teC5iOC4o+C4sOC4muC4uOC5hOC4p+C5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICfguYDguJvguLTguJQgLyDguJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJnguJ/guLHguIfguIHguYzguIrguLHguYjguJnguYDguJ7guLfguYjguK3guJXguKPguKfguIjguKrguK3guJogQ29uZmlnSXRlbXMg4Liq4Liz4Lir4Lij4Lix4Lia4LiK4Li34LmI4Lit4LiX4Li14LmI4LmE4Lih4LmI4LiL4LmJ4Liz4LiB4Lix4LiZIOC4geC5iOC4reC4meC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC4leC4seC4p+C5gOC4peC4t+C4reC4geC4meC4teC5ieC4hOC4uOC4k+C4hOC4p+C4o+C4leC4o+C4p+C4iOC4quC4reC4muC4o+C4sOC4muC4muC4guC4reC4h+C4hOC4uOC4k+C4quC4s+C4q+C4o+C4seC4muC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4l+C4teC5iOC4oeC4teC4reC4ouC4ueC5iOC5geC4peC5ieC4p+C4lOC5ieC4p+C4ouC4iuC4t+C5iOC4reC4l+C4teC5iOC4i+C5ieC4s+C4geC4seC4mSDguITguLjguJPguKrguLLguKHguLLguKPguJbguJfguLPguYDguIrguYjguJnguJnguLXguYnguJTguYnguKfguKLguKrguITguKPguLTguJvguJXguYzguJTguLHguIfguJXguYjguK3guYTguJvguJnguLXguYkgYmluIC8gb3Rycy5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfguYLguKHguJTguLnguKXguYPguJnguIHguLLguKPguJXguKPguKfguIjguKrguK3guJrguJzguLnguYnguKPguLHguJrguJzguLTguJTguIrguK3guJrguIHguKXguLjguYjguKHguKrguLPguKvguKPguLHguJrguITguKXguLLguKonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfguYLguKHguJTguLnguKXguYPguJnguIHguLLguKPguJXguKPguKfguIjguKrguK3guJrguJzguLnguYnguKPguLHguJrguJzguLTguJTguIrguK3guJrguIHguKXguLjguYjguKHguKrguLPguKvguKPguLHguJogY29uZmlndXJhdGlvbiBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn4LmC4Lih4LiU4Li54Lil4Liq4Lij4LmJ4Liy4LiH4Liq4LiW4Li04LiV4Li0IElUU00gY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBPYmplY3QgYmFja2VuZCDguKrguLPguKvguKPguLHguJrguYLguKHguJTguLnguKXguJnguLPguYDguILguYnguLLguKvguKPguLfguK3guKrguYjguIfguK3guK3guIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C4quC4teC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguJXguLHguKfguK3guKLguYjguLLguIfguIHguKXguLjguYjguKHguJfguLXguYjguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJXguILguK3guIfguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguYHguITguYfguJXguJXguLLguKXguYfguK3guIHguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LmB4LiV4LmI4Lil4Liw4Lir4LiZ4LmJ4LiyKOC4i+C4tuC5iOC4hyBjb25maWd1cmF0aW9uIGl0ZW1zIOC5geC4quC4lOC4hyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LmA4Lib4LmH4LiZ4LiV4LmJ4Lit4LiH4Lih4Li14LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4Li04LmD4LiZ4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU00g4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4geC4suC4o+C4i+C4ueC4oeC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC4geC4suC4o+C5gOC4nuC4tOC5iOC4oeC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC4geC4suC4o+C5geC4geC5ieC5hOC4guC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguKHguLXguIHguLLguKPguK3guJnguLjguI3guLLguJXguLTguYPguJnguIHguLLguKPguYPguIrguYnguIfguLLguJnguJvguKPguLDguKfguLHguJXguLTguYPguJnguKvguJnguYnguLLguIjguK3guKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C4oeC4teC4geC4suC4o+C4reC4meC4uOC4jeC4suC4leC4tOC5g+C4meC4geC4suC4o+C5g+C4iuC5ieC4h+C4suC4meC4geC4suC4o+C4nuC4tOC4oeC4nuC5jOC5g+C4meC4q+C4meC5ieC4suC4iOC4reC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNNIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJ+C5gOC4peC4t+C4reC4geC4q+C4oeC4suC4ouC5gOC4peC4guC4o+C4suC4ouC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4leC4seC4p+C4geC4s+C5gOC4meC4tOC4lOC5guC4oeC4lOC4ueC4pSAiQXV0b0luY3JlbWVudCIg4LiI4Liw4LmA4Lie4Li04LmI4Lih4Lir4Lih4Liy4Lii4LmA4Lil4LiC4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4LiyIFN5c3RlbUlEIENvbmZpZ0l0ZW1DbGFzc0lEIOC5geC4peC4sOC4leC4seC4p+C4meC4seC4muC4l+C4teC5iOC4oeC4teC4geC4suC4o+C5g+C4iuC5iSDguKPguLnguJvguYHguJrguJrguITguLfguK0gIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiIOC5gOC4iuC5iOC4mSAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJXguLHguYnguIfguITguYjguLLguKrguJbguLLguJnguLDguIHguLLguKPguYPguIrguYnguIfguLLguJnguYPguJnguKvguJnguYnguLLguIjguK3guIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKPguLLguKLguIHguLLguKPguYDguJvguYfguJnguIHguKXguLjguYjguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Liq4LiW4Liy4LiZ4Liw4LiC4Lit4LiH4LmA4Lir4LiV4Li44LiB4Liy4Lij4LiT4LmM4LmD4LiZ4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LmA4Lib4LmH4LiZ4LiB4Lil4Li44LmI4Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4Lil4Li04LiH4LiE4LmM4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiB4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiE4LmM4Lit4Li34LmI4LiZ4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LmA4LiC4LmJ4Liy4LiK4Lih4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiHIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguJfguLHguYjguKfguYTguJvguILguK3guIdjb25maWd1cmF0aW9uIGl0ZW3guYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4LmA4LiC4LmJ4Liy4LiK4Lih4Lib4Lij4Liw4Lin4Lix4LiV4Li04LiC4Lit4LiHIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYPguJnguIHguLLguKPguJfguLXguYjguIjguLDguIjguLPguKXguK3guIcgY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4l+C4seC5iOC4p+C5hOC4m+C4guC4reC4h2NvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5g+C4meC4geC4suC4o+C4l+C4teC5iOC4iOC4sOC4iOC4s+C4peC4reC4h2NvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYPguJnguIHguLLguKPguJfguLXguYjguIjguLDguYHguIHguYnguYTguIIgY29uZmlndXJhdGlvbiBpdGVtIOC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmD4LiZ4LiB4Liy4Lij4LiX4Li14LmI4LiI4Liw4Lie4Li04Lih4Lie4LmMIGNvbmZpZ3VyYXRpb24gaXRlbSDguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guIvguLnguKHguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguYPguJnguKHguLjguKHguKHguK3guIfguKDguLLguJ7guKPguKfguKHguILguK3guIfguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4m+C4o+C4sOC4p+C4seC4leC4tCBjb25maWcgaXRlbSAo4Lil4Liz4LiU4Lix4Lia4Lii4LmJ4Lit4LiZ4LiB4Lil4Lix4LiaKSDguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ+C4leC4seC4p+C4muC5iOC4h+C4iuC4teC5ieC4quC4s+C4q+C4o+C4seC4miAgQ29uZmlndXJhdGlvbiBJdGVtIOC5gOC4iuC5iOC4mSBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIyDguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguITguLfguK0gQ29uZmlnSXRlbSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/tr_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6dHJfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdZYWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIGdlbmVyaWMgSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0gdGFibGUnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBvbmUgdmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IGFsbCB2ZXJzaW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gVmVyc2lvbiBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb3BlcnR5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0FyYXPEsW5kYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1Ym5ldCBNYXNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1YW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZWRpYSd9ID0gJyc7CgogICAgIyBYTUwgRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXB1dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Byb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAnT2Zpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVc2VyIFRvb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2luZ2xlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFByb2Nlc3Nvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VudGVycHJpc2UgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXZlbG9wZXIgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZW1vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpbWUgUmVzdHJpY3RlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVuIFNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVbmxpbWl0ZWQnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIGlkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgc2VhcmNoIGZvciBjb25maWcgaXRlbXMgYmFzZWQgb24gdGhlIGN1c3RvbWVyIHVzZXIgaWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBDb25maWdJdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBzY3JpcHQgYmluL3pudW55LkNvbnNvbGUucGwgQWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IE1vZHVsZSB0aGF0IGxpbmtzIGEgQ29uZmlnSXRlbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlcnMgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdCBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXN0IG9mIGV2ZW50cyB0aGF0IGFyZSBhdmFpbGFibGUgZm9yIGdlbmVyaWMgaW50ZXJmYWNlIGV2ZW50IG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlIC4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdHZW5lbCBrYXRhbG9nIMO2em5pdGVsaWtsZXJpbmluIMO2cm5layBpemluIGdydXBsYXLEsW7EsW4gcGFyYW1ldHJlbGVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/uk_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6dWtfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfQl9Cx0ZbQu9GM0YjQtdC90LjQuSDQstC40LQnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICcg0JzRltC2JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogdmFyL3BhY2thZ2VzZXR1cC9JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmQgRGlzayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBvdmVyIERIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAnJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQREEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJpbnRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTd2l0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm91dGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAn0J/RgNC40YHRgtGA0ZbQuSDRgNC10LfQtdGA0LLQvdC+0LPQviDQutC+0L/RltGO0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnQmVhbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfQsdGD0LTQuNC90L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICfQntGE0ZbRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZWxjbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pZGRsZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBPUyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgT1MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW4gVG9vbCd9ID0gJ9CQ0LTQvNGW0L0t0ZbQvdGB0YLRgNGD0LzQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDQv9GA0LjQutC70LDQtNGDINC00L7Qt9Cy0L7Qu9GDINCz0YDRg9C/INC30LDQs9Cw0LvRjNC90LjRhSDQsNGC0YDQuNCx0YPRgtGW0LIg0LrQsNGC0LDQu9C+0LPRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGEgSVRTTUNvbmZpZ0l0ZW0tRXZlbnRNb2R1bGUgdGhhdCB3aWxsIHNhdmUgcmVsYXRlZCBhdHRhY2htZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYW4gb3V0cHV0IGZpbHRlciB0aGF0IHNob3dzIGEgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWxldmFudFRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIGdyb3VwIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/vi_VN_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6dmlfVk5fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ1Ry4bqhbmcgdGjDoWkgc+G7sSBj4buRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSBoaeG7h24gdGjhu51pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdUaGF5IMSR4buVaSBs4bqnbiBjdeG7kWknOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Ry4bqhbmcgdGjDoWkgdHJp4buDbiBraGFpIGPhu6dhIMSR4buRaSB0xrDhu6NuZyBuw6B5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0dp4buvYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAnVHLGsOG7nW5nIHLhu5duZyBuZ2jEqWEgbMOgIGdpw6EgdHLhu4sgaGnhu4duIHThuqFpIGtow7RuZyDEkeG7lWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2tpcHBlZCd9ID0gJ0Lhu4sgYuG7jyBxdWEnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ0No4bunbmcgbG/huqFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIENvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsIE51bWJlcid9ID0gJ1Phu5Egc2VyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFtJ30gPSAnQuG7mSBuaOG7myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICfhu5QgY+G7qW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAnRHVuZyBsxrDhu6NuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGUUROJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRhcHRlcid9ID0gJ0NhcmQgbeG6oW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ0PhuqVwIElQIHF1YSBESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICfEkOG7i2EgY2jhu4kgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAnQ2FyZCDEkeG7kyBob+G6oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlciBFcXVpcG1lbnQnfSA9ICdUaGnhur90IGLhu4sga2jDoWMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJ30gPSAnTmfDoHkgaOG6v3QgaOG6oW4gYuG6o28gaMOgbmgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAnTmfDoHkgY8OgaSDEkeG6t3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ8SQaeG7h24gdGhv4bqhaSAxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICfEkGnhu4duIHRob+G6oWkgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFLU1haWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGRyZXNzJ30gPSAnxJDhu4thIGNo4buJIG3huqFuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ03hurd0IG7huqEgbOG7m3AgbeG6oW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dhdGV3YXknfSA9ICdD4buVbmcgdHJ1eSBj4bqtcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICdMb+G6oWkgZ2nhuqV5IHBow6lwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgS2V5J30gPSAnS2hvw6EgYuG6o24gcXV54buBbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ1Phu5EgbMaw4bujbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAnTmfDoHkgaOG6v3QgaOG6oW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICdQaMawxqFuZyB0aeG7h24nOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfEkMOjIGjhur90IGjhuqFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnQuG6o28gdHLDrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnVGhlbyBr4bq/IGhv4bqhY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdT4butYSBjaOG7r2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ0tow7RuZyBz4butIGThu6VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdUaOG6qW0gxJHhu4tuaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnS2nhu4NtIHRyYS9I4buPaSDEkcOhcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICdNw6F5IHjDoWNoIHRheSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnTcOheSDEkeG7gyBiw6BuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJ1RoaeG6v3QgYuG7iyBj4bqnbSB0YXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyJ30gPSAnTcOheSBjaOG7pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0tow6FjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3InfSA9ICdNw6BuIGjDrG5oJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICdNw6F5IGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJ0Lhu5kgY2h1eeG7g24gbeG6oWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ0Lhu5kgxJHhu4tuaCB0dXnhur9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4gQWNjZXNzIFBvaW50J30gPSAnxJBp4buDbSB0cnV5IGPhuq1wIGtow7RuZyBkw6J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJ1RoaeG6v3QgYuG7iyBi4bqjbyBt4bqtdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAnVGhp4bq/dCBi4buLIGzGsHUgdHLhu68nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdDaHXhu5l0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnQsOgbiBwaMOtbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICdDYW1lcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAnQuG7mSDEkWnhu4F1IGJp4bq/bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQQ01DSUEgQ2FyZCd9ID0gJ0NhcmQgUENNQ0lBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICdUaGnhur90IGLhu4sgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ03DoXkgdHLhuqFtIGPhu5EgxJHhu4tuaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAnTcOheSBxdWV0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1Rvw6AgbmjDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPZmZpY2UnfSA9ICdWxINuIHBow7JuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ1ThuqduZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUGjDsm5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICdU4bunIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAnTsahaSBsw6BtIHZp4buHYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRsZXQnfSA9ICfhu5QgY+G6r20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVQgRmFjaWxpdHknfSA9ICdDxqEgc+G7nyBDTlRUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ0xBTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAnTeG6oW5nIGtow7RuZyBkw6J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAnVmnhu4VuIHRow7RuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHU00nfSA9ICdHU00nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IEFwcGxpY2F0aW9uJ30gPSAn4buobmcgZOG7pW5nIGtow6FjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAnUGjhuqduIG3hu4FtIHRydW5nIGdpYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIEFwcGxpY2F0aW9uJ30gPSAn4buobmcgZOG7pW5nIG3DoXkgY2jhu6cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAnSMSQSCBraMOhY2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAnSMSQSCBtw6F5IGNo4bunJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICdDw7RuZyBj4bulIHF14bqjbiBsw70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAnQ8O0bmcgY+G7pSBuZ8aw4budaSBkw7luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ05ow7puZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ0dp4bqleSBwaMOpcCDEkcahbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ1Ryw6puIG5nxrDhu51pIGTDuW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICdUcsOqbiBi4buZIHjhu60gbMO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICdUcsOqbiBtw6F5IGNo4bunJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBOb2RlJ30gPSAnVHLDqm4gbm9kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ0PhuqVwIHBow6lwIHPhu5EgbMaw4bujbmcgbOG7m24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAnR2nhuqV5IHBow6lwIGRvYW5oIG5naGnhu4dwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAnR2nhuqV5IHBow6lwIHBow6F0IHRyaeG7g24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ0No4bqheSB0aOG7rSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICdHaeG7m2kgaOG6oW4gdGjhu51pIGdpYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdQaOG6p24gbeG7gW0gbWnhu4VuIHBow60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICdNw6Mgbmd14buTbiBt4bufJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ0tow7RuZyBnaeG7m2kgaOG6oW4nOwoKICAgICMgSlMgRmlsZTogdmFyL2h0dHBkL2h0ZG9jcy9qcy9JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbS5qcwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2snfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHRlcm5hdGl2ZVRvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdXRvbG9hZGluZyBvZiB1cGxvYWQgY2FjaGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKERyb3Bkb3duKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoTXVsdGlzZWxlY3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbU51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBtYXBwaW5nIGJldHdlZW4gQ0kgY2xhc3NlcyBhbmQgYSBGb250YXdlc29tZSBpY29ucyB3aGljaCBhcmUgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGNyZWF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzZWFyY2ggYXR0cmlidXRlIGZvciBDSSBzZWFyY2ggc2NyZWVuLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaC4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGlzIHVzZWQgdG8gbGluayB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBlbmRzT24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdOaMOibiDEkcO0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljRmllbGRDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgaWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBzZWFyY2ggZm9yIGNvbmZpZyBpdGVtcyBiYXNlZCBvbiB0aGUgY3VzdG9tZXIgdXNlciBpZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIENvbmZpZ0l0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIHNjcmlwdCBiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVycyB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW1zIGJ5IGRlcG95bWVudCBzdGF0ZXMgaW50byB0aGUgY3VzdG9tZXIgY29uZmlnIGl0ZW0gd2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gbG9uZ2VyIGluIHVzZS4gRG8gbm90IGNoYW5nZS4gUmVxdWlyZWQgZHVlIHRvIGNvbXBhdGliaWxpdHkgd2l0aCBwcmV2aW91cyBwYWNrYWdlIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdCBiYWNrZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBpbXBvcnQvZXhwb3J0IG1vZHVsZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UgLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1RoYW0gc+G7kSBjaG8gbmjDs20gY+G6pXAgcGjDqXAgY+G7p2EgdGh14buZYyB0w61uaCBkYW5oIG3hu6VjIGNodW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGNvbmZpZyBpdGVtIGRpYWxvZyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZS4gIkF1dG9JbmNyZW1lbnQiIGluY3JlbWVudHMgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBudW1iZXIsIHRoZSBTeXN0ZW1JRCwgdGhlIENvbmZpZ0l0ZW1DbGFzc0lEIGFuZCB0aGUgY291bnRlciBhcmUgdXNlZC4gVGhlIGZvcm1hdCBpcyAiU3lzdGVtSUQuQ29uZmlnSXRlbUNsYXNzSUQuQ291bnRlciIsIGUuZy4gMTIwNTAwMDAwNCwgMTIwNTAwMDAwNS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyBhIGZyb250ZW5kIG1vZHVsZSBmb3IgdGhlIGFnZW50IGludGVyZmFjZSB0aGF0IHByb3ZpZGVzIHRoZSBBSkFYIGludGVyZmFjZSBmb3IgQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCBjcmVhdGVzIGFuZCByZW1vdmVzIGxpbmtzIGJldHdlZW4gdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIER5bmFtaWNGaWVsZHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vPSBbXSB9LCAoCiAgICAnTm8nLAogICAgJ09rJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdZZXMnLAogICAgJ25vbmUnLAogICAgKTsKCn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Language/zh_CN_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6emhfQ05fSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUueexu+WumuS5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn566h55CG6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAn6YWN572u6aG557G7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICflrprkuYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAn5Y+Y5pu0JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ+aVhemanOeKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn6YOo572y54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAn57G7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+mDqOe9sueKtuaAgeexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn5b2T5YmN5pWF6Zqc54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+W9k+WJjeeahOaVhemanOeKtuaAgeexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfmnIDlkI7kv67mlLknOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn57G76L+H5ruk5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOS7juWIl+ihqOS4remAieaLqeexu++8jOeEtuWQjuWIm+W7uuaWsOeahOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ+mFjee9rumhuSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSDphY3nva7pobkg5om56YeP5pON5L2cJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICfpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICfkuovku7bnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAn6ZO+5o6l5Yiw5YW25LuWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICfml6DmlYjnmoTphY3nva7pobnnvJblj7fvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAn5bCG6KaB6ZO+5o6l55qE5Y+m5aSW5LiA5Liq6YWN572u6aG557yW5Y+344CCJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJ+S9oOecn+eahOaDs+imgeWIoOmZpOi/meS4qumFjee9rumhueWQlz8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfkuLrov5nkuKrphY3nva7pobnlkb3lkI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIE51bWJlcihzKTogJXMnfSA9CiAgICAgICAgJ+e8luWPt+S4uihzKTolc+eahOmFjee9rumhueW3sue7j+S9v+eUqOS6huatpOWQjeWtlyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICfphY3nva7pobnvvJolcyDnmoTljoblj7Lkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBDb250ZW50J30gPSAn5Y6G5Y+y5YC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXRpbWUnfSA9ICfliJvlu7rml7bpl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAn6K+m5oOF6KeG5Zu+JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhci50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGV4dCBTZXR0aW5ncyd9ID0gJ+S4iuS4i+aWh+iuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICfmr4/pobXphY3nva7pobnkuKrmlbAnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgZ2VuZXJpYyBJVFNNIENvbmZpZ3VyYXRpb24gSXRlbSB0YWJsZSd9ID0gJ+S4gOS4qumAmueUqOeahElUU03phY3nva7pobnooajmoLwnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn5ZCM5pe25pCc57Si5Lul5YmN55qE54mI5pys5ZCXPyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtWm9vbS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ+mFjee9rumhueS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICflvZPliY3nmoTpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn5LiK5qyh5L+u5pS55Lq6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgb25lIHZlcnNpb24nfSA9ICfmmL7npLrkuIDkuKrniYjmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBhbGwgdmVyc2lvbnMnfSA9ICfmmL7npLrmiYDmnInniYjmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBJbmNpZGVudCBTdGF0ZSd9ID0gJ+eJiOacrOaVhemanOeKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUnfSA9ICfniYjmnKzpg6jnvbLnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBOdW1iZXInfSA9ICfniYjmnKzlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIFZlcnNpb24gRGV0YWlscyd9ID0gJ+mFjee9rumhueeJiOacrOivpuaDhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9wZXJ0eSd9ID0gJ+WxnuaApyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHRvIENsYXNzIGlzIGdpdmVuISd9ID0gJ+ayoeacieexu+eahOiuv+mXruadg+mZkO+8gSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfmsqHmnInmjIflrprphY3nva7poblJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ+aCqOiHs+WwkemcgOimgeS4gOS4qumAieWumueahOmFjee9rumhue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ+S9oOayoeacieatpOmFjee9rumhueeahOWGmeadg+mZkO+8miVz44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICflnKjmlbDmja7lupPkuK3mib7kuI3liLDphY3nva7pobnigJwlc+KAne+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ+aXoOazleWIoOmZpOmFjee9rumhuUlEICVz77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfmib7kuI3liLDphY3nva7poblJRCVz55qE54mI5pys77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+WumumFjee9rumhuUlE44CBRHVwbGljYXRlSUTmiJZDbGFzc0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfmsqHmnInorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn5rKh5pyJ57G7ICVz55qE5a6a5LmJ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+S4jeiDveaYvuekuuWOhuWPsuS/oeaBr++8jOWboOS4uuayoeacieaMh+WumumFjee9rumhuUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5peg5rOV5pi+56S65Y6G5Y+y6K6w5b2V77yM5Zug5Li65rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfmlrDlu7rphY3nva7pobnvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn5paw5bu654mI5pys77yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfpg6jnvbLnirbmgIHlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5pWF6Zqc54q25oCB5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn6YWN572u6aG577yISUQ9JXPvvInlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICfliLAlc+mTvuaOpeeahO+8iOexu+Weiz0lc++8ieW3sua3u+WKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAn5YiwJXPpk77mjqXnmoTvvIjnsbvlnos9JXPvvInlt7LliKDpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ+mFjee9rumhueWumuS5ieW3suabtOaWsO+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5ZCN56ew5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn5bGe5oCnJXPlt7Lku47igJwlc+KAneabtOaWsOS4uuKAnCVz4oCdJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ+eJiOacrCVzIOW3suWIoOmZpCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+WumumFjee9rumhuUlE5oiW54mI5pysSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5peg5rOV5pi+56S66YWN572u6aG577yM5Zug5Li65rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn5Zyo5pWw5o2u5bqT5Lit5om+5LiN5Yiw6YWN572u6aG5SUQgJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICflnKjmlbDmja7lupPkuK3mib7kuI3liLDniYjmnKxJRCAlc++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICfmiZPljbDkurrvvJolcyDvvIzmiZPljbDml6XmnJ/vvJolcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ+aXoOaViOeahOexu0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6a57G7SUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfmsqHmnInov5nkuKrmjIflrprnsbvnmoTorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+aXoOe7k+aenO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ+mFjee9rumhueaQnOe0oue7k+aenCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn5peg5rOV5pi+56S66YWN572u6aG577yM5Zug5Li65rKh5pyJ57uZ5a6a6YWN572u6aG555qE6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn5q2j5bi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICforablkYonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfmlYXpmpwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhuemDqOe9sueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueaVhemanOeKtuaAgSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ+W3suaYvuekuueahOmFjee9rumhuSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfml7bpl7TljLrpl7QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn5Y2V5Liq5YWD57Sg55qE5pyA5aSn5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcHR5IGZpZWxkcyBpbmRpY2F0ZSB0aGF0IHRoZSBjdXJyZW50IHZhbHVlcyBhcmUga2VwdCd9ID0gJ+epuuWtl+auteihqOekuuS/neaMgeW9k+WJjeWAvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTa2lwcGVkJ30gPSAn6Lez6L+H55qEJzsKCiAgICAjIFBlcmwgTW9kdWxlOiB2YXIvcGFja2FnZXNldHVwL0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICflnovlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgQ29tcGFueSd9ID0gJ+WuouaIt+WNleS9jSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWwgTnVtYmVyJ30gPSAn5bqP5YiX5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYW0nfSA9ICflhoXlrZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZCBEaXNrJ30gPSAn56Gs55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5J30gPSAn5a656YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZRRE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBBZGFwdGVyJ30gPSAn572R5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIG92ZXIgREhDUCd9ID0gJ+S7jkRIQ1Dojrflj5ZJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBBZGRyZXNzJ30gPSAnSVDlnLDlnYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpYyBBZGFwdGVyJ30gPSAn5pi+5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyIEVxdWlwbWVudCd9ID0gJ+WFtuWug+iuvuWkhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXJyYW50eSBFeHBpcmF0aW9uIERhdGUnfSA9ICfkv53kv67ov4fmnJ/ml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zdGFsbCBEYXRlJ30gPSAn5a6J6KOF5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDEnfSA9ICfnlLXor50xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIDInfSA9ICfnlLXor50yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0UtTWFpbCd9ID0gJ0UtTWFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkZHJlc3MnfSA9ICfnvZHnu5zlnLDlnYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VibmV0IE1hc2snfSA9ICflrZDnvZHmjqnnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2F0ZXdheSd9ID0gJ+e9keWFsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIFR5cGUnfSA9ICforrjlj6/nsbvliKsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5jZSBLZXknfSA9ICforrjlj6/lr4bpkqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVhbnRpdHknfSA9ICfmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJhdGlvbiBEYXRlJ30gPSAn6L+H5pyf5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lZGlhJ30gPSAn5LuL6LSoJzsKCiAgICAjIFhNTCBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcHV0ZXInfSA9ICforqHnrpfmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfnoazku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ+e9kee7nCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ+i9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn5bey6L+H5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn57u05oqkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn6K+V6aqMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICflt7LorqHliJInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfkv67lpI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ+aKpeW6nyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICflpI3lrqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ+a1i+ivlS/lk4HotKjkv53or4EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn56yU6K6w5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICflj7DlvI/nlLXohJEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUERBJ30gPSAnUERBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlcid9ID0gJ+acjeWKoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ+WFtuWugyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yJ30gPSAn5pi+56S65ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByaW50ZXInfSA9ICfmiZPljbDmnLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3dpdGNoJ30gPSAn5Lqk5o2i5py6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JvdXRlcid9ID0gJ+i3r+eUseWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOIEFjY2VzcyBQb2ludCd9ID0gJ1dMQU4g5peg57q/6K6/6Zeu54K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlY3VyaXR5IERldmljZSd9ID0gJ+WuieWFqOiuvuWkhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYWNrdXAgRGV2aWNlJ30gPSAn5aSH5Lu96K6+5aSHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn6byg5qCHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn6ZSu55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhbWVyYSd9ID0gJ+eFp+ebuOacuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZWFtZXInfSA9ICfmipXlvbHku6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZW0nfSA9ICfosIPop6PosIPlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUENNQ0lBIENhcmQnfSA9ICdQQ01DSUHljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIERldmljZSd9ID0gJ1VTQiDorr7lpIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9ja2luZyBTdGF0aW9uJ30gPSAn5Z2e56uZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NjYW5uZXInfSA9ICfmiavmj4/ku6onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICflpKfljqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2ZmaWNlJ30gPSAn5Yqe5YWs5a6kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zsb29yJ30gPSAn5qW85bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfmiL/pl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayd9ID0gJ+acuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXb3JrcGxhY2UnfSA9ICflt6XkvZzpl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0bGV0J30gPSAn5o+S5bqnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUIEZhY2lsaXR5J30gPSAnSVTorr7mlr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEFOJ30gPSAn5bGA5Z+f572RJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dMQU4nfSA9ICfml6Dnur/nvZHnu5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVsY28nfSA9ICfnlLXor53lhazlj7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1NNJ30gPSAnR1NNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBBcHBsaWNhdGlvbid9ID0gJ+WuouaIt+err+W6lOeUqOeoi+W6jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWRkbGV3YXJlJ30gPSAn5Lit6Ze05Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBBcHBsaWNhdGlvbid9ID0gJ+acjeWKoeWZqOW6lOeUqOeoi+W6jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgT1MnfSA9ICflrqLmiLfmk43kvZzns7vnu58nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIE9TJ30gPSAn5pyN5Yqh5Zmo5pON5L2c57O757ufJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluIFRvb2wnfSA9ICfnrqHnkIblt6XlhbcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVXNlciBUb29sJ30gPSAn55So5oi35bel5YW3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkJ30gPSAn5bWM5YWl5byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NpbmdsZSBMaWNlbmNlJ30gPSAn5Y2V5LiA6K645Y+vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBVc2VyJ30gPSAn5q+P5Liq55So5oi3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBQcm9jZXNzb3InfSA9ICfmr4/kuKrlpITnkIblmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIFNlcnZlcid9ID0gJ+avj+S4quacjeWKoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgTm9kZSd9ID0gJ+avj+S4quiKgueCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgTGljZW5jZSd9ID0gJ+aJuemHj+aOiOadgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbnRlcnByaXNlIExpY2VuY2UnfSA9ICfkvIHkuJrorrjlj68nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV2ZWxvcGVyIExpY2VuY2UnfSA9ICflvIDlj5Horrjlj68nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVtbyd9ID0gJ+a8lOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaW1lIFJlc3RyaWN0ZWQnfSA9ICfml7bpl7TpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICflhY3otLnova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlbiBTb3VyY2UnfSA9ICflvIDmupAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVW5saW1pdGVkJ30gPSAn5peg6ZmQ5Yi255qEJzsKCiAgICAjIEpTIEZpbGU6IHZhci9odHRwZC9odGRvY3MvanMvSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20uanMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09rJ30gPSAn56Gu5a6aJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICflt7LliIbphY3nmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ+W3suWIhumFjee7meWuouaIt+WNleS9jeeahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ+W3suWIhumFjee7meWuouaIt+eUqOaIt+eahOmFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQuiuvue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn5qOA5p+l5piv5ZCm5Li65ZSv5LiA5ZCN56ew55qE6IyD5Zu05piv5LuF5ZyoXCdjbGFzc1wn77yI6YWN572u6aG557G777yJ5YaF6L+Y5pivXCdnbG9iYWxcJyjlhajlsYAp77yM5bCx5piv5Zyo5p+l5om+6YeN5aSN6YWN572u6aG55ZCN56ew5pe255qE6IyD5Zu044CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ+mFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAoRHJvcGRvd24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChNdWx0aXNlbGVjdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ+a3u+WKoOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ+e8lui+kemFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i55So5LqO6K6w5b2V6YWN572u6aG55LqL5Lu25Yiw5Y6G5Y+y55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn6YWN572u6aG55Y6G5Y+y44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ+aJk+WNsOmFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ+mFjee9rumhueivpuaDheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtTnVtYmVyJ30gPSAnQ29uZmlnSXRlbU51bWJlcu+8iOmFjee9rumhuee8luWPt++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfphY3nva7pobnpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ+avj+S4qumhtemdouS4iueahOmFjee9rumhuemZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAn6YWN572u566h55CG5pWw5o2u5bqT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfphY3nva7pobnmibnlpITnkIbmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i55qE6YWN572u6aG55pCc57Si5ZCO56uv6Lev55Sx44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfliJvlu7rlkoznrqHnkIbphY3nva7pobnlrprkuYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ+WumuS5iemTvuaOpeWvueixoeWwj+mDqOS7tihMaW5rT2JqZWN0OjpWaWV3TW9kZSA9IFwiY29tcGxleFwiKeiuvue9ruaMiemSruS4reeahOaTjeS9nOOAguivt+azqOaEj++8jOi/meS6m+aTjeS9nOW/hemhu+W3sue7j+WcqOS7peS4i0pT5ZKMQ1NT5paH5Lu25Lit5rOo5YaM77yaQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3PjgIFDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz44CBIENvcmUuVUkuVGFibGUuU29ydC5qc+OAgUNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpz5ZKMQ29yZS5BZ2VudC5MaW5rT2JqZWN0Lmpz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIG1hcHBpbmcgYmV0d2VlbiBDSSBjbGFzc2VzIGFuZCBhIEZvbnRhd2Vzb21lIGljb25zIHdoaWNoIGFyZSBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gY3JlYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PliJvlu7pJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PliKDpmaRJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6Pojrflj5ZJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6PmkJzntKJJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXBkYXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6Pmm7TmlrBJVFNN6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+WumuS5ieaYvuekuumFjee9rumhueWIl+ihqOeugOa0geinhuWbvueahOamguiniOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn5Li65q+P5Liq6YWN572u6aG557G75a6a5LmJ54us56uL55qE5q2j5YiZ6KGo6L6+5byP77yM5Lul5qOA5p+l6YWN572u6aG55ZCN56ew5bm25pi+56S655u45bqU55qE6ZSZ6K+v5raI5oGv44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ+WumuS5iVwnSVRTTUNvbmZpZ0l0ZW1cJ+exu+eahOm7mOiupOWtkOWvueixoeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnlnKjns7vnu5/nrqHnkIbpnaLmnb/kuK3kv67mlLnphY3nva7pobnlrprkuYnnmoTnvJbovpHlmajnmoTooYzmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn5a6a5LmJ5pWF6Zqc54q25oCB5LuO6auY77yI5aaC57Sn5oCl77yJ5Yiw5L2O77yI5aaC5q2j5bi477yJ55qE6aG65bqP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn5a6a5LmJ5YWz6IGU55qE6YOo572y54q25oCB77yM5Y2z6ZO+5o6l55qE5bel5Y2V5Y+v5Lul5b2x5ZON6YWN572u6aG554q25oCB55qE5oOF5Ya144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn5a6a5LmJQWdlbnRJVFNNQ29uZmlnSXRlbe+8iOacjeWKoeS6uuWRmOmFjee9rumhue+8ieeql+WPo+eahOaQnOe0oumZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+WumuS5iUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2jvvIjmnI3liqHkurrlkZjphY3nva7pobnmkJzntKLvvInnqpflj6PnmoTmkJzntKLpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uIE5vdGU6IENsYXNzIGNvbHVtbiBpcyBhbHdheXMgYXZhaWxhYmxlIGlmIGZpbHRlciBcJ0FsbFwnIGlzIHNlbGVjdGVkLid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG55qaC6KeI5pi+56S655qE5a2X5q6144CC6L+Z5Liq6YCJ6aG55LiN5Lya5b2x5ZON5a2X5q6155qE5L2N572u44CC5rOo5oSP77ya5aaC5p6c6YCJ5oup4oCc5YWo6YOo4oCd77yM5YiZ4oCcQ2xhc3PvvIjnsbvvvInigJ3lrZfmrrXmgLvmmK/kvJrmmL7npLrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoLiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG55pCc57Si5Lit5pi+56S655qE5a2X5q6144CC6L+Z5Liq6YCJ6aG55LiN5Lya5b2x5ZON5a2X5q6155qE5L2N572u44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nfSA9CiAgICAgICAgJ+WumuS5iemFjee9rumhueamguiniOinhuWbvuS4reaMiemFjee9rumhueexu+WIhuexu+aYvuekuueahOWtl+auteOAguavj+S4quadoeebruWdh+mcgOS7peexu+WQjeS4uuWJjee8gOWGjeWKoOS4iuWPjOWGkuWPt++8iOWmguiuoeeul+acujo677yJ44CC5pyJ5LiA5Lqb6YWN572u6aG55bGe5oCn5piv5omA5pyJ6YWN572u6aG56YO95pyJ55qE77yI5L6L5aaC77yM5a+55LqO6K6h566X5py657G777ya6K6h566X5py6OjrlkI3np7DjgIHorqHnrpfmnLo6OkN1ckRlcGxTdGF0ZeW9k+WJjemDqOe9sueKtuaAgeOAgeiuoeeul+acujo6Q3JlYXRlVGltZeWIm+W7uuaXtumXtO+8ieOAguimgeaYvuekuuWcqOmFjee9rumhueWumuS5ieS4reWumuS5ieeahOeLrOeJueeahOmFjee9rumhueWxnuaAp++8jOW/hemhu+S9v+eUqOS4i+mdoueahOaWueahiO+8iOS+i+Wmgu+8muWvueS6juiuoeeul+acuuexu++8muiuoeeul+acujo656Gs55uYOjox44CB6K6h566X5py6Ojrnoaznm5g6OuWuuemHjzo6MeOAgeiuoeeul+acujo656Gs55uYOjoy44CB6K6h566X5py6Ojrnoaznm5g6OjLorqHnrpfmnLo6OuehrOebmDo6Mu+8ieOAguWmguaenOS4gOS4qumFjee9rumhueexu+ayoeacieadoeebruWtmOWcqO+8jOWImeS9v+eUqOWcqElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5z5Lit6K6+572u55qE6buY6K6k5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICflrprkuYnmjInphY3nva7pobnnsbvliIbnsbvnmoTphY3nva7pobnmkJzntKLnu5PmnpzkuK3mmL7npLrnmoTlrZfmrrXjgILmr4/kuKrmnaHnm67lnYfpnIDku6XnsbvlkI3kuLrliY3nvIDlho3liqDkuIrlj4zlhpLlj7fvvIjlpoLorqHnrpfmnLo6Ou+8ieOAguacieS4gOS6m+mFjee9rumhueWxnuaAp+aYr+aJgOaciemFjee9rumhuemDveacieeahO+8iOS+i+Wmgu+8jOWvueS6juiuoeeul+acuuexu++8muiuoeeul+acujo65ZCN56ew44CB6K6h566X5py6OjpDdXJEZXBsU3RhdGXlvZPliY3pg6jnvbLnirbmgIHjgIHorqHnrpfmnLo6OkNyZWF0ZVRpbWXliJvlu7rml7bpl7TvvInjgILopoHmmL7npLrlnKjphY3nva7pobnlrprkuYnkuK3lrprkuYnnmoTni6znibnnmoTphY3nva7pobnlsZ7mgKfvvIzlv4Xpobvkvb/nlKjkuIvpnaLnmoTmlrnmoYjvvIjkvovlpoLvvJrlr7nkuo7orqHnrpfmnLrnsbvvvJrorqHnrpfmnLo6OuehrOebmDo6MeOAgeiuoeeul+acujo656Gs55uYOjrlrrnph486OjHjgIHorqHnrpfmnLo6OuehrOebmDo6MuOAgeiuoeeul+acujo656Gs55uYOjoy6K6h566X5py6Ojrnoaznm5g6OjLvvInjgILlpoLmnpzkuIDkuKrphY3nva7pobnnsbvmsqHmnInmnaHnm67lrZjlnKjvvIzliJnkvb/nlKjlnKhJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1uc+S4reiuvue9rueahOm7mOiupOWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gd2lkZ2V0IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IChrZXkgRGVmYXVsdENvbHVtbnMpLid9ID0KICAgICAgICAn5a6a5LmJ6YWN572u6aG55bCP6YOo5Lu25Lit5oyJ6YWN572u6aG557G75YiG57G75pi+56S655qE5a2X5q6144CC5q+P5Liq5p2h55uu5Z2H6ZyA5Lul57G75ZCN5Li65YmN57yA5YaN5Yqg5LiK5Y+M5YaS5Y+377yI5aaC6K6h566X5py6OjrvvInjgILmnInkuIDkupvphY3nva7pobnlsZ7mgKfmmK/miYDmnInphY3nva7pobnpg73mnInnmoTvvIjkvovlpoLvvIzlr7nkuo7orqHnrpfmnLrnsbvvvJpDb21wdXRlcjo6TmFtZeOAgUNvbXB1dGVyOjpDdXJEZXBsU3RhdGXlvZPliY3pg6jnvbLnirbmgIHjgIFDb21wdXRlcjo6Q3JlYXRlVGltZeWIm+W7uuaXtumXtO+8ieOAguimgeaYvuekuuWcqOmFjee9rumhueWumuS5ieS4reWumuS5ieeahOeLrOeJueeahOmFjee9rumhueWxnuaAp++8jOW/hemhu+S9v+eUqOS4i+mdoueahOaWueahiO+8iOS+i+Wmgu+8muWvueS6juiuoeeul+acuuexu++8mkNvbXB1dGVyOjpIYXJkRGlzazo6MeOAkOiuoeeul+acujo656Gs55uYOjox44CR44CBQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MeOAkOiuoeeul+acujo656Gs55uYOjrlrrnph486OjHjgJHjgIEgQ29tcHV0ZXI6OkhhcmREaXNrOjoy44CQ6K6h566X5py6Ojrnoaznm5g6OjLjgJHjgIFDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5Ojox44CQ6K6h566X5py6Ojrnoaznm5g6OjI6OuWuuemHjzo6MeOAke+8ieOAguWmguaenOS4gOS4qumFjee9rumhueexu+ayoeacieadoeebruWtmOWcqO+8jOWImeS9v+eUqOWcqEFnZW50Q3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlcjo6QmFja2VuZCMjIzAwNjAtQ0lDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55IOS4reiuvue9rueahOm7mOiupOWtl+autShEZWZhdWx0Q29sdW1uc+mUrinjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICflnKjmiYDmnInphY3nva7pobnnsbvnmoTpk77mjqXooajlpI3mnYLop4blm77kuK3lrprkuYnopoHmmL7npLrnmoTphY3nva7pobnlrZfmrrXjgIIg5aaC5p6c5rKh5pyJ5p2h55uu77yM5YiZ5pi+56S66buY6K6k5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICflrprkuYnpk77mjqXooajlpI3lkIjop4blm77kuK3mjInphY3nva7pobnnsbvliIbnsbvmmL7npLrnmoTlrZfmrrXjgILmr4/kuKrmnaHnm67lnYfpnIDku6XnsbvlkI3kuLrliY3nvIDlho3liqDkuIrlj4zlhpLlj7fvvIjlpoLorqHnrpfmnLo6Ou+8ieOAguacieS4gOS6m+mFjee9rumhueWxnuaAp+aYr+aJgOaciemFjee9rumhuemDveacieeahO+8iOS+i+Wmgu+8jOWvueS6juiuoeeul+acuuexu++8muiuoeeul+acujo65ZCN56ew44CB6K6h566X5py6OjpDdXJEZXBsU3RhdGXlvZPliY3pg6jnvbLnirbmgIHjgIHorqHnrpfmnLo6OkNyZWF0ZVRpbWXliJvlu7rml7bpl7TvvInjgILopoHmmL7npLrlnKjphY3nva7pobnlrprkuYnkuK3lrprkuYnnmoTni6znibnnmoTphY3nva7pobnlsZ7mgKfvvIzlv4Xpobvkvb/nlKjkuIvpnaLnmoTmlrnmoYjvvIjkvovlpoLvvJrlr7nkuo7orqHnrpfmnLrnsbvvvJrorqHnrpfmnLo6OuehrOebmDo6MeOAgeiuoeeul+acujo656Gs55uYOjrlrrnph486OjHjgIHorqHnrpfmnLo6OuehrOebmDo6MuOAgeiuoeeul+acujo656Gs55uYOjoy6K6h566X5py6Ojrnoaznm5g6OjLvvInjgILlpoLmnpzkuIDkuKrphY3nva7pobnnsbvmsqHmnInmnaHnm67lrZjlnKjvvIzliJnkvb/nlKjlnKhJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1uc+S4reiuvue9rueahOm7mOiupOWtl+auteOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICflrprkuYnlk6rkuIDnsbso5LuO5bel5Y2V6KeS5bqm5ZG95ZCN55qEKemTvuaOpeWPr+S7peW9seWTjeS4gOS4qumTvuaOpeeahOmFjee9rumhueeahOeKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn5a6a5LmJ5ZOq5LiA57G75bel5Y2V5Y+v5Lul5b2x5ZON5LiA5Liq6ZO+5o6l55qE6YWN572u6aG555qE54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfliKDpmaTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfpg6jnvbLnirbmgIHnmoTpopzoibInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn5aSN5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouWQr+eUqOmFjee9rumhueaJuemHj+aTjeS9nOWKn+iDve+8jOWPr+S7peS4gOasoeWkhOeQhuWkmuS4qumFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn5Y+q5pyJ5YiX6KGo5Lit55qE57uE5omN5pyJ5p2D6ZmQ5L2/55So6YWN572u6aG55om56YeP5pON5L2c5Yqf6IO944CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ+WQr+eUqC/npoHnlKjmo4Dmn6XphY3nva7pobnllK/kuIDlkI3np7Dlip/og73jgILlnKjlkK/nlKjov5nkuKrpgInpobnliY3vvIzmgqjlupTor6Xmo4Dmn6Xns7vnu5/kuK3mmK/lkKblt7Lnu4/lrZjlnKjph43lkI3nmoTphY3nva7pobnvvIzmgqjlj6/ku6Xkvb/nlKjov5nkuKrohJrmnKzmnaXmo4Dmn6Xph43lkI3mg4XlhrXvvJpiaW4vem51bnkuQ29uc29sZS5wbCBBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgTW9kdWxlIHRoYXQgbGlua3MgYSBDb25maWdJdGVtLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICflnKjlt6XljZUt6YWN572u6aG555qE6ZO+5o6l5Lit6K6+572u6YWN572u6aG5LeeKtuaAgeeahOS6i+S7tuaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNN6YWN572u6aG55qaC6KeI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0IGZvciBjb25maWcgaXRlbSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpc3Qgb2YgZXZlbnRzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZ2VuZXJpYyBpbnRlcmZhY2UgZXZlbnQgb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfnlKjkuo7mo4Dmn6XphY3nva7pobnnsbvnmoTnu4TmnYPpmZDnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfnlKjkuo7mo4Dmn6XphY3nva7pobnnmoTnu4TmnYPpmZDnmoTmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfnlKjkuo7nlJ/miJBJVFNN6YWN572u6aG557uf6K6h55qE5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGxvbmdlciBpbiB1c2UuIERvIG5vdCBjaGFuZ2UuIFJlcXVpcmVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMgcGFja2FnZSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3QgYmFja2VuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgaW1wb3J0L2V4cG9ydCBtb2R1bGUuJ30gPQogICAgICAgICfnlKjkuo7lr7zlhaUv5a+85Ye65qih5Z2X55qE5a+56LGh5ZCO56uv5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+amguiniOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlrqLmiLflrqLmiLfljZXkvY3phY3nva7pobnmpoLop4jnmoTku6rooajmnb/lkI7nq6/nmoTlj4LmlbDjgIIiTGltaXTvvIjpmZDliLbvvIkiIOaYr+m7mOiupOeahOaYvuekuuadoeebruaVsO+8jOKAnEdyb3Vw4oCd77yI57uE77yJ55So5LqO5Yiw5pys5o+S5Lu255qE6K6/6Zeu5p2D6ZmQ6ZmQ5Yi277yI5aaCIEdyb3VwOmFkbWluO2dyb3VwMTtncm91cDLvvInjgILigJxEZWZhdWx077yI6buY6K6k77yJ4oCd5Luj6KGo6L+Z5Liq5o+S5Lu25piv6buY6K6k5ZCv55So6L+Y5piv6ZyA6KaB55So5oi35omL5Yqo5ZCv55So44CC4oCcQ2FjaGVUVEzigJ3mmK/mnKzmj5Lku7bnmoTnvJPlrZjov4fmnJ/ml7bpl7TvvIjljZXkvY3vvJrliIbpkp/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHpopzoibLnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn55uu5b2V5bGe5oCn5qC35L6LLeadg+mZkOe7hOeahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfmmL7npLrphY3nva7pobnnmoTpobXpnaLlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ+adg+mZkOe7hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWdpc3RlcnMgYSBJVFNNQ29uZmlnSXRlbS1FdmVudE1vZHVsZSB0aGF0IHdpbGwgc2F2ZSByZWxhdGVkIGF0dGFjaG1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhbiBvdXRwdXQgZmlsdGVyIHRoYXQgc2hvd3MgYSBjb25maWcgaXRlbSB3aWRnZXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlbGV2YW50VG8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgZ3JvdXAgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55SoSVRTTemFjee9rumhueeql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnmkJzntKLnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i5L2/55SoSVRTTemFjee9rumhueivpuaDheeql+WPo+mcgOimgeeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqOa3u+WKoElUU03phY3nva7pobnnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBjb25maWcgaXRlbSBkaWFsb2cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKjnvJbovpFJVFNN6YWN572u6aG556qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnljoblj7Lnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnmiZPljbDnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ+WIoOmZpOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ+aQnOe0oumFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3RzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyIGdlbmVyYXRvciBtb2R1bGUuICJBdXRvSW5jcmVtZW50IiBpbmNyZW1lbnRzIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbnVtYmVyLCB0aGUgU3lzdGVtSUQsIHRoZSBDb25maWdJdGVtQ2xhc3NJRCBhbmQgdGhlIGNvdW50ZXIgYXJlIHVzZWQuIFRoZSBmb3JtYXQgaXMgIlN5c3RlbUlELkNvbmZpZ0l0ZW1DbGFzc0lELkNvdW50ZXIiLCBlLmcuIDEyMDUwMDAwMDQsIDEyMDUwMDAwMDUuJ30gPQogICAgICAgICfpgInmi6nphY3nva7pobnlj7fnoIHnlJ/miJDlmajmqKHlnZfjgILigJxBdXRvSW5jcmVtZW506Ieq5Yqo5aKe6YeP4oCd5L2/55So57O757ufSUTjgIHphY3nva7pobnnsbtJROWSjOiuoeaVsOWZqOadpeWinuWKoOmFjee9rumhueWPt++8jOagvOW8j+S4uu+8muezu+e7n0lELumFjee9rumhueexu0lELuiuoeaVsOWZqO+8jOWmgjEyMDUwMDAwMDTjgIExMjA1MDAwMDA144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICflvZPkuIDkuKrlt6XljZXpk77mjqXliLDkuIDkuKrphY3nva7pobnml7boh6rliqjorr7nva7ov5nkuKrphY3nva7pobnnmoTmlYXpmpznirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnmibnph4/mk43kvZznqpflj6Porr7nva7pg6jnvbLnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG55om56YeP5pON5L2c56qX5Y+j6K6+572u5LqL5Lu254q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5YWB6K646ZO+5o6l6YWN572u6aG55Yiw5Y+m5LiA5a+56LGh55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG55qaC6KeI6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5YWB6K646K6/6Zeu6YWN572u6aG55Y6G5Y+y55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quWFgeiuuOiuv+mXrumFjee9rumhueWOhuWPsueahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quWIoOmZpOmFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueamguiniOinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quWkjeWItumFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlpI3liLbphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4que8lui+kemFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6L+U5Zue6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5omT5Y2w6YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG55qaC6KeI6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5p+l55yL6YWN572u6aG56K+m5oOF55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLmmL7npLrphY3nva7pobnljoblj7LvvIjlgJLluo/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ+mFjee9rumhueagh+ivhuespu+8jOWmgkNvbmZpZ0l0ZW0j44CBTXlDb25maWdJdGVtI++8jOm7mOiupOaYr0NvbmZpZ0l0ZW0j44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgY29uZmlndXJhdGlvbiByZWdpc3RlcnMgYSBmcm9udGVuZCBtb2R1bGUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UgdGhhdCBwcm92aWRlcyB0aGUgQUpBWCBpbnRlcmZhY2UgZm9yIEFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbmQgcmVtb3ZlcyBsaW5rcyBiZXR3ZWVuIHRpY2tldHMgYW5kIGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBEeW5hbWljRmllbGRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ+exuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICflhajlsYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfpl7Lnva4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ+WHhuWkh+aKleS6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn5oqV5LqnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLz0gW10gfSwgKAogICAgJ05vJywKICAgICdPaycsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnWWVzJywKICAgICdub25lJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Language/zh_TW_ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6emhfVFdfSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQgYW5kIHRoZSB2YWx1ZSBtdXN0IGJlIGFscGhhbnVtZXJpYy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTXVzdCBiZSB1bmlxdWUgYW5kIG9ubHkgYWNjZXB0cyBhbHBoYW51bWVyaWMgY2hhcmFjdGVycy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBjbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0gY2xhc3MgaXMgaW52YWxpZCBvciBkb2VzIG5vdCBleGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGEgbGluayB0eXBlIHRvIGVuYWJsZSBsaW5raW5nIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgdGhlIHNlbGVjdGVkIGNvbmZpZyBpdGVtcy4gTm90ZSB0aGF0IGxpbmtpbmcgaXMgb25seSBhdmFpbGFiZSBmb3IgZHluYW1pYyBmaWVsZHMgb2YgdGlja2V0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHNvdXJjZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBsaW5rIHJlbW92YWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gcmVtb3ZlIGxpbmtzIGJldHdlZW4gdGhlIHRpY2tldCBhbmQgY29uZmlnIGl0ZW1zIHRoYXQgYXJlIHJlbW92ZWQgZnJvbSB0aGlzIGZpZWxkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIGZpbGxlZCB3aXRoIHZhbHVlcyBvZiB0aGUgc2FtZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKS4nfSA9CiAgICAgICAgJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbklUU01Db25maWdJdGVtLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbid9ID0gJ+S/ruaUuemhnuWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAn566h55CG6YWN572u6aCFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24nfSA9ICflrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlJ30gPSAn5L+u5pS5JzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50RGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBTdGF0ZSd9ID0gJ+aVhemanOeLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlJ30gPSAn6YOo572y54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzJ30gPSAn6aGe5YilJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+mDqOe9sueLgOaFi+mhnuWeiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn55W25YmN55qE5pWF6Zqc54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+eVtuWJjeeahOaVhemanOeLgOaFi+mhnuWeiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfmnIDlvozkv67mlLknOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbUFkZC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGZvciBDbGFzc2VzJ30gPSAn6YGO5r++6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhIENsYXNzIGZyb20gdGhlIGxpc3QgdG8gY3JlYXRlIGEgbmV3IENvbmZpZyBJdGVtLid9ID0gJ+WFiOW+nuWIl+ihqOS4remBuOaTh+mhnuWIpe+8jOeEtuW+jOW7uueri+aWsOeahOmFjee9rumgheOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSd9ID0gJ+mFjee9rumghSc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtQnVsay50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byBhbm90aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ29uZmlndXJhdGlvbiBJdGVtIG51bWJlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG51bWJlciBvZiBhbm90aGVyIENvbmZpZ3VyYXRpb24gSXRlbSB0byBsaW5rIHdpdGguJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgcmVsYXRlZCBjb25maWcgaXRlbXMnfSA9ICcnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyd9ID0gJyc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtRWRpdC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIG5hbWUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+eCuumAmeWAi+mFjee9rumgheWRveWQjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IG9mIENvbmZpZyBJdGVtOiAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICfmrbflj7LlhoXlrrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ+WJteW7uuaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICfnvKnmlL7oppblnJYnOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyLnR0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250ZXh0IFNldHRpbmdzJ30gPSAn5LiK5LiL5paH6Kit572uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ+avj+mggemFjee9rumgheWAi+aVuCc7CgogICAgIyBUVCBUZW1wbGF0ZTogS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbC50dAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlJ30gPSAnJzsKCiAgICAjIFRUIFRlbXBsYXRlOiBLZXJuZWwvT3V0cHV0L0hUTUwvVGVtcGxhdGVzL1N0YW5kYXJkL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gudHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ+WQjOaZguaQnOe0ouS7peWJjeeahOeJiOacrD8nOwoKICAgICMgVFQgVGVtcGxhdGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9UZW1wbGF0ZXMvU3RhbmRhcmQvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20udHQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+mFjee9rumghSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfphY3nva7poIXkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn55W25YmN55qE6YOo572y54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+acgOW+jOS/ruaUueaWvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG9uZSB2ZXJzaW9uJ30gPSAn6aGv56S65LiA5YCL54mI5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgYWxsIHZlcnNpb25zJ30gPSAn6aGv56S65omA5pyJ54mI5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gSW5jaWRlbnQgU3RhdGUnfSA9ICfniYjmnKzmlYXpmpzni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBEZXBsb3ltZW50IFN0YXRlJ30gPSAn54mI5pys6YOo5bGs54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyJ30gPSAn54mI5pys6Jmf56K8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMnfSA9ICfphY3nva7poIXniYjmnKzoqbPmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJvcGVydHknfSA9ICflsazmgKcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyB0byBDbGFzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbklEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumghSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfmspLmnInntZDmnpwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn6YWN572u6aCF55uu5pCc5bCL57WQ5p6cJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aCF6YOo572y54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aCF5pWF6Zqc54uA5oWLJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfmraTlhYPntKDnmoTmnIDlpKfmlbjph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0J30gPSAn56m65a2X5q616KGo56S655W25YmN5YC86KKr5L+d5a2YJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NraXBwZWQnfSA9ICfot7PpgY7nmoQnOwoKICAgICMgUGVybCBNb2R1bGU6IHZhci9wYWNrYWdlc2V0dXAvSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ+Wei+iZnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBDb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbCBOdW1iZXInfSA9ICfluo/liJfomZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhbSd9ID0gJ+WGheWtmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkIERpc2snfSA9ICfnoaznop8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHknfSA9ICflrrnph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRlFETid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEFkYXB0ZXInfSA9ICfntrLot6/ljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgb3ZlciBESENQJ30gPSAn5b6eREhDUOWPluW+l0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIEFkZHJlc3MnfSA9ICdJUOS9jeWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljIEFkYXB0ZXInfSA9ICfpoa/npLrljaEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXIgRXF1aXBtZW50J30gPSAn5YW25a6D6Kit5YKZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZSd9ID0gJ+S/nemkiuWkseaViOaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnN0YWxsIERhdGUnfSA9ICflronoo4Xml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMSd9ID0gJ+mbu+ipsTEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgMid9ID0gJ+mbu+ipsTInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRS1NYWlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgQWRkcmVzcyd9ID0gJ+e2sui3r+S9jeWdgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJuZXQgTWFzayd9ID0gJ+WtkOe2sui3r+mBrueFpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHYXRld2F5J30gPSAn6ZaY6YGTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2VuY2UgVHlwZSd9ID0gJ+ioseWPr+mhnuWIqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbmNlIEtleSd9ID0gJ+ioseWPr+WvhumRsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWFudGl0eSd9ID0gJ+aVuOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmF0aW9uIERhdGUnfSA9ICflpLHmlYjml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVkaWEnfSA9ICfku4vos6onOwoKICAgICMgWE1MIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wdXRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfliLDmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfntq3orbcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICfoqabpqZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ+W3suioiOWKgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+S/ruW+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn5aCx5buiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+ikh+WvqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn5rWL6KmmL1FBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ+ethuiomOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn5qGM5LiK5Z6L6Zu76IWmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BEQSd9ID0gJ1BEQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXInfSA9ICfmnI3li5nlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICflhbblroMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvcid9ID0gJ+mhr+ekuuWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmludGVyJ30gPSAn5omT5Y2w5qmfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N3aXRjaCd9ID0gJ+S6pOaPm+WZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb3V0ZXInfSA9ICfot6/nlLHlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV0xBTiBBY2Nlc3MgUG9pbnQnfSA9ICdXTEFOIOeEoee3muWfuuWcsOWPsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWN1cml0eSBEZXZpY2UnfSA9ICflronlhajoqK3lgpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFja3VwIERldmljZSd9ID0gJ+WCmeS7veioreWCmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ+a7kem8oCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ+mNteebpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW1lcmEnfSA9ICfnhafnm7jmqZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmVhbWVyJ30gPSAn5oqV5b2x5YSAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVtJ30gPSAn6Kq/6Kej6Kq/5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BDTUNJQSBDYXJkJ30gPSAnUENNQ0lB5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBEZXZpY2UnfSA9ICdVU0Ig6Kit5YKZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY2tpbmcgU3RhdGlvbid9ID0gJ+WhouermSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTY2FubmVyJ30gPSAn5o6D5o+P5YSAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn5aSn5buIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09mZmljZSd9ID0gJ+i+puWFrOWupCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbG9vcid9ID0gJ+aok+WxpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn5oi/6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2snfSA9ICfmqZ/mnrYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV29ya3BsYWNlJ30gPSAn5bel5L2c6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dGxldCd9ID0gJ+aPkuW6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVCBGYWNpbGl0eSd9ID0gJ0lU6Kit5pa9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xBTid9ID0gJ+WNgOWfn+e2sui3ryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXTEFOJ30gPSAn54Sh57ea57ay6LevJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RlbGNvJ30gPSAn6Zu76Kmx5YWs5Y+4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dTTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQXBwbGljYXRpb24nfSA9ICflrqLmiLfnq6/mh4nnlKjnqIvluo8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWlkZGxld2FyZSd9ID0gJ+S4remWk+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgQXBwbGljYXRpb24nfSA9ICfmnI3li5nlmajmh4nnlKjnqIvluo8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IE9TJ30gPSAn5a6i5oi35pON5L2c57O757WxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBPUyd9ID0gJ+acjeWLmeWZqOaTjeS9nOezu+e1sSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbiBUb29sJ30gPSAn566h55CG5bel5YW3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VzZXIgVG9vbCd9ID0gJ+eUqOaItuW3peWFtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCd9ID0gJ+W1jOWFpeW8jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaW5nbGUgTGljZW5jZSd9ID0gJ+WWruS4gOioseWPryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgVXNlcid9ID0gJ+avj+WAi+eUqOaItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXIgUHJvY2Vzc29yJ30gPSAn5q+P5YCL6JmV55CG5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlciBTZXJ2ZXInfSA9ICfmr4/lgIvmnI3li5nlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyIE5vZGUnfSA9ICfmr4/lgIvnr4Dpu54nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIExpY2VuY2UnfSA9ICfmibnph4/mjojmrIonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW50ZXJwcmlzZSBMaWNlbmNlJ30gPSAn5LyB5qWt5Z+354WnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldmVsb3BlciBMaWNlbmNlJ30gPSAn6ZaL55m86Kix5Y+vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbW8nfSA9ICfmvJTnpLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGltZSBSZXN0cmljdGVkJ30gPSAn5pmC6ZaT6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn5YWN6LK76Luf5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZW4gU291cmNlJ30gPSAn6ZaL5rqQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VubGltaXRlZCd9ID0gJ+eEoemZkOWItueahCc7CgogICAgIyBKUyBGaWxlOiB2YXIvaHR0cGQvaHRkb2NzL2pzL0lUU00uQWdlbnQuQ29uZmlnSXRlbS5ab29tLmpzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPayd9ID0gJ09rJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWx0ZXJuYXRpdmVUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXV0b2xvYWRpbmcgb2YgdXBsb2FkIGNhY2hlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn6YWN572u6aCFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIChEcm9wZG93biknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gKE11bHRpc2VsZWN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1OdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn5Ym15bu65ZKM566h55CG6YWN572u6aCF5a6a576pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgbWFwcGluZyBiZXR3ZWVuIENJIGNsYXNzZXMgYW5kIGEgRm9udGF3ZXNvbWUgaWNvbnMgd2hpY2ggYXJlIHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBjcmVhdGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVwZGF0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2VhcmNoIGF0dHJpYnV0ZSBmb3IgQ0kgc2VhcmNoIHNjcmVlbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLiBOb3RlOiBDbGFzcyBjb2x1bW4gaXMgYWx3YXlzIGF2YWlsYWJsZSBpZiBmaWx0ZXIgXCdBbGxcJyBpcyBzZWxlY3RlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2guIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGFyZSBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93biBhcyBkZWZpbmVkIGluIHRoZSBzZXR0aW5nIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgYXJlIGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duIGFzIGRlZmluZWQgaW4gdGhlIHNldHRpbmcgSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjU2hvd0NvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIHdpZGdldCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSAoa2V5IERlZmF1bHRDb2x1bW5zKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBpcyB1c2VkIHRvIGxpbmsgdGlja2V0cyBhbmQgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwZW5kc09uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn6KSH6KO9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciBpZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIGJhc2VkIG9uIHRoZSBjdXN0b21lciB1c2VyIGlkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgQ29uZmlnSXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgc2NyaXB0IGJpbi96bnVueS5Db25zb2xlLnBsIEFkbWluOjpJVFNNOjpDb25maWdpdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBNb2R1bGUgdGhhdCBsaW5rcyBhIENvbmZpZ0l0ZW0uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtcyBieSBkZXBveW1lbnQgc3RhdGVzIGludG8gdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXJzIHRoZSBjdXN0b21lciBjb25maWcgaXRlbXMgYnkgZGVwb3ltZW50IHN0YXRlcyBpbnRvIHRoZSBjdXN0b21lciBjb25maWcgaXRlbSB3aWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGlzdCBvZiBldmVudHMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBnZW5lcmljIGludGVyZmFjZSBldmVudCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBsb25nZXIgaW4gdXNlLiBEbyBub3QgY2hhbmdlLiBSZXF1aXJlZCBkdWUgdG8gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHBhY2thZ2UgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0IGJhY2tlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGltcG9ydC9leHBvcnQgbW9kdWxlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+amguazgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZSAuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZ2lzdGVycyBhIElUU01Db25maWdJdGVtLUV2ZW50TW9kdWxlIHRoYXQgd2lsbCBzYXZlIHJlbGF0ZWQgYXR0YWNobWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVnaXN0ZXJzIGFuIG91dHB1dCBmaWx0ZXIgdGhhdCBzaG93cyBhIGNvbmZpZyBpdGVtIHdpZGdldC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVsZXZhbnRUbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBncm91cCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGN1c3RvbWVyIGNvbmZpZyBpdGVtIHdpZGdldCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgY29uZmlnIGl0ZW0gZGlhbG9nIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciBnZW5lcmF0b3IgbW9kdWxlLiAiQXV0b0luY3JlbWVudCIgaW5jcmVtZW50cyB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG51bWJlciwgdGhlIFN5c3RlbUlELCB0aGUgQ29uZmlnSXRlbUNsYXNzSUQgYW5kIHRoZSBjb3VudGVyIGFyZSB1c2VkLiBUaGUgZm9ybWF0IGlzICJTeXN0ZW1JRC5Db25maWdJdGVtQ2xhc3NJRC5Db3VudGVyIiwgZS5nLiAxMjA1MDAwMDA0LCAxMjA1MDAwMDA1Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXJzIGEgZnJvbnRlbmQgbW9kdWxlIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlIHRoYXQgcHJvdmlkZXMgdGhlIEFKQVggaW50ZXJmYWNlIGZvciBBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW5kIHJlbW92ZXMgbGlua3MgYmV0d2VlbiB0aWNrZXRzIGFuZCBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgRHluYW1pY0ZpZWxkcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy89IFtdIH0sICgKICAgICdObycsCiAgICAnT2snLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1llcycsCiAgICAnbm9uZScsCiAgICApOwoKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Modules/AdminDynamicFieldConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlZhbGlkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e09iamVjdFR5cGVDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpPYmplY3RUeXBlJyk7CiAgICAkU2VsZi0+e0ZpZWxkVHlwZUNvbmZpZ30gID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKSB8fCB7fTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTT25Eb2N1bWVudENvbXBsZXRlSWZOb3RFeGlzdHMoCiAgICAgICAgS2V5ICA9PiAnQWRtaW5EeW5hbWljRmllbGRDb25maWdJdGVtJywKICAgICAgICBDb2RlID0+ICdDb3JlLkFnZW50LkFkbWluLkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0uSW5pdCgpOycsCiAgICApOwoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBZGQnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0FkZCglUGFyYW0pOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FkZEFjdGlvbicgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9BZGRBY3Rpb24oJVBhcmFtKTsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+X0NoYW5nZSglUGFyYW0pOwogICAgfQogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZUFjdGlvbicgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9DaGFuZ2VBY3Rpb24oJVBhcmFtKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiAiVW5kZWZpbmVkIHN1YmFjdGlvbi4iLAogICAgKTsKfQoKc3ViIF9BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAlR2V0UGFyYW07CiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoT2JqZWN0VHlwZSBGaWVsZFR5cGUgRmllbGRPcmRlcikpIHsKICAgICAgICAkR2V0UGFyYW17JE5lZWRlZH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkTmVlZGVkICk7CiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkR2V0UGFyYW17JE5lZWRlZH0gJiYgbGVuZ3RoICRHZXRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICJOZWVkICROZWVkZWQuIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRPYmplY3RUeXBlTmFtZSA9ICRTZWxmLT57T2JqZWN0VHlwZUNvbmZpZ30tPnsgJEdldFBhcmFte09iamVjdFR5cGV9IH0tPntEaXNwbGF5TmFtZX0gfHwgJyc7CiAgICBteSAkRmllbGRUeXBlTmFtZSAgPSAkU2VsZi0+e0ZpZWxkVHlwZUNvbmZpZ30tPnsgJEdldFBhcmFte0ZpZWxkVHlwZX0gfS0+e0Rpc3BsYXlOYW1lfSAgIHx8ICcnOwoKICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBNb2RlICAgICAgICAgICA9PiAnQWRkJywKICAgICAgICBCcmVhZGNydW1iVGV4dCA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9CiAgICAgICAgICAgIC0+VHJhbnNsYXRlKCAnQWRkICVzIGZpZWxkJywgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWVsZFR5cGVOYW1lKSApLAogICAgICAgIE9iamVjdFR5cGVOYW1lID0+ICRPYmplY3RUeXBlTmFtZSwKICAgICAgICBGaWVsZFR5cGVOYW1lICA9PiAkRmllbGRUeXBlTmFtZSwKICAgICk7Cn0KCnN1YiBfQWRkQWN0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgbXkgJUVycm9yczsKICAgIG15ICVHZXRQYXJhbTsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBMYWJlbCBGaWVsZE9yZGVyKSkgewogICAgICAgICRHZXRQYXJhbXskTmVlZGVkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICROZWVkZWQgKTsKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRHZXRQYXJhbXskTmVlZGVkfSAmJiBsZW5ndGggJEdldFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkRXJyb3JzeyAkTmVlZGVkIC4gJ1NlcnZlckVycm9yJyB9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgJEVycm9yc3sgJE5lZWRlZCAuICdTZXJ2ZXJFcnJvck1lc3NhZ2UnIH0gPSAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4nOwogICAgfQoKICAgIGlmICggJEdldFBhcmFte05hbWV9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgaXMgYWxwaGFudW1lcmljCiAgICAgICAgaWYgKCAkR2V0UGFyYW17TmFtZX0gIX4gbXtcQSAoPzogW2EtekEtWl0gfCBcZCApKyBcen14bXMgKSB7CiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPQogICAgICAgICAgICAgICAgJ1RoZSBmaWVsZCBkb2VzIG5vdCBjb250YWluIG9ubHkgQVNDSUkgbGV0dGVycyBhbmQgbnVtYmVycy4nOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIGlzIGR1cGxpY2F0ZWQKICAgICAgICBteSAlRHluYW1pY0ZpZWxkc0xpc3QgPSAlewogICAgICAgICAgICAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgICAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICAgICAgICAgICkKICAgICAgICB9OwogICAgICAgICVEeW5hbWljRmllbGRzTGlzdCA9IHJldmVyc2UgJUR5bmFtaWNGaWVsZHNMaXN0OwoKICAgICAgICBpZiAoICREeW5hbWljRmllbGRzTGlzdHsgJEdldFBhcmFte05hbWV9IH0gKSB7CiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gJ1RoZXJlIGlzIGFub3RoZXIgZmllbGQgd2l0aCB0aGUgc2FtZSBuYW1lLic7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEdldFBhcmFte0ZpZWxkT3JkZXJ9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIG9yZGVyIGlzIG51bWVyaWMgYW5kIHBvc2l0aXZlCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RmllbGRPcmRlcn0gIX4gbXtcQSAoPzogXGQgKSsgXHp9eG1zICkgewogICAgICAgICAgICAkRXJyb3Jze0ZpZWxkT3JkZXJTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tGaWVsZE9yZGVyU2VydmVyRXJyb3JNZXNzYWdlfSA9ICdUaGUgZmllbGQgbXVzdCBiZSBudW1lcmljLic7CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkQ29uZmlnUGFyYW0gKAogICAgICAgIHF3KE9iamVjdFR5cGUgT2JqZWN0VHlwZU5hbWUgRmllbGRUeXBlIEZpZWxkVHlwZU5hbWUgVmFsaWRJRCBDb25maWdJdGVtQ2xhc3MgQ29uZmlnSXRlbUxpbmtUeXBlIENvbmZpZ0l0ZW1MaW5rU291cmNlIENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCkKICAgICAgICApCiAgICB7CiAgICAgICAgJEdldFBhcmFteyRDb25maWdQYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkQ29uZmlnUGFyYW0gKTsKICAgIH0KCiAgICBteSBARGVwbFN0YXRlcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoCiAgICAgICAgUGFyYW0gPT4gJ0RlcGxTdGF0ZXMnLAogICAgICAgIFJhdyAgID0+IDEsCiAgICApOwogICAgaWYgKEBEZXBsU3RhdGVzKSB7CiAgICAgICAgJEdldFBhcmFte0RlcGxTdGF0ZXN9ID0gXEBEZXBsU3RhdGVzOwogICAgfQoKICAgICMgdW5jb3JyZWN0YWJsZSBlcnJvcnMKICAgIGlmICggISRHZXRQYXJhbXtWYWxpZElEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05lZWQgVmFsaWRJRC4nLAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJEdldFBhcmFte0NvbmZpZ0l0ZW1DbGFzc30gKSB7CiAgICAgICAgJEVycm9yc3tDb25maWdJdGVtQ2xhc3NTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15IEBBZGRpdGlvbmFsREZTdG9yYWdlID0gJFNlbGYtPl9BZGRpdGlvbmFsREZTdG9yYWdlR2V0KCk7CiAgICAkR2V0UGFyYW17QWRkaXRpb25hbERGU3RvcmFnZX0gPSBcQEFkZGl0aW9uYWxERlN0b3JhZ2U7CgogICAgbXkgJUFkZGl0aW9uYWxERlN0b3JhZ2VFcnJvcnMgPSAkU2VsZi0+X0FkZGl0aW9uYWxERlN0b3JhZ2VWYWxpZGF0ZSglR2V0UGFyYW0pOwogICAgJUVycm9ycyA9ICggJUVycm9ycywgJUFkZGl0aW9uYWxERlN0b3JhZ2VFcnJvcnMgKTsKCiAgICBpZiAoJUVycm9ycykgewogICAgICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJUVycm9ycywKICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICBNb2RlID0+ICdBZGQnLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgIG15ICREeW5hbWljRmllbGREcml2ZXJSZWdpc3RyYXRpb24gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0R5bmFtaWNGaWVsZHM6OkRyaXZlcicpOwoKICAgIGlmICgKICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkRHJpdmVyUmVnaXN0cmF0aW9uKQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkRHJpdmVyUmVnaXN0cmF0aW9uLT57ICRHZXRQYXJhbXtGaWVsZFR5cGV9IH0gKQogICAgICAgICYmIElzSGFzaFJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkRHJpdmVyUmVnaXN0cmF0aW9uLT57ICRHZXRQYXJhbXtGaWVsZFR5cGV9IH0tPntDb25maWd9ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGREcml2ZXJSZWdpc3RyYXRpb24tPnsgJEdldFBhcmFte0ZpZWxkVHlwZX0gfS0+e0NvbmZpZ307CiAgICB9CgogICAgIyBvdmVyd3JpdGUgZHluYW1pYyBmaWVsZCBjb25maWcKICAgIEtFWToKICAgIGZvciBteSAkS2V5ICgKICAgICAgICBxdyggQ29uZmlnSXRlbUNsYXNzIERlcGxTdGF0ZXMgQ29uZmlnSXRlbUxpbmtUeXBlIENvbmZpZ0l0ZW1MaW5rU291cmNlIENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCBBZGRpdGlvbmFsREZTdG9yYWdlICkKICAgICAgICApCiAgICB7CiAgICAgICAgbmV4dCBLRVkgaWYgIWRlZmluZWQgJEdldFBhcmFteyRLZXl9OwogICAgICAgICREeW5hbWljRmllbGRDb25maWctPnskS2V5fSA9ICRHZXRQYXJhbXskS2V5fTsKICAgIH0KCiAgICBteSAkRmllbGRJRCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEFkZCgKICAgICAgICBOYW1lICAgICAgID0+ICRHZXRQYXJhbXtOYW1lfSwKICAgICAgICBMYWJlbCAgICAgID0+ICRHZXRQYXJhbXtMYWJlbH0sCiAgICAgICAgRmllbGRPcmRlciA9PiAkR2V0UGFyYW17RmllbGRPcmRlcn0sCiAgICAgICAgRmllbGRUeXBlICA9PiAkR2V0UGFyYW17RmllbGRUeXBlfSwKICAgICAgICBPYmplY3RUeXBlID0+ICRHZXRQYXJhbXtPYmplY3RUeXBlfSwKICAgICAgICBDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcgfHwge30sCiAgICAgICAgVmFsaWRJRCAgICA9PiAkR2V0UGFyYW17VmFsaWRJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRGaWVsZElEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ291bGQgbm90IGNyZWF0ZSB0aGUgbmV3IGZpZWxkLicsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgT1AgPT4gIkFjdGlvbj1BZG1pbkR5bmFtaWNGaWVsZCIsCiAgICApOwp9CgpzdWIgX0NoYW5nZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFBhcmFtT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAkRmllbGRJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJRCcgKTsKICAgIGlmICggISRGaWVsZElEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTmVlZCBJRC4nLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBJRCA9PiAkRmllbGRJRCwKICAgICk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNvdWxkIG5vdCBnZXQgY29uZmlnIGZvciBkeW5hbWljIGZpZWxkICRGaWVsZElELiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlQ29uZmlnOwogICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30gKSApIHsKICAgICAgICAlQ29uZmlnID0gJXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30gfTsKICAgIH0KCiAgICAjIEluaXRpYWxpemUgR2V0UGFyYW0gd2l0aCByZWFkLW9ubHkgdmFsdWVzIHRoYXQgY2Fubm90IGJlIGNoYW5nZWQgYW55bW9yZSBpbiBjaGFuZ2UgZGlhbG9nLgogICAgbXkgJUdldFBhcmFtID0gKAogICAgICAgIE9iamVjdFR5cGUgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0sCiAgICAgICAgRmllbGRUeXBlICAgICAgID0+ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9LAogICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAkQ29uZmlne0NvbmZpZ0l0ZW1DbGFzc30sCiAgICApOwoKICAgIG15ICRPYmplY3RUeXBlTmFtZSA9ICRTZWxmLT57T2JqZWN0VHlwZUNvbmZpZ30tPnsgJEdldFBhcmFte09iamVjdFR5cGV9IH0tPntEaXNwbGF5TmFtZX0gfHwgJyc7CiAgICBteSAkRmllbGRUeXBlTmFtZSAgPSAkU2VsZi0+e0ZpZWxkVHlwZUNvbmZpZ30tPnsgJEdldFBhcmFte0ZpZWxkVHlwZX0gfS0+e0Rpc3BsYXlOYW1lfSAgIHx8ICcnOwoKICAgIHJldHVybiAkU2VsZi0+X1Nob3dTY3JlZW4oCiAgICAgICAgJVBhcmFtLAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICAleyREeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICVDb25maWcsCiAgICAgICAgSUQgICAgICAgICAgICAgPT4gJEZpZWxkSUQsCiAgICAgICAgTW9kZSAgICAgICAgICAgPT4gJ0NoYW5nZScsCiAgICAgICAgQnJlYWRjcnVtYlRleHQgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fQogICAgICAgICAgICAtPlRyYW5zbGF0ZSggJ0NoYW5nZSAlcyBmaWVsZCcsICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmllbGRUeXBlTmFtZSkgKSwKICAgICAgICBPYmplY3RUeXBlTmFtZSA9PiAkT2JqZWN0VHlwZU5hbWUsCiAgICAgICAgRmllbGRUeXBlTmFtZSAgPT4gJEZpZWxkVHlwZU5hbWUsCiAgICApOwp9CgpzdWIgX0NoYW5nZUFjdGlvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFBhcmFtT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAlRXJyb3JzOwogICAgbXkgJUdldFBhcmFtOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhOYW1lIExhYmVsIEZpZWxkT3JkZXIpKSB7CiAgICAgICAgJEdldFBhcmFteyROZWVkZWR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJE5lZWRlZCApOwogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJEdldFBhcmFteyROZWVkZWR9ICYmIGxlbmd0aCAkR2V0UGFyYW17JE5lZWRlZH07CgogICAgICAgICRFcnJvcnN7ICROZWVkZWQgLiAnU2VydmVyRXJyb3InIH0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAkRXJyb3JzeyAkTmVlZGVkIC4gJ1NlcnZlckVycm9yTWVzc2FnZScgfSA9ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLic7CiAgICB9CgogICAgbXkgJEZpZWxkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSUQnICk7CiAgICBpZiAoICEkRmllbGRJRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJ05lZWQgSUQuJywKICAgICAgICApOwogICAgfQogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBJRCA9PiAkRmllbGRJRCwKICAgICk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNvdWxkIG5vdCBnZXQgY29uZmlnIGZvciBkeW5hbWljIGZpZWxkICRGaWVsZElELiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRHZXRQYXJhbXtOYW1lfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIGlzIGxvd2VyY2FzZQogICAgICAgIGlmICggJEdldFBhcmFte05hbWV9ICF+IG17XEEgKD86IFthLXpBLVpdIHwgXGQgKSsgXHp9eG1zICkgewogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0KICAgICAgICAgICAgICAgICdUaGUgZmllbGQgZG9lcyBub3QgY29udGFpbiBvbmx5IEFTQ0lJIGxldHRlcnMgYW5kIG51bWJlcnMuJzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgbmFtZSBpcyBkdXBsaWNhdGVkCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZHNMaXN0ID0gJXsKICAgICAgICAgICAgJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICAgICAgICAgIFZhbGlkICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFJlc3VsdFR5cGUgPT4gJ0hBU0gnLAogICAgICAgICAgICApCiAgICAgICAgfTsKICAgICAgICAlRHluYW1pY0ZpZWxkc0xpc3QgPSByZXZlcnNlICVEeW5hbWljRmllbGRzTGlzdDsKCiAgICAgICAgaWYgKAogICAgICAgICAgICAkRHluYW1pY0ZpZWxkc0xpc3R7ICRHZXRQYXJhbXtOYW1lfSB9ICYmCiAgICAgICAgICAgICREeW5hbWljRmllbGRzTGlzdHsgJEdldFBhcmFte05hbWV9IH0gbmUgJEZpZWxkSUQKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEVycm9yc3tOYW1lU2VydmVyRXJyb3J9ICAgICAgICA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yTWVzc2FnZX0gPSAnVGhlcmUgaXMgYW5vdGhlciBmaWVsZCB3aXRoIHRoZSBzYW1lIG5hbWUuJzsKICAgICAgICB9CgogICAgICAgICMgaWYgaXQncyBhbiBpbnRlcm5hbCBmaWVsZCwgaXRzIG5hbWUgc2hvdWxkIG5vdCBjaGFuZ2UKICAgICAgICBpZiAoCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntJbnRlcm5hbEZpZWxkfSAmJgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkc0xpc3R7ICRHZXRQYXJhbXtOYW1lfSB9IG5lICRGaWVsZElECiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRFcnJvcnN7TmFtZVNlcnZlckVycm9yfSAgICAgICAgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAkRXJyb3Jze05hbWVTZXJ2ZXJFcnJvck1lc3NhZ2V9ID0gJ1RoZSBuYW1lIGZvciB0aGlzIGZpZWxkIHNob3VsZCBub3QgY2hhbmdlLic7CiAgICAgICAgICAgICRQYXJhbXtJbnRlcm5hbEZpZWxkfSAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57SW50ZXJuYWxGaWVsZH07CiAgICAgICAgfQogICAgfQoKICAgIGlmICggJEdldFBhcmFte0ZpZWxkT3JkZXJ9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIG9yZGVyIGlzIG51bWVyaWMgYW5kIHBvc2l0aXZlCiAgICAgICAgaWYgKCAkR2V0UGFyYW17RmllbGRPcmRlcn0gIX4gbXtcQSAoPzogXGQgKSsgXHp9eG1zICkgewogICAgICAgICAgICAkRXJyb3Jze0ZpZWxkT3JkZXJTZXJ2ZXJFcnJvcn0gICAgICAgID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgJEVycm9yc3tGaWVsZE9yZGVyU2VydmVyRXJyb3JNZXNzYWdlfSA9ICdUaGUgZmllbGQgbXVzdCBiZSBudW1lcmljLic7CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkQ29uZmlnUGFyYW0gKAogICAgICAgIHF3KE9iamVjdFR5cGUgT2JqZWN0VHlwZU5hbWUgRmllbGRUeXBlIEZpZWxkVHlwZU5hbWUgRGVmYXVsdFZhbHVlIFZhbGlkSUQgQ29uZmlnSXRlbUxpbmtUeXBlIENvbmZpZ0l0ZW1MaW5rU291cmNlIENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCkKICAgICAgICApCiAgICB7CiAgICAgICAgJEdldFBhcmFteyRDb25maWdQYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkQ29uZmlnUGFyYW0gKTsKICAgIH0KCiAgICAjIENvbmZpZyBpdGVtIGNsYXNzIGlzIHJlYWQtb25seSBpbiBjaGFuZ2UsIHNvIHNldCBpdCB0byB0aGUgc3RvcmVkIHZhbHVlIGV2ZXJ5IHRpbWUuCiAgICAkR2V0UGFyYW17Q29uZmlnSXRlbUNsYXNzfSA9ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57Q29uZmlnSXRlbUNsYXNzfTsKCiAgICBteSBARGVwbFN0YXRlcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoCiAgICAgICAgUGFyYW0gPT4gJ0RlcGxTdGF0ZXMnLAogICAgICAgIFJhdyAgID0+IDEsCiAgICApOwogICAgJEdldFBhcmFte0RlcGxTdGF0ZXN9ID0gXEBEZXBsU3RhdGVzOwogICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntEZXBsU3RhdGVzfSA9IFxARGVwbFN0YXRlczsKCiAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0NvbmZpZ0l0ZW1MaW5rVHlwZX0gICAgPSAkR2V0UGFyYW17Q29uZmlnSXRlbUxpbmtUeXBlfTsKICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57Q29uZmlnSXRlbUxpbmtTb3VyY2V9ICA9ICRHZXRQYXJhbXtDb25maWdJdGVtTGlua1NvdXJjZX07CiAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0NvbmZpZ0l0ZW1MaW5rUmVtb3ZhbH0gPSAkR2V0UGFyYW17Q29uZmlnSXRlbUxpbmtSZW1vdmFsfTsKCiAgICBpZiAoICEkR2V0UGFyYW17VmFsaWRJRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICdOZWVkIFZhbGlkSUQuJywKICAgICAgICApOwogICAgfQoKICAgIG15IEBBZGRpdGlvbmFsREZTdG9yYWdlID0gJFNlbGYtPl9BZGRpdGlvbmFsREZTdG9yYWdlR2V0KCk7CiAgICAkR2V0UGFyYW17QWRkaXRpb25hbERGU3RvcmFnZX0gPSBcQEFkZGl0aW9uYWxERlN0b3JhZ2U7CgogICAgbXkgJUFkZGl0aW9uYWxERlN0b3JhZ2VFcnJvcnMgPSAkU2VsZi0+X0FkZGl0aW9uYWxERlN0b3JhZ2VWYWxpZGF0ZSglR2V0UGFyYW0pOwogICAgJUVycm9ycyA9ICggJUVycm9ycywgJUFkZGl0aW9uYWxERlN0b3JhZ2VFcnJvcnMgKTsKCiAgICAjIHJldHVybiB0byBjaGFuZ2Ugc2NyZWVuIGlmIGVycm9ycwogICAgaWYgKCVFcnJvcnMpIHsKICAgICAgICByZXR1cm4gJFNlbGYtPl9TaG93U2NyZWVuKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVFcnJvcnMsCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgSUQgICA9PiAkRmllbGRJRCwKICAgICAgICAgICAgTW9kZSA9PiAnQ2hhbmdlJywKICAgICAgICApOwogICAgfQoKICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57QWRkaXRpb25hbERGU3RvcmFnZX0gPSAkR2V0UGFyYW17QWRkaXRpb25hbERGU3RvcmFnZX07CgogICAgIyB1cGRhdGUgZHluYW1pYyBmaWVsZCAoRmllbGRUeXBlIGFuZCBPYmplY3RUeXBlIGNhbm5vdCBiZSBjaGFuZ2VkIC0gdXNlIG9sZCB2YWx1ZXMpCiAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZFVwZGF0ZSgKICAgICAgICBJRCAgICAgICAgID0+ICRGaWVsZElELAogICAgICAgIE5hbWUgICAgICAgPT4gJEdldFBhcmFte05hbWV9LAogICAgICAgIExhYmVsICAgICAgPT4gJEdldFBhcmFte0xhYmVsfSwKICAgICAgICBGaWVsZE9yZGVyID0+ICRHZXRQYXJhbXtGaWVsZE9yZGVyfSwKICAgICAgICBGaWVsZFR5cGUgID0+ICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9LAogICAgICAgIE9iamVjdFR5cGUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9LAogICAgICAgIENvbmZpZyAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30gfHwge30sCiAgICAgICAgVmFsaWRJRCAgICA9PiAkR2V0UGFyYW17VmFsaWRJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRVcGRhdGVTdWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ291bGQgbm90IHVwZGF0ZSB0aGUgZmllbGQgJEdldFBhcmFte05hbWV9LiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249Q2hhbmdlO09iamVjdFR5cGU9JEdldFBhcmFte09iamVjdFR5cGV9O0ZpZWxkVHlwZT0kR2V0UGFyYW17RmllbGRUeXBlfTtJRD0kRmllbGRJRCIKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAiQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiwKICAgICk7Cn0KCnN1YiBfU2hvd1NjcmVlbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFZhbGlkT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7CiAgICBteSAkTGlua09iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJExhbmd1YWdlT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICRQYXJhbXtEaXNwbGF5RmllbGROYW1lfSA9ICdOZXcnOwoKICAgIGlmICggJFBhcmFte01vZGV9IGVxICdDaGFuZ2UnICkgewogICAgICAgICRQYXJhbXtTaG93V2FybmluZ30gICAgICA9ICdTaG93V2FybmluZyc7CiAgICAgICAgJFBhcmFte0Rpc3BsYXlGaWVsZE5hbWV9ID0gJFBhcmFte05hbWV9OwogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgIG15ICREeW5hbWljRmllbGRMaXN0ID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCA9PiAwLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiBvcmRlciBudW1iZXJzIChpcyBhbHJlYWR5IHNvcnRlZCkuCiAgICBteSBARHluYW1pY2ZpZWxkT3JkZXJMaXN0OwogICAgbXkgJUR5bmFtaWNmaWVsZE5hbWVzTGlzdDsKICAgIGZvciBteSAkRHluYW1pY2ZpZWxkICggQHskRHluYW1pY0ZpZWxkTGlzdH0gKSB7CiAgICAgICAgcHVzaCBARHluYW1pY2ZpZWxkT3JkZXJMaXN0LCAkRHluYW1pY2ZpZWxkLT57RmllbGRPcmRlcn07CiAgICAgICAgJER5bmFtaWNmaWVsZE5hbWVzTGlzdHsgJER5bmFtaWNmaWVsZC0+e0ZpZWxkT3JkZXJ9IH0gPSAkRHluYW1pY2ZpZWxkLT57TGFiZWx9OwogICAgfQoKICAgICMgd2hlbiBhZGRpbmcgd2UgbmVlZCB0byBjcmVhdGUgYW4gZXh0cmEgb3JkZXIgbnVtYmVyIGZvciB0aGUgbmV3IGZpZWxkCiAgICBpZiAoICRQYXJhbXtNb2RlfSBlcSAnQWRkJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIGxhc3QgZWxlbWVudCBmb3JtIHRoZSBvcmRlciBsaXN0IGFuZCBhZGQgMQogICAgICAgIG15ICRMYXN0T3JkZXJOdW1iZXIgPSAkRHluYW1pY2ZpZWxkT3JkZXJMaXN0Wy0xXTsKICAgICAgICAkTGFzdE9yZGVyTnVtYmVyKys7CgogICAgICAgICMgYWRkIHRoaXMgbmV3IG9yZGVyIG51bWJlciB0byB0aGUgZW5kIG9mIHRoZSBsaXN0CiAgICAgICAgcHVzaCBARHluYW1pY2ZpZWxkT3JkZXJMaXN0LCAkTGFzdE9yZGVyTnVtYmVyOwogICAgfQoKICAgICMgc2hvdyB0aGUgbmFtZXMgb2YgdGhlIG90aGVyIGZpZWxkcyB0byBlYXNlIG9yZGVyaW5nCiAgICBteSAlT3JkZXJOYW1lc0xpc3Q7CiAgICBteSAkQ3VycmVudGx5VGV4dCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudGx5JykgLiAnOiAnOwogICAgZm9yIG15ICRPcmRlck51bWJlciAoIHNvcnQgQER5bmFtaWNmaWVsZE9yZGVyTGlzdCApIHsKICAgICAgICAkT3JkZXJOYW1lc0xpc3R7JE9yZGVyTnVtYmVyfSA9ICRPcmRlck51bWJlcjsKICAgICAgICBpZiAoICREeW5hbWljZmllbGROYW1lc0xpc3R7JE9yZGVyTnVtYmVyfSAmJiAkT3JkZXJOdW1iZXIgbmUgJFBhcmFte0ZpZWxkT3JkZXJ9ICkgewogICAgICAgICAgICAkT3JkZXJOYW1lc0xpc3R7JE9yZGVyTnVtYmVyfSA9ICRPcmRlck51bWJlciAuICcgLSAnCiAgICAgICAgICAgICAgICAuICRDdXJyZW50bHlUZXh0CiAgICAgICAgICAgICAgICAuICREeW5hbWljZmllbGROYW1lc0xpc3R7JE9yZGVyTnVtYmVyfTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZE9yZGVyU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gXCVPcmRlck5hbWVzTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgID0+ICdGaWVsZE9yZGVyJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtGaWVsZE9yZGVyfSB8fCAxLAogICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMCwKICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgICA9PiAnTnVtZXJpY0tleScsCiAgICAgICAgQ2xhc3MgICAgICAgICA9PiAnTW9kZXJuaXplIFc3NXBjIFZhbGlkYXRlX051bWJlcicsCiAgICApOwoKICAgIG15ICVWYWxpZExpc3QgICAgPSAkVmFsaWRPYmplY3QtPlZhbGlkTGlzdCgpOwogICAgbXkgJFZhbGlkaXR5U3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVZhbGlkTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1ZhbGlkSUQnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17VmFsaWRJRH0gfHwgMSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBXNTBwYycsCiAgICApOwoKICAgIG15ICVTaG93UGFyYW1zID0gJFNlbGYtPl9BZGRpdGlvbmFsREZTdG9yYWdlU2hvdygKICAgICAgICAlUGFyYW0KICAgICk7CiAgICAlUGFyYW0gPSAoICVQYXJhbSwgJVNob3dQYXJhbXMgKTsKCiAgICBteSAkUmVhZG9ubHlJbnRlcm5hbEZpZWxkID0gJyc7CgogICAgIyBJbnRlcm5hbCBmaWVsZHMgY2FuIG5vdCBiZSBkZWxldGVkIGFuZCBuYW1lIHNob3VsZCBub3QgY2hhbmdlLgogICAgaWYgKCAkUGFyYW17SW50ZXJuYWxGaWVsZH0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ludGVybmFsRmllbGQnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICAgICAgJFJlYWRvbmx5SW50ZXJuYWxGaWVsZCA9ICdyZWFkb25seT0icmVhZG9ubHkiJzsKICAgIH0KCiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICBteSAkQ29uZmlnSXRlbUNsYXNzZXMgPSBbIHNvcnQgdmFsdWVzICV7ICRDbGFzc0xpc3QgfHwge30gfSBdOwogICAgbXkgJUNvbmZpZ0l0ZW1DbGFzc2VzID0gbWFwIHsgJF8gPT4gJF8gfSBAeyRDb25maWdJdGVtQ2xhc3Nlc307CgogICAgIyBBZGQgJ2ludmFsaWQnIG5vdGUgdG8gY29uZmlnIGNsYXNzIG5hbWUgaWYgdGhlIGNsYXNzIGlzIGludmFsaWQKICAgICMgb3IgZG9lcyBub3QgZXhpc3QgKGFueW1vcmUpLgogICAgbXkgJFNlbGVjdGVkQ29uZmlnSXRlbUNsYXNzSXNJbnZhbGlkOwogICAgaWYgKAogICAgICAgICRQYXJhbXtNb2RlfSBlcSAnQ2hhbmdlJwogICAgICAgICYmICRQYXJhbXtDb25maWdJdGVtQ2xhc3N9CiAgICAgICAgJiYgISRDb25maWdJdGVtQ2xhc3Nlc3sgJFBhcmFte0NvbmZpZ0l0ZW1DbGFzc30gfQogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZWN0ZWRDb25maWdJdGVtQ2xhc3NJc0ludmFsaWQgPSAxOwogICAgICAgICRDb25maWdJdGVtQ2xhc3Nlc3sgJFBhcmFte0NvbmZpZ0l0ZW1DbGFzc30gfSA9ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkUGFyYW17Q29uZmlnSXRlbUNsYXNzfSApCiAgICAgICAgICAgIC4gJyAoJwogICAgICAgICAgICAuICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCdpbnZhbGlkJykKICAgICAgICAgICAgLiAnKSc7CiAgICB9CgogICAgIyBkaXNhYmxlIGZpZWxkIGluIGNoYW5nZSBkaWFsb2dzCiAgICBteSAkRGlzYWJsZWQgPSAkUGFyYW17TW9kZX0gZXEgJ0NoYW5nZScgPyAxIDogMDsKCiAgICAkUGFyYW17Q29uZmlnSXRlbUNsYXNzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVDb25maWdJdGVtQ2xhc3NlcywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1DbGFzc30sCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgVmFsaWRhdGVfUmVxdWlyZWQgICcgLiAoICRQYXJhbXtDb25maWdJdGVtQ2xhc3NTZXJ2ZXJFcnJvcn0gfHwgJyAnICksCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdDb25maWdJdGVtQ2xhc3MnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIERpc2FibGVkICAgICA9PiAkRGlzYWJsZWQsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNLZXknLAogICAgKTsKCiAgICAjIHNlbGVjdGlvbiBvZiBkZXBsb3ltZW50IHN0YXR1cwogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICBteSAkRGVwbFN0YXRlcyA9IFsgc29ydCB2YWx1ZXMgJXsgJERlcGxTdGF0ZUxpc3QgfHwge30gfSBdOwogICAgbXkgJURlcGxTdGF0ZXMgPSBtYXAgeyAkXyA9PiAkXyB9IEB7JERlcGxTdGF0ZXN9OwoKICAgIG15ICREZXBsU3RhdGVTZWxlY3Rpb25IVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlRGVwbFN0YXRlcywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZXMnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0RlcGxTdGF0ZXN9LAogICAgKTsKCiAgICAjIHNlbGVjdGlvbiBvZiBsaW5rIHR5cGUKICAgIG15ICVQb3NzaWJsZUNvbmZpZ0l0ZW1MaW5rVHlwZXMgPSAkTGlua09iamVjdC0+UG9zc2libGVUeXBlc0xpc3QoCiAgICAgICAgT2JqZWN0MSA9PiAkUGFyYW17T2JqZWN0VHlwZX0sCiAgICAgICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgKTsKCiAgICBteSBAUG9zc2libGVDb25maWdJdGVtTGlua1R5cGVzID0ga2V5cyAlUG9zc2libGVDb25maWdJdGVtTGlua1R5cGVzOwoKICAgIG15ICRDb25maWdJdGVtTGlua1R5cGVTZWxlY3Rpb25IVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcQFBvc3NpYmxlQ29uZmlnSXRlbUxpbmtUeXBlcywKICAgICAgICBOYW1lICAgICAgICAgID0+ICdDb25maWdJdGVtTGlua1R5cGUnLAogICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIE11bHRpcGxlICAgICAgPT4gMCwKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtDb25maWdJdGVtTGlua1R5cGV9LAogICAgKTsKCiAgICAjIHNlbGVjdGlvbiBvZiBjb25maWcgaXRlbSBsaW5rIHNvdXJjZQogICAgbXkgJUNvbmZpZ0l0ZW1MaW5rU291cmNlcyA9ICgKICAgICAgICBJVFNNQ29uZmlnSXRlbSAgICAgPT4gJ0NvbmZpZyBpdGVtJywKICAgICAgICAkUGFyYW17T2JqZWN0VHlwZX0gPT4gJFBhcmFte09iamVjdFR5cGV9LAogICAgKTsKCiAgICBteSAkQ29uZmlnSXRlbUxpbmtTb3VyY2VTZWxlY3Rpb25IVE1MID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlQ29uZmlnSXRlbUxpbmtTb3VyY2VzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnQ29uZmlnSXRlbUxpbmtTb3VyY2UnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1MaW5rU291cmNlfSwKICAgICk7CgogICAgIyBzZWxlY3Rpb24gZm9yIGNvbmZpZyBpdGVtIGxpbmsgcmVtb3ZhbAogICAgbXkgJENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbFNlbGVjdGlvbkhUTUwgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMCA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgIDEgPT4gVHJhbnNsYXRhYmxlKCdZZXMnKSwKICAgICAgICB9LAogICAgICAgIE5hbWUgICAgICAgPT4gJ0NvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCcsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17Q29uZmlnSXRlbUxpbmtSZW1vdmFsfSAvLyAxLAogICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5EeW5hbWljRmllbGRDb25maWdJdGVtJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFNlbGVjdGVkQ29uZmlnSXRlbUNsYXNzSXNJbnZhbGlkICAgPT4gJFNlbGVjdGVkQ29uZmlnSXRlbUNsYXNzSXNJbnZhbGlkLAogICAgICAgICAgICBEZXBsU3RhdGVTZWxlY3Rpb25IVE1MICAgICAgICAgICAgID0+ICREZXBsU3RhdGVTZWxlY3Rpb25IVE1MLAogICAgICAgICAgICBDb25maWdJdGVtTGlua1R5cGVTZWxlY3Rpb25IVE1MICAgID0+ICRDb25maWdJdGVtTGlua1R5cGVTZWxlY3Rpb25IVE1MLAogICAgICAgICAgICBDb25maWdJdGVtTGlua1NvdXJjZVNlbGVjdGlvbkhUTUwgID0+ICRDb25maWdJdGVtTGlua1NvdXJjZVNlbGVjdGlvbkhUTUwsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbFNlbGVjdGlvbkhUTUwgPT4gJENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbFNlbGVjdGlvbkhUTUwsCiAgICAgICAgICAgIFZhbGlkaXR5U3RyZyAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbGlkaXR5U3RyZywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkT3JkZXJTdHJnICAgICAgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkT3JkZXJTdHJnLAogICAgICAgICAgICBSZWFkb25seUludGVybmFsRmllbGQgICAgICAgICAgICAgID0+ICRSZWFkb25seUludGVybmFsRmllbGQsCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9BZGRpdGlvbmFsREZTdG9yYWdlU2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgIG15ICVTaG93UGFyYW1zOwoKICAgICMgT25seSB0aWNrZXQgZHluYW1pYyBmaWVsZHMgYXJlIHN1cHBvcnRlZCBmb3IgYWRkaXRpb25hbCBkeW5hbWljIGZpZWxkIHN0b3JhZ2UuCiAgICByZXR1cm4gJVNob3dQYXJhbXMgaWYgISRQYXJhbXtPYmplY3RUeXBlfTsKICAgIHJldHVybiAlU2hvd1BhcmFtcyBpZiAkUGFyYW17T2JqZWN0VHlwZX0gbmUgJ1RpY2tldCc7CgogICAgbXkgQEFkZGl0aW9uYWxERlN0b3JhZ2U7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte0FkZGl0aW9uYWxERlN0b3JhZ2V9ICkgKSB7CiAgICAgICAgQEFkZGl0aW9uYWxERlN0b3JhZ2UgPSBAeyAkUGFyYW17QWRkaXRpb25hbERGU3RvcmFnZX0gfTsKICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdBZGRpdGlvbmFsREZTdG9yYWdlJywKICAgICAgICBEYXRhID0+IHt9LAogICAgKTsKCiAgICAjIEFzc2VtYmxlIGF2YWlsYWJsZSBkeW5hbWljIGZpZWxkcyB0byBiZSBhZGRpdGlvbmFsbHkgZmlsbGVkLgogICAgbXkgJEFkZGl0aW9uYWxEeW5hbWljRmllbGRDb25maWdzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBPYmplY3RUeXBlID0+ICdUaWNrZXQnLAogICAgKTsKCiAgICAjIEZpbHRlciBvdXQgZHluYW1pYyBmaWVsZCB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBjb25maWd1cmVkLiBJdCdzIG5vdCBhdmFpbGFibGUKICAgICMgdG8gYmUgc2VsZWN0ZWQgYXMgYW4gYWRkaXRpb25hbCBkeW5hbWljIGZpZWxkIHRvIGJlIGZpbGxlZC4KICAgIG15IEBBZGRpdGlvbmFsRHluYW1pY0ZpZWxkQ29uZmlncyA9IEB7JEFkZGl0aW9uYWxEeW5hbWljRmllbGRDb25maWdzfTsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17TmFtZX0gKSB7CiAgICAgICAgQEFkZGl0aW9uYWxEeW5hbWljRmllbGRDb25maWdzID0gZ3JlcCB7ICRfLT57TmFtZX0gbmUgJFBhcmFte05hbWV9IH0gQHskQWRkaXRpb25hbER5bmFtaWNGaWVsZENvbmZpZ3N9OwogICAgfQoKICAgIG15ICVBZGRpdGlvbmFsRHluYW1pY0ZpZWxkU2VsZWN0aW9uCiAgICAgICAgPSBtYXAgeyAkXy0+e05hbWV9ID0+ICRfLT57TmFtZX0gLiAnKCcgLiAkXy0+e0xhYmVsfSAuICcpJyB9IEBBZGRpdGlvbmFsRHluYW1pY0ZpZWxkQ29uZmlnczsKCiAgICBteSAkQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlciA9IDA7CiAgICBmb3IgbXkgJFN0b3JhZ2UgKEBBZGRpdGlvbmFsREZTdG9yYWdlKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCAgPSAkU3RvcmFnZS0+e0R5bmFtaWNGaWVsZH07CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1LZXkgPSAkU3RvcmFnZS0+e0NvbmZpZ0l0ZW1LZXl9OwogICAgICAgIG15ICRUeXBlICAgICAgICAgID0gJFN0b3JhZ2UtPntUeXBlfTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEVycm9yICAgICAgICA9ICcnOwogICAgICAgIG15ICREeW5hbWljRmllbGRFcnJvck1lc3NhZ2UgPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnKTsgICAgIyBkZWZhdWx0IGluIHRlbXBsYXRlCgogICAgICAgIG15ICRDb25maWdJdGVtS2V5RXJyb3IgICAgICAgID0gJyc7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1LZXlFcnJvck1lc3NhZ2UgPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnKTsgICAgIyBkZWZhdWx0IGluIHRlbXBsYXRlOwoKICAgICAgICBpZiAoICRQYXJhbXtBZGRpdGlvbmFsREZTdG9yYWdlRXJyb3JzfSApIHsKCiAgICAgICAgICAgICMgRHluYW1pYyBmaWVsZCBlcnJvcgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFte0FkZGl0aW9uYWxERlN0b3JhZ2VFcnJvcnN9LT5bJEFkZGl0aW9uYWxERlN0b3JhZ2VWYWx1ZUNvdW50ZXJdLT57RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRFcnJvciA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkRXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgPSAkUGFyYW17QWRkaXRpb25hbERGU3RvcmFnZUVycm9yc30tPlskQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlcl0tPntEeW5hbWljRmllbGR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENvbmZpZyBpdGVtIGtleSBlcnJvcgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFte0FkZGl0aW9uYWxERlN0b3JhZ2VFcnJvcnN9LT5bJEFkZGl0aW9uYWxERlN0b3JhZ2VWYWx1ZUNvdW50ZXJdLT57Q29uZmlnSXRlbUtleX0gKSB7CiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUtleUVycm9yID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtS2V5RXJyb3JNZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgPSAkUGFyYW17QWRkaXRpb25hbERGU3RvcmFnZUVycm9yc30tPlskQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlcl0tPntDb25maWdJdGVtS2V5fTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJEFkZGl0aW9uYWxERlN0b3JhZ2VWYWx1ZUNvdW50ZXIrKzsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZFNlbGVjdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVBZGRpdGlvbmFsRHluYW1pY0ZpZWxkU2VsZWN0aW9uLAogICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdEeW5hbWljRmllbGRfJyAuICRBZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gIk1vZGVybml6ZSBWYXJpYWJsZVdpZHRoIERhdGFUYWJsZSBWYWxpZGF0ZV9SZXF1aXJlZCAkRHluYW1pY0ZpZWxkRXJyb3IiLAogICAgICAgICk7CgogICAgICAgIG15ICRUeXBlT3B0aW9uID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRnJvbnRlbmQgICAgICAgID0+ICdGcm9udGVuZCcsCiAgICAgICAgICAgICAgICBCYWNrZW5kICAgICAgICAgPT4gJ0JhY2tlbmQnLAogICAgICAgICAgICAgICAgRnJvbnRlbmRCYWNrZW5kID0+ICdGcm9udGVuZCBhbmQgQmFja2VuZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNvcnQgICAgICAgICAgID0+ICdJbmRpdmlkdWFsS2V5JywKICAgICAgICAgICAgU29ydEluZGl2aWR1YWwgPT4gWyAnQmFja2VuZCcsICdGcm9udGVuZCcsICdGcm9udGVuZEJhY2tlbmQnIF0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdUeXBlXycgLiAkQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlciwKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgICAgPT4gJFR5cGUgfHwgJ0JhY2tlbmQnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgICA9PiAwLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSBhIHZhbHVlIG1hcCByb3cKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQWRkaXRpb25hbERGU3RvcmFnZVJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlciA9PiAkQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlciwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZFNlbGVjdGlvbiAgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZFNlbGVjdGlvbiwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEVycm9yTWVzc2FnZSAgICAgICAgPT4gJER5bmFtaWNGaWVsZEVycm9yTWVzc2FnZSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1LZXksCiAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5RXJyb3IgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtS2V5RXJyb3IsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5RXJyb3JNZXNzYWdlICAgICAgID0+ICRDb25maWdJdGVtS2V5RXJyb3JNZXNzYWdlLAogICAgICAgICAgICAgICAgVHlwZU9wdGlvbiAgICAgICAgICAgICAgICAgICAgICA9PiAkVHlwZU9wdGlvbiwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtUeXBlT3B0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBGcm9udGVuZCAgICAgICAgPT4gJ0Zyb250ZW5kJywKICAgICAgICAgICAgQmFja2VuZCAgICAgICAgID0+ICdCYWNrZW5kJywKICAgICAgICAgICAgRnJvbnRlbmRCYWNrZW5kID0+ICdGcm9udGVuZCBhbmQgQmFja2VuZCcsCiAgICAgICAgfSwKICAgICAgICBTb3J0ICAgICAgICAgICA9PiAnSW5kaXZpZHVhbEtleScsCiAgICAgICAgU29ydEluZGl2aWR1YWwgPT4gWyAnQmFja2VuZCcsICdGcm9udGVuZCcsICdGcm9udGVuZEJhY2tlbmQnIF0sCiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1R5cGUnLAogICAgICAgIFNlbGVjdGVkSUQgICAgID0+ICRQYXJhbXtUeXBlfSAvLyAnQmFja2VuZCcsCiAgICAgICAgUG9zc2libGVOb25lICAgPT4gMCwKICAgICAgICBUcmFuc2xhdGlvbiAgICA9PiAxLAogICAgICAgIENsYXNzICAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGNyZWF0ZSBBZGRpdGlvbmFsREZTdG9yYWdlIHRlbXBsYXRlCiAgICAkUGFyYW17RHluYW1pY0ZpZWxkU2VsZWN0aW9uVGVtcGxhdGV9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlQWRkaXRpb25hbER5bmFtaWNGaWVsZFNlbGVjdGlvbiwKICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUgVmFyaWFibGVXaWR0aCBEYXRhVGFibGUnLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdBZGRpdGlvbmFsREZTdG9yYWdlVGVtcGxhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlcicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEFkZGl0aW9uYWxERlN0b3JhZ2VWYWx1ZUNvdW50ZXIgPT4gJEFkZGl0aW9uYWxERlN0b3JhZ2VWYWx1ZUNvdW50ZXIsCiAgICAgICAgfSwKICAgICk7CgogICAgJFNob3dQYXJhbXN7QWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlcn0gPSAkQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlcjsKCiAgICByZXR1cm4gJVNob3dQYXJhbXM7Cn0KCnN1YiBfQWRkaXRpb25hbERGU3RvcmFnZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSBAQWRkaXRpb25hbERGU3RvcmFnZTsKCiAgICBteSAkVmFsdWVDb3VudGVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0FkZGl0aW9uYWxERlN0b3JhZ2VWYWx1ZUNvdW50ZXInICkgLy8gMDsKCiAgICBWQUxVRUNPVU5URVJJTkRFWDoKICAgIGZvciBteSAkVmFsdWVDb3VudGVySW5kZXggKCAxIC4uICRWYWx1ZUNvdW50ZXIgKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEeW5hbWljRmllbGRfJyAuICRWYWx1ZUNvdW50ZXJJbmRleCApOwogICAgICAgIG5leHQgVkFMVUVDT1VOVEVSSU5ERVggaWYgIWRlZmluZWQgJER5bmFtaWNGaWVsZDsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1LZXkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUtleV8nIC4gJFZhbHVlQ291bnRlckluZGV4ICk7CiAgICAgICAgbXkgJFR5cGUgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVHlwZV8nIC4gJFZhbHVlQ291bnRlckluZGV4ICkgLy8gJ0JhY2tlbmQnOwoKICAgICAgICBwdXNoIEBBZGRpdGlvbmFsREZTdG9yYWdlLCB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAkQ29uZmlnSXRlbUtleSwKICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBAQWRkaXRpb25hbERGU3RvcmFnZTsKfQoKc3ViIF9BZGRpdGlvbmFsREZTdG9yYWdlVmFsaWRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwoKICAgIG15IEBBZGRpdGlvbmFsREZTdG9yYWdlID0gQHsgJFBhcmFte0FkZGl0aW9uYWxERlN0b3JhZ2V9IC8vIFtdIH07CgogICAgbXkgJVVzZWREeW5hbWljRmllbGRzOwogICAgbXkgQFN0b3JhZ2VFcnJvck1lc3NhZ2VzOwogICAgbXkgJFN0b3JhZ2VFcnJvckZvdW5kOwoKICAgIFNUT1JBR0U6CiAgICBmb3IgbXkgJFN0b3JhZ2UgKEBBZGRpdGlvbmFsREZTdG9yYWdlKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCAgPSAkU3RvcmFnZS0+e0R5bmFtaWNGaWVsZH07CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1LZXkgPSAkU3RvcmFnZS0+e0NvbmZpZ0l0ZW1LZXl9OwogICAgICAgIG15ICRUeXBlICAgICAgICAgID0gJFN0b3JhZ2UtPntUeXBlfTsKCiAgICAgICAgbXkgJVN0b3JhZ2VFcnJvck1lc3NhZ2VzOwoKICAgICAgICAjIENoZWNrIGR5bmFtaWMgZmllbGQuCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkRHluYW1pY0ZpZWxkIHx8ICFsZW5ndGggJER5bmFtaWNGaWVsZCApIHsKICAgICAgICAgICAgJFN0b3JhZ2VFcnJvck1lc3NhZ2Vze0R5bmFtaWNGaWVsZH0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFVzZWREeW5hbWljRmllbGRzeyREeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAkU3RvcmFnZUVycm9yTWVzc2FnZXN7RHluYW1pY0ZpZWxkfSA9IFRyYW5zbGF0YWJsZSgnRHluYW1pYyBmaWVsZCBpcyBjb25maWd1cmVkIG1vcmUgdGhhbiBvbmNlLicpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZykgKSB7CiAgICAgICAgICAgICAgICAkU3RvcmFnZUVycm9yTWVzc2FnZXN7RHluYW1pY0ZpZWxkfSA9IFRyYW5zbGF0YWJsZSgnRHluYW1pYyBmaWVsZCBkb2VzIG5vdCBleGlzdCBvciBpcyBpbnZhbGlkLicpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IG5lICdUaWNrZXQnICkgewogICAgICAgICAgICAgICAgJFN0b3JhZ2VFcnJvck1lc3NhZ2Vze0R5bmFtaWNGaWVsZH0gPSBUcmFuc2xhdGFibGUoJ09ubHkgZHluYW1pYyBmaWVsZHMgZm9yIHRpY2tldHMgYXJlIGFsbG93ZWQuJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggZGVmaW5lZCAkRHluYW1pY0ZpZWxkICYmIGxlbmd0aCAkRHluYW1pY0ZpZWxkICkgewogICAgICAgICAgICAkVXNlZER5bmFtaWNGaWVsZHN7JER5bmFtaWNGaWVsZH0gPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBjb25maWcgaXRlbSBrZXkuCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbUtleSB8fCAhbGVuZ3RoICRDb25maWdJdGVtS2V5ICkgewogICAgICAgICAgICAkU3RvcmFnZUVycm9yTWVzc2FnZXN7Q29uZmlnSXRlbUtleX0gPSBUcmFuc2xhdGFibGUoJ1RoaXMgZmllbGQgaXMgcmVxdWlyZWQuJyk7CiAgICAgICAgfQoKICAgICAgICAjIEltcG9ydGFudDogcHVzaCBldmVuIGlmICVTdG9yYWdlRXJyb3JNZXNzYWdlcyBpcyBlbXB0eQogICAgICAgICMgYmVjYXVzZSB0aGUgaW5kZXggaW4gQFN0b3JhZ2VFcnJvck1lc3NhZ2VzIG11c3QgbWF0Y2ggdGhlIG9uZSBvZiBAQWRkaXRpb25hbERGU3RvcmFnZS4KICAgICAgICBwdXNoIEBTdG9yYWdlRXJyb3JNZXNzYWdlcywgXCVTdG9yYWdlRXJyb3JNZXNzYWdlczsKCiAgICAgICAgJFN0b3JhZ2VFcnJvckZvdW5kID0gMSBpZiAlU3RvcmFnZUVycm9yTWVzc2FnZXM7CiAgICB9CgogICAgbXkgJUVycm9yczsKICAgIGlmICgkU3RvcmFnZUVycm9yRm91bmQpIHsKICAgICAgICAkRXJyb3Jze0FkZGl0aW9uYWxERlN0b3JhZ2VFcnJvcnN9ID0gXEBTdG9yYWdlRXJyb3JNZXNzYWdlczsKICAgIH0KCiAgICByZXR1cm4gJUVycm9yczsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Modules/AdminITSMConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluSVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3MKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCkgaWYgISRDbGFzc0xpc3Q7CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKSBpZiByZWYgJENsYXNzTGlzdCBuZSAnSEFTSCc7CiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKSBpZiAhJXskQ2xhc3NMaXN0fTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFBhcmFtT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJFVzZXJPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZGVmaW5pdGlvbiBsaXN0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVmaW5pdGlvbkxpc3QnICkgewoKICAgICAgICAjIGdldCBjbGFzcyBpZAogICAgICAgIG15ICRDbGFzc0lEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgaWYgISRDbGFzc0lEOwoKICAgICAgICAjIGdlbmVyYXRlIENsYXNzT3B0aW9uU3RyZwogICAgICAgIG15ICRDbGFzc09wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2xhc3NJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzT3B0aW9uU3RyZyA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgQ2xhc3NTZWxlY3RlZCAgID0+IHsKICAgICAgICAgICAgICAgICAgICBJRCAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlZmluaXRpb25MaXN0JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgZGVmaW5pdGlvbiBsaXN0CiAgICAgICAgbXkgJERlZmluaXRpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25MaXN0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkRGVmaW5pdGlvbiAoIHJldmVyc2UgQHskRGVmaW5pdGlvbkxpc3R9ICkgewoKICAgICAgICAgICAgIyBnZXQgdXNlciBkYXRhCiAgICAgICAgICAgIG15ICRGdWxsTmFtZSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGRlZmluaXRpb24KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdEZWZpbml0aW9uTGlzdFJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyREZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeVVzZXIgPT4gJEZ1bGxOYW1lLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQWN0aW9uT3ZlcnZpZXcKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQWN0aW9uT3ZlcnZpZXcnLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGRlZmluaXRpb24gdmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0RlZmluaXRpb25WaWV3JyApIHsKCiAgICAgICAgIyBnZXQgZGVmaW5pdGlvbiBpZAogICAgICAgIG15ICREZWZpbml0aW9uSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRGVmaW5pdGlvbklEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIGlmICEkRGVmaW5pdGlvbklEOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgJERlZmluaXRpb24tPntEZWZpbml0aW9uU3RyaW5nfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgIFRleHQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIENsYXNzT3B0aW9uU3RyZwogICAgICAgIG15ICRDbGFzc09wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2xhc3NJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICREZWZpbml0aW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NPcHRpb25TdHJnID0+ICRDbGFzc09wdGlvblN0cmcsCiAgICAgICAgICAgICAgICBDbGFzc1NlbGVjdGVkICAgPT4gewogICAgICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFZlcnNpb25TZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICAgICAgSUQgICAgICA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJERlZmluaXRpb24tPntWZXJzaW9ufSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgdXNlciBkYXRhCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJERlZmluaXRpb24tPntDcmVhdGVCeX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlZmluaXRpb25WaWV3JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAleyREZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIENyZWF0ZUJ5VXNlciA9PiAkVXNlck5hbWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBBY3Rpb25PdmVydmlldwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25PdmVydmlldycsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZGVmaW5pdGlvbiBjaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEZWZpbml0aW9uQ2hhbmdlJyApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgaWQKICAgICAgICBteSAkQ2xhc3NJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIGlmICEkQ2xhc3NJRDsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGRlZmluaXRpb24KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgQ2xhc3NPcHRpb25TdHJnCiAgICAgICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDbGFzc0lEJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NPcHRpb25TdHJnID0+ICRDbGFzc09wdGlvblN0cmcsCiAgICAgICAgICAgICAgICBDbGFzc1NlbGVjdGVkICAgPT4gewogICAgICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Q2xhc3N9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEVkaXQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRGVmaW5pdGlvbkNoYW5nZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXskRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgQ2xhc3MgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICAgICAgUm93cyAgICA9PgogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e0VkaXRvclJvd3N9CiAgICAgICAgICAgICAgICAgICAgfHwgMzAsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBBY3Rpb25PdmVydmlldwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdBY3Rpb25PdmVydmlldycsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZGVmaW5pdGlvbiBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRGVmaW5pdGlvblNhdmUnICkgewogICAgICAgIG15ICVEZWZpbml0aW9uOwoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBmb3IgbXkgJEZvcm1QYXJhbSAocXcoQ2xhc3NJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICAkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRGb3JtUGFyYW0gKSB8fCAnJzsKICAgICAgICB9CiAgICAgICAgZm9yIG15ICRGb3JtUGFyYW0gKHF3KENsYXNzSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb257JEZvcm1QYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRGb3JtUGFyYW0hIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgVmFsaWRhdGUgWUFNTCBjb2RlIGJ5IGNvbnZlcnRpbmcgaXQgdG8gUGVybC4KICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJERlZmluaXRpb257RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKSBpZiByZWYgJERlZmluaXRpb25SZWYgbmUgJ0FSUkFZJzsKCiAgICAgICAgIyBhZGQgdG8gZGF0YWJhc2UKICAgICAgICBteSAkRGVmaW5pdGlvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgICVEZWZpbml0aW9uLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpIGlmICEkRGVmaW5pdGlvbklEOwoKICAgICAgICBteSAkQ29udGludWVBZnRlclNhdmUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29udGludWVBZnRlclNhdmUnICk7CiAgICAgICAgaWYgKCRDb250aW51ZUFmdGVyU2F2ZSkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249RGVmaW5pdGlvbkNoYW5nZTtDbGFzc0lEPSREZWZpbml0aW9ue0NsYXNzSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjb25maWcgaXRlbSBjbGFzcyBvdmVydmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzZSB7CgogICAgICAgICMgZ2VuZXJhdGUgQ2xhc3NPcHRpb25TdHJnCiAgICAgICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDbGFzc0lEJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXcnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzT3B0aW9uU3RyZyA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0xpc3QnLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkQ2xhc3NMaXN0LT57JGF9IGNtcCAkQ2xhc3NMaXN0LT57JGJ9IH0ga2V5cyAleyRDbGFzc0xpc3R9ICkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0xpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgY29uZmlnIGRhdGEKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9IHx8IDEwMDAwOwoKICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbiwgdXNlZCBmb3IgYmFja2xpbmtzCiAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbiBvdmVydmlldwogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBkZWZhdWx0IHBhcmFtZXRlcnMsIHRyeSB0byBnZXQgZmlsdGVyIChDbGFzc0lEKSBmcm9tIHNlc3Npb24gaWYgbm90IGdpdmVuIGFzIHBhcmFtZXRlcgogICAgJFNlbGYtPntGaWx0ZXJ9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKQogICAgICAgIHx8ICRTZWxmLT57QWdlbnRJVFNNQ29uZmlnSXRlbUNsYXNzRmlsdGVyfQogICAgICAgIHx8ICcnOwogICAgJFNlbGYtPntWaWV3fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICMgc3RvcmUgZmlsdGVyIChDbGFzc0lEKSBpbiBzZXNzaW9uCiAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtQ2xhc3NGaWx0ZXInLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICApOwoKICAgICMgZ2V0IHNvcnRpbmcgcGFyYW1ldGVycwogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnU29ydEJ5OjpEZWZhdWx0J30KICAgICAgICB8fCAnTnVtYmVyJzsKCiAgICAjIGdldCBvcmRlcmluZyBwYXJhbWV0ZXJzCiAgICBteSAkT3JkZXJCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBzZXQgU29ydCBhbmQgT3JkZXIgYnkgYXMgQXJyYXlzCiAgICBteSBAU29ydEJ5QXJyYXkgID0gKCRTb3J0QnkpOwogICAgbXkgQE9yZGVyQnlBcnJheSA9ICgkT3JkZXJCeSk7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBnZXQgcG9zc2libGUgZGVwbG95bWVudCBzdGF0ZSBsaXN0IGZvciBjb25maWcgaXRlbXMgdG8gYmUgc2hvd24KICAgIG15ICRTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZXQgdGhlIGRlcGxveW1lbnQgc3RhdGUgSURzIHBhcmFtZXRlciBmb3IgdGhlIHNlYXJjaAogICAgbXkgJERlcGxTdGF0ZUlEczsKICAgIGZvciBteSAkRGVwbFN0YXRlS2V5ICggc29ydCBrZXlzICV7JFN0YXRlTGlzdH0gKSB7CiAgICAgICAgcHVzaCBAeyREZXBsU3RhdGVJRHN9LCAkRGVwbFN0YXRlS2V5OwogICAgfQoKICAgICMgdG8gc3RvcmUgdGhlIGRlZmF1bHQgY2xhc3MKICAgIG15ICRDbGFzc0lEQXV0byA9ICcnOwoKICAgICMgdG8gc3RvcmUgdGhlIE5hdkJhciBmaWx0ZXJzCiAgICBteSAlRmlsdGVyczsKCiAgICAjIGRlZmluZSBwb3NpdGlvbiBvZiB0aGUgZmlsdGVyIGluIHRoZSBmcm9udGVuZAogICAgbXkgJFByaW9Db3VudGVyID0gMTAwMDsKCiAgICAjIHRvIHN0b3JlIHRoZSB0b3RhbCBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIGluIGFsbCBjbGFzc2VzIHRoYXQgdGhlIHVzZXIgaGFzIGFjY2VzcwogICAgbXkgJFRvdGFsQ291bnQ7CgogICAgIyB0byBzdG9yZSBhbGwgdGhlIGNsYXNlcyB0aGF0IHRoZSB1c2VyIGhhcyBhY2Nlc3MsIHVzZWQgaW4gc2VhcmNoIGZvciBmaWx0ZXIgJ0FsbCcKICAgIG15ICRBY2Nlc3NDbGFzc0xpc3Q7CgogICAgIyBteSBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgQ0xBU1NJRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkeyRDbGFzc0xpc3R9eyRhfSBjbXAgJHskQ2xhc3NMaXN0fXskYn0gfSBrZXlzICV7JENsYXNzTGlzdH0gKSB7CgogICAgICAgICMgc2hvdyBtZW51IGxpbmsgb25seSBpZiB1c2VyIGhhcyBhY2Nlc3MgcmlnaHRzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NJRCBpZiAhJEhhc0FjY2VzczsKCiAgICAgICAgIyBpbnNlcnQgdGhpcyBjbGFzcyB0byBiZSBwYXNzZWQgYXMgc2VhcmNoIHBhcmFtZXRlciBmb3IgZmlsdGVyICdBbGwnCiAgICAgICAgcHVzaCBAeyRBY2Nlc3NDbGFzc0xpc3R9LCAkQ2xhc3NJRDsKCiAgICAgICAgIyBjb3VudCBhbGwgcmVjb3JkcyBvZiB0aGlzIGNsYXNzCiAgICAgICAgbXkgJENsYXNzQ291bnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUNvdW50KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoZSBjb25maWcgaXRlbXMgbnVtYmVyIGluIHRoaXMgY2xhc3MgdG8gdGhlIHRvdGFsCiAgICAgICAgJFRvdGFsQ291bnQgKz0gJENsYXNzQ291bnQ7CgogICAgICAgICMgaW5jcmVhc2UgdGhlIFByaW9Db3VudGVyCiAgICAgICAgJFByaW9Db3VudGVyKys7CgogICAgICAgICMgYWRkIGZpbHRlciB3aXRoIHBhcmFtcyBmb3IgdGhlIHNlYXJjaCBtZXRob2QKICAgICAgICAkRmlsdGVyc3skQ2xhc3NJRH0gPSB7CiAgICAgICAgICAgIE5hbWUgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICBQcmlvICAgPT4gJFByaW9Db3VudGVyLAogICAgICAgICAgICBDb3VudCAgPT4gJENsYXNzQ291bnQsCiAgICAgICAgICAgIFNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgICAgID0+ICREZXBsU3RhdGVJRHMsCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFxAU29ydEJ5QXJyYXksCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFxAT3JkZXJCeUFycmF5LAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgfSwKICAgICAgICB9OwoKICAgICAgICAjIHJlbWVtYmVyIHRoZSBmaXJzdCBjbGFzcyBpZCB0byBzaG93IHRoaXMgaW4gdGhlIG92ZXJ2aWV3CiAgICAgICAgIyBpZiBubyBjbGFzcyBpZCB3YXMgZ2l2ZW4KICAgICAgICBpZiAoICEkQ2xhc3NJREF1dG8gKSB7CiAgICAgICAgICAgICRDbGFzc0lEQXV0byA9ICRDbGFzc0lEOwogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIG9ubHkgb25lIGZpbHRlciBleGlzdHMKICAgIGlmICggc2NhbGFyIGtleXMgJUZpbHRlcnMgPT0gMSApIHsKCiAgICAgICAgIyBnZXQgdGhlIG5hbWUgb2YgdGhlIG9ubHkgZmlsdGVyCiAgICAgICAgbXkgKCRGaWx0ZXJOYW1lKSA9IGtleXMgJUZpbHRlcnM7CgogICAgICAgICMgYWN0aXZhdGUgdGhpcyBmaWx0ZXIKICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkRmlsdGVyTmFtZTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGFkZCBkZWZhdWx0IGZpbHRlciwgd2hpY2ggc2hvd3MgYWxsIGl0ZW1zCiAgICAgICAgJEZpbHRlcnN7QWxsfSA9IHsKICAgICAgICAgICAgTmFtZSAgID0+ICdBbGwnLAogICAgICAgICAgICBQcmlvICAgPT4gMTAwMCwKICAgICAgICAgICAgQ291bnQgID0+ICRUb3RhbENvdW50LAogICAgICAgICAgICBTZWFyY2ggPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICA9PiAkQWNjZXNzQ2xhc3NMaXN0LAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSURzICAgICA9PiAkRGVwbFN0YXRlSURzLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBcQFNvcnRCeUFycmF5LAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBcQE9yZGVyQnlBcnJheSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKCiAgICAgICAgIyBpZiBubyBmaWx0ZXIgd2FzIHNlbGVjdGVkIGFjdGl2YXRlIHRoZSBmaWx0ZXIgZm9yIHRoZSBkZWZhdWx0IGNsYXNzCiAgICAgICAgaWYgKCAhJFNlbGYtPntGaWx0ZXJ9ICkgewogICAgICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkQ2xhc3NJREF1dG87CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBmaWx0ZXIgaXMgdmFsaWQKICAgIGlmICggISRGaWx0ZXJzeyAkU2VsZi0+e0ZpbHRlcn0gfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBhY2Nlc3MgdG8gQ2xhc3MgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgaW52ZXN0aWdhdGUgcmVmcmVzaAogICAgbXkgJFJlZnJlc2ggPSAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gPyA2MCAqICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfSA6IHVuZGVmOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSAgID0+IFRyYW5zbGF0YWJsZSgnT3ZlcnZpZXcnKSwKICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwogICAgJExheW91dE9iamVjdC0+UHJpbnQoIE91dHB1dCA9PiBcJE91dHB1dCApOwogICAgJE91dHB1dCA9ICcnOwoKICAgICMgZGlzcGxheSBhbGwgbmF2YmFyIGZpbHRlcnMKICAgIG15ICVOYXZCYXJGaWx0ZXI7CiAgICBmb3IgbXkgJEZpbHRlciAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKCiAgICAgICAgIyBkaXNwbGF5IHRoZSBuYXZiYXIgZmlsdGVyCiAgICAgICAgJE5hdkJhckZpbHRlcnsgJEZpbHRlcnN7JEZpbHRlcn0tPntQcmlvfSB9ID0gewogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlciwKICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlcn0gfSwKICAgICAgICB9OwogICAgfQoKICAgICMgc2VhcmNoIGNvbmZpZyBpdGVtcyB3aGljaCBtYXRjaCB0aGUgc2VsZWN0ZWQgZmlsdGVyCiAgICBteSAkQ29uZmlnSXRlbUlEcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoCiAgICAgICAgJXsgJEZpbHRlcnN7ICRTZWxmLT57RmlsdGVyfSB9LT57U2VhcmNofSB9LAogICAgKTsKCiAgICAjIGZpbmQgb3V0IHdoaWNoIGNvbHVtbnMgc2hvdWxkIGJlIHNob3duCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgIyBzaG93IGNvbHVtbiAiQ2xhc3MiIGlmIGZpbHRlciAnQWxsJyBpcyBzZWxlY3RlZAogICAgICAgIGlmICggJFNlbGYtPntGaWx0ZXJ9IGVxICdBbGwnICkgewogICAgICAgICAgICAkUG9zc2libGVDb2x1bW57Q2xhc3N9ID0gJzEnOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRoZSBjb25maWd1cmVkIGNvbHVtbnMgYW5kIHJlb3JnYW5pemUgdGhlbSBieSBjbGFzcyBuYW1lCiAgICBpZiAoCiAgICAgICAgSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc0J5Q2xhc3N9ICkKICAgICAgICAmJiAkU2VsZi0+e0ZpbHRlcn0KICAgICAgICAmJiAkU2VsZi0+e0ZpbHRlcn0gbmUgJ0FsbCcKICAgICAgICApCiAgICB7CgogICAgICAgIG15ICVDb2x1bW5CeUNsYXNzOwogICAgICAgIE5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggQHsgJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnNCeUNsYXNzfSB9ICkgewogICAgICAgICAgICBteSAoICRDbGFzcywgJENvbHVtbiApID0gc3BsaXQgLzo6LywgJE5hbWUsIDI7CgogICAgICAgICAgICBuZXh0IE5BTUUgaWYgISRDb2x1bW47CgogICAgICAgICAgICBwdXNoIEB7ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30gfSwgJENvbHVtbjsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgYSBzcGVjaWZpYyBjb2x1bW4gY29uZmlnIGZvciB0aGUgc2VsZWN0ZWQgY2xhc3MKICAgICAgICBteSAkU2VsZWN0ZWRDbGFzcyA9ICRDbGFzc0xpc3QtPnsgJFNlbGYtPntGaWx0ZXJ9IH07CiAgICAgICAgaWYgKCAkQ29sdW1uQnlDbGFzc3skU2VsZWN0ZWRDbGFzc30gKSB7CiAgICAgICAgICAgIEBTaG93Q29sdW1ucyA9IEB7ICRDb2x1bW5CeUNsYXNzeyRTZWxlY3RlZENsYXNzfSB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3cgdGhlIGxpc3QKICAgIG15ICRMaW5rUGFnZSA9CiAgICAgICAgJ0ZpbHRlcj0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57Vmlld30gKQogICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJzsnOwogICAgbXkgJExpbmtTb3J0ID0KICAgICAgICAnRmlsdGVyPScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57RmlsdGVyfSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntWaWV3fSApCiAgICAgICAgLiAnOyc7CiAgICBteSAkTGlua0ZpbHRlciA9CiAgICAgICAgJ1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntWaWV3fSApCiAgICAgICAgLiAnOyc7CgogICAgIyBzaG93IGNvbmZpZyBpdGVtIGxpc3QKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdygKICAgICAgICBDb25maWdJdGVtSURzID0+ICRDb25maWdJdGVtSURzLAogICAgICAgIFRvdGFsICAgICAgICAgPT4gc2NhbGFyIEB7JENvbmZpZ0l0ZW1JRHN9LAogICAgICAgIFZpZXcgICAgICAgICAgPT4gJFNlbGYtPntWaWV3fSwKICAgICAgICBGaWx0ZXIgICAgICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICBGaWx0ZXJzICAgICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIEZpbHRlckxpbmsgICAgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgVGl0bGVOYW1lICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZyBJdGVtJyksCiAgICAgICAgVGl0bGVWYWx1ZSAgICA9PiAkRmlsdGVyc3sgJFNlbGYtPntGaWx0ZXJ9IH0tPntOYW1lfSwKICAgICAgICBFbnYgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgIFNob3dDb2x1bW5zICAgPT4gXEBTaG93Q29sdW1ucywKICAgICAgICBTb3J0QnkgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApLAogICAgICAgIE9yZGVyQnkgICAgICAgPT4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApLAogICAgICAgIFJlcXVlc3RlZFVSTCAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemAdd.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgIFNjb3BlID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGRlbGV0ZSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IGlmICEkSGFzQWNjZXNzOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBzaG93IHRoZSBsaXN0IG9mIENJIGNsYXNzZXMgc29ydGVkIGJ5IG5hbWUKICAgIGZvciBteSAkSXRlbUlEICggc29ydCB7ICR7JENsYXNzTGlzdH17JGF9IGNtcCAkeyRDbGFzc0xpc3R9eyRifSB9IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgaXRlbSBkYXRhCiAgICAgICAgbXkgJEl0ZW1EYXRhID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyBpdGVtIGxpc3QKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdJdGVtTGlzdCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkQ2xhc3NMaXN0LT57JEl0ZW1JRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdBZGQnKSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIG91dHB1dCBvdmVydmlldwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtQWRkJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBvdXRwdXQgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemAttachment.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtQXR0YWNobWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6QXR0YWNobWVudCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRDSUF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNJQXR0YWNobWVudCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQXR0YWNobWVudElEKSkgewogICAgICAgICRQYXJhbXskTmVlZGVkfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICROZWVkZWQgKTsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUF0dGFjaG1lbnQgPSAkQ0lBdHRhY2htZW50T2JqZWN0LT5DSUF0dGFjaG1lbnRHZXQoCiAgICAgICAgQXR0YWNobWVudElEID0+ICRQYXJhbXtBdHRhY2htZW50SUR9LAogICAgKTsKCiAgICBpZiAoICElQXR0YWNobWVudCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICRTZWxmLT57TGFzdFNjcmVlblZpZXd9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgJUF0dGFjaG1lbnQKICAgICAgICApOwogICAgfQp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemBulk.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGs7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZScpICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0J1bGsgZmVhdHVyZSBpcyBub3QgZW5hYmxlZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGludm9sdmVkIGNvbmZpZyBpdGVtcywgZmlsdGVyaW5nIGVtcHR5IENvbmZpZ0l0ZW1JRHMKICAgIG15IEBDb25maWdJdGVtSURzID0gZ3JlcCB7JF99CiAgICAgICAgJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcgKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhQENvbmZpZ0l0ZW1JRHMgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnKSwKICAgICAgICApOwogICAgfQogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgICMgZGVjbGFyZSB0aGUgdmFyaWFibGVzIGZvciBhbGwgdGhlIHBhcmFtZXRlcnMKICAgIG15ICVFcnJvcjsKCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZ2V0IGFsbCBwYXJhbWV0ZXJzIGFuZCBjaGVjayBmb3IgZXJyb3JzCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG8nICkgewoKICAgICAgICAjIGNoYWxsZW5nZSB0b2tlbiBjaGVjayBmb3Igd3JpdGUgYWN0aW9uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAjIGdldCBhbGwgcGFyYW1ldGVycwogICAgICAgIGZvciBteSAkS2V5ICgKICAgICAgICAgICAgcXcoIExpbmtUb2dldGhlciBMaW5rVG9nZXRoZXJBbm90aGVyIExpbmtUeXBlIExpbmtUb2dldGhlckxpbmtUeXBlIERlcGxTdGF0ZUlECiAgICAgICAgICAgIEluY2lTdGF0ZUlEICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApIHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNoZWNrSXRlbScpLT5TdHJpbmdDbGVhbigKICAgICAgICAgICAgICAgIFN0cmluZ1JlZiA9PiBcJEdldFBhcmFteydMaW5rVG9nZXRoZXJBbm90aGVyJ30sCiAgICAgICAgICAgICAgICBUcmltTGVmdCAgPT4gMSwKICAgICAgICAgICAgICAgIFRyaW1SaWdodCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRHZXRQYXJhbXsnTGlua1RvZ2V0aGVyQW5vdGhlcid9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICAgICAgICAgJEVycm9yeydMaW5rVG9nZXRoZXJBbm90aGVySW52YWxpZCd9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHByb2Nlc3MgY29uZmlnIGl0ZW0KICAgIG15IEBDb25maWdJdGVtSURTZWxlY3RlZDsKICAgIG15ICRBY3Rpb25GbGFnID0gMDsKICAgIG15ICRDb3VudGVyICAgID0gMTsKCiAgICAjIGdldCBsaW5rIG9iamVjdAogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwoKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQiKTsKCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkQ29uZmlnLT57UGVybWlzc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJEFjY2VzcyApIHsKCiAgICAgICAgICAgICMgZXJyb3Igc2NyZWVuLCBkb24ndCBzaG93IGNvbmZpZyBpdGVtCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICAgICAgRGF0YSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAgICAgJ1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLicsCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHNlbGVjdGVkIGNvbmZpZyBpdGVtIGlkcwogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRFNlbGVjdGVkLCAkQ29uZmlnSXRlbUlEOwoKICAgICAgICAjIGRvIHNvbWUgYWN0aW9ucyBvbiBDSXMKICAgICAgICBpZiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdEbycgKSAmJiAoICElRXJyb3IgKSApIHsKCiAgICAgICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICAgICAgIyBidWxrIGFjdGlvbiB2ZXJzaW9uIGFkZAogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtEZXBsU3RhdGVJRH0gfHwgJEdldFBhcmFte0luY2lTdGF0ZUlEfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBjdXJyZW50IHZlcnNpb24gb2YgdGhlIGNvbmZpZyBpdGVtCiAgICAgICAgICAgICAgICBteSAkQ3VycmVudFZlcnNpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJE5ld0RlcGxTdGF0ZUlEID0gJEN1cnJlbnRWZXJzaW9uLT57RGVwbFN0YXRlSUR9OwogICAgICAgICAgICAgICAgbXkgJE5ld0luY2lTdGF0ZUlEID0gJEN1cnJlbnRWZXJzaW9uLT57SW5jaVN0YXRlSUR9OwoKICAgICAgICAgICAgICAgIGlmICggSXNOdW1iZXIoICRHZXRQYXJhbXtEZXBsU3RhdGVJRH0gKSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV3RGVwbFN0YXRlSUQgPSAkR2V0UGFyYW17RGVwbFN0YXRlSUR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCBJc051bWJlciggJEdldFBhcmFte0luY2lTdGF0ZUlEfSApICkgewogICAgICAgICAgICAgICAgICAgICROZXdJbmNpU3RhdGVJRCA9ICRHZXRQYXJhbXtJbmNpU3RhdGVJRH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ3VycmVudFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJEN1cnJlbnRWZXJzaW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJE5ld0RlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkTmV3SW5jaVN0YXRlSUQsCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+ICRDdXJyZW50VmVyc2lvbi0+e1hNTERhdGF9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGJ1bGsgYWN0aW9uIGxpbmtzCiAgICAgICAgICAgICMgbGluayBhbGwgY29uZmlnIGl0ZW1zIHRvIGFub3RoZXIgY29uZmlnIGl0ZW0KICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSApIHsKICAgICAgICAgICAgICAgIG15ICRNYWluQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkR2V0UGFyYW17J0xpbmtUb2dldGhlckFub3RoZXInfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzcGxpdCB0aGUgdHlwZSBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICBteSBAVHlwZSA9IHNwbGl0IHF7Ojp9LCAkR2V0UGFyYW17TGlua1R5cGV9OwoKICAgICAgICAgICAgICAgIGlmICggJFR5cGVbMF0gJiYgJFR5cGVbMV0gJiYgKCAkVHlwZVsxXSBlcSAnU291cmNlJyB8fCAkVHlwZVsxXSBlcSAnVGFyZ2V0JyApICkgewoKICAgICAgICAgICAgICAgICAgICBteSAkU291cmNlS2V5ID0gJENvbmZpZ0l0ZW1JRDsKICAgICAgICAgICAgICAgICAgICBteSAkVGFyZ2V0S2V5ID0gJE1haW5Db25maWdJdGVtSUQ7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFR5cGVbMV0gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTb3VyY2VLZXkgPSAkTWFpbkNvbmZpZ0l0ZW1JRDsKICAgICAgICAgICAgICAgICAgICAgICAgJFRhcmdldEtleSA9ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE1haW5Db25maWdJdGVtSUQgbmUgJENvbmZpZ0l0ZW1JRFBhcnRuZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VLZXkgICAgPT4gJFNvdXJjZUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFRhcmdldEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFR5cGVbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbGluayB0b2dldGhlcgogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXsnTGlua1RvZ2V0aGVyJ30gKSB7CgogICAgICAgICAgICAgICAgIyBzcGxpdCB0aGUgdHlwZSBpZGVudGlmaWVyCiAgICAgICAgICAgICAgICBteSBAVHlwZSA9IHNwbGl0IHF7Ojp9LCAkR2V0UGFyYW17TGlua1RvZ2V0aGVyTGlua1R5cGV9OwoKICAgICAgICAgICAgICAgIGlmICggJFR5cGVbMF0gJiYgJFR5cGVbMV0gJiYgKCAkVHlwZVsxXSBlcSAnU291cmNlJyB8fCAkVHlwZVsxXSBlcSAnVGFyZ2V0JyApICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEUGFydG5lciAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTb3VyY2VLZXkgPSAkQ29uZmlnSXRlbUlEOwogICAgICAgICAgICAgICAgICAgICAgICBteSAkVGFyZ2V0S2V5ID0gJENvbmZpZ0l0ZW1JRFBhcnRuZXI7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRUeXBlWzFdIGVxICdUYXJnZXQnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNvdXJjZUtleSA9ICRDb25maWdJdGVtSURQYXJ0bmVyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFRhcmdldEtleSA9ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1JRCBuZSAkQ29uZmlnSXRlbUlEUGFydG5lciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkVGFyZ2V0S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkVHlwZVswXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQWN0aW9uRmxhZyA9IDE7CiAgICAgICAgfQogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgIyByZWRpcmVjdAogICAgaWYgKCRBY3Rpb25GbGFnKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlBvcHVwQ2xvc2UoCiAgICAgICAgICAgIFVSTCA9PiAoICRTZWxmLT57TGFzdFNjcmVlbk92ZXJ2aWV3fSB8fCAnQWN0aW9uPUFnZW50RGFzaGJvYXJkJyApLAogICAgICAgICk7CiAgICB9CgogICAgJE91dHB1dCAuPSAkU2VsZi0+X01hc2soCiAgICAgICAgJVBhcmFtLAogICAgICAgICVHZXRQYXJhbSwKICAgICAgICBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEU2VsZWN0ZWQsCiAgICAgICAgRXJyb3JzICAgICAgICA9PiBcJUVycm9yLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9NYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHByZXBhcmUgZXJyb3JzIQogICAgaWYgKCAkUGFyYW17RXJyb3JzfSApIHsKICAgICAgICBmb3IgbXkgJEtleUVycm9yICggc29ydCBrZXlzICV7ICRQYXJhbXtFcnJvcnN9IH0gKSB7CiAgICAgICAgICAgICRQYXJhbXskS2V5RXJyb3J9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkUGFyYW17RXJyb3JzfS0+eyRLZXlFcnJvcn0gKTsKICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQnVsa0FjdGlvbicsCiAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgKTsKCiAgICAjIHJlbWVtYmVyIGNvbmZpZyBpdGVtIGlkcwogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdVc2VkQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBkZXBsb3ltZW50IHN0YXRlCiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e0RlcGxTdGF0ZX0gKSB7CiAgICAgICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIERlcGxTdGF0ZVN0cmcKICAgICAgICAkUGFyYW17RGVwbFN0YXRlU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICApOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICBEYXRhID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICB9CgogICAgIyBpbmNpZGVudCBzdGF0ZQogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ30tPntJbmNpU3RhdGV9ICkgewoKICAgICAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICAgICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAnb3BlcmF0aW9uYWwnLCAnaW5jaWRlbnQnIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBJbmNpU3RhdGVTdHJnCiAgICAgICAgJFBhcmFte0luY2lTdGF0ZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdJbmNpU3RhdGVJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGxpbmsgb2JqZWN0CiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgIyBsaW5rIHR5cGVzIGxpc3QKICAgICMgZ2V0IHBvc3NpYmxlIHR5cGVzIGxpc3QKICAgIG15ICVQb3NzaWJsZVR5cGVzTGlzdCA9ICRMaW5rT2JqZWN0LT5Qb3NzaWJsZVR5cGVzTGlzdCgKICAgICAgICBPYmplY3QxID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGRlZmluZSBibGFuayBsaW5lIGVudHJ5CiAgICBteSAlQmxhbmtMaW5lID0gKAogICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICBWYWx1ZSAgICA9PiAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScsCiAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICk7CgogICAgIyBjcmVhdGUgdGhlIHNlbGVjdGFibGUgdHlwZSBsaXN0CiAgICBteSAkQ291bnRlciA9IDA7CiAgICBteSBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKICAgIG15IEBMaW5rVG9nZXRoZXJUeXBlTGlzdDsKICAgIFBPU1NJQkxFVFlQRToKICAgIGZvciBteSAkUG9zc2libGVUeXBlICggc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IGtleXMgJVBvc3NpYmxlVHlwZXNMaXN0ICkgewoKICAgICAgICAjIGxvb2t1cCB0eXBlIGlkCiAgICAgICAgbXkgJFR5cGVJRCA9ICRMaW5rT2JqZWN0LT5UeXBlTG9va3VwKAogICAgICAgICAgICBOYW1lICAgPT4gJFBvc3NpYmxlVHlwZSwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0eXBlCiAgICAgICAgbXkgJVR5cGUgPSAkTGlua09iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgVHlwZUlEID0+ICRUeXBlSUQsCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyB0eXBlIGxpc3QgZm9yIGxpbmsgdG9nZXRoZXIgY2FuIGNvbnRhaW4gb25seQogICAgICAgICMgbGluayB0eXBlcyB3aGljaCBhcmUgbm90IGRpcmVjdGVkIChub3QgcG9pbnRlZCkKICAgICAgICBpZiAoICEkVHlwZXtQb2ludGVkfSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgICAgICBteSAlU291cmNlTmFtZTsKICAgICAgICAgICAgJFNvdXJjZU5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlNvdXJjZSc7CiAgICAgICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICAgICAgcHVzaCBATGlua1RvZ2V0aGVyVHlwZUxpc3QsIFwlU291cmNlTmFtZTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRoZSBzb3VyY2UgbmFtZQogICAgICAgIG15ICVTb3VyY2VOYW1lOwogICAgICAgICRTb3VyY2VOYW1le0tleX0gICA9ICRQb3NzaWJsZVR5cGUgLiAnOjpTb3VyY2UnOwogICAgICAgICRTb3VyY2VOYW1le1ZhbHVlfSA9ICRUeXBle1NvdXJjZU5hbWV9OwoKICAgICAgICBwdXNoIEBTZWxlY3RhYmxlVHlwZXNMaXN0LCBcJVNvdXJjZU5hbWU7CgogICAgICAgIG5leHQgUE9TU0lCTEVUWVBFIGlmICEkVHlwZXtQb2ludGVkfTsKCiAgICAgICAgIyBjcmVhdGUgdGhlIHRhcmdldCBuYW1lCiAgICAgICAgbXkgJVRhcmdldE5hbWU7CiAgICAgICAgJFRhcmdldE5hbWV7S2V5fSAgID0gJFBvc3NpYmxlVHlwZSAuICc6OlRhcmdldCc7CiAgICAgICAgJFRhcmdldE5hbWV7VmFsdWV9ID0gJFR5cGV7VGFyZ2V0TmFtZX07CgogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlVGFyZ2V0TmFtZTsKICAgIH0KICAgIGNvbnRpbnVlIHsKCiAgICAgICAgIyBhZGQgYmxhbmsgbGluZQogICAgICAgIHB1c2ggQFNlbGVjdGFibGVUeXBlc0xpc3QsIFwlQmxhbmtMaW5lOwoKICAgICAgICAkQ291bnRlcisrOwogICAgfQoKICAgICMgcmVtb3ZlZCBsYXN0IChlbXB0eSkgZW50cnkKICAgIHBvcCBAU2VsZWN0YWJsZVR5cGVzTGlzdDsKCiAgICAjIGFkZCBibGFuayBsaW5lcyBvbiB0b3AgYW5kIGJvdHRvbSBvZiB0aGUgbGlzdCBpZiBtb3JlIHRoZW4gdHdvIGxpbmt0eXBlcwogICAgaWYgKCAkQ291bnRlciA+IDIgKSB7CiAgICAgICAgdW5zaGlmdCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICAgICAgcHVzaCBAU2VsZWN0YWJsZVR5cGVzTGlzdCwgXCVCbGFua0xpbmU7CiAgICB9CgogICAgIyBnZW5lcmF0ZSBMaW5rVHlwZVN0cmcKICAgICRQYXJhbXtMaW5rVHlwZVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFxAU2VsZWN0YWJsZVR5cGVzTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0xpbmtUeXBlJywKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFBhcmFte1R5cGVJZGVudGlmaWVyfSB8fCAnQWx0ZXJuYXRpdmVUbzo6U291cmNlJywKICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICk7CiAgICAkUGFyYW17TGlua1RvZ2V0aGVyTGlua1R5cGVTdHJnfSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcQExpbmtUb2dldGhlclR5cGVMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnTGlua1RvZ2V0aGVyTGlua1R5cGUnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkUGFyYW17VHlwZUlkZW50aWZpZXJ9IHx8ICdBbHRlcm5hdGl2ZVRvOjpTb3VyY2UnLAogICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgKTsKCiAgICAkUGFyYW17TGlua1RvZ2V0aGVyWWVzTm9PcHRpb259ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1llc05vT3B0aW9ucycpLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0xpbmtUb2dldGhlcicsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAkUGFyYW17TGlua1RvZ2V0aGVyfSB8fCAwLAogICAgKTsKCiAgICAjIGdldCBvdXRwdXQgYmFjawogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrJywKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbQogICAgKTsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemCustomerCIsWidget.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTGlua09iamVjdCAgICAgICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzJyk7CgogICAgZm9yIG15ICRQYXJhbSAocXcoVGlja2V0SUQgQ29uZmlnSXRlbUlEIEN1c3RvbWVyVXNlcklEIEN1c3RvbWVySUQpKSB7CiAgICAgICAgJFBhcmFteyRQYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW0gKSAvLyAnJzsKICAgIH0KCiAgICBteSAkSlNPTjsKCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnUmVsZXZhbnRUbycsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTGlua0RlbGV0ZScgKSB7CiAgICAgICAgbXkgJExpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtMaXN0KAogICAgICAgICAgICBPYmplY3QgID0+ICdUaWNrZXQnLAogICAgICAgICAgICBLZXkgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIE9iamVjdDIgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgU3RhdGUgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBteSAkTGlua1R5cGU7CgogICAgICAgIExJTktUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAleyAkTGlua0xpc3QtPntJVFNNQ29uZmlnSXRlbX0gfSApIHsKICAgICAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXsgJExpbmtMaXN0LT57SVRTTUNvbmZpZ0l0ZW19LT57JFR5cGV9IH0gKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyAkTGlua0xpc3QtPntJVFNNQ29uZmlnSXRlbX0tPnskVHlwZX0tPnskRGlyZWN0aW9ufSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1JRCA9PSAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtUeXBlID0gJFR5cGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgTElOS1RZUEU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIGRlZmluZWQgJExpbmtUeXBlICkgewogICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgICAgICBLZXkxICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBLZXkyICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ3VzdG9tZXJVcGRhdGUnICYmICRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CgogICAgICAgIG15IEBDb25maWdJdGVtcyA9ICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzT2JqZWN0LT5HZXRQb3NzaWJsZUN1c3RvbWVyQ0lzKAogICAgICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9LAogICAgICAgICAgICBDdXN0b21lcklEICAgICA9PiAkUGFyYW17Q3VzdG9tZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKEBDb25maWdJdGVtcykgewoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1zJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRDdXN0b21lckNJV2lkZ2V0SFRNTCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRKU09OID0gJExheW91dE9iamVjdC0+SlNPTkVuY29kZSgKICAgICAgICAgICAgICAgIE5vUXVvdGVzID0+IDEsCiAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbXMgPT4gJEN1c3RvbWVyQ0lXaWRnZXRIVE1MLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTG9hZFdpZGdldCcgKSB7CiAgICAgICAgbXkgQENvbmZpZ0l0ZW1zID0gJElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNPYmplY3QtPkdldFBvc3NpYmxlQ3VzdG9tZXJDSXMoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb25maWdJdGVtcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyRDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoICFzY2FsYXIgQENvbmZpZ0l0ZW1zICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW1zTm9uZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkV2lkZ2V0VGlja2V0SFRNTCA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFdpZGdldFRpY2tldEhUTUwgLy8gJyAnLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT04gLy8gJ3t9JywKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemDelete.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBDb25maWdJdGVtSUQKICAgIG15ICRDb25maWdJdGVtSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgY2hlY2sgcGVybWlzc2lvbnMKICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBBY3Rpb24gPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZXJyb3Igc2NyZWVuCiAgICBpZiAoICEkQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ1lvdSBuZWVkICVzIHBlcm1pc3Npb25zIScsICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259ICksCiAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgY29uZmlnIGl0ZW0gaXMgZm91bmQKICAgIGlmICggISRDb25maWdJdGVtICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDb25maWdJdGVtRGVsZXRlJyApIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGNvbmZpZyBpdGVtCiAgICAgICAgbXkgJENvdWxkRGVsZXRlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoJENvdWxkRGVsZXRlQ29uZmlnSXRlbSkgewoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBjb25maWcgaXRlbSBvdmVydmlldywgd2hlbiB0aGUgZGVsZXRpb24gd2FzIHN1Y2Nlc3NmdWwKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIHNob3cgZXJyb3IgbWVzc2FnZSwgd2hlbiBkZWxldGUgZmFpbGVkCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fQogICAgICAgICAgICAgICAgICAgIC0+VHJhbnNsYXRlKCAnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxhdGVzdCB2ZXJzaW9uIGRhdGEKICAgIG15ICRWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIGlmICggISRWZXJzaW9uLT57VmVyc2lvbklEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHRoZSBkaWFsb2cgdHlwZS4gQXMgZGVmYXVsdCwgdGhlIGRpYWxvZyB3aWxsIGhhdmUgMiBidXR0b25zOiBZZXMgYW5kIE5vCiAgICBteSAkRGlhbG9nVHlwZSA9ICdDb25maXJtYXRpb24nOwoKICAgICMgb3V0cHV0IGNvbnRlbnQKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtRGVsZXRlJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICAleyRWZXJzaW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGJ1aWxkIHRoZSByZXR1cm5lZCBkYXRhIHN0cnVjdHVyZQogICAgbXkgJURhdGEgPSAoCiAgICAgICAgSFRNTCAgICAgICA9PiAkT3V0cHV0LAogICAgICAgIERpYWxvZ1R5cGUgPT4gJERpYWxvZ1R5cGUsCiAgICApOwoKICAgICMgcmV0dXJuIEpTT04tU3RyaW5nIGJlY2F1c2Ugb2YgQUpBWC1Nb2RlCiAgICBteSAkT3V0cHV0SlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoIERhdGEgPT4gXCVEYXRhICk7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAkT3V0cHV0SlNPTiwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgKTsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemEdit.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBteSBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBjb25maWdpdGVtIGlkIGFuZCBjbGFzcyBpZAogICAgbXkgJENvbmZpZ0l0ZW0gPSB7fTsKICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICkgfHwgMDsKICAgICRDb25maWdJdGVtLT57Q2xhc3NJRH0gICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApICAgICAgfHwgMDsKICAgIG15ICREdXBsaWNhdGVJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdEdXBsaWNhdGVJRCcgKSB8fCAwOwoKICAgIG15ICRIYXNBY2Nlc3M7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBuZWVkZWQgZGF0YQogICAgaWYgKCAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gJiYgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IG5lICdORVcnICkgewoKICAgICAgICAjIGNoZWNrIGFjY2VzcyBmb3IgY29uZmlnIGl0ZW0KICAgICAgICAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBjb25maWcgaXRlbQogICAgICAgICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICgkRHVwbGljYXRlSUQpIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gdG8gZHVwbGljYXRlCiAgICAgICAgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICREdXBsaWNhdGVJRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGFjY2VzcyBmb3IgY29uZmlnIGl0ZW0KICAgICAgICAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICAjIHNldCBjb25maWcgaXRlbSBpZCBhbmQgbnVtYmVyCiAgICAgICAgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ID0gJ05FVyc7CiAgICAgICAgJENvbmZpZ0l0ZW0tPntOdW1iZXJ9ICAgICAgID0gVHJhbnNsYXRhYmxlKCdOZXcnKTsKICAgIH0KICAgIGVsc2lmICggJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSApIHsKCiAgICAgICAgIyBzZXQgY29uZmlnIGl0ZW0gaWQgYW5kIG51bWJlcgogICAgICAgICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSA9ICdORVcnOwogICAgICAgICRDb25maWdJdGVtLT57TnVtYmVyfSAgICAgICA9IFRyYW5zbGF0YWJsZSgnTmV3Jyk7CgogICAgICAgICMgY2hlY2sgYWNjZXNzIGZvciBjb25maWcgaXRlbQogICAgICAgICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwogICAgICAgICRDb25maWdJdGVtLT57Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgaWYgdXNlciBoYXMgbm8gYWNjZXNzIHJpZ2h0cyBzaG93IGVycm9yIHBhZ2UKICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBkZWZpbml0aW9uCiAgICBteSAkWE1MRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwKICAgICk7CgogICAgIyBhYm9ydCwgaWYgbm8gZGVmaW5pdGlvbiBpcyBkZWZpbmVkCiAgICBpZiAoICEkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0KICAgICAgICAgICAgICAgIC0+VHJhbnNsYXRlKCAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJywgJENvbmZpZ0l0ZW0tPntDbGFzc30gKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXBsb2FkIGNhY2hlIG9iamVjdAogICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKCiAgICAjIGdldCBmb3JtIGlkCiAgICAkU2VsZi0+e0Zvcm1JRH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRm9ybUlEJyApOwoKICAgICMgY3JlYXRlIGZvcm0gaWQKICAgIGlmICggISRTZWxmLT57Rm9ybUlEfSApIHsKICAgICAgICAkU2VsZi0+e0Zvcm1JRH0gPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JRENyZWF0ZSgpOwogICAgfQoKICAgICMgd2hlbiB0aGVyZSdzIG5vIENsYXNzSUQgaXQgbWVhbnMsIGFuIGV4aXN0aW5nIGNvbmZpZyBpdGVtIGlzIGVkaXRlZCBhcyB0aGUgQ2xhc3NJRCBpcyBvbmx5CiAgICAjIHByb3ZpZGVkIGFzIEdFVCBwYXJhbSB3aGVuIGNyZWF0aW5nIGEgbmV3IGNvbmZpZyBpdGVtCiAgICBpZiAoICEkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2xhc3NJRCcgKSApIHsKCiAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIG1ldGEgZGF0YQogICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwoKICAgICAgICAjIGNvcHkgYWxsIGV4aXN0aW5nIGF0dGFjaG1lbnRzIHRvIHVwbG9hZCBjYWNoZQogICAgICAgIEZJTEVOQU1FOgogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgZXhpc3RpbmcgYXR0YWNobWVudCBkYXRhCiAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGhlIHVwbG9hZCBjYWNoZQogICAgICAgICAgICAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREFkZEZpbGUoCiAgICAgICAgICAgICAgICBGb3JtSUQgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQXR0YWNobWVudERhdGEtPntDb250ZW50fSwKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICRBdHRhY2htZW50RGF0YS0+e0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgc3VibWl0IHNhdmUKICAgIG15ICRTdWJtaXRTYXZlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1Ym1pdFNhdmUnICk7CgogICAgIyBnZXQgbG9nIG9iamVjdAogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGdldCB4bWwgZGF0YQogICAgbXkgJFZlcnNpb24gPSB7fTsKICAgIG15ICROYW1lRHVwbGljYXRlczsKICAgIG15ICRDSU5hbWVSZWdleEVycm9yTWVzc2FnZTsKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdWZXJzaW9uU2F2ZScgKSB7CgogICAgICAgICMgZ2V0IHRoZSB1cGxvYWRlZCBhdHRhY2htZW50CiAgICAgICAgbXkgJVVwbG9hZFN0dWZmID0gJFBhcmFtT2JqZWN0LT5HZXRVcGxvYWRBbGwoCiAgICAgICAgICAgIFBhcmFtICA9PiAnRmlsZVVwbG9hZCcsCiAgICAgICAgICAgIFNvdXJjZSA9PiAnc3RyaW5nJywKICAgICAgICApOwoKICAgICAgICBpZiAoJVVwbG9hZFN0dWZmKSB7CgogICAgICAgICAgICAjIGFkZCBhdHRhY2htZW50IHRvIHRoZSB1cGxvYWQgY2FjaGUKICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgICVVcGxvYWRTdHVmZiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICRBbGxSZXF1aXJlZCA9IDE7CgogICAgICAgICMgZ2V0IGdlbmVyYWwgZm9ybSBkYXRhCiAgICAgICAgZm9yIG15ICRGb3JtUGFyYW0gKHF3KE5hbWUgRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQpKSB7CiAgICAgICAgICAgICRWZXJzaW9uLT57JEZvcm1QYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkRm9ybVBhcmFtICk7CiAgICAgICAgICAgIGlmICggISRWZXJzaW9uLT57JEZvcm1QYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkQWxsUmVxdWlyZWQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCB4bWwgZm9ybSBkYXRhCiAgICAgICAgJFZlcnNpb24tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSA9ICRTZWxmLT5fWE1MRm9ybUdldCgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgICAgICBBbGxSZXF1aXJlZCAgID0+IFwkQWxsUmVxdWlyZWQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2ssIHdoZXRoZXIgdGhlIGZlYXR1cmUgdG8gY2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgaXMgZW5hYmxlZAogICAgICAgIGlmICgKICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJFZlcnNpb24tPntOYW1lfSApCiAgICAgICAgICAgICYmICRDb25maWdPYmplY3QtPkdldCgnVW5pcXVlQ0lOYW1lOjpFbmFibGVVbmlxdWVuZXNzQ2hlY2snKQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT57RGVidWd9ID4gMCApIHsKICAgICAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDaGVja2luZyBmb3IgZHVwbGljYXRlIG5hbWVzIChDbGFzc0lEOiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LCAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIk5hbWU6ICRWZXJzaW9uLT57TmFtZX0sIENvbmZpZ0l0ZW1JRDogJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9KSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTmFtZUR1cGxpY2F0ZXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRWZXJzaW9uLT57TmFtZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgbmFtZSBpcyBub3QgdW5pcXVlCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAgICAgJEFsbFJlcXVpcmVkID0gMDsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXNTdHJpbmcgPSBqb2luICcsICcsIEB7JE5hbWVEdXBsaWNhdGVzfTsKCiAgICAgICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgJFZlcnNpb24tPntOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSBieSB0aGUgQ29uZmlnSXRlbUlEKHMpOiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJE5hbWVEdXBsaWNhdGVzU3RyaW5nLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGNvbmZpZyBvcHRpb24gZm9yIHRoZSBuYW1lIHJlZ2V4IGNoZWNrcwogICAgICAgIG15ICRDSU5hbWVSZWdleENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkNJTmFtZVJlZ2V4Iik7CgogICAgICAgICMgY2hlY2sgaWYgdGhlIENJIG5hbWUgaXMgZ2l2ZW4gYW5kIHNob3VsZCBiZSBjaGVja2VkIHdpdGggYSByZWd1bGFyIGV4cHJlc3Npb24KICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoICRWZXJzaW9uLT57TmFtZX0gKSAmJiAkQ0lOYW1lUmVnZXhDb25maWcgKSB7CgogICAgICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBjbGFzcyBuYW1lCiAgICAgICAgICAgIG15ICRDbGFzc05hbWUgPSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtLT57Q2xhc3NJRH0gfSB8fCAnJzsKCiAgICAgICAgICAgICMgZ2V0IHRoZSByZWdleCBmb3IgdGhpcyBjbGFzcwogICAgICAgICAgICBteSAkQ0lOYW1lUmVnZXggPSAkQ0lOYW1lUmVnZXhDb25maWctPnsgJENsYXNzTmFtZSAuICc6OicgLiAnQ0lOYW1lUmVnZXgnIH0gfHwgJyc7CgogICAgICAgICAgICAjIGlmIGEgcmVnZXggaXMgZGVmaW5lZCBhbmQgdGhlIENJIG5hbWUgZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbgogICAgICAgICAgICBpZiAoICRDSU5hbWVSZWdleCAmJiAkVmVyc2lvbi0+e05hbWV9ICF+IG17ICRDSU5hbWVSZWdleCB9eG1zICkgewoKICAgICAgICAgICAgICAgICRBbGxSZXF1aXJlZCA9IDA7CgogICAgICAgICAgICAgICAgIyBnZXQgdGhlIGVycm9yIG1lc3NhZ2UgZm9yIHRoaXMgY2xhc3MKICAgICAgICAgICAgICAgICRDSU5hbWVSZWdleEVycm9yTWVzc2FnZSA9ICRDSU5hbWVSZWdleENvbmZpZy0+eyAkQ2xhc3NOYW1lIC4gJzo6JyAuICdDSU5hbWVSZWdleEVycm9yTWVzc2FnZScgfSB8fCAnJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIHZlcnNpb24gdG8gZGF0YWJhc2UKICAgICAgICBpZiAoICRTdWJtaXRTYXZlICYmICRBbGxSZXF1aXJlZCApIHsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IGVxICdORVcnICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgYWxsIGF0dGFjaG1lbnRzIGZyb20gdXBsb2FkIGNhY2hlCiAgICAgICAgICAgIG15IEBBdHRhY2htZW50cyA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgICAgICAgICAgRm9ybUlEID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYnVpbGQgYSBsb29rdXAgbG9va3VwIGhhc2ggb2YgdGhlIG5ldyBhdHRhY2htZW50cwogICAgICAgICAgICBteSAlTmV3QXR0YWNobWVudDsKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICAjIHRoZSBrZXkgaXMgdGhlIGZpbGVuYW1lICsgZmlsZXNpemUgKyBjb250ZW50IHR5cGUKICAgICAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudC0+e0ZpbGVuYW1lfQogICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnQtPntGaWxlc2l6ZX0KICAgICAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50LT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgICAgICMgc3RvcmUgYWxsIG9mIHRoZSBuZXcgYXR0YWNobWVudCBkYXRhCiAgICAgICAgICAgICAgICAkTmV3QXR0YWNobWVudHskS2V5fSA9ICRBdHRhY2htZW50OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBhbGwgYXR0YWNobWVudHMgbWV0YSBkYXRhCiAgICAgICAgICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIHRoZSBleGlzdGluZyBhdHRhY2htZW50cwogICAgICAgICAgICBGSUxFTkFNRToKICAgICAgICAgICAgZm9yIG15ICRGaWxlbmFtZSAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgZXhpc3RpbmcgYXR0YWNobWVudCBkYXRhCiAgICAgICAgICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgdGhlIGtleSBpcyB0aGUgZmlsZW5hbWUgKyBmaWxlc2l6ZSArIGNvbnRlbnQgdHlwZQogICAgICAgICAgICAgICAgIyAobm8gY29udGVudCBpZCwgYXMgZXhpc3RpbmcgYXR0YWNobWVudHMgZG9uJ3QgaGF2ZSBpdCkKICAgICAgICAgICAgICAgIG15ICRLZXkgPSAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0KICAgICAgICAgICAgICAgICAgICAuICRBdHRhY2htZW50RGF0YS0+e0ZpbGVzaXplfQogICAgICAgICAgICAgICAgICAgIC4gJEF0dGFjaG1lbnREYXRhLT57Q29udGVudFR5cGV9OwoKICAgICAgICAgICAgICAgICMgYXR0YWNobWVudCBpcyBhbHJlYWR5IGV4aXN0aW5nLCB3ZSBjYW4gZGVsZXRlIGl0IGZyb20gdGhlIG5ldyBhdHRhY2htZW50IGhhc2gKICAgICAgICAgICAgICAgIGlmICggJE5ld0F0dGFjaG1lbnR7JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICROZXdBdHRhY2htZW50eyRLZXl9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXhpc3RpbmcgYXR0YWNobWVudCBpcyBubyBsb25nZXIgaW4gbmV3IGF0dGFjaG1lbnRzIGhhc2gKICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIGRlbGV0ZSB0aGUgZXhpc3RpbmcgYXR0YWNobWVudAogICAgICAgICAgICAgICAgICAgIG15ICREZWxldGVTdWNjZXNzZnVsID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2Vzc2Z1bCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgd3JpdGUgdGhlIG5ldyBhdHRhY2htZW50cwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCB2YWx1ZXMgJU5ld0F0dGFjaG1lbnQgKSB7CgogICAgICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudAogICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGVycm9yCiAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGFkZCB2ZXJzaW9uCiAgICAgICAgICAgICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICAgICAgJXskVmVyc2lvbn0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIHpvb20gbWFzawogICAgICAgICAgICBteSAkU2NyZWVuVHlwZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTY3JlZW5UeXBlJyApIHx8IDA7CiAgICAgICAgICAgIGlmICgkU2NyZWVuVHlwZSkgewoKICAgICAgICAgICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0iOwoKICAgICAgICAgICAgICAgICMgcmV0dXJuIHRvIG92ZXJ2aWV3IG9yIHNlYXJjaCByZXN1bHRzIGluc3RlYWQgaWYgY2FsbGVkIER1cGxpY2F0ZSBmcm9tIHJvdyBhY3Rpb24KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0xhc3RTY3JlZW5WaWV3fSBlcSAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW0nCiAgICAgICAgICAgICAgICAgICAgfHwgJFNlbGYtPntMYXN0U2NyZWVuVmlld30gPX4gbXtcQSBBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbSg/OiBTZWFyY2gpPzt9bXN4CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRVUkwgPSAkU2VsZi0+e0xhc3RTY3JlZW5WaWV3fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Qb3B1cENsb3NlKAogICAgICAgICAgICAgICAgICAgIFVSTCA9PiAkVVJMLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICgkRHVwbGljYXRlSUQpIHsKICAgICAgICBteSAkVmVyc2lvbklEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKICAgICAgICBpZiAoJFZlcnNpb25JRCkgewoKICAgICAgICAgICAgIyBnZXQgdmVyc2lvbiBkYXRhIHRvIGR1cGxpY2F0ZSBjb25maWcgaXRlbQogICAgICAgICAgICAkVmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBnZXQgbGFzdCB2ZXJzaW9uIGRhdGEgdG8gZHVwbGljYXRlIGNvbmZpZyBpdGVtCiAgICAgICAgICAgICRWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IG5lICdORVcnICkgewoKICAgICAgICAjIGdldCBsYXN0IHZlcnNpb24gZGF0YQogICAgICAgICRWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlWE1MRm9ybU91dHB1dFBhcmFtOwogICAgaWYgKCAkVmVyc2lvbi0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdICkgewogICAgICAgICRYTUxGb3JtT3V0cHV0UGFyYW17WE1MRGF0YX0gPSAkVmVyc2lvbi0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdOwogICAgfQoKICAgICMgb3V0cHV0IG5hbWUgaW52YWxpZCBibG9jawogICAgbXkgJFJvd05hbWVJbnZhbGlkID0gJyc7CiAgICBpZiAoICEkVmVyc2lvbi0+e05hbWV9ICYmICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnVmVyc2lvblNhdmUnICYmICRTdWJtaXRTYXZlICkgewogICAgICAgICRSb3dOYW1lSW52YWxpZCA9ICdTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBjaGVjayBmb3IgbmFtZSBkdXBsaWNhdGVzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewogICAgICAgICRSb3dOYW1lSW52YWxpZCA9ICdTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBjaGVjayBmb3Igbm90IG1hdGNoZWQgbmFtZSByZWdleAogICAgaWYgKCRDSU5hbWVSZWdleEVycm9yTWVzc2FnZSkgewogICAgICAgICRSb3dOYW1lSW52YWxpZCA9ICdTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBvdXRwdXQgbmFtZSBibG9jawogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUm93TmFtZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICV7JFZlcnNpb259LAogICAgICAgICAgICBSb3dOYW1lSW52YWxpZCA9PiAkUm93TmFtZUludmFsaWQsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKAogICAgICAgIElzU3RyaW5nV2l0aERhdGEoJFJvd05hbWVJbnZhbGlkKQogICAgICAgICYmICFJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKQogICAgICAgICYmICEkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UKICAgICAgICApCiAgICB7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiUmVuZGVyaW5nIGRlZmF1bHQgZXJyb3IgYmxvY2siLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd05hbWVFcnJvckRlZmF1bHQnLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkTmFtZUR1cGxpY2F0ZXMpICkgewoKICAgICAgICAjIGJ1aWxkIGFycmF5IHdpdGggQ0ktTnVtYmVycwogICAgICAgIG15IEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXI7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyROYW1lRHVwbGljYXRlc30gKSB7CgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgQ0kgbnVtYmVyCiAgICAgICAgICAgIG15ICRDSU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXIsICRDSU51bWJlcjsKICAgICAgICB9CgogICAgICAgIG15ICREdXBsaWNhdGVTdHJpbmcgPSBqb2luICcsICcsIEBOYW1lRHVwbGljYXRlc0J5Q0lOdW1iZXI7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJSZW5kZXJpbmcgYmxvY2sgZm9yIGR1cGxpY2F0ZXMgKENJLU51bWJlcnM6ICREdXBsaWNhdGVTdHJpbmcpIGVycm9yIG1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd05hbWVFcnJvckR1cGxpY2F0ZXMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIER1cGxpY2F0ZXMgPT4gJER1cGxpY2F0ZVN0cmluZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGVsc2lmICgkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UpIHsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd05hbWVFcnJvclJlZ0V4JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBSZWdFeEVycm9yTWVzc2FnZSA9PiAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBvdXRwdXQgZGVwbG95bWVudCBzdGF0ZSBpbnZhbGlkIGJsb2NrCiAgICBteSAkUm93RGVwbFN0YXRlSW52YWxpZCA9ICcnOwogICAgaWYgKCAhJFZlcnNpb24tPntEZXBsU3RhdGVJRH0gJiYgJFNlbGYtPntTdWJhY3Rpb259IGVxICdWZXJzaW9uU2F2ZScgJiYgJFN1Ym1pdFNhdmUgKSB7CiAgICAgICAgJFJvd0RlcGxTdGF0ZUludmFsaWQgPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdlbmVyYXRlIERlcGxTdGF0ZU9wdGlvblN0cmcKICAgIG15ICREZXBsU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnRGVwbFN0YXRlSUQnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplJyAuICRSb3dEZXBsU3RhdGVJbnZhbGlkLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbi0+e0RlcGxTdGF0ZUlEfSwKICAgICk7CgogICAgIyBvdXRwdXQgZGVwbG95bWVudCBzdGF0ZSBibG9jawogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUm93RGVwbFN0YXRlJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRGVwbFN0YXRlT3B0aW9uU3RyZyA9PiAkRGVwbFN0YXRlT3B0aW9uU3RyZywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdvcGVyYXRpb25hbCcsICdpbmNpZGVudCcgXSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIG91dHB1dCBpbmNpZGVudCBzdGF0ZSBpbnZhbGlkIGJsb2NrCiAgICBteSAkUm93SW5jaVN0YXRlSW52YWxpZCA9ICcnOwogICAgaWYgKCAhJFZlcnNpb24tPntJbmNpU3RhdGVJRH0gJiYgJFNlbGYtPntTdWJhY3Rpb259IGVxICdWZXJzaW9uU2F2ZScgJiYgJFN1Ym1pdFNhdmUgKSB7CiAgICAgICAgJFJvd0luY2lTdGF0ZUludmFsaWQgPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdlbmVyYXRlIEluY2lTdGF0ZU9wdGlvblN0cmcKICAgIG15ICRJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnSW5jaVN0YXRlSUQnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnVmFsaWRhdGVfUmVxdWlyZWQgTW9kZXJuaXplJyAuICRSb3dJbmNpU3RhdGVJbnZhbGlkLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmVyc2lvbi0+e0luY2lTdGF0ZUlEfSwKICAgICk7CgogICAgIyBvdXRwdXQgaW5jaWRlbnQgc3RhdGUgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1Jvd0luY2lTdGF0ZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEluY2lTdGF0ZU9wdGlvblN0cmcgPT4gJEluY2lTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBvdXRwdXQgeG1sIGZvcm0KICAgIGlmICggJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9ufSApIHsKICAgICAgICAkU2VsZi0+e1VzZXJTZWFyY2hJdGVtSURzfSAgICAgPSBbXTsKICAgICAgICAkU2VsZi0+e0N1c3RvbWVyU2VhcmNoSXRlbUlEc30gPSBbXTsKICAgICAgICAkU2VsZi0+X1hNTEZvcm1PdXRwdXQoCiAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICAgICAgICAgJVhNTEZvcm1PdXRwdXRQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgICRQYXJhbXtBdHRhY2htZW50TGlzdH0gPSBbCiAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURHZXRBbGxGaWxlc01ldGEoCiAgICAgICAgICAgIEZvcm1JRCA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgKQogICAgXTsKCiAgICBteSAkT3V0cHV0ID0gJyc7CiAgICBpZiAoICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ICYmICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAnTkVXJyApIHx8ICREdXBsaWNhdGVJRCApIHsKCiAgICAgICAgIyBvdXRwdXQgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnRTbWFsbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnRW5kU21hbGwnICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0VkaXQnKSwKICAgICAgICAgICAgVHlwZSAgPT4gJ1NtYWxsJywKICAgICAgICApOwoKICAgICAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgRHVwbGljYXRlSUQgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgTmVjZXNzYXJ5IHN0dWZmIGZvciBBZGQgTmV3CiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGRlbGV0ZSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IGlmICEkSGFzQWNjZXNzOwogICAgICAgIH0KCiAgICAgICAgIyBnZW5lcmF0ZSBDbGFzc09wdGlvblN0cmcKICAgICAgICBteSAkQ2xhc3NPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnVzEwMHBjJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBFbmQgTmVjZXNzYXJ5IHN0dWZmIGZvciBBZGQgTmV3CgogICAgICAgICMgb3V0cHV0IGJsb2NrCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXJ0Tm9ybWFsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc09wdGlvblN0cmcgPT4gJENsYXNzT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdFbmROb3JtYWwnICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0VkaXQnKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0JywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgRHVwbGljYXRlSUQgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKICAgIH0KCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9YTUxGb3JtR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERlZmluaXRpb259OwogICAgcmV0dXJuIGlmICEkUGFyYW17QWxsUmVxdWlyZWR9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte0FsbFJlcXVpcmVkfSBuZSAnU0NBTEFSJzsKICAgIHJldHVybiBpZiAhJFBhcmFte0NvbmZpZ0l0ZW1JRH07CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgbXkgJEZvcm1EYXRhID0ge307CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewogICAgICAgIG15ICRDb3VudGVySW5zZXJ0ID0gMTsKCiAgICAgICAgQ09VTlRFUjoKICAgICAgICBmb3IgbXkgJENvdW50ZXIgKCAxIC4uICRJdGVtLT57Q291bnRNYXh9ICkgewoKICAgICAgICAgICAgIyBjcmVhdGUgaW5wdXRrZXkgYW5kIGFkZGtleQogICAgICAgICAgICBteSAkSW5wdXRLZXkgPSAkSXRlbS0+e0tleX0gLiAnOjonIC4gJENvdW50ZXI7CiAgICAgICAgICAgIG15ICRBZGRLZXkgICA9ICRJdGVtLT57S2V5fSAuICc6OkFkZCc7CiAgICAgICAgICAgIGlmICggJFBhcmFte1ByZWZpeH0gKSB7CiAgICAgICAgICAgICAgICAkSW5wdXRLZXkgPSAkUGFyYW17UHJlZml4fSAuICc6OicgLiAkSW5wdXRLZXk7CiAgICAgICAgICAgICAgICAkQWRkS2V5ICAgPSAkUGFyYW17UHJlZml4fSAuICc6OicgLiAkQWRkS2V5OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBwYXJhbQogICAgICAgICAgICBteSAkRm9ybVZhbHVlcyA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtRm9ybURhdGFHZXQoCiAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJElucHV0S2V5LAogICAgICAgICAgICAgICAgSXRlbSAgICAgICAgID0+ICRJdGVtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRGb3JtVmFsdWVzLT57VmFsdWV9ICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgcmVxdWlyZWQgdmFsdWUKICAgICAgICAgICAgICAgIGlmICggJEZvcm1WYWx1ZXMtPntJbnZhbGlkfSApIHsKICAgICAgICAgICAgICAgICAgICAkeyAkUGFyYW17QWxsUmVxdWlyZWR9IH0gPSAwOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY2hlY2sgZGVsZXRlIGJ1dHRvbgogICAgICAgICAgICAgICAgbmV4dCBDT1VOVEVSIGlmICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRJbnB1dEtleSAuICc6OkRlbGV0ZScgKTsKCiAgICAgICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgICAgICAgICBpZiAoICRJdGVtLT57U3VifSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkU3ViRm9ybURhdGEgPSAkU2VsZi0+X1hNTEZvcm1HZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRJbnB1dEtleSwKICAgICAgICAgICAgICAgICAgICAgICAgQWxsUmVxdWlyZWQgICA9PiAkUGFyYW17QWxsUmVxdWlyZWR9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJEZvcm1EYXRhLT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJJbnNlcnRdID0gJFN1YkZvcm1EYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZvcm1EYXRhLT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJJbnNlcnRdLT57Q29udGVudH0gPSAkRm9ybVZhbHVlcy0+e1ZhbHVlfTsKICAgICAgICAgICAgICAgICRDb3VudGVySW5zZXJ0Kys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBhZGQgYnV0dG9uCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRBZGRLZXkgKSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRJdGVtLT57U3VifSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEZvcm1EYXRhLT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJJbnNlcnRdID0gJFNlbGYtPl9YTUxEZWZhdWx0U2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRGb3JtRGF0YS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVySW5zZXJ0XS0+e0NvbnRlbnR9ID0gJyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsYXN0IENPVU5URVI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRGb3JtRGF0YTsKfQoKc3ViIF9YTUxEZWZhdWx0U2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERlZmluaXRpb259OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKCiAgICBteSAkRGVmYXVsdERhdGEgPSB7fTsKCiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBmb3IgbXkgJENvdW50ZXIgKCAxIC4uICRJdGVtLT57Q291bnREZWZhdWx0fSApIHsKCiAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAgICAgaWYgKCAkSXRlbS0+e1N1Yn0gKSB7CiAgICAgICAgICAgICAgICAkRGVmYXVsdERhdGEtPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0gPSAkU2VsZi0+X1hNTERlZmF1bHRTZXQoCiAgICAgICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRGVmYXVsdERhdGEtPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0tPntDb250ZW50fSA9ICcnOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJERlZmF1bHREYXRhOwp9CgpzdWIgX1hNTEZvcm1PdXRwdXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwoKICAgICRQYXJhbXtMZXZlbH0gIHx8PSAwOwogICAgJFBhcmFte1ByZWZpeH0gfHw9ICcnOwoKICAgICMgZ2V0IHN1Ym1pdCBzYXZlCiAgICBteSAkU3VibWl0U2F2ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdWJtaXRTYXZlJyApOwoKICAgICMgc2V0IGRhdGEgcHJlc2VudCBtb2RlCiAgICBteSAkRGF0YVByZXNlbnRNb2RlID0gMDsKICAgIGlmICggJFBhcmFte1hNTERhdGF9ICYmIHJlZiAkUGFyYW17WE1MRGF0YX0gZXEgJ0hBU0gnICkgewogICAgICAgICREYXRhUHJlc2VudE1vZGUgPSAxOwogICAgfQoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJEl0ZW1Db3VudGVyID0gMTsKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKCiAgICAgICAgIyBzZXQgbG9vcAogICAgICAgIG15ICRMb29wID0gJEl0ZW0tPntDb3VudERlZmF1bHR9OwogICAgICAgIGlmICgkRGF0YVByZXNlbnRNb2RlKSB7CiAgICAgICAgICAgICRMb29wID0gMDsKCiAgICAgICAgICAgICMgc2VhcmNoIHRoZSBsYXN0IGNvbnRlbnQKICAgICAgICAgICAgQ09VTlRFUjoKICAgICAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkSXRlbS0+e0NvdW50TWF4fSApIHsKICAgICAgICAgICAgICAgIGxhc3QgQ09VTlRFUiBpZiAhZGVmaW5lZCAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0tPntDb250ZW50fTsKICAgICAgICAgICAgICAgICRMb29wID0gJENvdW50ZXI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IGFic29sdXQgbWluaW11bQogICAgICAgICAgICBpZiAoICRMb29wIDwgJEl0ZW0tPntDb3VudE1pbn0gKSB7CiAgICAgICAgICAgICAgICAkTG9vcCA9ICRJdGVtLT57Q291bnRNaW59OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNldCBkZWxldGUKICAgICAgICBteSAkRGVsZXRlID0gMDsKICAgICAgICBpZiAoICRMb29wID4gJEl0ZW0tPntDb3VudE1pbn0gKSB7CiAgICAgICAgICAgICREZWxldGUgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBvdXRwdXQgY29udGVudCByb3dzCiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkTG9vcCApIHsKCiAgICAgICAgICAgICMgb3V0cHV0IHJvdyBibG9jawogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnWE1MUm93JyApOwoKICAgICAgICAgICAgaWYgKCAhJFBhcmFte0xldmVsfSApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdYTUxSb3dGaWVsZHNldFN0YXJ0JyApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNyZWF0ZSBpbnB1dGtleSBhbmQgYWRka2V5CiAgICAgICAgICAgIG15ICRJbnB1dEtleSA9ICRJdGVtLT57S2V5fSAuICc6OicgLiAkQ291bnRlcjsKICAgICAgICAgICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAgICAgICAgICRJbnB1dEtleSA9ICRQYXJhbXtQcmVmaXh9IC4gJzo6JyAuICRJbnB1dEtleTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgYmx1ZSByZXF1aXJlZCBzdGFyCiAgICAgICAgICAgIG15ICRYTUxSb3dWYWx1ZUNvbnRlbnRSZXF1aXJlZCA9IDA7CiAgICAgICAgICAgIG15ICRMYWJlbENsYXNzICAgICAgICAgICAgICAgICA9ICcnOwogICAgICAgICAgICBpZiAoICRJdGVtLT57SW5wdXR9LT57UmVxdWlyZWR9ICkgewogICAgICAgICAgICAgICAgJFhNTFJvd1ZhbHVlQ29udGVudFJlcXVpcmVkID0gMTsKICAgICAgICAgICAgICAgICRMYWJlbENsYXNzICAgICAgICAgICAgICAgICA9ICdNYW5kYXRvcnknOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG91dHB1dCByZWQgaW52YWxpZCBzdGFyCiAgICAgICAgICAgIG15ICRYTUxSb3dWYWx1ZUNvbnRlbnRJbnZhbGlkID0gMDsKICAgICAgICAgICAgaWYgKCAkSXRlbS0+e0Zvcm19LT57JElucHV0S2V5fS0+e0ludmFsaWR9ICYmICRTdWJtaXRTYXZlICkgewogICAgICAgICAgICAgICAgJFhNTFJvd1ZhbHVlQ29udGVudEludmFsaWQgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkSXRlbUlEID0gJ0l0ZW0nIC4gJEl0ZW1Db3VudGVyKysgLiAkUGFyYW17UHJlZml4fSAuICRQYXJhbXtMZXZlbH07CgogICAgICAgICAgICBpZiAoICRJdGVtLT57SW5wdXR9LT57VHlwZX0gZXEgJ1VzZXInICkgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkU2VsZi0+e1VzZXJTZWFyY2hJdGVtSURzfSB9LCAkSXRlbUlEOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJEl0ZW0tPntJbnB1dH0tPntUeXBlfSBlcSAnQ3VzdG9tZXInICkgewogICAgICAgICAgICAgICAgcHVzaCBAeyAkU2VsZi0+e0N1c3RvbWVyU2VhcmNoSXRlbUlEc30gfSwgJEl0ZW1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjcmVhdGUgaW5wdXQgZWxlbWVudAogICAgICAgICAgICBteSAkSW5wdXRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlKAogICAgICAgICAgICAgICAgS2V5ICAgICAgICAgICAgICA9PiAkSW5wdXRLZXksCiAgICAgICAgICAgICAgICBJdGVtICAgICAgICAgICAgID0+ICRJdGVtLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICA9PiAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0tPntDb250ZW50fSwKICAgICAgICAgICAgICAgIEl0ZW1JZCAgICAgICAgICAgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICAgICAgPT4gJFhNTFJvd1ZhbHVlQ29udGVudFJlcXVpcmVkLAogICAgICAgICAgICAgICAgSW52YWxpZCAgICAgICAgICA9PiAkWE1MUm93VmFsdWVDb250ZW50SW52YWxpZCwKICAgICAgICAgICAgICAgIE92ZXJyaWRlVGltZVpvbmUgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgSUQ/CiAgICAgICAgICAgIG15ICRMYWJlbEZvciA9ICRJdGVtSUQ7CiAgICAgICAgICAgIGlmICggJEl0ZW0tPntJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgfHwgJEl0ZW0tPntJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgJExhYmVsRm9yID0gJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWQgbmVlZGVkPwogICAgICAgICAgICBpZiAoJExhYmVsRm9yKSB7CiAgICAgICAgICAgICAgICAkTGFiZWxGb3IgPSAnZm9yPSInIC4gJExhYmVsRm9yIC4gJyInOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlzIHRoaXMgYSBzdWIgZmllbGQ/CiAgICAgICAgICAgIG15ICRDbGFzcyA9ICcnOwogICAgICAgICAgICBpZiAoICRQYXJhbXtMZXZlbH0gKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3MgPSAnU3ViRWxlbWVudCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2xhc3MgbmVlZGVkPwogICAgICAgICAgICBpZiAoJExhYmVsQ2xhc3MpIHsKICAgICAgICAgICAgICAgICRMYWJlbENsYXNzID0gJ2NsYXNzPSInIC4gIiRDbGFzcyAgJExhYmVsQ2xhc3MiIC4gJyInOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJExhYmVsQ2xhc3MgPSAnY2xhc3M9IicgLiAkQ2xhc3MgLiAnIic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3V0cHV0IHJvdyB2YWx1ZSBjb250ZW50IGJsb2NrCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnWE1MUm93VmFsdWUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJEl0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgIExhYmVsRm9yICAgID0+ICRMYWJlbEZvciAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRJdGVtLT57RGVzY3JpcHRpb259IHx8ICRJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgSW5wdXRTdHJpbmcgPT4gJElucHV0U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIExhYmVsQ2xhc3MgID0+ICRMYWJlbENsYXNzIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgID0+ICRDbGFzcyAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJEl0ZW0tPntJbnB1dH0tPntSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnWE1MUm93VmFsdWVDb250ZW50UmVxdWlyZWQnICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3V0cHV0IGRlbGV0ZSBidXR0b24KICAgICAgICAgICAgaWYgKCREZWxldGUpIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1hNTFJvd1ZhbHVlQ29udGVudERlbGV0ZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0S2V5ID0+ICRJbnB1dEtleSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0aGUgY29udGVudCBpcyBpbnZhbGlkCiAgICAgICAgICAgIGlmICgkWE1MUm93VmFsdWVDb250ZW50SW52YWxpZCkgewoKICAgICAgICAgICAgICAgICMgc2hvdyByZWdleCBlcnJvciBtZXNzYWdlIGJsb2NrCiAgICAgICAgICAgICAgICBpZiAoICRJdGVtLT57Rm9ybX0tPnskSW5wdXRLZXl9LT57UmVnRXhFcnJvck1lc3NhZ2V9ICkgewoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnWE1MUm93VmFsdWVSZWdFeEVycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICAgICAgICA9PiAkSXRlbUlELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnRXhFcnJvck1lc3NhZ2UgPT4gJEl0ZW0tPntGb3JtfS0+eyRJbnB1dEtleX0tPntSZWdFeEVycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSBzaG93IG5vcm1hbCBzZXJ2ZXIgZXJyb3IgYmxvY2sKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdYTUxSb3dWYWx1ZVNlcnZlckVycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgICAgIGlmICggJEl0ZW0tPntTdWJ9ICkgewogICAgICAgICAgICAgICAgbXkgJVhNTEZvcm1PdXRwdXRQYXJhbTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkRGF0YVByZXNlbnRNb2RlCiAgICAgICAgICAgICAgICAgICAgJiYgZGVmaW5lZCAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0tPntDb250ZW50fQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkWE1MRm9ybU91dHB1dFBhcmFte1hNTERhdGF9ID0gJFBhcmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRTZWxmLT5fWE1MRm9ybU91dHB1dCgKICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgICAgICAgICAlWE1MRm9ybU91dHB1dFBhcmFtLAogICAgICAgICAgICAgICAgICAgIExldmVsICA9PiAkUGFyYW17TGV2ZWx9ICsgMSwKICAgICAgICAgICAgICAgICAgICBQcmVmaXggPT4gJElucHV0S2V5LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFBhcmFte0xldmVsfSApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdYTUxSb3dGaWVsZHNldEVuZCcgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgcm93IHRvIHNvcnQgcm93cyBjb3JyZWN0bHkKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1hNTFJvdycgKTsKICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IGFkZCBidXR0b24KICAgICAgICBpZiAoICRMb29wIDwgJEl0ZW0tPntDb3VudE1heH0gKSB7CgogICAgICAgICAgICAjIGlmIG5vIGl0ZW0gc2hvdWxkIGJlIHNob3duIHdlIG5lZWQgdG8gc2hvdyB0aGUgYWRkIGJ1dHRvbgogICAgICAgICAgICAjIGFuZCB0aGVyZWZvcmUgd2UgbmVlZCB0byBzaG93IHRoZSBYTUxSb3cgYmxvY2sKICAgICAgICAgICAgaWYgKCAhJExvb3AgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnWE1MUm93JyApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ2xhc3MgPSAnJzsKICAgICAgICAgICAgaWYgKCAkUGFyYW17TGV2ZWx9ICkgewogICAgICAgICAgICAgICAgJENsYXNzID0gJ2NsYXNzPSJTdWJFbGVtZW50Iic7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnWE1MUm93RmllbGRzZXRFbmQnICk7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnWE1MUm93RmllbGRzZXRTdGFydCcgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgcHJlZml4CiAgICAgICAgICAgIG15ICRJbnB1dEtleSA9ICRJdGVtLT57S2V5fTsKICAgICAgICAgICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAgICAgICAgICRJbnB1dEtleSA9ICRQYXJhbXtQcmVmaXh9IC4gJzo6JyAuICRJbnB1dEtleTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgcm93IGFkZCBjb250ZW50IGJsb2NrCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnWE1MUm93QWRkQ29udGVudCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgICAgICA9PiAkSW5wdXRLZXkgLiAnQWRkJywKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAkSXRlbS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRJdGVtLT57RGVzY3JpcHRpb259IHx8ICRJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgSW5wdXRLZXkgICAgPT4gJElucHV0S2V5LAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU2VsZi0+e1VzZXJTZWFyY2hJdGVtSURzfSApICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1VzZXJTZWFyY2hJdGVtSURzJywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntVc2VyU2VhcmNoSXRlbUlEc30sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntDdXN0b21lclNlYXJjaEl0ZW1JRHN9ICkgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnQ3VzdG9tZXJTZWFyY2hJdGVtSURzJywKICAgICAgICAgICAgVmFsdWUgPT4gJFNlbGYtPntDdXN0b21lclNlYXJjaEl0ZW1JRHN9LAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemHistory.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICRTZWxmLT57Q29uZmlnSXRlbUlEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRTZWxmLT57Q29uZmlnSXRlbUlEfSApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgSXRlbUlEID0+ICRTZWxmLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBEZWZpbmUgdHJhbnNsYXRhYmxlIGhpc3Rvcnkgc3RyaW5ncy4KICAgIG15ICVIaXN0b3J5U3RyaW5ncyA9ICgKICAgICAgICAnQ0lIaXN0b3J5OjpDb25maWdJdGVtQ3JlYXRlJyAgICAgID0+IFRyYW5zbGF0YWJsZSgnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6OlZlcnNpb25DcmVhdGUnICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdOZXcgdmVyc2lvbiAoSUQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6RGVwbG95bWVudFN0YXRlVXBkYXRlJyA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6SW5jaWRlbnRTdGF0ZVVwZGF0ZScgICA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKScpLAogICAgICAgICdDSUhpc3Rvcnk6OkNvbmZpZ0l0ZW1EZWxldGUnICAgICAgPT4gVHJhbnNsYXRhYmxlKCdDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCcpLAogICAgICAgICdDSUhpc3Rvcnk6OkxpbmtBZGQnICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCcpLAogICAgICAgICdDSUhpc3Rvcnk6OkxpbmtEZWxldGUnICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJyksCiAgICAgICAgJ0NJSGlzdG9yeTo6RGVmaW5pdGlvblVwZGF0ZScgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpOYW1lVXBkYXRlJyAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknKSwKICAgICAgICAnQ0lIaXN0b3J5OjpWYWx1ZVVwZGF0ZScgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInKSwKICAgICAgICAnQ0lIaXN0b3J5OjpWZXJzaW9uRGVsZXRlJyAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnVmVyc2lvbiAlcyBkZWxldGVkJyksCiAgICApOwoKICAgICMgZ2V0IGFsbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRTZWxmLT57Q29uZmlnSXRlbUlEfSwKICAgICk7CiAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAkQ29uZmlnSXRlbS0+e051bWJlcn07CgogICAgIyBnZXQgYWxsIGVudHJpZXMgaW4gdGhlIGhpc3RvcnkgZm9yIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15ICRMaW5lcyA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2VsZi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgICMgZ2V0IHNob3duIHVzZXIgaW5mbwogICAgbXkgQE5ld0xpbmVzID0gQHskTGluZXN9OwogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6SGlzdG9yeU9yZGVyJykgZXEgJ3JldmVyc2UnICkgewogICAgICAgIEBOZXdMaW5lcyA9IHJldmVyc2UgQHskTGluZXN9OwogICAgfQoKICAgICMgZ2V0IGRlZmluaXRpb24gZm9yIENJJ3MgY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICBteSAkVGFibGUgICA9ICcnOwogICAgbXkgJENvdW50ZXIgPSAxOwogICAgbXkgJFZlcnNpb24gPSAwOwogICAgZm9yIG15ICREYXRhVG1wIChATmV3TGluZXMpIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICAleyREYXRhVG1wfSwKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgIyB0cmltIHRoZSBjb21tZW50IHRvIG9ubHkgc2hvdyB2ZXJzaW9uIG51bWJlcgogICAgICAgIGlmICggJERhdGF7SGlzdG9yeVR5cGV9IGVxICdWZXJzaW9uQ3JlYXRlJyApIHsKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPX4gcy9cRC8vZzsKICAgICAgICAgICAgJERhdGF7VmVyc2lvbklEfSA9ICREYXRhe0NvbW1lbnR9OwogICAgICAgICAgICAkVmVyc2lvbiA9ICREYXRhe0NvbW1lbnR9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREYXRhe0hpc3RvcnlUeXBlfSBlcSAnVmFsdWVVcGRhdGUnICkgewoKICAgICAgICAgICAgIyBiZWF1dGlmeSBjb21tZW50CiAgICAgICAgICAgIG15IEBQYXJ0cyA9IHNwbGl0IC8lJS8sICREYXRhe0NvbW1lbnR9OwogICAgICAgICAgICAkUGFydHNbMF0gPX4gc3sgXEEgXFsuKj9cXSBceydWZXJzaW9uJ1x9IFxbLio/XF0gXHsnIH17fXhtczsKICAgICAgICAgICAgJFBhcnRzWzBdID1+IHN7ICdcfSBcWy4qP1xdIFx7JyB9ezo6fXhtc2c7CiAgICAgICAgICAgICRQYXJ0c1swXSA9fiBzeyAnXH0gXFsuKj9cXSBceiB9e314bXM7CgogICAgICAgICAgICAjIGdldCBkZWZpbml0aW9uIGluZm8gYWJvdXQgYXR0cmlidXRlCiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVJbmZvID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BdHRyaWJ1dGVJbmZvKAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgICA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgICAgICAgICAgQXR0cmlidXRlUGF0aCA9PiAkUGFydHNbMF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRBdHRyaWJ1dGVJbmZvICYmICRBdHRyaWJ1dGVJbmZvLT57SW5wdXR9LT57VHlwZX0gZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKICAgICAgICAgICAgICAgIG15ICRJdGVtTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJEF0dHJpYnV0ZUluZm8tPntJbnB1dH0tPntDbGFzc30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRQYXJ0c1sxXSA9ICRJdGVtTGlzdC0+eyAkUGFydHNbMV0gfHwgJycgfSB8fCAnJzsKICAgICAgICAgICAgICAgICRQYXJ0c1syXSA9ICRJdGVtTGlzdC0+eyAkUGFydHNbMl0gfHwgJycgfSB8fCAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhc3NlbWJsZSBwYXJ0cwogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9IGpvaW4gJyUlJywgQFBhcnRzOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREYXRhe0hpc3RvcnlUeXBlfSBlcSAnRGVwbG95bWVudFN0YXRlVXBkYXRlJyApIHsKCiAgICAgICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgICAgICAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyBuYW1lcwogICAgICAgICAgICBteSBAUGFydHMgPSBzcGxpdCAvJSUvLCAkRGF0YXtDb21tZW50fTsKICAgICAgICAgICAgZm9yIG15ICRQYXJ0IChAUGFydHMpIHsKICAgICAgICAgICAgICAgICRQYXJ0ID0gJERlcGxTdGF0ZUxpc3QtPnskUGFydH0gfHwgJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXNzZW1ibGUgcGFydHMKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPSBqb2luICclJScsIEBQYXJ0czsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGF0YXtIaXN0b3J5VHlwZX0gZXEgJ0luY2lkZW50U3RhdGVVcGRhdGUnICkgewoKICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyBuYW1lcwogICAgICAgICAgICBteSBAUGFydHMgPSBzcGxpdCAvJSUvLCAkRGF0YXtDb21tZW50fTsKICAgICAgICAgICAgZm9yIG15ICRQYXJ0IChAUGFydHMpIHsKICAgICAgICAgICAgICAgICRQYXJ0ID0gJERlcGxTdGF0ZUxpc3QtPnskUGFydH0gfHwgJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYXNzZW1ibGUgcGFydHMKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPSBqb2luICclJScsIEBQYXJ0czsKICAgICAgICB9CgogICAgICAgICMgcmVwbGFjZSB0ZXh0CiAgICAgICAgaWYgKCAkRGF0YXtDb21tZW50fSApIHsKCiAgICAgICAgICAgIG15ICVJbmZvOwoKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPX4gc3sgXEEgJSUgfXt9eG1zZzsKICAgICAgICAgICAgbXkgQFZhbHVlcyA9IHNwbGl0IC8lJS8sICREYXRhe0NvbW1lbnR9OwoKICAgICAgICAgICAgJERhdGF7Q29tbWVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkSGlzdG9yeVN0cmluZ3N7ICdDSUhpc3Rvcnk6OicgLiAkRGF0YXtIaXN0b3J5VHlwZX0gfSwKICAgICAgICAgICAgICAgIEBWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlbW92ZSBub3QgbmVlZGVkIHBsYWNlIGhvbGRlcgogICAgICAgICAgICAkRGF0YXtDb21tZW50fSA9fiBzL1wlcy8vZzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3cnLAogICAgICAgICAgICBEYXRhID0+IHslRGF0YX0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGJ1aWxkIHBhZ2UKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgIFR5cGUgID0+ICdTbWFsbCcKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFNlbGYtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKSwKICAgICAgICB9LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCBUeXBlID0+ICdTbWFsbCcgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemPrint.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtSUQnICk7CiAgICBteSAkVmVyc2lvbklEICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkQ29uZmlnSXRlbUlEIHx8ICEkVmVyc2lvbklEICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICBpZiAoICEkSGFzQWNjZXNzICkgewoKICAgICAgICAjIGVycm9yIHBhZ2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwogICAgaWYgKCAhJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnLCAkQ29uZmlnSXRlbUlEICksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHZlcnNpb24KICAgIG15ICRWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICApOwogICAgaWYgKCAhJFZlcnNpb24tPntWZXJzaW9uSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdWZXJzaW9uSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlIScsICRWZXJzaW9uSUQgKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbGFzdCB2ZXJzaW9uCiAgICBteSAkTGFzdFZlcnNpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CiAgICAkQ29uZmlnSXRlbS0+e0N1cnJlbnROYW1lfSA9ICRMYXN0VmVyc2lvbi0+e05hbWV9OwoKICAgICMgZ2V0IHZlcnNpb24gbGlzdAogICAgbXkgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBteSAkVmVyc2lvbk51bWJlciA9IDE7CiAgICBMSVNUVkVSU0lPTklEOgogICAgZm9yIG15ICRMaXN0VmVyc2lvbklEICggQHskVmVyc2lvbkxpc3R9ICkgewoKICAgICAgICBsYXN0IExJU1RWRVJTSU9OSUQgaWYgJFZlcnNpb25JRCBlcSAkTGlzdFZlcnNpb25JRDsKICAgICAgICAkVmVyc2lvbk51bWJlcisrOwogICAgfQoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgY3JlYXRlICYgY2hhbmdlIHVzZXIgZGF0YQogICAgZm9yIG15ICRLZXkgKHF3KENyZWF0ZSBDaGFuZ2UpKSB7CiAgICAgICAgJENvbmZpZ0l0ZW0tPnsgJEtleSAuICdCeU5hbWUnIH0gPSAkVXNlck9iamVjdC0+VXNlck5hbWUoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkQ29uZmlnSXRlbS0+eyAkS2V5IC4gJ0J5JyB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXNlciBkYXRhIG9mIHZlcnNpb24gKGNyZWF0ZSBieSkKICAgICRWZXJzaW9uLT57Q3JlYXRlQnlOYW1lfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICBVc2VySUQgPT4gJFZlcnNpb24tPntDcmVhdGVCeX0sCiAgICApOwoKICAgICMgZ2V0IGxpbmtlZCBvYmplY3RzCiAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkTGlua09iamVjdC0+TGlua0xpc3RXaXRoRGF0YSgKICAgICAgICBPYmplY3QgICAgICAgICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFN0YXRlICAgICAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBPYmplY3RQYXJhbWV0ZXJzID0+IHsKICAgICAgICAgICAgVGlja2V0ID0+IHsKICAgICAgICAgICAgICAgIElnbm9yZUxpbmtlZFRpY2tldFN0YXRlVHlwZXMgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBsaW5rIHR5cGUgbGlzdAogICAgbXkgJUxpbmtUeXBlTGlzdCA9ICRMaW5rT2JqZWN0LT5UeXBlTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCB0aGUgbGluayBkYXRhCiAgICBteSAlTGlua0RhdGE7CiAgICBpZiAoICRMaW5rTGlzdFdpdGhEYXRhICYmIHJlZiAkTGlua0xpc3RXaXRoRGF0YSBlcSAnSEFTSCcgJiYgJXskTGlua0xpc3RXaXRoRGF0YX0gKSB7CiAgICAgICAgJUxpbmtEYXRhID0gJExheW91dE9iamVjdC0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgICAgICBMaW5rTGlzdFdpdGhEYXRhID0+ICRMaW5rTGlzdFdpdGhEYXRhLAogICAgICAgICAgICBWaWV3TW9kZSAgICAgICAgID0+ICdTaW1wbGVSYXcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgYXR0YWNobWVudHMKICAgIG15IEBBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgZ2V0IHBkZiBvYmplY3QKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBnZW5lcmF0ZSBwZGYgb3V0cHV0CiAgICBteSAlUGFnZTsKCiAgICAjIGdldCBtYXhpbXVtIG51bWJlciBvZiBwYWdlcwogICAgJFBhZ2V7TWF4UGFnZXN9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICBpZiAoICEkUGFnZXtNYXhQYWdlc30gfHwgJFBhZ2V7TWF4UGFnZXN9IDwgMSB8fCAkUGFnZXtNYXhQYWdlc30gPiAxMDAwICkgewogICAgICAgICRQYWdle01heFBhZ2VzfSA9IDEwMDsKICAgIH0KCiAgICBteSAkVGl0bGUgPSAkQ29uZmlnSXRlbS0+e0N1cnJlbnROYW1lfTsKCiAgICAkUGFnZXtNYXJnaW5Ub3B9ICAgID0gMzA7CiAgICAkUGFnZXtNYXJnaW5SaWdodH0gID0gNDA7CiAgICAkUGFnZXtNYXJnaW5Cb3R0b219ID0gNDA7CiAgICAkUGFnZXtNYXJnaW5MZWZ0fSAgID0gNDA7CiAgICAkUGFnZXtIZWFkZXJSaWdodH0gID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtJykgLiAnIycKICAgICAgICAuICRDb25maWdJdGVtLT57TnVtYmVyfTsKICAgICRQYWdle0hlYWRsaW5lTGVmdH0gPSAkVmVyc2lvbi0+e05hbWV9OwogICAgJFBhZ2V7UGFnZVRleHR9ICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgJFBhZ2V7UGFnZUNvdW50fSAgICA9IDE7CgogICAgIyBjcmVhdGUgbmV3IHBkZiBkb2N1bWVudAogICAgJFBERk9iamVjdC0+RG9jdW1lbnROZXcoCiAgICAgICAgVGl0bGUgID0+ICRDb25maWdPYmplY3QtPkdldCgnUHJvZHVjdCcpIC4gJzonIC4gJFZlcnNpb24tPntOYW1lfSwKICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICk7CgogICAgIyBjcmVhdGUgZmlyc3QgcGRmIHBhZ2UKICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgJVBhZ2UsCiAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICk7CiAgICAkUGFnZXtQYWdlQ291bnR9Kys7CgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNiwKICAgICk7CgogICAgIyBvdXRwdXQgdGl0bGUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJFRpdGxlLAogICAgICAgIEZvbnRTaXplID0+IDEzLAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCAicHJpbnRlZCBieSIKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICdwcmludGVkIGJ5ICVzIGF0ICVzJywKICAgICAgICAgICAgJFNlbGYtPntVc2VyRnVsbG5hbWV9LAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57VGltZX0sCiAgICAgICAgKSwKICAgICAgICBGb250U2l6ZSA9PiA5LAogICAgKTsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNCwKICAgICk7CgogICAgIyBvdXRwdXQgZ2VuZXJhbCBpbmZvcm1hdGlvbgogICAgJFNlbGYtPl9QREZPdXRwdXRHZW5lcmFsSW5mb3MoCiAgICAgICAgUGFnZSAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICk7CgogICAgIyBvdXRwdXQgbGlua2VkIG9iamVjdHMKICAgIGlmICglTGlua0RhdGEpIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dExpbmtlZE9iamVjdHMoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIExpbmtEYXRhICAgICA9PiBcJUxpbmtEYXRhLAogICAgICAgICAgICBMaW5rVHlwZUxpc3QgPT4gXCVMaW5rVHlwZUxpc3QsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBhdHRhY2htZW50cwogICAgaWYgKEBBdHRhY2htZW50cykgewogICAgICAgICRTZWxmLT5fUERGT3V0cHV0QXR0YWNobWVudHMoCiAgICAgICAgICAgIFBhZ2VEYXRhICAgICAgID0+IFwlUGFnZSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQXR0YWNobWVudERhdGEgPT4gXEBBdHRhY2htZW50cywKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IHZlcnNpb24gaW5mb3MKICAgICRTZWxmLT5fUERGT3V0cHV0VmVyc2lvbkluZm9zKAogICAgICAgIFBhZ2UgICAgICAgICAgPT4gXCVQYWdlLAogICAgICAgIFZlcnNpb24gICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgVmVyc2lvbk51bWJlciA9PiAkVmVyc2lvbk51bWJlciwKICAgICk7CgogICAgIyBjcmVhdGUgZmlsZSBuYW1lCiAgICBteSAkRmlsZW5hbWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5GaWxlbmFtZUNsZWFuVXAoCiAgICAgICAgRmlsZW5hbWUgPT4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgIFR5cGUgICAgID0+ICdBdHRhY2htZW50JywKICAgICk7CgogICAgIyBHZXQgY3VycmVudCBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJEN1cnJlbnRTeXN0ZW1EVE9iaiA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgIEZpbGVuYW1lID0+IHNwcmludGYoCiAgICAgICAgICAgICdjb25maWdpdGVtXyVzXyVzLnBkZicsCiAgICAgICAgICAgICRGaWxlbmFtZSwKICAgICAgICAgICAgJEN1cnJlbnRTeXN0ZW1EVE9iai0+Rm9ybWF0KCBGb3JtYXQgPT4gJyVGXyVILSVNJyApLAogICAgICAgICksCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL3BkZicsCiAgICAgICAgQ29udGVudCAgICAgPT4gJFBERk9iamVjdC0+RG9jdW1lbnRPdXRwdXQoKSwKICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICk7Cn0KCnN1YiBfUERGT3V0cHV0R2VuZXJhbEluZm9zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFBhZ2UgQ29uZmlnSXRlbSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY3JlYXRlIGxlZnQgdGFibGUKICAgIG15ICRUYWJsZUxlZnQgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NsYXNzJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtDb25maWdJdGVtfS0+e0NsYXNzfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtDb25maWdJdGVtfS0+e0N1cnJlbnROYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ0l0ZW19LT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgIF07CgogICAgIyBjcmVhdGUgcmlnaHQgdGFibGUKICAgIG15ICRUYWJsZVJpZ2h0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDcmVhdGVkJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJXsgJFBhcmFte0NvbmZpZ0l0ZW19IH0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCBieScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDcmVhdGVCeU5hbWV9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0xhc3QgY2hhbmdlZCBieScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDaGFuZ2VCeU5hbWV9LAogICAgICAgIH0sCiAgICBdOwoKICAgIG15ICRSb3dzID0gQHskVGFibGVMZWZ0fTsKICAgIGlmICggQHskVGFibGVSaWdodH0gPiAkUm93cyApIHsKICAgICAgICAkUm93cyA9IEB7JFRhYmxlUmlnaHR9OwogICAgfQoKICAgIG15ICVUYWJsZVBhcmFtOwogICAgZm9yIG15ICRSb3cgKCAxIC4uICRSb3dzICkgewogICAgICAgICRSb3ctLTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZUxlZnQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntWYWx1ZX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0NvbnRlbnR9ICAgICAgICAgPSAnICc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzJde0JhY2tncm91bmRDb2xvcn0gPSAnI0ZGRkZGRic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57S2V5fTsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bM117Rm9udH0gICAgICAgICAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bNF17Q29udGVudH0gICAgICAgICA9ICRUYWJsZVJpZ2h0LT5bJFJvd10tPntWYWx1ZX07CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSAxNzAuNTsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzJde1dpZHRofSA9IDQ7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVszXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzRde1dpZHRofSA9IDE3MC41OwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICAgPSAwOwogICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ICA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgICA9IDE7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nVG9wfSAgICAgICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgID0gMzsKCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSAuLiAkUGFyYW17UGFnZX0tPntNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBsYXN0IFBBR0UgaWYgJFRhYmxlUGFyYW17U3RhdGV9OwoKICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAleyAkUGFyYW17UGFnZX0gfSwKICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhcmFte1BhZ2V9LT57UGFnZVRleHR9IC4gJyAnIC4gJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0rKzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRMaW5rZWRPYmplY3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhQYWdlRGF0YSBMaW5rRGF0YSBMaW5rVHlwZUxpc3QpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVQYWdlICAgICA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUeXBlTGlzdCA9ICV7ICRQYXJhbXtMaW5rVHlwZUxpc3R9IH07CiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3cgPSAwOwoKICAgICMgbXkgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBmb3IgbXkgJExpbmtUeXBlTGlua0RpcmVjdGlvbiAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICV7ICRQYXJhbXtMaW5rRGF0YX0gfSApIHsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBsaW5rIHR5cGUgbmFtZQogICAgICAgIG15IEBMaW5rRGF0YSAgICAgPSBzcGxpdCBxezo6fSwgJExpbmtUeXBlTGlua0RpcmVjdGlvbjsKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJFR5cGVMaXN0eyAkTGlua0RhdGFbMF0gfS0+eyAkTGlua0RhdGFbMV0gLiAnTmFtZScgfTsKICAgICAgICAkTGlua1R5cGVOYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMaW5rVHlwZU5hbWUpOwoKICAgICAgICAjIGRlZmluZSBoZWFkbGluZQogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSA9ICRMaW5rVHlwZU5hbWUgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICcnOwoKICAgICAgICAjIGV4dHJhY3Qgb2JqZWN0IGxpc3QKICAgICAgICBteSAkT2JqZWN0TGlzdCA9ICRQYXJhbXtMaW5rRGF0YX0tPnskTGlua1R5cGVMaW5rRGlyZWN0aW9ufTsKCiAgICAgICAgZm9yIG15ICRPYmplY3QgKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyRPYmplY3RMaXN0fSApIHsKCiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRPYmplY3RMaXN0LT57JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gfHw9ICcnOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJEl0ZW0tPntUaXRsZX0gfHwgJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGludWUgewogICAgICAgICAgICAgICAgJFJvdysrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgZ2V0IHBkZiBvYmplY3QKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMaW5rZWQgT2JqZWN0cycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciBteSAkQ291bnQgKCAkUGFnZXtQYWdlQ291bnR9IC4uICRQYWdle01heFBhZ2VzfSApIHsKCiAgICAgICAgIyBvdXRwdXQgdGFibGUgKG9yIGEgZnJhZ21lbnQgb2YgaXQpCiAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSglVGFibGVQYXJhbSk7CgogICAgICAgICMgc3RvcCBvdXRwdXQgb3Igb3V0cHV0IG5leHQgcGFnZQogICAgICAgIGlmICggJFRhYmxlUGFyYW17U3RhdGV9ICkgewogICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgJVBhZ2UsCiAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkUGFnZXtQYWdlQ291bnR9Kys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1BERk91dHB1dEF0dGFjaG1lbnRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFBhZ2VEYXRhIENvbmZpZ0l0ZW1JRCBBdHRhY2htZW50RGF0YSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkKCAkUGFyYW17JEFyZ3VtZW50fSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZSA9ICV7ICRQYXJhbXtQYWdlRGF0YX0gfTsKICAgIG15ICVUYWJsZVBhcmFtOwogICAgbXkgJFJvdyA9IDA7CgogICAgIyBhdHRhY2htZW50cyBhcmUgcmVuZGVyZWQgaW50byBhIHNlcGFyYXRlIHJvdwogICAgQVRUQUNITUVOVDoKICAgIGZvciBteSAkQXR0YWNobWVudCAoIEB7ICRQYXJhbXtBdHRhY2htZW50RGF0YX0gfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIG1ldGFkYXRhIG9mIHRoZSBjdXJyZW50IGF0dGFjaG1lbnQKICAgICAgICBteSAkQXR0YWNobWVudERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50LAogICAgICAgICk7CgogICAgICAgICMgZGVmaW5lIGF0dGFjaG1lbnQgbGluZQogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fQogICAgICAgICAgICA9ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVuYW1lfSAuICcgICgnIC4gJEF0dGFjaG1lbnREYXRhLT57RmlsZXNpemV9IC4gJyknOwoKICAgICAgICAkUm93Kys7CiAgICB9CgogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MzE7CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIG91dHB1dCBoZWFkbGluZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQXR0YWNobWVudHMnKSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIHRhYmxlIHBhcmFtcwogICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgID0gNjsKICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvcn0gPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgPSAzOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICA9IDM7CgogICAgIyBvdXRwdXQgdGFibGUKICAgIFBBR0U6CiAgICBmb3IgbXkgJENvdW50ICggJFBhZ2V7UGFnZUNvdW50fSAuLiAkUGFnZXtNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgbGFzdCBQQUdFOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgICAgICVQYWdlLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2V7UGFnZVRleHR9IC4gJyAnIC4gJFBhZ2V7UGFnZUNvdW50fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhZ2V7UGFnZUNvdW50fSsrOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRWZXJzaW9uSW5mb3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUGFnZSBWZXJzaW9uIFZlcnNpb25OdW1iZXIpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZlcnNpb24nKSAuICcgJwogICAgICAgICAgICAuICRQYXJhbXtWZXJzaW9uTnVtYmVyfSwKICAgICAgICBIZWlnaHQgICA9PiA3LAogICAgICAgIFR5cGUgICAgID0+ICdDdXQnLAogICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICBGb250U2l6ZSA9PiA3LAogICAgICAgIENvbG9yICAgID0+ICcjNjY2NjY2JywKICAgICk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC00LAogICAgKTsKCiAgICAjIGNyZWF0ZSB0YWJsZQogICAgbXkgJFRhYmxlID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDcmVhdGVkJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgICAgICAgICBEYXRhICAgICA9PiBcJXsgJFBhcmFte1ZlcnNpb259IH0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCBieScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17VmVyc2lvbn0tPntDcmVhdGVCeU5hbWV9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnICcsCiAgICAgICAgICAgIFZhbHVlID0+ICcgJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOYW1lJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtWZXJzaW9ufS0+e05hbWV9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17VmVyc2lvbn0tPntEZXBsU3RhdGV9ICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnSW5jaWRlbnQgU3RhdGUnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9ICksCiAgICAgICAgfSwKICAgIF07CgogICAgIyBhZGQgeG1sIGRhdGEgdG8gdGFibGUKICAgIGlmICgKICAgICAgICByZWYgJFBhcmFte1ZlcnNpb259IGVxICdIQVNIJwogICAgICAgICYmICRQYXJhbXtWZXJzaW9ufS0+e1hNTERlZmluaXRpb259CiAgICAgICAgJiYgJFBhcmFte1ZlcnNpb259LT57WE1MRGF0YX0KICAgICAgICAmJiByZWYgJFBhcmFte1ZlcnNpb259LT57WE1MRGVmaW5pdGlvbn0gZXEgJ0FSUkFZJwogICAgICAgICYmIHJlZiAkUGFyYW17VmVyc2lvbn0tPntYTUxEYXRhfSBlcSAnQVJSQVknCiAgICAgICAgJiYgJFBhcmFte1ZlcnNpb259LT57WE1MRGF0YX0tPlsxXQogICAgICAgICYmIHJlZiAkUGFyYW17VmVyc2lvbn0tPntYTUxEYXRhfS0+WzFdIGVxICdIQVNIJwogICAgICAgICYmICRQYXJhbXtWZXJzaW9ufS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufQogICAgICAgICYmIHJlZiAkUGFyYW17VmVyc2lvbn0tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0gZXEgJ0FSUkFZJwogICAgICAgICkKICAgIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dFhNTE91dHB1dCgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkUGFyYW17VmVyc2lvbn0tPntYTUxEZWZpbml0aW9ufSwKICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkUGFyYW17VmVyc2lvbn0tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICAgICAgVGFibGVEYXRhICAgICA9PiAkVGFibGUsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3dzID0gQHskVGFibGV9OwoKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJFRhYmxlLT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkVGFibGUtPlskUm93XS0+e1ZhbHVlfTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSAxMDA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MTE7CiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSAgICAgID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yIG15ICRDb3VudCAoICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0gLi4gJFBhcmFte1BhZ2V9LT57TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgbGFzdCBQQUdFIGlmICRUYWJsZVBhcmFte1N0YXRlfTsKCiAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgJXsgJFBhcmFte1BhZ2V9IH0sCiAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYXJhbXtQYWdlfS0+e1BhZ2VUZXh0fSAuICcgJyAuICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9Kys7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0WE1MT3V0cHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte1RhYmxlRGF0YX07CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEYXRhfTsKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERlZmluaXRpb259OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17VGFibGVEYXRhfSBuZSAnQVJSQVknOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGF0YX0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKCiAgICAkUGFyYW17TGV2ZWx9IHx8PSAwOwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBDT1VOVEVSOgogICAgICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gJEl0ZW0tPntDb3VudE1heH0gKSB7CgogICAgICAgICAgICAjIHN0b3AgbG9vcCwgaWYgbm8gY29udGVudCB3YXMgZ2l2ZW4KICAgICAgICAgICAgbGFzdCBDT1VOVEVSIGlmICFkZWZpbmVkICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9OwoKICAgICAgICAgICAgIyBsb29rdXAgdmFsdWUKICAgICAgICAgICAgbXkgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlhNTFZhbHVlTG9va3VwKAogICAgICAgICAgICAgICAgSXRlbSAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0tPntDb250ZW50fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICAgICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAgICAgICAgICMgY3JlYXRlIG91dHB1dCBzdHJpbmcKICAgICAgICAgICAgJFZhbHVlID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgIFByaW50ID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJlcGxhY2UgbmV3bGluZXMgd2l0aCA8YnIvPiAoZml4IGZvciBidWcjIDU5MjgpCiAgICAgICAgICAgICRWYWx1ZSA9fiBzeyBcbiB9ezxici8+fWd4bXM7CgogICAgICAgICAgICAjIGNvbnZlcnQgdmFsdWUgdG8gYXNjaWkKICAgICAgICAgICAgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKCBTdHJpbmcgPT4gJFZhbHVlICk7CgogICAgICAgICAgICAjIG5ldyByb3cKICAgICAgICAgICAgbXkgJE5ld1JvdyA9IHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEl0ZW0tPntOYW1lfSApIC4gJzonLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgIyBvdXRwdXQgc3BhY2UsIGlmIGxldmVsIHdhcyBnaXZlbgogICAgICAgICAgICBpZiAoICRQYXJhbXtMZXZlbH0gKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJExldmVsICggMSAuLiAkUGFyYW17TGV2ZWx9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdSb3ctPntLZXl9ICAgPSAnICAgICcgLiAkTmV3Um93LT57S2V5fTsKICAgICAgICAgICAgICAgICAgICAkTmV3Um93LT57VmFsdWV9ID0gJyAgICAnIC4gJE5ld1Jvdy0+e1ZhbHVlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgcm93IGRhdGEKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17VGFibGVEYXRhfSB9LCAkTmV3Um93OwoKICAgICAgICAgICAgbmV4dCBDT1VOVEVSIGlmICEkSXRlbS0+e1N1Yn07CgogICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgICAgICRTZWxmLT5fUERGT3V0cHV0WE1MT3V0cHV0KAogICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXSwKICAgICAgICAgICAgICAgIFRhYmxlRGF0YSAgICAgPT4gJFBhcmFte1RhYmxlRGF0YX0sCiAgICAgICAgICAgICAgICBMZXZlbCAgICAgICAgID0+ICRQYXJhbXtMZXZlbH0gKyAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemSearch.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9IHx8IDEwMDAwOwogICAgJFNlbGYtPntTb3J0Qnl9ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ051bWJlcic7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgIHx8ICcnOwogICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKTsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGdldCBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cyBvbiB0aGUgY2xhc3NlcwogICAgZm9yIG15ICRDbGFzc0lEICggc29ydCBrZXlzICV7JENsYXNzTGlzdH0gKSB7CiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIGRlbGV0ZSAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IGlmICEkSGFzQWNjZXNzOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGlkCiAgICBteSAkQ2xhc3NJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBjbGFzcyBpZCBpcyB2YWxpZAogICAgaWYgKCAkQ2xhc3NJRCAmJiAhJENsYXNzTGlzdC0+eyRDbGFzc0lEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIENsYXNzSUQhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBzZWFyY2ggcHJvZmlsZSBvYmplY3QKICAgIG15ICRTZWFyY2hQcm9maWxlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlYXJjaFByb2ZpbGUnKTsKCiAgICAjIGxvYWQgcHJvZmlsZXMgc3RyaW5nIHBhcmFtcwogICAgaWYgKCAoICRDbGFzc0lEICYmICRTZWxmLT57UHJvZmlsZX0gKSAmJiAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSApIHsKICAgICAgICAlR2V0UGFyYW0gPSAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUdldCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgZGVsZXRlIHNlYXJjaCBwcm9maWxlcwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhQcm9maWxlRGVsZXRlJyApIHsKCiAgICAgICAgIyByZW1vdmUgb2xkIHByb2ZpbGUgc3R1ZmYKICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICApOwogICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAogICAgICAgICAgICBEYXRhID0+IDEsCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBpbml0IHNlYXJjaCBkaWFsb2cgKHNlbGVjdCBjbGFzcykKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYJyApIHsKCiAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSBjbGFzcwogICAgICAgICMgYXV0b21hdGljYWxseSBzaG93IHNlYXJjaCBtYXNrIGFmdGVyIHNlbGVjdGluZyBhIGNsYXNzIHZpYSBBSkFYCiAgICAgICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZWFyY2hDbGFzc0lEJywKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkQ2xhc3NJRCB8fCAnJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGh0bWwgc2VhcmNoIG1hc2sgb3V0cHV0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEFKQVgnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzT3B0aW9uU3RyZyA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgdGVtcGxhdGUKICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNldCBzZWFyY2ggZmllbGRzIGZvciBzZWxlY3RlZCBjbGFzcwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhVcGRhdGUnICkgewoKICAgICAgICAjIENsYXNzSUQgaXMgcmVxdWlyZWQgZm9yIHRoZSBzZWFyY2ggbWFzayBhbmQgZm9yIGFjdHVhbCBzZWFyY2hpbmcKICAgICAgICBpZiAoICEkQ2xhc3NJRCApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIENsYXNzSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHVzZXIgaXMgYWxsb3dlZCB0byBzZWFyY2ggY2xhc3MKICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IGVycm9yIHNjcmVlbgogICAgICAgIGlmICggISRIYXNBY2Nlc3MgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY3VycmVudCBkZWZpbml0aW9uCiAgICAgICAgbXkgJFhNTERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICAjIGFib3J0LCBpZiBubyBkZWZpbml0aW9uIGlzIGRlZmluZWQKICAgICAgICBpZiAoICEkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnLCAkQ2xhc3NJRCApLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFhNTEF0dHJpYnV0ZXMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdOdW1iZXInKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdOYW1lJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGVJRHMnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICVHZXRQYXJhbSA9ICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlR2V0KAogICAgICAgICAgICBCYXNlICAgICAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnIC4gJENsYXNzSUQsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CgogICAgICAgIG15ICRDbGFzcyA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CgogICAgICAgICMgSWYgbm8gcHJvZmlsZSBpcyB1c2VkLCBzZXQgZGVmYXVsdCBwYXJhbXMgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgaWYgKCAhJFNlbGYtPntQcm9maWxlfSAmJiAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0c30tPnskQ2xhc3N9ICkgewoKICAgICAgICAgICAgS0VZOgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0c30tPnskQ2xhc3N9IH0gKSB7CgogICAgICAgICAgICAgICAgIyBTa2lwIGlmIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGVtcHR5CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJFNlbGYtPntDb25maWd9LT57RGVmYXVsdHN9LT57JENsYXNzfS0+eyRLZXl9OwoKICAgICAgICAgICAgICAgICMgR2V0IHRoZSBhdHRyaWJ1dGUgZGVmaW5pdGlvbgogICAgICAgICAgICAgICAgbXkgKCRBdHRyaWJ1dGVEZWZpbml0aW9uKSA9IGdyZXAgeyAkXy0+e0tleX0gZXEgJEtleSB9IEB7ICRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0gfTsKCiAgICAgICAgICAgICAgICAjIFNraXAgaWYgdGhlIGF0dHJpYnV0ZSBkZWZpbml0aW9uIGlzIGVtcHR5CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJEF0dHJpYnV0ZURlZmluaXRpb247CgogICAgICAgICAgICAgICAgIyBJZiB0aGUgYXR0cmlidXRlIGlzIGEgc2VsZWN0aW9uIHR5cGUsIHdlIG5lZWQgdG8gcGFzcyBhbiBhcnJheSByZWZlcmVuY2UKICAgICAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZURlZmluaXRpb24tPntJbnB1dH0tPntUeXBlfSA9fiAvXihUeXBlfEdlbmVyYWxDYXRhbG9nfEN1c3RvbWVyQ29tcGFueSkkLyApIHsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gPSBbICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRzfS0+eyRDbGFzc30tPnskS2V5fSBdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB3ZSBjYW4gcGFzcyB0aGUgdmFsdWUgZGlyZWN0bHkKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSA9ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRzfS0+eyRDbGFzc30tPnskS2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXR0cmlidXRlcyB0byBpbmNsdWRlIGluIGF0dHJpYnV0ZXMgc3RyaW5nCiAgICAgICAgaWYgKCAkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb259ICkgewogICAgICAgICAgICAkU2VsZi0+X1hNTFNlYXJjaEF0dHJpYnV0ZXNHZXQoCiAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgICAgICAgICBYTUxBdHRyaWJ1dGVzID0+IFxAWE1MQXR0cmlidXRlcywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgYXR0cmlidXRlcyBzdHJpbmcgZm9yIGF0dHJpYnV0ZXMgbGlzdAogICAgICAgICRQYXJhbXtBdHRyaWJ1dGVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQFhNTEF0dHJpYnV0ZXMsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQXR0cmlidXRlJywKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGF0dHJpYnV0ZXMgc3RyaW5nIGZvciByZWNvdmVyeSBvbiBhZGQgb3Igc3VidHJhY3Qgc2VhcmNoIGZpZWxkcwogICAgICAgICRQYXJhbXtBdHRyaWJ1dGVzT3JpZ1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBYTUxBdHRyaWJ1dGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0F0dHJpYnV0ZU9yaWcnLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgIG15ICVQcm9maWxlcyA9ICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtQcm9maWxlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVByb2ZpbGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1Byb2ZpbGUnLAogICAgICAgICAgICBJRCAgICAgICAgICAgPT4gJ1NlYXJjaFByb2ZpbGUnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgICAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGRlcGxveW1lbnQgc3RhdGVzCiAgICAgICAgbXkgJEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRGVwbFN0YXRlSURzJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17RGVwbFN0YXRlSURzfSB8fCBbXSwKICAgICAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGluY2lkZW50IHN0YXRlcwogICAgICAgIG15ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gJEluY2lTdGF0ZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0luY2lTdGF0ZUlEc30gfHwgW10sCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgUHJldmlvdXNWZXJzaW9uT3B0aW9uU3RyZwogICAgICAgIG15ICRQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIE5hbWUgPT4gJ1ByZXZpb3VzVmVyc2lvblNlYXJjaCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgMCA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICAxID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0gfHwgJzAnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdCBzdHJpbmcKICAgICAgICAkUGFyYW17UmVzdWx0Rm9ybVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTm9ybWFsID0+IFRyYW5zbGF0YWJsZSgnTm9ybWFsJyksCiAgICAgICAgICAgICAgICBQcmludCAgPT4gVHJhbnNsYXRhYmxlKCdQcmludCcpLAogICAgICAgICAgICAgICAgQ1NWICAgID0+IFRyYW5zbGF0YWJsZSgnQ1NWJyksCiAgICAgICAgICAgICAgICBFeGNlbCAgPT4gVHJhbnNsYXRhYmxlKCdFeGNlbCcpLAogICAgICAgICAgICB9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gfHwgJ05vcm1hbCcsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FKQVhDb250ZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyAgICA9PiAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZU9wdGlvblN0cmcgICAgPT4gJEN1ckluY2lTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnID0+ICRQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnLAogICAgICAgICAgICAgICAgQXR0cmlidXRlc1N0cmcgICAgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc1N0cmd9LAogICAgICAgICAgICAgICAgQXR0cmlidXRlc09yaWdTdHJnICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSwKICAgICAgICAgICAgICAgIFJlc3VsdEZvcm1TdHJnICAgICAgICAgICAgPT4gJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSwKICAgICAgICAgICAgICAgIFByb2ZpbGVzU3RyZyAgICAgICAgICAgICAgPT4gJFBhcmFte1Byb2ZpbGVzU3RyZ30sCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtOdW1iZXJ9IHx8ICcnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0gICB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB4bWwgc2VhcmNoIGZvcm0KICAgICAgICBpZiAoICRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvbn0gKSB7CiAgICAgICAgICAgICRTZWxmLT5fWE1MU2VhcmNoRm9ybU91dHB1dCgKICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICAgICAgICAgICAgIFhNTEF0dHJpYnV0ZXMgPT4gXEBYTUxBdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgR2V0UGFyYW0gICAgICA9PiBcJUdldFBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgQFByb2ZpbGVBdHRyaWJ1dGVzOwoKICAgICAgICAjIHNob3cgYXR0cmlidXRlcwogICAgICAgIG15ICRBdHRyaWJ1dGVJc1VzZWQgPSAwOwogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgIG5leHQgS0VZIGlmICEkS2V5OwogICAgICAgICAgICBuZXh0IEtFWSBpZiAhZGVmaW5lZCAkR2V0UGFyYW17JEtleX07CiAgICAgICAgICAgIG5leHQgS0VZIGlmICRHZXRQYXJhbXskS2V5fSBlcSAnJzsKCiAgICAgICAgICAgICRBdHRyaWJ1dGVJc1VzZWQgPSAxOwoKICAgICAgICAgICAgcHVzaCBAUHJvZmlsZUF0dHJpYnV0ZXMsICRLZXk7CiAgICAgICAgfQoKICAgICAgICAjIGlmIG5vIGF0dHJpYnV0ZSBpcyBzaG93biwgc2hvdyBjb25maWdpdGVtIG51bWJlcgogICAgICAgIGlmICggISRTZWxmLT57UHJvZmlsZX0gKSB7CiAgICAgICAgICAgIHB1c2ggQFByb2ZpbGVBdHRyaWJ1dGVzLCAnTnVtYmVyJzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcycsCiAgICAgICAgICAgIFZhbHVlID0+IFxAUHJvZmlsZUF0dHJpYnV0ZXMsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgdGVtcGxhdGUKICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBBSkFYICAgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRPdXRwdXQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBwZXJmb3JtIHNlYXJjaAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NlYXJjaCcgKSB7CgogICAgICAgIG15ICRTZWFyY2hEaWFsb2cgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VhcmNoRGlhbG9nJyApOwoKICAgICAgICAjIGZpbGwgdXAgcHJvZmlsZSBuYW1lIChlLmcuIHdpdGggbGFzdC1zZWFyY2gpCiAgICAgICAgaWYgKCAhJFNlbGYtPntQcm9maWxlfSB8fCAhJFNlbGYtPntTYXZlUHJvZmlsZX0gKSB7CiAgICAgICAgICAgICRTZWxmLT57UHJvZmlsZX0gPSAnbGFzdC1zZWFyY2gnOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g7UHJvZmlsZT0kU2VsZi0+e1Byb2ZpbGV9OyIKICAgICAgICAgICAgLiAiVGFrZUxhc3RTZWFyY2g9MTtTdGFydEhpdD0kU2VsZi0+e1N0YXJ0SGl0fTtTdWJhY3Rpb249U2VhcmNoOyIKICAgICAgICAgICAgLiAiT3JkZXJCeT0kU2VsZi0+e09yZGVyQnl9O1NvcnRCeT0kU2VsZi0+e1NvcnRCeX0iOwoKICAgICAgICBpZiAoJENsYXNzSUQpIHsKICAgICAgICAgICAgJFVSTCAuPSAiO0NsYXNzSUQ9JENsYXNzSUQiOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgc2Vzc2lvbiBvYmplY3QKICAgICAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CiAgICAgICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVVJMLAogICAgICAgICk7CgogICAgICAgICMgQ2xhc3NJRCBpcyByZXF1aXJlZCBmb3IgdGhlIHNlYXJjaCBtYXNrIGFuZCBmb3IgYWN0dWFsIHNlYXJjaGluZwogICAgICAgIGlmICggISRDbGFzc0lEICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgdXNlciBpcyBhbGxvd2VkIHRvIHNlYXJjaCBjbGFzcwogICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgVHlwZSAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgZXJyb3Igc2NyZWVuCiAgICAgICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjdXJyZW50IGRlZmluaXRpb24KICAgICAgICBteSAkWE1MRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgYWJvcnQsIGlmIG5vIGRlZmluaXRpb24gaXMgZGVmaW5lZAogICAgICAgIGlmICggISRYTUxEZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzIScsICRDbGFzc0lEICksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzY2FsYXIgc2VhcmNoIGF0dHJpYnV0ZXMgKHNwZWNpYWwgaGFuZGxpbmcgZm9yIE51bWJlciBhbmQgTmFtZSkKICAgICAgICBGT1JNVkFMVUU6CiAgICAgICAgZm9yIG15ICRGb3JtVmFsdWUgKHF3KE51bWJlciBOYW1lKSkgewoKICAgICAgICAgICAgbXkgJFZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEZvcm1WYWx1ZSApOwoKICAgICAgICAgICAgIyBtdXN0IGJlIGRlZmluZWQgYW5kIG5vdCBiZSBhbiBlbXB0eSBzdHJpbmcKICAgICAgICAgICAgIyBCVVQgdGhlIG51bWJlciAwIGlzIGFuIGFsbG93ZWQgdmFsdWUKICAgICAgICAgICAgbmV4dCBGT1JNVkFMVUUgaWYgIWRlZmluZWQgJFZhbHVlOwogICAgICAgICAgICBuZXh0IEZPUk1WQUxVRSBpZiAkVmFsdWUgZXEgJyc7CgogICAgICAgICAgICAkR2V0UGFyYW17JEZvcm1WYWx1ZX0gPSAkVmFsdWU7CiAgICAgICAgfQoKICAgICAgICAjIGdldCB0aGVyIHNjYWxhciBzZWFyY2ggYXR0cmlidXRlcwogICAgICAgIEZPUk1WQUxVRToKICAgICAgICBmb3IgbXkgJEZvcm1WYWx1ZSAocXcoUHJldmlvdXNWZXJzaW9uU2VhcmNoIFJlc3VsdEZvcm0pKSB7CgogICAgICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkRm9ybVZhbHVlICk7CgogICAgICAgICAgICBuZXh0IEZPUk1WQUxVRSBpZiAhJFZhbHVlOwoKICAgICAgICAgICAgJEdldFBhcmFteyRGb3JtVmFsdWV9ID0gJFZhbHVlOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgc2VhcmNoIGF0dHJpYnV0ZXMKICAgICAgICBGT1JNQVJSQVk6CiAgICAgICAgZm9yIG15ICRGb3JtQXJyYXkgKHF3KERlcGxTdGF0ZUlEcyBJbmNpU3RhdGVJRHMpKSB7CgogICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkRm9ybUFycmF5ICk7CgogICAgICAgICAgICBuZXh0IEZPUk1BUlJBWSBpZiAhQEFycmF5OwoKICAgICAgICAgICAgJEdldFBhcmFteyRGb3JtQXJyYXl9ID0gXEBBcnJheTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHhtbCBzZWFyY2ggZm9ybQogICAgICAgIG15ICRYTUxGb3JtRGF0YSA9IFtdOwogICAgICAgIG15ICRYTUxHZXRQYXJhbSA9IFtdOwogICAgICAgICRTZWxmLT5fWE1MU2VhcmNoRm9ybUdldCgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgICAgICBYTUxGb3JtRGF0YSAgID0+ICRYTUxGb3JtRGF0YSwKICAgICAgICAgICAgWE1MR2V0UGFyYW0gICA9PiAkWE1MR2V0UGFyYW0sCiAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICApOwoKICAgICAgICBpZiAoIEB7JFhNTEZvcm1EYXRhfSApIHsKICAgICAgICAgICAgJEdldFBhcmFte1doYXR9ID0gJFhNTEZvcm1EYXRhOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIHNlYXJjaCBwcm9maWxlICh1bmRlciBsYXN0LXNlYXJjaCBvciByZWFsIHByb2ZpbGUgbmFtZSkKICAgICAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSA9IDE7CgogICAgICAgICMgcmVtZW1iZXIgbGFzdCBzZWFyY2ggdmFsdWVzIG9ubHkgaWYgc2VhcmNoIGlzIGNhbGxlZCBmcm9tIGEgc2VhcmNoIGRpYWxvZwogICAgICAgICMgbm90IGZyb20gcmVzdWx0cyBwYWdlCiAgICAgICAgaWYgKCAkU2VsZi0+e1NhdmVQcm9maWxlfSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICYmICRTZWFyY2hEaWFsb2cgKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaW5zZXJ0IG5ldyBwcm9maWxlIHBhcmFtcwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskS2V5fSAmJiAkS2V5IG5lICdXaGF0JyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkR2V0UGFyYW17JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBpbnNlcnQgbmV3IHByb2ZpbGUgcGFyYW1zIGFsc28gZnJvbSBYTUxmb3JtCiAgICAgICAgICAgIGlmICggQHskWE1MR2V0UGFyYW19ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRQYXJhbWV0ZXIgKCBAeyRYTUxHZXRQYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskUGFyYW1ldGVyfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW1ldGVyLT57JEtleX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgICAgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkUGFyYW1ldGVyLT57JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkU2VhcmNoUmVzdWx0TGlzdCA9IFtdOwoKICAgICAgICAjIHN0YXJ0IHNlYXJjaCBpZiBjYWxsZWQgZnJvbSBhIHNlYXJjaCBkaWFsb2cgb3IgZnJvbSBhIHJlc3VsdHMgcGFnZQogICAgICAgIGlmICggJFNlYXJjaERpYWxvZyB8fCAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSApIHsKCiAgICAgICAgICAgICMgc3RhcnQgc2VhcmNoCiAgICAgICAgICAgICRTZWFyY2hSZXN1bHRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgKICAgICAgICAgICAgICAgICVHZXRQYXJhbSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyAkU2VsZi0+e1NvcnRCeX0gXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAkU2VsZi0+e09yZGVyQnl9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgcGFyYW0gb25seSBpZiBjYWxsZWQgZnJvbSBhIHNlYXJjaCBkaWFsb2csIG90aGVyd2lzZSBpdCBtdXN0IGJlIGFscmVhZHkgaW4gJUdldFBhcmFtCiAgICAgICAgIyBmcm9tIGEgbG9hZGVkIHByb2ZpbGUKICAgICAgICBpZiAoJFNlYXJjaERpYWxvZykgewogICAgICAgICAgICAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUmVzdWx0Rm9ybScgKTsKICAgICAgICB9CgogICAgICAgICMgQ1NWIG91dHB1dAogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnCiAgICAgICAgICAgIHx8CiAgICAgICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15IEBDU1ZEYXRhOwogICAgICAgICAgICBteSBAQ1NWSGVhZDsKCiAgICAgICAgICAgICMgbWFwcGluZyBiZXR3ZWVuIGhlYWRlciBuYW1lIGFuZCBkYXRhIGZpZWxkCiAgICAgICAgICAgIG15ICVIZWFkZXIyRGF0YSA9ICgKICAgICAgICAgICAgICAgICdDbGFzcycgICAgICAgICAgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICAgICAgJ0luY2lkZW50IFN0YXRlJyAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgJ05hbWUnICAgICAgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICdDb25maWdJdGVtTnVtYmVyJyA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICdEZXBsb3ltZW50IFN0YXRlJyA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgICdWZXJzaW9uJyAgICAgICAgICA9PiAnVmVyc2lvbklEJywKICAgICAgICAgICAgICAgICdDcmVhdGUgVGltZScgICAgICA9PiAnQ3JlYXRlVGltZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskU2VhcmNoUmVzdWx0TGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAgICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNzdiBxdW90ZQogICAgICAgICAgICAgICAgaWYgKCAhQENTVkhlYWQgKSB7CiAgICAgICAgICAgICAgICAgICAgQENTVkhlYWQgPSBAeyAkU2VsZi0+e0NvbmZpZ30tPntTZWFyY2hDU1ZEYXRhfSB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc3RvcmUgZGF0YQogICAgICAgICAgICAgICAgbXkgQERhdGE7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkTGFzdFZlcnNpb24tPnsgJEhlYWRlcjJEYXRheyRIZWFkZXJ9IH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gQHsgJFNlbGYtPntDb25maWd9LT57U2VhcmNoQ1NWRGF0YX0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgaGVhZGVycwogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIHJlcGxhY2UgQ29uZmlnSXRlbU51bWJlciBoZWFkZXIgd2l0aCB0aGUgY3VycmVudCBDb25maWdJdGVtTnVtYmVyIGhvb2sgZnJvbSBzeXNjb25maWcKICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06Okhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRDU1ZPYmplY3QgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDU1YnKTsKICAgICAgICAgICAgbXkgJEN1clN5c0RUT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CiAgICAgICAgICAgIGlmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnICkgewoKICAgICAgICAgICAgICAgICMgQXNzZW1ibGUgQ1NWIGRhdGEuCiAgICAgICAgICAgICAgICBteSAkQ1NWID0gJENTVk9iamVjdC0+QXJyYXkyQ1NWKAogICAgICAgICAgICAgICAgICAgIEhlYWQgICAgICA9PiBcQENTVkhlYWQsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgID0+IFxAQ1NWRGF0YSwKICAgICAgICAgICAgICAgICAgICBTZXBhcmF0b3IgPT4gJFNlbGYtPntVc2VyQ1NWU2VwYXJhdG9yfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gQ1NWIHRvIGRvd25sb2FkLgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZV9zZWFyY2hfJXMuY3N2JywKICAgICAgICAgICAgICAgICAgICAgICAgJEN1clN5c0RUT2JqZWN0LT5Gb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJyVGXyVILSVNJywKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJ0ZXh0L2NzdjsgY2hhcnNldD0iIC4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ1NWLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnICkgewoKICAgICAgICAgICAgICAgICMgQXNzZW1ibGUgRXhjZWwgZGF0YS4KICAgICAgICAgICAgICAgIG15ICRFeGNlbCA9ICRDU1ZPYmplY3QtPkFycmF5MkNTVigKICAgICAgICAgICAgICAgICAgICBIZWFkICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgICAgIERhdGEgICA9PiBcQENTVkRhdGEsCiAgICAgICAgICAgICAgICAgICAgRm9ybWF0ID0+ICdFeGNlbCcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgUmV0dXJuIEV4Y2VsIHRvIGRvd25sb2FkLgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZV9zZWFyY2hfJXMueGxzeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICRDdXJTeXNEVE9iamVjdC0+Rm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0ID0+ICclRl8lSC0lTScsCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQ7IGNoYXJzZXQ9IgogICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntVc2VyQ2hhcnNldH0sCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRXhjZWwsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByaW50IFBERiBvdXRwdXQKICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnUHJpbnQnICkgewoKICAgICAgICAgICAgbXkgQFBERkRhdGE7CgogICAgICAgICAgICAjIGdldCBwZGYgb2JqZWN0CiAgICAgICAgICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskU2VhcmNoUmVzdWx0TGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAgICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBwZGYgcm93cwogICAgICAgICAgICAgICAgbXkgQFBERlJvdzsKICAgICAgICAgICAgICAgIGZvciBteSAkU3RvcmVEYXRhIChxdyhDbGFzcyBJbmNpU3RhdGUgTmFtZSBOdW1iZXIgRGVwbFN0YXRlIFZlcnNpb25JRCBDcmVhdGVUaW1lKSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJExhc3RWZXJzaW9uLT57JFN0b3JlRGF0YX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBQREZEYXRhLCBcQFBERlJvdzsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUERGIE91dHB1dAogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ3VyYXRpb24gSXRlbScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQcmludGVkQnkgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3ByaW50ZWQgYnknKTsKICAgICAgICAgICAgbXkgJFBhZ2UgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgICAgICAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAgICAgbXkgJE1heFBhZ2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgICAgIGlmICggISRNYXhQYWdlcyB8fCAkTWF4UGFnZXMgPCAxIHx8ICRNYXhQYWdlcyA+IDEwMDAgKSB7CiAgICAgICAgICAgICAgICAkTWF4UGFnZXMgPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBoZWFkZXIKICAgICAgICAgICAgbXkgJENlbGxEYXRhOwoKICAgICAgICAgICAgIyBvdXRwdXQgJ05vIFJlc3VsdCcsIGlmIG5vIGNvbnRlbnQgd2FzIGdpdmVuCiAgICAgICAgICAgIGlmIChAUERGRGF0YSkgewogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOYW1lJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ051bWJlcicpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls0XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzRdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzVdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZlcnNpb24nKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNV0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNl0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlIFRpbWUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNl0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgY29udGVudCBhcnJheQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAxOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXJDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29udGVudCAoIEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WyRDb3VudGVyUm93XS0+WyRDb3VudGVyQ29sdW1uXS0+e0NvbnRlbnR9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudGVyQ29sdW1uKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05vIFJlc3VsdCEnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICBteSAlUGFnZVBhcmFtOwogICAgICAgICAgICAkUGFnZVBhcmFte1BhZ2VPcmllbnRhdGlvbn0gPSAnbGFuZHNjYXBlJzsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luUmlnaHR9ICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkJvdHRvbX0gICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGVyUmlnaHR9ICAgICA9ICRUaXRsZTsKCiAgICAgICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX0gICAgICAgICAgICA9ICRDZWxsRGF0YTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICAgICAgICAgIyBjcmVhdGUgbmV3IHBkZiBkb2N1bWVudAogICAgICAgICAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RhcnQgdGFibGUgb3V0cHV0CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aXRsZQogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCA9PiAkUHJpbnRlZEJ5IC4gJyAnCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJGdWxsbmFtZX0gLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRUaW1lLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC0xNCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBBR0U6CiAgICAgICAgICAgIGZvciBteSAkQ291bnQgKCAyIC4uICRNYXhQYWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3IgYW5vdGhlciBwYWdlCiAgICAgICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgJyAuICRDb3VudCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJldHVybiB0aGUgcGRmIGRvY3VtZW50CiAgICAgICAgICAgIG15ICRDdXJyZW50U3lzdGVtRFRPYmogPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJFBERlN0cmluZyAgICAgICAgICA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAnY29uZmlnaXRlbV9zZWFyY2hfJXNfJXMucGRmJywKICAgICAgICAgICAgICAgICAgICAkQ3VycmVudFN5c3RlbURUT2JqLT5Gb3JtYXQoIEZvcm1hdCA9PiAnJUZfJUgtJU0nICksCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG5vcm1hbCBIVE1MIG91dHB1dAogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzdGFydCBodG1sIHBhZ2UKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+UHJpbnQoIE91dHB1dCA9PiBcJE91dHB1dCApOwogICAgICAgICAgICAkT3V0cHV0ID0gJyc7CgogICAgICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsdGVyJyApIHx8ICcnOwogICAgICAgICAgICAkU2VsZi0+e1ZpZXd9ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnVmlldycgKSAgIHx8ICcnOwoKICAgICAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgICAgICAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgICAgICAgICAuICc7T3JkZXJCeT0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntQcm9maWxlfSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JyAuICRDbGFzc0lECiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRTZWxmLT57UHJvZmlsZX0gLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScgLiAkQ2xhc3NJRAogICAgICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgICAgIG15ICRMaW5rRmlsdGVyID0gJ1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2xhc3NJRCApCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtCYWNrID0gJ1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2xhc3NJRCApCiAgICAgICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTsnOwoKICAgICAgICAgICAgIyBmaW5kIG91dCB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSBzaG93bgogICAgICAgICAgICBteSBAU2hvd0NvbHVtbnM7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25maWd9LT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGFsbCBwb3NzaWJsZSBjb2x1bW5zIGZyb20gY29uZmlnCiAgICAgICAgICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgICAgICAgICAjIGdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duCiAgICAgICAgICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgICAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRQb3NzaWJsZUNvbHVtbnskTmFtZX07CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCB0aGUgY29uZmlndXJlZCBjb2x1bW5zIGFuZCByZW9yZ2FuaXplIHRoZW0gYnkgY2xhc3MgbmFtZQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29uZmlnfS0+e1Nob3dDb2x1bW5zQnlDbGFzc30gKQogICAgICAgICAgICAgICAgJiYgJENsYXNzSUQKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIG15ICVDb2x1bW5CeUNsYXNzOwoKICAgICAgICAgICAgICAgIE5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBAeyAkU2VsZi0+e0NvbmZpZ30tPntTaG93Q29sdW1uc0J5Q2xhc3N9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgKCAkQ2xhc3MsICRDb2x1bW4gKSA9IHNwbGl0IC86Oi8sICROYW1lLCAyOwoKICAgICAgICAgICAgICAgICAgICBuZXh0IE5BTUUgaWYgISRDb2x1bW47CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSB9LCAkQ29sdW1uOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgdGhlcmUgaXMgYSBzcGVjaWZpYyBjb2x1bW4gY29uZmlnIGZvciB0aGUgc2VsZWN0ZWQgY2xhc3MKICAgICAgICAgICAgICAgIG15ICRTZWxlY3RlZENsYXNzID0gJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbkJ5Q2xhc3N7JFNlbGVjdGVkQ2xhc3N9ICkgewogICAgICAgICAgICAgICAgICAgIEBTaG93Q29sdW1ucyA9IEB7ICRDb2x1bW5CeUNsYXNzeyRTZWxlY3RlZENsYXNzfSB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ2xhc3NOYW1lID0gJENsYXNzTGlzdC0+eyRDbGFzc0lEfTsKICAgICAgICAgICAgbXkgJFRpdGxlICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnKQogICAgICAgICAgICAgICAgLiAnICcKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpCiAgICAgICAgICAgICAgICAuICcgJwogICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENsYXNzTmFtZSk7CgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0+ICRTZWFyY2hSZXN1bHRMaXN0LAogICAgICAgICAgICAgICAgVG90YWwgICAgICAgICA9PiBzY2FsYXIgQHskU2VhcmNoUmVzdWx0TGlzdH0sCiAgICAgICAgICAgICAgICBWaWV3ICAgICAgICAgID0+ICRTZWxmLT57Vmlld30sCiAgICAgICAgICAgICAgICBGaWx0ZXIgICAgICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgRW52ICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICAgICAgICAgIExpbmtQYWdlICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICAgICAgTGlua1NvcnQgICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgICAgICAgICBMaW5rRmlsdGVyICAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgICAgICAgICAgTGlua0JhY2sgICAgICA9PiAkTGlua0JhY2ssCiAgICAgICAgICAgICAgICBQcm9maWxlICAgICAgID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICBUaXRsZU5hbWUgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgIFNob3dDb2x1bW5zICAgPT4gXEBTaG93Q29sdW1ucywKICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgPT4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1NvcnRCeX0gKSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgPT4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e09yZGVyQnl9ICksCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgUmVxdWVzdFVSTCAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYnVpbGQgZm9vdGVyCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjYWxsIHNlYXJjaCBkaWFsb2cgZnJvbSBzZWFyY2ggZW1wdHkgc2NyZWVuCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNlIHsKCiAgICAgICAgIyBzaG93IGRlZmF1bHQgc2VhcmNoIHNjcmVlbgogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nJywKICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgUHJvZmlsZSA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIEFjdGlvbiAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IHRlbXBsYXRlCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgZm9vdGVyCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9Cn0KCnN1YiBfWE1MU2VhcmNoRm9ybU91dHB1dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVHZXRQYXJhbSA9ICV7ICRQYXJhbXtHZXRQYXJhbX0gfTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MQXR0cmlidXRlc30gbmUgJ0FSUkFZJzsKCiAgICAkUGFyYW17TGV2ZWx9IHx8PSAwOwogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICAjIHNldCBwcmVmaXgKICAgICAgICBteSAkSW5wdXRLZXkgPSAkSXRlbS0+e0tleX07CiAgICAgICAgbXkgJE5hbWUgICAgID0gJEl0ZW0tPntOYW1lfTsKICAgICAgICBpZiAoICRQYXJhbXtQcmVmaXh9ICkgewogICAgICAgICAgICAkSW5wdXRLZXkgPSAkUGFyYW17UHJlZml4fSAuICc6OicgLiAkSW5wdXRLZXk7CiAgICAgICAgICAgICROYW1lICAgICA9ICRQYXJhbXtQcmVmaXhOYW1lfSAuICc6OicgLiAkTmFtZTsKICAgICAgICB9CgogICAgICAgICMgb3V0cHV0IGF0dHJpYnV0ZSwgaWYgbWFya2VkIGFzIHNlYXJjaGFibGUKICAgICAgICBpZiAoICRJdGVtLT57U2VhcmNoYWJsZX0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZTsKCiAgICAgICAgICAgICMgZGF0ZSB0eXBlIGZpZWxkcyBtdXN0IHRvIGdldCBhbGwgZGF0ZSBwYXJhbWV0ZXJzCiAgICAgICAgICAgIGlmICggJEl0ZW0tPntJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVmFsdWUgPQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgICAgICAgICAgICAgICAgICAgICAgPT4gJEdldFBhcmFteyRJbnB1dEtleX0sCiAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpEYXknID0+ICRHZXRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpEYXknIH0sCiAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJzo6VGltZVN0YXJ0OjpNb250aCcgPT4gJEdldFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9LAogICAgICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdGFydDo6WWVhcicgPT4gJEdldFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6OlllYXInIH0sCiAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6OkRheScgICA9PiAkR2V0UGFyYW17ICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpEYXknIH0sCiAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6Ok1vbnRoJyA9PiAkR2V0UGFyYW17ICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpNb250aCcgfSwKICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6WWVhcicgID0+ICRHZXRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6OlllYXInIH0sCiAgICAgICAgICAgICAgICAgICAgfSB8fCAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBkYXRlLXRpbWUgdHlwZSBmaWVsZHMgbXVzdCBnZXQgYWxsIGRhdGUgYW5kIHRpbWUgcGFyYW1ldGVycwogICAgICAgICAgICBlbHNpZiAoICRJdGVtLT57SW5wdXR9LT57VHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAgICAgICAgICRWYWx1ZSA9CiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRJbnB1dEtleSA9PiAkR2V0UGFyYW17JElucHV0S2V5fSwKICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkKICAgICAgICAgICAgICAgICAgICAgICAgLiAnOjpUaW1lU3RhcnQ6Ok1pbnV0ZScgPT4gJEdldFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6Ok1pbnV0ZScgfSwKICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6OkhvdXInID0+ICRHZXRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpIb3VyJyB9LAogICAgICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdGFydDo6RGF5JyAgPT4gJEdldFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6OkRheScgfSwKICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkKICAgICAgICAgICAgICAgICAgICAgICAgLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyA9PiAkR2V0UGFyYW17ICRJbnB1dEtleSAuICc6OlRpbWVTdGFydDo6TW9udGgnIH0sCiAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpZZWFyJyA9PiAkR2V0UGFyYW17ICRJbnB1dEtleSAuICc6OlRpbWVTdGFydDo6WWVhcicgfSwKICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkKICAgICAgICAgICAgICAgICAgICAgICAgLiAnOjpUaW1lU3RvcDo6TWludXRlJyA9PiAkR2V0UGFyYW17ICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpNaW51dGUnIH0sCiAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6OkhvdXInICA9PiAkR2V0UGFyYW17ICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpIb3VyJyB9LAogICAgICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpEYXknICAgPT4gJEdldFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6RGF5JyB9LAogICAgICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpNb250aCcgPT4gJEdldFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6TW9udGgnIH0sCiAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6OlllYXInICA9PiAkR2V0UGFyYW17ICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpZZWFyJyB9LAogICAgICAgICAgICAgICAgICAgIH0gfHwgJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3RoZXIga2luZHMgb2YgZmllbGRzIGNhbiBnZXQgaXRzIHZhbHVlIGRpcmVjdGx5CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFZhbHVlID0gJEdldFBhcmFteyRJbnB1dEtleX0gfHwgJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICAgICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAgICAgICAgICMgY3JlYXRlIHNlYXJjaCBpbnB1dCBlbGVtZW50CiAgICAgICAgICAgIG15ICRJbnB1dFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtU2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkSW5wdXRLZXksCiAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGF0dHJpYnV0ZSByb3cKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBdHRyaWJ1dGVSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICAgPT4gJElucHV0S2V5LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRJdGVtLT57RGVzY3JpcHRpb259IHx8ICRJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgSW5wdXRTdHJpbmcgPT4gJElucHV0U3RyaW5nLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte1hNTEF0dHJpYnV0ZXN9IH0sIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRJbnB1dEtleSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICROYW1lLAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbmV4dCBJVEVNIGlmICEkSXRlbS0+e1N1Yn07CgogICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAkU2VsZi0+X1hNTFNlYXJjaEZvcm1PdXRwdXQoCiAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAgICBYTUxBdHRyaWJ1dGVzID0+ICRQYXJhbXtYTUxBdHRyaWJ1dGVzfSwKICAgICAgICAgICAgTGV2ZWwgICAgICAgICA9PiAkUGFyYW17TGV2ZWx9ICsgMSwKICAgICAgICAgICAgUHJlZml4ICAgICAgICA9PiAkSW5wdXRLZXksCiAgICAgICAgICAgIFByZWZpeE5hbWUgICAgPT4gJE5hbWUsCiAgICAgICAgICAgIEdldFBhcmFtICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1hNTFNlYXJjaEZvcm1HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxGb3JtRGF0YX07CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxHZXRQYXJhbX07CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRm9ybURhdGF9IG5lICdBUlJBWSc7CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxHZXRQYXJhbX0gbmUgJ0FSUkFZJzsKCiAgICAkUGFyYW17TGV2ZWx9IHx8PSAwOwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKCiAgICAgICAgIyBjcmVhdGUgaW5wdXRrZXkKICAgICAgICBteSAkSW5wdXRLZXkgPSAkSXRlbS0+e0tleX07CiAgICAgICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAgICAgJElucHV0S2V5ID0gJFBhcmFte1ByZWZpeH0gLiAnOjonIC4gJElucHV0S2V5OwogICAgICAgIH0KCiAgICAgICAgIyBEYXRlIHR5cGUgZmllbGRzIG11c3QgdG8gZ2V0IGFsbCBkYXRlIHBhcmFtZXRlcnMuCiAgICAgICAgaWYgKCAkSXRlbS0+e0lucHV0fS0+e1R5cGV9IGVxICdEYXRlJyAmJiAkUGFyYW17JElucHV0S2V5fSApIHsKICAgICAgICAgICAgJFBhcmFteyRJbnB1dEtleX0gPQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJElucHV0S2V5ICAgICAgICAgICAgICAgICAgICAgID0+ICRQYXJhbXskSW5wdXRLZXl9LAogICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpEYXknID0+ICRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpEYXknIH0sCiAgICAgICAgICAgICAgICAkSW5wdXRLZXkKICAgICAgICAgICAgICAgICAgICAuICc6OlRpbWVTdGFydDo6TW9udGgnID0+ICRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgfSwKICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdGFydDo6WWVhcicgPT4gJFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6OlllYXInIH0sCiAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6RGF5JyAgID0+ICRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6OkRheScgfSwKICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpNb250aCcgPT4gJFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6TW9udGgnIH0sCiAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6WWVhcicgID0+ICRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6OlllYXInIH0sCiAgICAgICAgICAgICAgICB9IHx8ICcnOwogICAgICAgIH0KCiAgICAgICAgIyBEYXRlLXRpbWUgdHlwZSBmaWVsZHMgbXVzdCBnZXQgYWxsIGRhdGUgYW5kIHRpbWUgcGFyYW1ldGVycy4KICAgICAgICBlbHNpZiAoICRJdGVtLT57SW5wdXR9LT57VHlwZX0gZXEgJ0RhdGVUaW1lJyAmJiAkUGFyYW17JElucHV0S2V5fSApIHsKICAgICAgICAgICAgJFBhcmFteyRJbnB1dEtleX0gPQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJElucHV0S2V5ID0+ICRQYXJhbXskSW5wdXRLZXl9LAogICAgICAgICAgICAgICAgJElucHV0S2V5CiAgICAgICAgICAgICAgICAgICAgLiAnOjpUaW1lU3RhcnQ6Ok1pbnV0ZScgPT4gJFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6Ok1pbnV0ZScgfSwKICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdGFydDo6SG91cicgPT4gJFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6OkhvdXInIH0sCiAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6OkRheScgID0+ICRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpEYXknIH0sCiAgICAgICAgICAgICAgICAkSW5wdXRLZXkKICAgICAgICAgICAgICAgICAgICAuICc6OlRpbWVTdGFydDo6TW9udGgnID0+ICRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgfSwKICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdGFydDo6WWVhcicgPT4gJFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6OlllYXInIH0sCiAgICAgICAgICAgICAgICAkSW5wdXRLZXkKICAgICAgICAgICAgICAgICAgICAuICc6OlRpbWVTdG9wOjpNaW51dGUnID0+ICRQYXJhbXsgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6Ok1pbnV0ZScgfSwKICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpIb3VyJyAgPT4gJFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6SG91cicgfSwKICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpEYXknICAgPT4gJFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6RGF5JyB9LAogICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6Ok1vbnRoJyA9PiAkUGFyYW17ICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpNb250aCcgfSwKICAgICAgICAgICAgICAgICRJbnB1dEtleSAuICc6OlRpbWVTdG9wOjpZZWFyJyAgPT4gJFBhcmFteyAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6WWVhcicgfSwKICAgICAgICAgICAgICAgIH0gfHwgJyc7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzZWFyY2ggZm9ybSBkYXRhCiAgICAgICAgbXkgJFZhbHVlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+SVRTTUNvbmZpZ0l0ZW1TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICAgICAgS2V5ICAgPT4gJElucHV0S2V5LAogICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFteyRJbnB1dEtleX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgc2VhcmNoIGtleQogICAgICAgIG15ICRTZWFyY2hLZXkgPSAkSW5wdXRLZXk7CiAgICAgICAgJFNlYXJjaEtleSA9fiBzeyA6OiB9e1wnXH1bJV1ce1wnfXhtc2c7CiAgICAgICAgJFNlYXJjaEtleSA9ICJbMV17J1ZlcnNpb24nfVsxXXsnJFNlYXJjaEtleSd9WyVdeydDb250ZW50J30iOwoKICAgICAgICAjIElUU01Db25maWdJdGVtU2VhcmNoRm9ybURhdGFHZXQoKSBjYW4gcmV0dXJuIHN0cmluZywgYXJyYXlyZWYgb3IgaGFzaHJlZgogICAgICAgIGlmICggcmVmICRWYWx1ZXMgZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICMgZmlsdGVyIGVtcHR5IGVsZW1lbnRzCiAgICAgICAgICAgIG15IEBTZWFyY2hWYWx1ZXMgPSBncmVwIHskX30gQHskVmFsdWVzfTsKCiAgICAgICAgICAgIGlmIChAU2VhcmNoVmFsdWVzKSB7CiAgICAgICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtYTUxGb3JtRGF0YX0gfSwgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hLZXkgPT4gXEBTZWFyY2hWYWx1ZXMsCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte1hNTEdldFBhcmFtfSB9LCB7CiAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5ID0+IFxAU2VhcmNoVmFsdWVzLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQoKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCRWYWx1ZXMpIHsKCiAgICAgICAgICAgICMgZS5nLiBmb3IgRGF0ZSBiZXR3ZWVuIHNlYXJjaGVzCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte1hNTEZvcm1EYXRhfSB9LCB7CiAgICAgICAgICAgICAgICAkU2VhcmNoS2V5ID0+ICRWYWx1ZXMsCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBpZiAoIHJlZiAkVmFsdWVzIGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIGlmICggJEl0ZW0tPntJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZScgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVzLT57Jy1iZXR3ZWVuJ30gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGdldCB0aW1lIGVsZW1ldCB2YWx1ZXMKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkU3RhcnREYXRlLCAkU3RvcERhdGUgKSA9IEB7ICRWYWx1ZXMtPnsnLWJldHdlZW4nfSB9OwogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRTdGFydFllYXIsICRTdGFydE1vbnRoLCAkU3RhcnREYXkgKSA9IHNwbGl0KCAvLS8sICRTdGFydERhdGUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkU3RvcFllYXIsICAkU3RvcE1vbnRoLCAgJFN0b3BEYXkgKSAgPSBzcGxpdCggLy0vLCAkU3RvcERhdGUgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3RvcmUgdGltZSBlbG1lbnQgdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte1hNTEdldFBhcmFtfSB9LCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpEYXknICAgPT4gJFN0YXJ0RGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgPT4gJFN0YXJ0TW9udGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6OlllYXInICA9PiAkU3RhcnRZZWFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6OkRheScgICAgPT4gJFN0b3BEYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6TW9udGgnICA9PiAkU3RvcE1vbnRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6OlllYXInICAgPT4gJFN0b3BZZWFyLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJEl0ZW0tPntJbnB1dH0tPntUeXBlfSBlcSAnRGF0ZVRpbWUnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFZhbHVlcy0+eyctYmV0d2Vlbid9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGltZSBlbGVtZXQgdmFsdWVzCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJFN0YXJ0RGF0ZVRpbWUsICRTdG9wRGF0ZVRpbWUgKSAgICAgICAgICA9IEB7ICRWYWx1ZXMtPnsnLWJldHdlZW4nfSB9OwogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRTdGFydERhdGUsICRTdGFydFRpbWUgKSAgICAgICAgICAgICAgICAgPSBzcGxpdCggL1xzLywgJFN0YXJ0RGF0ZVRpbWUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkU3RhcnRZZWFyLCAkU3RhcnRNb250aCwgJFN0YXJ0RGF5ICkgICAgID0gc3BsaXQoIC8tLywgJFN0YXJ0RGF0ZSApOwogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRTdGFydEhvdXIsICRTdGFydE1pbnV0ZSwgJFN0YXJ0U2Vjb25kICkgPSBzcGxpdCggL1w6LywgJFN0YXJ0VGltZSApOwoKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkU3RvcERhdGUsICRTdG9wVGltZSApID0gc3BsaXQoIC9ccy8sICRTdG9wRGF0ZVRpbWUgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkU3RvcFllYXIsICRTdG9wTW9udGgsICAkU3RvcERheSApICAgID0gc3BsaXQoIC8tLywgICRTdG9wRGF0ZSApOwogICAgICAgICAgICAgICAgICAgICAgICBteSAoICRTdG9wSG91ciwgJFN0b3BNaW51dGUsICRTdG9wU2Vjb25kICkgPSBzcGxpdCggL1w6LywgJFN0b3BUaW1lICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHN0b3JlIHRpbWUgZWxtZW50IHZhbHVlcwogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtYTUxHZXRQYXJhbX0gfSwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5ICAgICAgICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6Ok1pbnV0ZScgPT4gJFN0YXJ0TWludXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpIb3VyJyAgID0+ICRTdGFydEhvdXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RhcnQ6OkRheScgICAgPT4gJFN0YXJ0RGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgID0+ICRTdGFydE1vbnRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0YXJ0OjpZZWFyJyAgID0+ICRTdGFydFllYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6TWludXRlJyAgPT4gJFN0b3BNaW51dGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6SG91cicgICAgPT4gJFN0b3BIb3VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6OkRheScgICAgID0+ICRTdG9wRGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5IC4gJzo6VGltZVN0b3A6Ok1vbnRoJyAgID0+ICRTdG9wTW9udGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkSW5wdXRLZXkgLiAnOjpUaW1lU3RvcDo6WWVhcicgICAgPT4gJFN0b3BZZWFyLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte1hNTEdldFBhcmFtfSB9LCB7CiAgICAgICAgICAgICAgICAgICAgJElucHV0S2V5ID0+ICRWYWx1ZXMsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgbmV4dCBJVEVNIGlmICEkSXRlbS0+e1N1Yn07CgogICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAkU2VsZi0+X1hNTFNlYXJjaEZvcm1HZXQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgIFhNTEZvcm1EYXRhICAgPT4gJFBhcmFte1hNTEZvcm1EYXRhfSwKICAgICAgICAgICAgWE1MR2V0UGFyYW0gICA9PiAkUGFyYW17WE1MR2V0UGFyYW19LAogICAgICAgICAgICBMZXZlbCAgICAgICAgID0+ICRQYXJhbXtMZXZlbH0gKyAxLAogICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRJbnB1dEtleSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1hNTFNlYXJjaEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MQXR0cmlidXRlc30gbmUgJ0FSUkFZJzsKCiAgICAkUGFyYW17TGV2ZWx9IHx8PSAwOwogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICAjIHNldCBwcmVmaXgKICAgICAgICBteSAkSW5wdXRLZXkgPSAkSXRlbS0+e0tleX07CiAgICAgICAgbXkgJE5hbWUgICAgID0gJEl0ZW0tPntOYW1lfTsKICAgICAgICBpZiAoICRQYXJhbXtQcmVmaXh9ICkgewogICAgICAgICAgICAkSW5wdXRLZXkgPSAkUGFyYW17UHJlZml4fSAuICc6OicgLiAkSW5wdXRLZXk7CiAgICAgICAgICAgICROYW1lICAgICA9ICRQYXJhbXtQcmVmaXhOYW1lfSAuICc6OicgLiAkTmFtZTsKICAgICAgICB9CgogICAgICAgICMgc3RvcmUgYXR0cmlidXRlLCBpZiBtYXJrZWQgYXMgc2VhcmNoYWJsZQogICAgICAgIGlmICggJEl0ZW0tPntTZWFyY2hhYmxlfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17WE1MQXR0cmlidXRlc30gfSwgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJElucHV0S2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJE5hbWUsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICRTZWxmLT5fWE1MU2VhcmNoQXR0cmlidXRlc0dldCgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgIFhNTEF0dHJpYnV0ZXMgPT4gJFBhcmFte1hNTEF0dHJpYnV0ZXN9LAogICAgICAgICAgICBMZXZlbCAgICAgICAgID0+ICRQYXJhbXtMZXZlbH0gKyAxLAogICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRJbnB1dEtleSwKICAgICAgICAgICAgUHJlZml4TmFtZSAgICA9PiAkTmFtZSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Modules/AgentITSMConfigItemZoom.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApIHx8IDA7CiAgICBteSAkVmVyc2lvbklEICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZlcnNpb25JRCcgKSAgICB8fCAwOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICBpZiAoICEkSGFzQWNjZXNzICkgewoKICAgICAgICAjIGVycm9yIHBhZ2UKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgc2hvdyB2ZXJzaW9ucwogICAgJFBhcmFte1Nob3dWZXJzaW9uc30gPSAwOwogICAgaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2hvd1ZlcnNpb25zJyApICkgewogICAgICAgICRQYXJhbXtTaG93VmVyc2lvbnN9ID0gMTsKICAgIH0KCiAgICAjIGdldCBjb250ZW50CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgIG15ICRWZXJzaW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uWm9vbUxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwogICAgaWYgKCAhJFZlcnNpb25MaXN0LT5bMF0tPntWZXJzaW9uSUR9ICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzIScsICRDb25maWdJdGVtSUQgKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZXQgdmVyc2lvbiBpZAogICAgaWYgKCAhJFZlcnNpb25JRCApIHsKICAgICAgICAkVmVyc2lvbklEID0gJFZlcnNpb25MaXN0LT5bLTFdLT57VmVyc2lvbklEfTsKICAgIH0KICAgIGlmICggJFZlcnNpb25JRCBuZSAkVmVyc2lvbkxpc3QtPlstMV0tPntWZXJzaW9uSUR9ICkgewogICAgICAgICRQYXJhbXtTaG93VmVyc2lvbnN9ID0gMTsKICAgIH0KCiAgICAjIHNldCB2ZXJzaW9uIGlkIGluIHBhcmFtIGhhc2ggKG9ubHkgZm9yIG1lbnUgbW9kdWxlKQogICAgaWYgKCRWZXJzaW9uSUQpIHsKICAgICAgICAkUGFyYW17VmVyc2lvbklEfSA9ICRWZXJzaW9uSUQ7CiAgICB9CgogICAgIyBydW4gY29uZmlnIGl0ZW0gbWVudSBtb2R1bGVzCiAgICBpZiAoIHJlZiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6TWVudU1vZHVsZScpIGVxICdIQVNIJyApIHsKICAgICAgICBteSAlTWVudXMgICA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNZW51TW9kdWxlJykgfTsKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgIE1FTlU6CiAgICAgICAgZm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgIG15ICRBY2Nlc3M7CiAgICAgICAgICAgIG15ICRQZXJtaXNzaW9uOwogICAgICAgICAgICBteSAkQWN0aW9uID0gJE1lbnVzeyRNZW51fS0+e0FjdGlvbn07CgogICAgICAgICAgICBpZiAoJEFjdGlvbikgewogICAgICAgICAgICAgICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokQWN0aW9uIikgfHwge307CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnICYmICRDb25maWctPntQZXJtaXNzaW9ufSApIHsKICAgICAgICAgICAgICAgICAgICAkUGVybWlzc2lvbiA9ICRDb25maWctPntQZXJtaXNzaW9ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAhJEFjY2VzcyAmJiBkZWZpbmVkICRQZXJtaXNzaW9uICkgewoKICAgICAgICAgICAgICAgICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFBlcm1pc3Npb24sCiAgICAgICAgICAgICAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBuZXh0IE1FTlUgaWYgISRBY2Nlc3M7CgogICAgICAgICAgICAjIGxvYWQgbW9kdWxlCiAgICAgICAgICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1lbnVzeyRNZW51fS0+e01vZHVsZX0gKSApIHsKCiAgICAgICAgICAgICAgICBteSAkT2JqZWN0ID0gJE1lbnVzeyRNZW51fS0+e01vZHVsZX0tPm5ldygKICAgICAgICAgICAgICAgICAgICAleyRTZWxmfSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFNlbGYtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBjbGFzc2VzCiAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9ICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdQb3BVcCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntNZW51Q2xhc3N9ID0gJ0FzUG9wdXAnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdCYWNrJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51fS0+e01lbnVDbGFzc30gPSAnSGlzdG9yeUJhY2snOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHJ1biBtb2R1bGUKICAgICAgICAgICAgICAgICRDb3VudGVyID0gJE9iamVjdC0+UnVuKAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgIENvdW50ZXIgICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkTWVudXN7JE1lbnV9LAogICAgICAgICAgICAgICAgICAgIE1lbnVJRCAgICAgPT4gJE1lbnUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGJ1aWxkIHZlcnNpb24gdHJlZQogICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ1RyZWUnICk7CiAgICBteSAkQ291bnRlciA9IDE7CiAgICBpZiAoICEkUGFyYW17U2hvd1ZlcnNpb25zfSAmJiAkVmVyc2lvbklEIGVxICRWZXJzaW9uTGlzdC0+Wy0xXS0+e1ZlcnNpb25JRH0gKSB7CiAgICAgICAgJENvdW50ZXIgICAgID0gQHskVmVyc2lvbkxpc3R9OwogICAgICAgICRWZXJzaW9uTGlzdCA9IFsgJFZlcnNpb25MaXN0LT5bLTFdIF07CiAgICB9CgogICAgIyBnZXQgbGFzdCB2ZXJzaW9uCiAgICBteSAkTGFzdFZlcnNpb24gPSAkVmVyc2lvbkxpc3QtPlstMV07CgogICAgIyBzZXQgaW5jaWRlbnQgc2lnbmFsCiAgICBteSAlSW5jaVNpZ25hbHMgPSAoCiAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCd3YXJuaW5nJykgICAgID0+ICd5ZWxsb3dsZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnaW5jaWRlbnQnKSAgICA9PiAncmVkbGVkJywKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgY29sb3IgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIGlmICEkUHJlZmVyZW5jZXN7Q29sb3J9OwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvdmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZSBhbmQgcmVtb3ZlIGFueXRoaW5nIHNlY3VyaXR5IHJlbGV2YW50LgogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciAgICAgPSBsYyAkUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICVTYWZlRGVwbFN0YXRlQ29sb3IgPSAkSFRNTFV0aWxzT2JqZWN0LT5TYWZldHkoCiAgICAgICAgICAgIFN0cmluZyAgICAgICA9PiAkRGVwbFN0YXRlQ29sb3IsCiAgICAgICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgICAgICBOb09iamVjdCAgICAgPT4gMSwKICAgICAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgICAgIE5vU1ZHICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0ltZyAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9JbnRTcmNMb2FkID0+IDEsCiAgICAgICAgICAgIE5vRXh0U3JjTG9hZCA9PiAxLAogICAgICAgICAgICBOb0phdmFTY3JpcHQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkRGVwbFN0YXRlQ29sb3IgPSAkU2FmZURlcGxTdGF0ZUNvbG9ye1N0cmluZ30gLy8gJyc7CgogICAgICAgICMgYWRkIHRvIHN0eWxlIGNsYXNzZXMgc3RyaW5nCiAgICAgICAgJFN0eWxlQ2xhc3NlcyAuPSAiCiAgICAgICAgICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIG91dHB1dCB2ZXJzaW9uIHRyZWUgaGVhZGVyCiAgICBpZiAoICRQYXJhbXtTaG93VmVyc2lvbnN9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDb2xsYXBzZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdFeHBhbmQnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXNlciBvYmplY3QKICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIG91dHB1dCB2ZXJzaW9uIHRyZWUKICAgIGZvciBteSAkVmVyc2lvbkhhc2ggKCBAeyRWZXJzaW9uTGlzdH0gKSB7CgogICAgICAgICRQYXJhbXtDcmVhdGVCeVVzZXJGdWxsTmFtZX0gPSAkVXNlck9iamVjdC0+VXNlck5hbWUoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVmVyc2lvbkhhc2gtPntDcmVhdGVCeX0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1RyZWVJdGVtJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyRDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgICV7JFZlcnNpb25IYXNofSwKICAgICAgICAgICAgICAgIENvdW50ICAgICAgPT4gJENvdW50ZXIsCiAgICAgICAgICAgICAgICBJbmNpU2lnbmFsID0+ICRJbmNpU2lnbmFsc3sgJFZlcnNpb25IYXNoLT57SW5jaVN0YXRlVHlwZX0gfSwKICAgICAgICAgICAgICAgIERlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkVmVyc2lvbkhhc2gtPntEZXBsU3RhdGV9IH0sCiAgICAgICAgICAgICAgICBBY3RpdmUgICAgID0+ICRWZXJzaW9uSGFzaC0+e1ZlcnNpb25JRH0gZXEgJFZlcnNpb25JRCA/ICdBY3RpdmUnIDogJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJENvdW50ZXIrKzsKICAgIH0KCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoIFZhbHVlID0+ICRDb25maWdJdGVtLT57TnVtYmVyfSApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgIyBnZXQgdmVyc2lvbgogICAgbXkgJFZlcnNpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICk7CgogICAgaWYgKAogICAgICAgICRWZXJzaW9uCiAgICAgICAgJiYgcmVmICRWZXJzaW9uIGVxICdIQVNIJwogICAgICAgICYmICRWZXJzaW9uLT57WE1MRGVmaW5pdGlvbn0KICAgICAgICAmJiAkVmVyc2lvbi0+e1hNTERhdGF9CiAgICAgICAgJiYgcmVmICRWZXJzaW9uLT57WE1MRGVmaW5pdGlvbn0gZXEgJ0FSUkFZJwogICAgICAgICYmIHJlZiAkVmVyc2lvbi0+e1hNTERhdGF9IGVxICdBUlJBWScKICAgICAgICAmJiAkVmVyc2lvbi0+e1hNTERhdGF9LT5bMV0KICAgICAgICAmJiByZWYgJFZlcnNpb24tPntYTUxEYXRhfS0+WzFdIGVxICdIQVNIJwogICAgICAgICYmICRWZXJzaW9uLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259CiAgICAgICAgJiYgcmVmICRWZXJzaW9uLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259IGVxICdBUlJBWScKICAgICAgICApCiAgICB7CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmVyc2lvbi0+e05hbWV9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBuYW1lCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RhdGEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gVHJhbnNsYXRhYmxlKCdUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtJyksCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICA9PiAkVmVyc2lvbi0+e05hbWV9LAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiAgPT4gMTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgZGVwbG95bWVudCBzdGF0ZQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICRWZXJzaW9uLT57RGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBJZGVudGF0aW9uID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RhdGEnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKSwKICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+IFRyYW5zbGF0YWJsZSgnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nKSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICAgICAkVmVyc2lvbi0+e0luY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgSWRlbnRhdGlvbiA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHN0YXJ0IHhtbCBvdXRwdXQKICAgICAgICAkU2VsZi0+X1hNTE91dHB1dCgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkVmVyc2lvbi0+e1hNTERlZmluaXRpb259LAogICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRWZXJzaW9uLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259LT5bMV0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBjcmVhdGUgJiBjaGFuZ2UgdXNlciBkYXRhCiAgICBmb3IgbXkgJEtleSAocXcoQ3JlYXRlIENoYW5nZSkpIHsKICAgICAgICAkQ29uZmlnSXRlbS0+eyAkS2V5IC4gJ0J5VXNlckZ1bGxOYW1lJyB9ID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJENvbmZpZ0l0ZW0tPnsgJEtleSAuICdCeScgfSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IG1ldGEgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01ldGEnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAleyRMYXN0VmVyc2lvbn0sCiAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICBDdXJJbmNpU2lnbmFsID0+ICRJbmNpU2lnbmFsc3sgJExhc3RWZXJzaW9uLT57Q3VySW5jaVN0YXRlVHlwZX0gfSwKICAgICAgICAgICAgQ3VyRGVwbFNpZ25hbCA9PiAkRGVwbFNpZ25hbHN7ICRMYXN0VmVyc2lvbi0+e0RlcGxTdGF0ZX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdldCBsaW5rZWQgb2JqZWN0cwogICAgbXkgJExpbmtMaXN0V2l0aERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCAgICAgICAgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBLZXkgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgU3RhdGUgICAgICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIE9iamVjdFBhcmFtZXRlcnMgPT4gewogICAgICAgICAgICBUaWNrZXQgPT4gewogICAgICAgICAgICAgICAgSWdub3JlTGlua2VkVGlja2V0U3RhdGVUeXBlcyA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdGFibGUgdmlldyBtb2RlCiAgICBteSAkTGlua1RhYmxlVmlld01vZGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0xpbmtPYmplY3Q6OlZpZXdNb2RlJyk7CgogICAgIyBjcmVhdGUgdGhlIGxpbmsgdGFibGUKICAgIG15ICRMaW5rVGFibGVTdHJnID0gJExheW91dE9iamVjdC0+TGlua09iamVjdFRhYmxlQ3JlYXRlKAogICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgVmlld01vZGUgICAgICAgICA9PiAkTGlua1RhYmxlVmlld01vZGUsCiAgICAgICAgT2JqZWN0ICAgICAgICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBvdXRwdXQgdGhlIGxpbmsgdGFibGUKICAgIGlmICgkTGlua1RhYmxlU3RyZykgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdMaW5rVGFibGUnIC4gJExpbmtUYWJsZVZpZXdNb2RlLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExpbmtUYWJsZVN0cmcgPT4gJExpbmtUYWJsZVN0cmcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICBpZiAoQEF0dGFjaG1lbnRzKSB7CgogICAgICAgICMgZ2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgMXN0IGF0dGFjaG1lbnQKICAgICAgICBteSAkRmlyc3RBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50c1swXSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudHMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaXJzdEF0dGFjaG1lbnQtPntGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBGaWxlc2l6ZSAgICAgPT4gJEZpcnN0QXR0YWNobWVudC0+e0ZpbGVzaXplfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIHRoZSAxc3QgYXR0YWNobWVudCB3YXMgZGlyZWN0bHkgcmVuZGVyZWQgaW50byB0aGUgMXN0IHJvdydzIHJpZ2h0IGNlbGwsIGFsbCBmdXJ0aGVyCiAgICAgICAgIyBhdHRhY2htZW50cyBhcmUgcmVuZGVyZWQgaW50byBhIHNlcGFyYXRlIHJvdwogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICMgc2tpcCB0aGUgMXN0IGF0dGFjaG1lbnQKICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICRBdHRhY2htZW50IGVxICRBdHRhY2htZW50c1swXTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgY3VycmVudCBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgID0+ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVzaXplfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgaGFuZGxlIERvd25sb2FkQXR0YWNobWVudAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgICMgZ2V0IGRhdGEgZm9yIGF0dGFjaG1lbnQKICAgICAgICBteSAkRmlsZW5hbWUgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZW5hbWUnICk7CiAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiBlcnJvciBpZiBmaWxlIGRvZXMgbm90IGV4aXN0CiAgICAgICAgaWYgKCAhJEF0dGFjaG1lbnREYXRhICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAleyRBdHRhY2htZW50RGF0YX0sCiAgICAgICAgICAgIFR5cGUgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlblZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnVXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHQnLAogICAgICAgIFZhbHVlID0+ICRTZWxmLT57VXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHR9LAogICAgKTsKCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtWm9vbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJXskTGFzdFZlcnNpb259LAogICAgICAgICAgICAleyRDb25maWdJdGVtfSwKICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkSW5jaVNpZ25hbHN7ICRMYXN0VmVyc2lvbi0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkTGFzdFZlcnNpb24tPntEZXBsU3RhdGV9IH0sCiAgICAgICAgICAgIFN0eWxlQ2xhc3NlcyAgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBmb290ZXIKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfWE1MT3V0cHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERhdGF9OwogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEYXRhfSBuZSAnSEFTSCc7CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwoKICAgICRQYXJhbXtMZXZlbH0gfHw9IDA7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewogICAgICAgIENPVU5URVI6CiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkSXRlbS0+e0NvdW50TWF4fSApIHsKCiAgICAgICAgICAgICMgc3RvcCBsb29wLCBpZiBubyBjb250ZW50IHdhcyBnaXZlbgogICAgICAgICAgICBsYXN0IENPVU5URVIgaWYgIWRlZmluZWQgJFBhcmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLT57Q29udGVudH07CgogICAgICAgICAgICAjIGxvb2t1cCB2YWx1ZQogICAgICAgICAgICBteSAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MVmFsdWVMb29rdXAoCiAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAgICAgIyBjcmVhdGUgb3V0cHV0IHN0cmluZwogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgIEl0ZW0gID0+ICRJdGVtLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjYWxjdWxhdGUgaW5kZW50YXRpb24gZm9yIGxlZnQtcGFkZGluZyBjc3MgYmFzZWQgb24gMTVweCBwZXIgbGV2ZWwgYW5kIDEwcHggYXMgZGVmYXVsdAogICAgICAgICAgICBteSAkSW5kZW50YXRpb24gPSAxMDsKCiAgICAgICAgICAgIGlmICggJFBhcmFte0xldmVsfSApIHsKICAgICAgICAgICAgICAgICRJbmRlbnRhdGlvbiArPSAxNSAqICRQYXJhbXtMZXZlbH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3V0cHV0IGRhdGEgYmxvY2sKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdEYXRhJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICRJdGVtLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJEl0ZW0tPntEZXNjcmlwdGlvbn0gfHwgJEl0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgSW5kZW50YXRpb24gPT4gJEluZGVudGF0aW9uLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAgICAgaWYgKCAkSXRlbS0+e1N1Yn0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+X1hNTE91dHB1dCgKICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXSwKICAgICAgICAgICAgICAgICAgICBMZXZlbCAgICAgICAgID0+ICRQYXJhbXtMZXZlbH0gKyAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Modules/AJAXDynamicFieldConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBSkFYRHluYW1pY0ZpZWxkQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkNvbmZpZ0l0ZW0nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpDb25maWdJdGVtJyk7CgogICAgaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1BhcmFtZXRlciBTdWJhY3Rpb24gaXMgbWlzc2luZy4nLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRGF0YTsKCiAgICAjIFRPRE86IHdlIHNob3VsZCB1c2UgdGhlIHNhbWUgbmFtaW5nIGxpa2UgREYtTERBUCAoQXV0b0ZpbGwpIG9yIHN0YW5kYXJkaXplIHRoZXNlCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnR2V0QWRkaXRpb25hbERGU3RvcmFnZURhdGEnICkgewogICAgICAgIG15ICRTb3VyY2VEeW5hbWljRmllbGROYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvdXJjZUR5bmFtaWNGaWVsZE5hbWUnICk7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkU291cmNlRHluYW1pY0ZpZWxkTmFtZSB8fCAhbGVuZ3RoICRTb3VyY2VEeW5hbWljRmllbGROYW1lICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ1BhcmFtZXRlciBTb3VyY2VEeW5hbWljRmllbGROYW1lIGlzIG1pc3NpbmcuJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15IEBTZWxlY3RlZENvbmZpZ0l0ZW1JRHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KAogICAgICAgICAgICBQYXJhbSA9PiAnU2VsZWN0ZWRDb25maWdJdGVtSURzW10nLAogICAgICAgICAgICBSYXcgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgSWYgbm8gY29uZmlnIGl0ZW0gSURzIHdlcmUgZ2l2ZW4sIHRoZSBhcnJheSBjb250YWlucyBvbmUgZWxlbWVudCB3aXRoIGFuIGVtcHR5IHN0cmluZy4KICAgICAgICAjIFJlbW92ZSBpdC4KICAgICAgICBAU2VsZWN0ZWRDb25maWdJdGVtSURzID0gZ3JlcCB7IGRlZmluZWQgJF8gJiYgbGVuZ3RoICRfIH0gQFNlbGVjdGVkQ29uZmlnSXRlbUlEczsKCiAgICAgICAgJERhdGEgPSAkRHluYW1pY0ZpZWxkQ29uZmlnSXRlbU9iamVjdC0+R2V0QWRkaXRpb25hbERGU3RvcmFnZURhdGEoCiAgICAgICAgICAgIFNvdXJjZUR5bmFtaWNGaWVsZE5hbWUgPT4gJFNvdXJjZUR5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgIFNlbGVjdGVkQ29uZmlnSXRlbUlEcyAgPT4gXEBTZWxlY3RlZENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIFN0b3JhZ2VUeXBlICAgICAgICAgICAgPT4gJ0Zyb250ZW5kJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgRGF0YSA9PiAkRGF0YSwKICAgICk7CgogICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiAvLyAnW10nLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/Dashboard/ITSMConfigItemGeneric.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpJVFNNQ29uZmlnSXRlbUdlbmVyaWM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBHZXQgbmVlZGVkIHBhcmFtZXRlcnMuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnIE5hbWUgVXNlcklEKSkgewogICAgICAgIGRpZSAiR290IG5vICROZWVkZWQhIiBpZiAoICEkU2VsZi0+eyROZWVkZWR9ICk7CiAgICB9CgogICAgIyBHZXQgcGFyYW0gb2JqZWN0LgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgR2V0IGN1cnJlbnQgZmlsdGVyLgogICAgbXkgJE5hbWUgICAgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ05hbWUnICkgfHwgJyc7CiAgICBteSAkUHJlZmVyZW5jZXNLZXkgPSAnRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljJyAuICRTZWxmLT57TmFtZX07CiAgICBpZiAoICRTZWxmLT57TmFtZX0gZXEgJE5hbWUgKSB7CiAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbHRlcicgKSB8fCAnJzsKICAgIH0KCiAgICAjIEdldCBjb25maWcgb2JqZWN0LgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBSZW1lbWJlciBmaWx0ZXIuCiAgICBpZiAoICRTZWxmLT57RmlsdGVyfSApIHsKCiAgICAgICAgIyBVcGRhdGUgc2Vzc2lvbi4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJFByZWZlcmVuY2VzS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgICk7CgogICAgICAgICMgVXBkYXRlIHByZWZlcmVuY2VzLgogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFByZWZlcmVuY2VzS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBTZXQgZGVmYXVsdCBmaWx0ZXIgaWYgbm90IHNldCB5ZXQuCiAgICBpZiAoICEkU2VsZi0+e0ZpbHRlcn0gKSB7CiAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJFNlbGYtPnskUHJlZmVyZW5jZXNLZXl9IHx8ICRTZWxmLT57Q29uZmlnfS0+e0ZpbHRlcn0gfHwgJ0FsbCc7CiAgICB9CgogICAgIyBTZXR1cCB0aGUgcHJlZnJlbmNlcyBrZXlzLgogICAgJFNlbGYtPntQcmVmS2V5U2hvd259ICAgPSAnRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljJyAuICRTZWxmLT57TmFtZX0gLiAnLVNob3duJzsKICAgICRTZWxmLT57UHJlZktleVJlZnJlc2h9ID0gJ0Rhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpYycgLiAkU2VsZi0+e05hbWV9IC4gJy1SZWZyZXNoJzsKCiAgICAkU2VsZi0+e1BhZ2VTaG93bn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPnsgJFNlbGYtPntQcmVmS2V5U2hvd259IH0KICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPntMaW1pdH0gfHwgMTA7CgogICAgJFNlbGYtPntQYWdlUmVmcmVzaH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPnsgJFNlbGYtPntQcmVmS2V5UmVmcmVzaH0gfQogICAgICAgIHx8IDE7CgogICAgJFNlbGYtPntTdGFydEhpdH0gPSBpbnQoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUHJlZmVyZW5jZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBAUGFyYW1zID0gKAogICAgICAgIHsKICAgICAgICAgICAgRGVzYyAgPT4gVHJhbnNsYXRhYmxlKCdTaG93biBjb25maWcgaXRlbXMnKSwKICAgICAgICAgICAgTmFtZSAgPT4gJFNlbGYtPntQcmVmS2V5U2hvd259LAogICAgICAgICAgICBCbG9jayA9PiAnT3B0aW9uJywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgNSAgPT4gJyA1JywKICAgICAgICAgICAgICAgIDEwID0+ICcxMCcsCiAgICAgICAgICAgICAgICAxNSA9PiAnMTUnLAogICAgICAgICAgICAgICAgMjAgPT4gJzIwJywKICAgICAgICAgICAgICAgIDI1ID0+ICcyNScsCiAgICAgICAgICAgICAgICAzMCA9PiAnMzAnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkU2VsZi0+e1BhZ2VTaG93bn0sCiAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBQYXJhbXM7Cn0KCnN1YiBDb25maWcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gKAogICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAoKICAgICAgICAjIFJlbWVtYmVyLCBkbyBub3QgYWxsb3cgdG8gdXNlIHBhZ2UgY2FjaGUKICAgICAgICAjIChpdCdzIG5vdCB3b3JraW5nIGJlY2F1c2Ugb2YgaW50ZXJuYWwgZmlsdGVyKQogICAgICAgIENhY2hlS2V5ID0+IHVuZGVmLAogICAgICAgIENhY2hlVFRMID0+IHVuZGVmLAogICAgKTsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRQYXJhbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAjIEdldCBzb3J0aW5nIHBhcmFtZXRlcnMuCiAgICAkUGFyYW17U29ydEJ5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkgfHwgJ051bWJlcic7CgogICAgIyBHZXQgb3JkZXJpbmcgcGFyYW1ldGVycy4KICAgICRQYXJhbXtPcmRlckJ5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdPcmRlckJ5JyApIHx8ICdVcCc7CgogICAgIyBTZXQgU29ydCBhbmQgT3JkZXIgYnkgYXMgQXJyYXlzLgogICAgbXkgQFNvcnRCeUFycmF5ICA9ICggJFBhcmFte1NvcnRCeX0gKTsKICAgIG15IEBPcmRlckJ5QXJyYXkgPSAoICRQYXJhbXtPcmRlckJ5fSApOwoKICAgICMgR2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QuCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIEdldCBjbGFzcyBsaXN0LgogICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBUbyBzdG9yZSB0aGUgY29sb3IgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcy4KICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIEdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzLgogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBTZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMuCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgIyBUbyBzdG9yZSBkZXBsIHN0YXRlIGlkcy4KICAgIG15ICREZXBsU3RhdGVJRHM7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIEdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzLgogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMuCiAgICAgICAgbmV4dCBJVEVNSUQgaWYgISRQcmVmZXJlbmNlc3tDb2xvcn07CgogICAgICAgICMgR2V0IGRlcGxveW1lbnQgc3RhdGUuCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIFJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycy4KICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBTdG9yZSB0aGUgb3JpZ2luYWwgZGVwbG95bWVudCBzdGF0ZSBhcyBrZXkKICAgICAgICAjIGFuZCB0aGUgc3Mgc2FmZSBjb3ZlcnRlZCBkZXBsb3ltZW50IHN0YXRlIGFzIHZhbHVlLgogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICREZXBsU3RhdGU7CgogICAgICAgICMgY29udmVydCB0byBsb3dlciBjYXNlIGFuZCByZW1vdmUgYW55dGhpbmcgc2VjdXJpdHkgcmVsZXZhbnQuCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yICAgICA9IGxjICRQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgJVNhZmVEZXBsU3RhdGVDb2xvciA9ICRIVE1MVXRpbHNPYmplY3QtPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICREZXBsU3RhdGVDb2xvciwKICAgICAgICAgICAgTm9BcHBsZXQgICAgID0+IDEsCiAgICAgICAgICAgIE5vT2JqZWN0ICAgICA9PiAxLAogICAgICAgICAgICBOb0VtYmVkICAgICAgPT4gMSwKICAgICAgICAgICAgTm9TVkcgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vSW1nICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0ludFNyY0xvYWQgPT4gMSwKICAgICAgICAgICAgTm9FeHRTcmNMb2FkID0+IDEsCiAgICAgICAgICAgIE5vSmF2YVNjcmlwdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICREZXBsU3RhdGVDb2xvciA9ICRTYWZlRGVwbFN0YXRlQ29sb3J7U3RyaW5nfSAvLyAnJzsKCiAgICAgICAgIyBBZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcuCiAgICAgICAgJFN0eWxlQ2xhc3NlcyAuPSAiCiAgICAgICAgICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwoKICAgICAgICAjIFNldCBkZXBsIHN0YXRlIGlkcy4KICAgICAgICBwdXNoIEB7JERlcGxTdGF0ZUlEc30sICRJdGVtSUQ7CiAgICB9CgogICAgIyBXcmFwIGludG8gc3R5bGUgdGFncy4KICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIFRvIHN0b3JlIHRoZSBkZWZhdWx0IGNsYXNzLgogICAgbXkgJENsYXNzSURBdXRvID0gJyc7CgogICAgIyBUbyBzdG9yZSB0aGUgTmF2QmFyIGZpbHRlcnMuCiAgICBteSAlRmlsdGVyczsKCiAgICAjIERlZmluZSBwb3NpdGlvbiBvZiB0aGUgZmlsdGVyIGluIHRoZSBmcm9udGVuZC4KICAgIG15ICRQcmlvQ291bnRlciA9IDEwMDA7CgogICAgIyBUbyBzdG9yZSB0aGUgdG90YWwgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBpbiBhbGwgY2xhc3NlcyB0aGF0IHRoZSB1c2VyIGhhcyBhY2Nlc3MuCiAgICBteSAkVG90YWxDb3VudDsKCiAgICAjIFRvIHN0b3JlIGFsbCB0aGUgY2xhc2VzIHRoYXQgdGhlIHVzZXIgaGFzIGFjY2VzcywgdXNlZCBpbiBzZWFyY2ggZm9yIGZpbHRlciAnQWxsJy4KICAgIG15ICRBY2Nlc3NDbGFzc0xpc3Q7CgogICAgIyBHZXQgY29uZmlnIGl0ZW0gb2JqZWN0LgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIERlZmluZSBpbmNpZGVudCBzaWduYWxzLCBuZWVkZWQgZm9yIHNlcnZpY2VzLgogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgIENMQVNTSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJHskQ2xhc3NMaXN0fXskYX0gY21wICR7JENsYXNzTGlzdH17JGJ9IH0ga2V5cyAleyRDbGFzc0xpc3R9ICkgewoKICAgICAgICAjIENoZWNrIHBlcm1pc3Npb24uCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NJRCBpZiAhJEhhc0FjY2VzczsKCiAgICAgICAgIyBJbnNlcnQgdGhpcyBjbGFzcyB0byBiZSBwYXNzZWQgYXMgc2VhcmNoIHBhcmFtZXRlciBmb3IgZmlsdGVyICdBbGwnLgogICAgICAgIHB1c2ggQHskQWNjZXNzQ2xhc3NMaXN0fSwgJENsYXNzSUQ7CgogICAgICAgICMgSW5jcmVhc2UgdGhlIFByaW9Db3VudGVyLgogICAgICAgICRQcmlvQ291bnRlcisrOwoKICAgICAgICAjIEFkZCBmaWx0ZXIgd2l0aCBwYXJhbXMgZm9yIHRoZSBzZWFyY2ggbWV0aG9kLgogICAgICAgICRGaWx0ZXJzeyAkQ2xhc3NMaXN0LT57JENsYXNzSUR9IH0gPSB7CiAgICAgICAgICAgIE5hbWUgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICBQcmlvICAgPT4gJFByaW9Db3VudGVyLAogICAgICAgICAgICBTZWFyY2ggPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICA9PiBbJENsYXNzSURdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSURzICAgICA9PiAkRGVwbFN0YXRlSURzLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBcQFNvcnRCeUFycmF5LAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBcQE9yZGVyQnlBcnJheSwKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKCiAgICAgICAgIyBSZW1lbWJlciB0aGUgZmlyc3QgY2xhc3MgaWQgdG8gc2hvdyB0aGlzIGluIHRoZSBvdmVydmlldwogICAgICAgICMgaWYgbm8gY2xhc3MgaWQgd2FzIGdpdmVuLgogICAgICAgIGlmICggISRDbGFzc0lEQXV0byApIHsKICAgICAgICAgICAgJENsYXNzSURBdXRvID0gJENsYXNzSUQ7CiAgICAgICAgfQogICAgfQoKICAgICMgSWYgb25seSBvbmUgZmlsdGVyIGV4aXN0cy4KICAgIGlmICggc2NhbGFyIGtleXMgJUZpbHRlcnMgPT0gMSApIHsKCiAgICAgICAgIyBHZXQgdGhlIG5hbWUgb2YgdGhlIG9ubHkgZmlsdGVyLgogICAgICAgIG15ICgkRmlsdGVyS2V5KSA9IGtleXMgJUZpbHRlcnM7CgogICAgICAgICMgQWN0aXZhdGUgdGhpcyBmaWx0ZXIuCiAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJEZpbHRlcnN7JEZpbHRlcktleX0tPntOYW1lfTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIEFkZCBkZWZhdWx0IGZpbHRlciwgd2hpY2ggc2hvd3MgYWxsIGl0ZW1zLgogICAgICAgICRGaWx0ZXJze0FsbH0gPSB7CiAgICAgICAgICAgIE5hbWUgICA9PiAnQWxsJywKICAgICAgICAgICAgUHJpbyAgID0+IDEwMDAsCiAgICAgICAgICAgIFNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgID0+ICRBY2Nlc3NDbGFzc0xpc3QsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgICAgID0+ICREZXBsU3RhdGVJRHMsCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFxAU29ydEJ5QXJyYXksCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFxAT3JkZXJCeUFycmF5LAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgfSwKICAgICAgICB9OwoKICAgICAgICAjIElmIG5vIGZpbHRlciB3YXMgc2VsZWN0ZWQgYWN0aXZhdGUgdGhlIGZpbHRlciBmb3IgdGhlIGRlZmF1bHQgY2xhc3MuCiAgICAgICAgaWYgKCAhJFNlbGYtPntGaWx0ZXJ9ICkgewogICAgICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkQ2xhc3NJREF1dG87CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IGdpdmVuIGZpbHRlcnMuCiAgICBteSBATmF2QmFyRmlsdGVyczsKICAgIGZvciBteSAkUHJpbyAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKICAgICAgICBwdXNoIEBOYXZCYXJGaWx0ZXJzLCAkRmlsdGVyc3skUHJpb307CiAgICB9CgogICAgIyBTb3J0IGFjY29yZGluZyB0byBwcmlvLgogICAgQE5hdkJhckZpbHRlcnMgPSBzb3J0IHsgJGEtPntQcmlvfSA8PT4gJGItPntQcmlvfSB9IEBOYXZCYXJGaWx0ZXJzOwoKICAgICMgRmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24uCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBteSBAWE1MU2hvd0NvbHVtbnM7CiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSApIHsKCiAgICAgICAgIyBHZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcuCiAgICAgICAgbXkgJVBvc3NpYmxlQ29sdW1uID0gJXsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9IH07CgogICAgICAgICMgU2hvdyBjb2x1bW4gIkNsYXNzIiBpZiBmaWx0ZXIgJ0FsbCcgaXMgc2VsZWN0ZWQuCiAgICAgICAgaWYgKCAkU2VsZi0+e0ZpbHRlcn0gZXEgJ0FsbCcgKSB7CiAgICAgICAgICAgICRQb3NzaWJsZUNvbHVtbntDbGFzc30gPSAnMSc7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0aGUgY29sdW1uIG5hbWVzIHRoYXQgc2hvdWxkIGJlIHNob3duLgogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IGZyb250ZW5kIGNvbmZpZy4KICAgIG15ICgkTW9kdWxlKSA9ICRTZWxmLT57QWN0aW9ufSA9fiBte15BZ2VudCguKil9eG1zOwogICAgbXkgJFNob3dDb2x1bW5zQnlDbGFzc0NvbmZpZwogICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCAnRnJvbnRlbmQ6OkFnZW50OjonIC4gJE1vZHVsZSAuICc6OklUU01Db25maWdJdGVtJyApOwoKICAgIG15ICRTaG93Q29sdW1uc0J5Q2xhc3MgPSAkU2hvd0NvbHVtbnNCeUNsYXNzQ29uZmlnLT57U2hvd0NvbHVtbnNCeUNsYXNzfSAvLyAnJzsKCiAgICAjIEdldCB0aGUgY29uZmlndXJlZCBjb2x1bW5zIGFuZCByZW9yZ2FuaXplIHRoZW0gYnkgY2xhc3MgbmFtZS4KICAgIGlmICgKICAgICAgICBJc0FycmF5UmVmV2l0aERhdGEoJFNob3dDb2x1bW5zQnlDbGFzcykKICAgICAgICAmJiAkU2VsZi0+e0ZpbHRlcn0KICAgICAgICAmJiAkU2VsZi0+e0ZpbHRlcn0gbmUgJ0FsbCcKICAgICAgICApCiAgICB7CgogICAgICAgIG15ICVDb2x1bW5CeUNsYXNzOwogICAgICAgIE5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggQHskU2hvd0NvbHVtbnNCeUNsYXNzfSApIHsKICAgICAgICAgICAgbXkgKCAkQ2xhc3MsICRDb2x1bW4gKSA9IHNwbGl0IC86Oi8sICROYW1lLCAyOwoKICAgICAgICAgICAgbmV4dCBOQU1FIGlmICEkQ29sdW1uOwoKICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0sICRDb2x1bW47CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIHRoZXJlIGlzIGEgc3BlY2lmaWMgY29sdW1uIGNvbmZpZyBmb3IgdGhlIHNlbGVjdGVkIGNsYXNzLgogICAgICAgIGlmICggJENvbHVtbkJ5Q2xhc3N7ICRTZWxmLT57RmlsdGVyfSB9ICkgewogICAgICAgICAgICBAU2hvd0NvbHVtbnMgPSBAeyAkQ29sdW1uQnlDbGFzc3sgJFNlbGYtPntGaWx0ZXJ9IH0gfTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKEBTaG93Q29sdW1ucykgewoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBuZWVkZWQgdmVyaWFibGVzLgogICAgICAgICAgICBteSAkQ1NTID0gJ092ZXJ2aWV3SGVhZGVyJzsKICAgICAgICAgICAgbXkgJE9yZGVyQnk7CgogICAgICAgICAgICAjIFJlbW92ZSBJRCBpZiBuZWNlc2FyeS4KICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gKCAkUGFyYW17U29ydEJ5fSBlcSAnSW5jaVN0YXRlSUQnICkKICAgICAgICAgICAgICAgICAgICA/ICdDdXJJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgOiAoICRQYXJhbXtTb3J0Qnl9IGVxICdEZXBsU3RhdGVJRCcgKSA/ICdDdXJEZXBsU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgOiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDbGFzc0lEJyApICAgICA/ICdDbGFzcycKICAgICAgICAgICAgICAgICAgICA6ICggJFBhcmFte1NvcnRCeX0gZXEgJ0NoYW5nZVRpbWUnICkgID8gJ0xhc3RDaGFuZ2VkJwogICAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTZXQgdGhlIGNvcnJlY3QgU2V0IENTUyBjbGFzcyBhbmQgb3JkZXIgYnkgbGluay4KICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnl9ICYmICggJFBhcmFte09yZGVyQnl9IGVxICdVcCcgKSApIHsKICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgU2V0IGNvbHVtbi4KICAgICAgICAgICAgJFBhcmFte0NvbHVtbn0gPSAkQ29sdW1uOwoKICAgICAgICAgICAgIyBDcmVhdGUgaGVhZGVyIGJsb2NrLgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0hlYWRlcicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgQ1NTICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIEdldCBhc3NpZ25lZCBjb25maWcgaXRlbXMgKHRvIGN1c3RvbWVyIG9yIGN1c3RvbWVyIHVzZXIpLgogICAgbXkgJEFzc2lnbmVkQ0lzID0gJFNlbGYtPl9Bc3NpZ25lZENJc0dldCgKICAgICAgICBGaWx0ZXIgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgKTsKICAgIG15IEBBc3NpZ25lZENvbmZpZ0l0ZW1JRHMgPSBAeyAkQXNzaWduZWRDSXMtPntDb25maWdJdGVtSURzfSB9OwoKICAgICMgR2V0IGFsbCBhc3NpZ25lZCBjb25maWcgaXRlbXMgZm9yIGNvdW50LgogICAgbXkgJENvdW50Q0lzID0gJFNlbGYtPl9Bc3NpZ25lZENJc0dldCgKICAgICAgICBGaWx0ZXIgPT4gJ0FsbCcsCiAgICAgICAgQ291bnQgID0+IDEsCiAgICApOwoKICAgICMgQ3JlYXRlIHNlYXJjaCB3aXRoIHNvcnRpbmcgcGFyYW1ldGVycy4KICAgIG15ICRBc3NpZ25lZENvbmZpZ0l0ZW1JRHM7CiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggXEBBc3NpZ25lZENvbmZpZ0l0ZW1JRHMgKSApIHsKICAgICAgICAkQXNzaWduZWRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgICAgPT4gXEBBc3NpZ25lZENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gXEBTb3J0QnlBcnJheSwKICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBcQE9yZGVyQnlBcnJheSwKICAgICAgICApOwogICAgfQoKICAgICMgQ2xlYXIgb2xkIGFycmF5IGFuZCBwdXNoIG5ldyBkYXRhLgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJEFzc2lnbmVkQ29uZmlnSXRlbUlEcykgKSB7CgogICAgICAgIEBBc3NpZ25lZENvbmZpZ0l0ZW1JRHMgPSAoKTsKICAgICAgICBwdXNoIEBBc3NpZ25lZENvbmZpZ0l0ZW1JRHMsIEB7JEFzc2lnbmVkQ29uZmlnSXRlbUlEc307CiAgICB9CgogICAgaWYgKEBTaG93Q29sdW1ucykgewoKICAgICAgICAjIEdldCB0aGUgWE1MIGNvbHVtbiBoZWFkZXJzIG9ubHkgaWYgdGhlIGZpbHRlciBpcyBub3Qgc2V0IHRvICdhbGwnCiAgICAgICAgIyBhbmQgaWYgdGhlcmUgYXJlIENJcyB0byBzaG93LgogICAgICAgIGlmICggJFNlbGYtPntGaWx0ZXJ9ICYmICRTZWxmLT57RmlsdGVyfSBuZSAnQWxsJyAmJiBAQXNzaWduZWRDb25maWdJdGVtSURzICkgewoKICAgICAgICAgICAgIyBHZXQgdGhlIHZlcnNpb24gZGF0YSBvZiB0aGUgZmlyc3QgY29uZmlnIGl0ZW0sIGluY2x1ZGluZyBhbGwgdGhlIFhNTCBkYXRhCiAgICAgICAgICAgICMgdG8gZ2V0IHRoZSBjb2x1bW4gaGVhZGVyIG5hbWVzLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBc3NpZ25lZENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ29udmVydCB0aGUgWE1MIGRhdGEgaW50byBhIGhhc2guCiAgICAgICAgICAgIG15ICRFeHRlbmRlZFZlcnNpb25EYXRhID0gJExheW91dE9iamVjdC0+WE1MRGF0YTJIYXNoKAogICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkQ29uZmlnSXRlbS0+e1hNTERlZmluaXRpb259LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkQ29uZmlnSXRlbS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgICAgICAgICAgQXR0cmlidXRlcyAgICA9PiBcQFNob3dDb2x1bW5zLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgdGhlIHhtbCBjb2x1bW5zICh0aGV5IGNvbnRhaW4gOjopLgogICAgICAgICAgICBAWE1MU2hvd0NvbHVtbnMgPSBncmVwIHsvOjovfSBAU2hvd0NvbHVtbnM7CgogICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAWE1MU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIGNvbHVtbiBleGlzdHMgaW4gQ0ktRGF0YS4KICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICEkRXh0ZW5kZWRWZXJzaW9uRGF0YS0+eyRDb2x1bW59LT57TmFtZX07CgogICAgICAgICAgICAgICAgIyBTaG93IHRoZSB4bWwgYXR0cmlidXRlIGhlYWRlci4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZFhNTEF0dHJpYnV0ZUhlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgWE1MQXR0cmlidXRlSGVhZGVyID0+ICRFeHRlbmRlZFZlcnNpb25EYXRhLT57JENvbHVtbn0tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIEJ1aWxkIGZpbHRlciBjb250ZW50LgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXInLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlRmlsdGVycywKICAgICAgICB9LAogICAgKTsKCiAgICAjIFNldCBzdW1tYXJ5IGZvciBwYWdlIG5hdi4KICAgIG15ICVTdW1tYXJ5OwoKICAgICMgTG9vcCBvdmVyIGZpbHRlcnMuCiAgICBteSAkQ291bnQgPSAwOwogICAgRklMVEVSOgogICAgZm9yIG15ICRGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CgogICAgICAgICMgR2V0IGNvdW50IGJ5IGFzc2lnbmVkIGNvbmZpZyBpdGVtIGlkcy4KICAgICAgICAkRmlsdGVyLT57Q291bnR9ID0gJENvdW50Q0lzLT57ICRGaWx0ZXItPntOYW1lfSB9IC8vICcwJzsKCiAgICAgICAgJENvdW50Kys7CiAgICAgICAgaWYgKCAkQ291bnQgPT0gc2NhbGFyIEBOYXZCYXJGaWx0ZXJzICkgewogICAgICAgICAgICAkRmlsdGVyLT57Q1NTfSA9ICdMYXN0JzsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgIGlmICggJEZpbHRlci0+e05hbWV9IGVxICRTZWxmLT57RmlsdGVyfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT57RmlsdGVyQ291bnR9ID0gJEZpbHRlci0+e0NvdW50fTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgZmlsdGVyIHRvIG5ldyBoYXNoLgogICAgICAgICRTdW1tYXJ5eyAkRmlsdGVyLT57TmFtZX0gfSA9IFwleyRGaWx0ZXJ9OwogICAgfQoKICAgICMgQWRkIHBhZ2UgbmF2IGJhci4KICAgIG15ICRUb3RhbCA9ICRTdW1tYXJ5eyAkU2VsZi0+e0ZpbHRlcn0gfS0+e0NvdW50fSB8fCAwOwoKICAgIG15ICRMaW5rUGFnZSA9CiAgICAgICAgJ1N1YmFjdGlvbj1FbGVtZW50O05hbWU9JyAuICRTZWxmLT57TmFtZX0KICAgICAgICAuICc7RmlsdGVyPScgLiAkU2VsZi0+e0ZpbHRlcn0KICAgICAgICAuICc7U29ydEJ5PScgLiAgKCAkUGFyYW17U29ydEJ5fSAgfHwgJycgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAoICRQYXJhbXtPcmRlckJ5fSB8fCAnJyApCiAgICAgICAgLiAnOyc7CgogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJJRH0gKSB7CiAgICAgICAgJExpbmtQYWdlIC49ICdDdXN0b21lcklEPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkUGFyYW17Q3VzdG9tZXJJRH0gKSAuICc7JzsKICAgIH0KICAgIGlmICggJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAkTGlua1BhZ2UgLj0gJ0N1c3RvbWVyVXNlcklEPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICkgLiAnOyc7CiAgICB9CgogICAgbXkgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgIFN0YXJ0SGl0ICAgID0+ICRTZWxmLT57U3RhcnRIaXR9LAogICAgICAgIFBhZ2VTaG93biAgID0+ICRTZWxmLT57UGFnZVNob3dufSwKICAgICAgICBBbGxIaXRzICAgICA9PiAkVG90YWwgfHwgMSwKICAgICAgICBBY3Rpb24gICAgICA9PiAnQWN0aW9uPScgLiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgQUpBWFJlcGxhY2UgPT4gJ0Rhc2hib2FyZCcgLiAkU2VsZi0+e05hbWV9LAogICAgICAgIElEUHJlZml4ICAgID0+ICdEYXNoYm9hcmQnIC4gJFNlbGYtPntOYW1lfSwKICAgICAgICBBSkFYICAgICAgICA9PiAkUGFyYW17QUpBWH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUlUU01Db25maWdJdGVtR2VuZXJpY0ZpbHRlck5hdkJhcicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICV7ICRTZWxmLT57Q29uZmlnfSB9LAogICAgICAgICAgICBOYW1lID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICVQYWdlTmF2LAogICAgICAgIH0sCiAgICApOwoKICAgICMgU2hvdyBjb25maWcgaXRlbXMgaWYgdGhlcmUgYXJlIHNvbWUuCiAgICBteSAkQ291bnRlciA9IDA7CiAgICBpZiAoQEFzc2lnbmVkQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIFRvIHN0b3JlIGFsbCBkYXRhLgogICAgICAgIG15ICVEYXRhOwoKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBBc3NpZ25lZENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJENvdW50ZXIgPj0gJFNlbGYtPntTdGFydEhpdH0KICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkU2VsZi0+e1BhZ2VTaG93bn0gKyAkU2VsZi0+e1N0YXJ0SGl0fSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIEdldCBjb25maWcgaXRlbSBkYXRhLgogICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRDb25maWdJdGVtOwoKICAgICAgICAgICAgICAgICMgQ29udmVydCB0aGUgWE1MIGRhdGEgaW50byBhIGhhc2guCiAgICAgICAgICAgICAgICBteSAkRXh0ZW5kZWRWZXJzaW9uRGF0YSA9ICRMYXlvdXRPYmplY3QtPlhNTERhdGEySGFzaCgKICAgICAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRDb25maWdJdGVtLT57WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkQ29uZmlnSXRlbS0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZXMgICAgPT4gXEBTaG93Q29sdW1ucywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTdG9yZSBjb25maWcgaXRlbSBkYXRhLgogICAgICAgICAgICAgICAgJURhdGEgPSAleyRDb25maWdJdGVtfTsKCiAgICAgICAgICAgICAgICAjIEJ1aWxkIHJlY29yZCBibG9jay4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBCdWlsZCBjb2x1bW4gcmVjb3JkIGJsb2Nrcy4KICAgICAgICAgICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU2lnbmFsID0+ICRJbmNpU2lnbmFsc3sgJERhdGF7Q3VySW5jaVN0YXRlVHlwZX0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU2lnbmFsID0+ICREZXBsU2lnbmFsc3sgJERhdGF7Q3VyRGVwbFN0YXRlfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgU2hvdyBsaW5rcyBpZiBhdmFpbGFibGUuCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua1N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua0VuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAWE1MU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgY29sdW1uIGV4aXN0cyBpbiBDSS1EYXRhLgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAhJEV4dGVuZGVkVmVyc2lvbkRhdGEtPnskQ29sdW1ufS0+e05hbWV9OwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IHRvIGFzY2lpIHRleHQgaW4gY2FzZSB0aGUgdmFsdWUgY29udGFpbnMgaHRtbC4KICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPlRvQXNjaWkoIFN0cmluZyA9PiAkRXh0ZW5kZWRWZXJzaW9uRGF0YS0+eyRDb2x1bW59LT57VmFsdWV9IC8vICcnICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICcnOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBDb252ZXJ0IGFsbCB3aGl0ZXNwYWNlIGFuZCBuZXdsaW5lcyB0byBzaW5nbGUgc3BhY2VzLgogICAgICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gc3sgXHMrIH17IH1neG1zOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBTaG93IHRoZSB4bWwgYXR0cmlidXRlIGRhdGEuCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkWE1MQXR0cmlidXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxBdHRyaWJ1dGVEYXRhID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgSWYgdGhlcmUgYXJlIG5vIGNvbmZpZyBpdGVtcyB0byBzaG93LCBhIG5vIGRhdGEgZm91bmQgbWVzc2FnZSBpcyBkaXNwbGF5ZWQgaW4gdGhlIHRhYmxlLgogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBUb3RhbENvbHVtbnMgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIG15ICROYW1lSFRNTCA9ICRTZWxmLT57TmFtZX07CiAgICAkTmFtZUhUTUwgPX4gc3stfXtffXhtc2c7CgogICAgIyByZW1vdmUgKC0pIGZyb20gbmFtZSBmb3IgSlMgY29uZmlnCiAgICBteSAkV2lkZ2V0TmFtZSA9ICRTZWxmLT57TmFtZX07CiAgICAkV2lkZ2V0TmFtZSA9fiBzey19e31nOwoKICAgICMgU2VuZCBkYXRhIHRvIEpTLgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbUdlbmVyaWMnLAogICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgTmFtZUhUTUwgPT4gJE5hbWVIVE1MLAogICAgICAgIH0sCiAgICApOwoKICAgIG15ICVTZWxlY3RlZEZpbHRlckluZm9ybWF0aW9uID0gKAogICAgICAgIExhYmVsID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICBDb3VudCA9PiAkU2VsZi0+e0ZpbHRlckNvdW50fSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnV2lkZ2V0Q29udGFpbmVyJyAuICRXaWRnZXROYW1lLAogICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgRmlsdGVyICAgICAgICAgPT4gXCVGaWx0ZXJzLAogICAgICAgICAgICBGaWx0ZXJTZWxlY3RlZCA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJENvbnRlbnQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudERhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpYycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICBTdHlsZUNsYXNzZXMgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICAgICAgRmlsdGVyICAgICAgID0+IFwlU2VsZWN0ZWRGaWx0ZXJJbmZvcm1hdGlvbiwKICAgICAgICB9LAogICAgICAgIEFKQVggPT4gJFBhcmFte0FKQVh9LAogICAgKTsKCiAgICByZXR1cm4gJENvbnRlbnQ7Cn0KCnN1YiBfQXNzaWduZWRDSXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIERlZmluZSBjYWNoZSBrZXkuCiAgICBteSAkQ2FjaGVLZXk7CiAgICBpZiAoICRTZWxmLT57Q3VzdG9tZXJJRH0gKSB7CiAgICAgICAgJENhY2hlS2V5ID0gJ0Fzc2lnbmVkQ0lzLScgLiAkUGFyYW17RmlsdGVyfSAuICctJyAuICRTZWxmLT57Q3VzdG9tZXJJRH07CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICRDYWNoZUtleSA9ICdBc3NpZ25lZENJcy0nIC4gJFBhcmFte0ZpbHRlcn0gLiAnLScgLiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRDYWNoZUtleSA9ICdBc3NpZ25lZENJcy0nIC4gJFBhcmFte0ZpbHRlcn0gLiAnLScgLiAkU2VsZi0+e1VzZXJJRH07CiAgICB9CgogICAgbXkgJENvbnRlbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0Rhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpYycsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICApOwogICAgcmV0dXJuICRDb250ZW50IGlmIGRlZmluZWQgJENvbnRlbnQgJiYgJFBhcmFte0NvdW50fTsKCiAgICAjIEdldCB0aGUgZGVmaW5lZCBwYXJhbS4KICAgIG15IEBQYXJhbXMgPSBzcGxpdCAvOy8sICRTZWxmLT57Q29uZmlnfS0+e0F0dHJpYnV0ZXN9OwoKICAgICMgRGVmaW5lIHJlc3VsdC4KICAgIG15IEBDb25maWdJdGVtSURzOwogICAgbXkgJVJlc3VsdDsKCiAgICAjIEdldCBrZXkgZm9yIENJIHNlYXJjaC4KICAgIG15ICRDb25maWdJdGVtS2V5ID0gJFNlbGYtPntDb25maWd9LT57Q29uZmlnSXRlbUtleX0gLy8gJyc7CgogICAgcmV0dXJuIGlmICEkQ29uZmlnSXRlbUtleTsKCiAgICAjIEdldCBjb25maWcgaXRlbSBvYmplY3QuCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIFNUUklORzoKICAgIGZvciBteSAkU3RyaW5nIChAUGFyYW1zKSB7CiAgICAgICAgbmV4dCBTVFJJTkcgaWYgISRTdHJpbmc7CiAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJFN0cmluZzsKCiAgICAgICAgaWYgKCAkS2V5IGVxICdDdXN0b21lckNvbXBhbnknICkgewoKICAgICAgICAgICAgQ0xBU1M6CiAgICAgICAgICAgIGZvciBteSAkQ2xhc3MgKCBzb3J0IGtleXMgJXskQ29uZmlnSXRlbUtleX0gKSB7CgogICAgICAgICAgICAgICAgIyBTa2lwIG90aGVyIGNsYXNzZXMgaWYgZmlsdGVyIGlzIHNldC4KICAgICAgICAgICAgICAgIG5leHQgQ0xBU1MgaWYgJFBhcmFte0ZpbHRlcn0gJiYgKCAkUGFyYW17RmlsdGVyfSBuZSAkQ2xhc3MgJiYgJFBhcmFte0ZpbHRlcn0gbmUgJ0FsbCcgKTsKCiAgICAgICAgICAgICAgICBteSAkQ2xhc3NJRCA9ICRTZWxmLT5fQ2xhc3NJREJ5TmFtZUdldCgKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgU2tpcCBpZiB3ZSBoYXZlIG5vIGNsYXNzIGlkLgogICAgICAgICAgICAgICAgbmV4dCBDTEFTUyBpZiAhJENsYXNzSUQ7CgogICAgICAgICAgICAgICAgbXkgQFNlYXJjaEtleSA9ICgKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnJENvbmZpZ0l0ZW1LZXktPnskQ2xhc3N9J31bJV17J0NvbnRlbnQnfSIgPT4gJFNlbGYtPntDdXN0b21lcklEfSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgUGVyZm9ybSBjb25maWcgaXRlbSBzZWFyY2ggKGV4dGVuZGVkKS4KICAgICAgICAgICAgICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEcyA9PiBbJENsYXNzSURdLAogICAgICAgICAgICAgICAgICAgIFdoYXQgICAgID0+IFxAU2VhcmNoS2V5LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IENMQVNTIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1JRHMpOwoKICAgICAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsIEB7JENvbmZpZ0l0ZW1JRHN9OwoKICAgICAgICAgICAgICAgICMgQ291bnQgY29uZmlnIGl0ZW1zIHBlciBjbGFzcy4KICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NvdW50fSApIHsKICAgICAgICAgICAgICAgICAgICAkUmVzdWx0eyRDbGFzc30gPSBzY2FsYXIgQHskQ29uZmlnSXRlbUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkS2V5IGVxICdDdXN0b21lcicgKSB7CgogICAgICAgICAgICBDTEFTUzoKICAgICAgICAgICAgZm9yIG15ICRDbGFzcyAoIHNvcnQga2V5cyAleyRDb25maWdJdGVtS2V5fSApIHsKCiAgICAgICAgICAgICAgICAjIFNraXAgb3RoZXIgY2xhc3NlcyBpZiBmaWx0ZXIgaXMgc2V0LgogICAgICAgICAgICAgICAgbmV4dCBDTEFTUyBpZiAkUGFyYW17RmlsdGVyfSAmJiAoICRQYXJhbXtGaWx0ZXJ9IG5lICRDbGFzcyAmJiAkUGFyYW17RmlsdGVyfSBuZSAnQWxsJyApOwoKICAgICAgICAgICAgICAgIG15ICRDbGFzc0lEID0gJFNlbGYtPl9DbGFzc0lEQnlOYW1lR2V0KAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBTa2lwIGlmIHdlIGhhdmUgbm8gY2xhc3MgaWQuCiAgICAgICAgICAgICAgICBuZXh0IENMQVNTIGlmICEkQ2xhc3NJRDsKCiAgICAgICAgICAgICAgICBteSBAU2VhcmNoS2V5ID0gKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIlsxXXsnVmVyc2lvbid9WzFdeyckQ29uZmlnSXRlbUtleS0+eyRDbGFzc30nfVslXXsnQ29udGVudCd9IiA9PiAkU2VsZi0+e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgUGVyZm9ybSBjb25maWcgaXRlbSBzZWFyY2ggKGV4dGVuZGVkKS4KICAgICAgICAgICAgICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEcyA9PiBbJENsYXNzSURdLAogICAgICAgICAgICAgICAgICAgIFdoYXQgICAgID0+IFxAU2VhcmNoS2V5LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IENMQVNTIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1JRHMpOwoKICAgICAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsIEB7JENvbmZpZ0l0ZW1JRHN9OwoKICAgICAgICAgICAgICAgICMgQ291bnQgY29uZmlnIGl0ZW1zIHBlciBjbGFzcy4KICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NvdW50fSApIHsKICAgICAgICAgICAgICAgICAgICAkUmVzdWx0eyRDbGFzc30gPSBzY2FsYXIgQHskQ29uZmlnSXRlbUlEc307CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDdXN0b21lckNvbXBhbnkgb3IgQ3VzdG9tZXIgYXMgYXR0cmlidXRlLicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBSZW1vdmUgZHVwbGljYXRlZCBjb25maWcgaXRlbSBpZHMuCiAgICBteSAlVGVtcENvbmZpZ0l0ZW1JRHMgPSBtYXAgeyAkXyA9PiAxIH0gQENvbmZpZ0l0ZW1JRHM7CiAgICBAQ29uZmlnSXRlbUlEcyA9IHNvcnQga2V5cyAlVGVtcENvbmZpZ0l0ZW1JRHM7CgogICAgJFJlc3VsdHtDb25maWdJdGVtSURzfSA9IFxAQ29uZmlnSXRlbUlEczsKCiAgICAjIEFkZCBjb3VudCBmb3IgYWxsIGl0ZW1zLgogICAgaWYgKCAkUGFyYW17Q291bnR9ICkgewogICAgICAgICRSZXN1bHR7QWxsfSA9IHNjYWxhciBAQ29uZmlnSXRlbUlEczsKICAgIH0KCiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e0NhY2hlVFRMTG9jYWx9ICYmICRQYXJhbXtDb3VudH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0Rhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpYycsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gXCVSZXN1bHQsCiAgICAgICAgICAgIFRUTCAgID0+IDIgKiA2MCwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBcJVJlc3VsdDsKfQoKc3ViIF9DbGFzc0lEQnlOYW1lR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayBuZWVkZWQgc3R1ZmYuCiAgICBpZiAoICEkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBjbGFzcyBuYW1lISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBHZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdC4KICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgR2V0IGNsYXNzIGxpc3QuCiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIFJldmVyc2UgY2xhc3MgbGlzdC4KICAgIG15ICVDbGFzc05hbWUySUQgPSByZXZlcnNlICV7JENsYXNzTGlzdH07CgogICAgIyBHZXQgY2xhc3MgaWQuCiAgICBteSAkQ2xhc3NJRCA9ICRDbGFzc05hbWUySUR7ICRQYXJhbXtWYWx1ZX0gfTsKCiAgICByZXR1cm4gaWYgISRDbGFzc0lEOwoKICAgICNJbml0aWF0ZSBwZXJtaXNzaW9uIGNoZWNrLgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgVHlwZSAgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICk7CiAgICByZXR1cm4gaWYgISRIYXNBY2Nlc3M7CgogICAgIyBSZXR1cm4gY2xhc3MgaWQuCiAgICByZXR1cm4gJENsYXNzSUQ7Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/FilterElementPost/AgentITSMConfigItemCustomerCIs.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkZpbHRlckVsZW1lbnRQb3N0OjpBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRHcm91cE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldCcpOwoKICAgIG15ICRQZXJtaXNzaW9uOwoKICAgICMgc2hvdyBvbmx5IGlmIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgYWxsb3dlZCBncm91cHMKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkQ29uZmlnLT57R3JvdXB9ICkgKSB7CiAgICAgICAgR1JPVVA6CiAgICAgICAgZm9yIG15ICRDdXJyZW50R3JvdXAgKCBAeyAkQ29uZmlnLT57R3JvdXB9IH0gKSB7CiAgICAgICAgICAgIG15ICRIYXNQZXJtaXNzaW9uID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJExheW91dE9iamVjdC0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEN1cnJlbnRHcm91cCwKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnbW92ZV9pbnRvJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBHUk9VUCBpZiAhJEhhc1Blcm1pc3Npb247CgogICAgICAgICAgICAkUGVybWlzc2lvbiA9IDE7CgogICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBpZiAhJFBlcm1pc3Npb247CgogICAgJFBhcmFte1RpY2tldElEfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUaWNrZXRJRCcgKSB8fCAnJzsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdXaWRnZXQnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBDU1NTdHlsZSA9PiAkTGF5b3V0T2JqZWN0LT57QWN0aW9ufSBuZSAnQWdlbnRUaWNrZXRab29tJyA/ICdkaXNwbGF5Om5vbmU7JyA6ICcnLAogICAgICAgIH0KICAgICk7CgogICAgbXkgJFdpZGdldEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQnLAogICAgKTsKCiAgICBteSAkRGF0YSA9IHsKICAgICAgICBXaWRnZXQgICA9PiAkV2lkZ2V0SFRNTCwKICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgfTsKCiAgICBteSAkSW5pdFBhcmFtZXRlciA9ICRMYXlvdXRPYmplY3QtPkpTT05FbmNvZGUoCiAgICAgICAgTm9RdW90ZXMgPT4gMSwKICAgICAgICBEYXRhICAgICA9PiAkRGF0YSwKICAgICk7CgogICAgbXkgJEpTQmxvY2sgPSA8PCJKU19CTE9DSyI7CiAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQ3VzdG9tZXJDSXNXaWRnZXQuSW5pdCgkSW5pdFBhcmFtZXRlcik7CkpTX0JMT0NLCgogICAgJExheW91dE9iamVjdC0+QWRkSlNPbkRvY3VtZW50Q29tcGxldGVJZk5vdEV4aXN0cygKICAgICAgICBLZXkgID0+ICdJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQ3VzdG9tZXJDSXNXaWRnZXQnLAogICAgICAgIENvZGUgPT4gJEpTQmxvY2ssCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutBaseSelectable.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEJhc2VTZWxlY3RhYmxlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRCYXNlU2VsZWN0YWJsZSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lTCgpCYXNlIGxheW91dCBtb2R1bGUgZm9yIHNlbGVjdC1hYmxlIHZhbHVlcwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEJhc2VTZWxlY3RhYmxlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgI2FsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaAoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgID0+ICdJdGVtOjoxOjpOb2RlOjoyLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICNjaGVjayBuZWVkZWQgc3R1ZmYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwoKICAgIHJldHVybiBcJUZvcm1EYXRhIGlmICEkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH07CiAgICByZXR1cm4gXCVGb3JtRGF0YSBpZiAkRm9ybURhdGF7VmFsdWV9OwoKICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwoKICAgIHJldHVybiBcJUZvcm1EYXRhOwoKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MicsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZTsKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjInLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlRm9ybURhdGE7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgIG15ICRJbnB1dFN0cmluZyA9ICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAlRm9ybURhdGEsCiAgICAgICAgS2V5ICA9PiAkUGFyYW17S2V5fSwKICAgICAgICBJdGVtID0+ICRQYXJhbXtJdGVtfSwKICAgICk7CgogICAgcmV0dXJuICRJbnB1dFN0cmluZzsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCI.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpabnVueTo6Q29kZVN0eWxlOjpHdWFyZENsYXVzZSkKCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDSTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q0kgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgQ0lDbGFzcyBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbUxheW91dENJJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICRTZWxmLT57Q0lJRH0gPSAwOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICN0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSB8fCAnJywKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaAoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgID0+ICdJdGVtOjoxOjpOb2RlOjoyLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhLZXkgSXRlbSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IHNlbGVjdGVkIENJQ2xhc3MKICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwoKICAgICMgY2hlY2sgc2VhcmNoIGJ1dHRvbi4uCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VhcmNoJyApICkgewogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntTZWFyY2h9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpTZWFyY2gnICk7CiAgICB9CgogICAgIyBjaGVjayBzZWxlY3QgYnV0dG9uCiAgICBlbHNpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VsZWN0JyApICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlbGVjdCcgKTsKICAgIH0KCiAgICAjIGNoZWNrIGNsZWFyIGJ1dHRvbgogICAgZWxzaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkJ1dHRvbkNsZWFyJyApICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAnJzsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHJlc2V0IHZhbHVlIGlmIHNlYXJjaCBmaWVsZCBpcyBlbXB0eQogICAgICAgIGlmICgKICAgICAgICAgICAgISRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VhcmNoJyApCiAgICAgICAgICAgICYmIGRlZmluZWQgJEZvcm1EYXRhe1ZhbHVlfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJyc7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIG9wdGlvbgogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJElUU01Db25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkTGFuZ3VhZ2VPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Okxhbmd1YWdlJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhLZXkgSXRlbSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZhbHVlID0gJyc7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH07CiAgICB9CgogICAgaWYgKAogICAgICAgICEkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDSUNsYXNzSUR9CiAgICAgICAgJiYgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q0lDbGFzc05hbWV9CiAgICAgICAgKQogICAgewoKICAgICAgICBteSAkSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NOYW1lfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkSXRlbURhdGFSZWYgfHwgISggJEl0ZW1EYXRhUmVmLT57SXRlbUlEfSApICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklUU01Db25maWdJdGVtTGF5b3V0Q0k6IENJLUNsYXNzIDwiCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDSUNsYXNzTmFtZX0KICAgICAgICAgICAgICAgICAgICAuICI+IG5vdCBkZWZpbmVkIGluIEdlbmVyYWxDYXRhbG9nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+e0NJSUR9ID0gJEl0ZW1EYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDSUNsYXNzSUR9ICkgewogICAgICAgICRTZWxmLT57Q0lJRH0gPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDSUNsYXNzSUR9OwogICAgfQoKICAgIG15ICRTaXplICAgICAgICAgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntTaXplfSB8fCA1MDsKICAgIG15ICRTZWFyY2ggICAgICAgPSAnJzsKICAgIG15ICRTdHJpbmdPcHRpb24gPSAnJzsKICAgIG15ICRTdHJpbmdTZWxlY3QgPSAnJzsKCiAgICAjIEF1dG9Db21wbGV0ZSBDSUNsYXNzCiAgICBteSAkQ2xhc3MgPSAnVzUwcGMgQ0lDbGFzc1NlYXJjaCc7CgogICAgbXkgJFJlcXVpcmVkID0gJFBhcmFte1JlcXVpcmVkfSB8fCAnJzsKICAgIG15ICRJbnZhbGlkICA9ICRQYXJhbXtJbnZhbGlkfSAgfHwgJyc7CgogICAgIyBDSUNsYXNzIHNlYXJjaAogICAgaWYgKCAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57U2VhcmNofSApIHsKCiAgICAgICAgIyBzZWFyY2ggZm9yIG5hbWUKICAgICAgICBteSAlQ0lTZWFyY2hMaXN0ICAgID0gKCk7CiAgICAgICAgbXkgJENJU2VhcmNoTGlzdFJlZiA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKAogICAgICAgICAgICBOYW1lICAgICA9PiAnKicgLiAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57U2VhcmNofSAuICcqJywKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkU2VsZi0+e0NJSUR9IF0sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRTZWFyY2hSZXN1bHQgKCBAeyRDSVNlYXJjaExpc3RSZWZ9ICkgewogICAgICAgICAgICBteSAkQ3VyclZlcnNpb25EYXRhID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRTZWFyY2hSZXN1bHQsCiAgICAgICAgICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEN1cnJWZXJzaW9uRGF0YSkgJiYgJEN1cnJWZXJzaW9uRGF0YS0+e05hbWV9ICYmICRDdXJyVmVyc2lvbkRhdGEtPntOdW1iZXJ9ICkgewogICAgICAgICAgICAgICAgJENJU2VhcmNoTGlzdHskU2VhcmNoUmVzdWx0fSA9ICRDdXJyVmVyc2lvbkRhdGEtPntOYW1lfSAuICIgKCIgLiAkQ3VyclZlcnNpb25EYXRhLT57TnVtYmVyfSAuICIpIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzZWFyY2ggZm9yIG51bWJlcgogICAgICAgICRDSVNlYXJjaExpc3RSZWYgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgKICAgICAgICAgICAgTnVtYmVyICAgPT4gJyonIC4gJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e1NlYXJjaH0gLiAnKicsCiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJFNlbGYtPntDSUlEfSBdLAogICAgICAgICk7CgogICAgICAgIGZvciBteSAkU2VhcmNoUmVzdWx0ICggQHskQ0lTZWFyY2hMaXN0UmVmfSApIHsKICAgICAgICAgICAgbXkgJEN1cnJWZXJzaW9uRGF0YSA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2VhcmNoUmVzdWx0LAogICAgICAgICAgICAgICAgWE1MRGF0YUdldCAgID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDdXJyVmVyc2lvbkRhdGEKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAoIHJlZigkQ3VyclZlcnNpb25EYXRhKSBlcSAnSEFTSCcgKSAmJgogICAgICAgICAgICAgICAgJEN1cnJWZXJzaW9uRGF0YS0+e05hbWV9ICYmCiAgICAgICAgICAgICAgICAkQ3VyclZlcnNpb25EYXRhLT57TnVtYmVyfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkQ0lTZWFyY2hMaXN0eyRTZWFyY2hSZXN1bHR9ID0gJEN1cnJWZXJzaW9uRGF0YS0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgLiAiICgiCiAgICAgICAgICAgICAgICAgICAgLiAkQ3VyclZlcnNpb25EYXRhLT57TnVtYmVyfQogICAgICAgICAgICAgICAgICAgIC4gIikiOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGJ1aWxkIHNlYXJjaCByZXN1bHQgcHJlc2VudGF0aW9uCiAgICAgICAgaWYgKCAlQ0lTZWFyY2hMaXN0ICYmIHNjYWxhcigga2V5cyAlQ0lTZWFyY2hMaXN0ICkgPiAxICkgewoKICAgICAgICAgICAgIyBjcmVhdGUgb3B0aW9uIGxpc3QKICAgICAgICAgICAgJFN0cmluZ09wdGlvbiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJFBhcmFte0tleX0gLiAnOjpTZWxlY3QnLAogICAgICAgICAgICAgICAgRGF0YSAgPT4gXCVDSVNlYXJjaExpc3QsCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnTW9kZXJuaXplIFc1MHBjJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFN0cmluZ09wdGlvbiAuPSAnPGJyPic7CgogICAgICAgICAgICAjIGNyZWF0ZSBzZWxlY3QgYnV0dG9uCiAgICAgICAgICAgICRTdHJpbmdTZWxlY3QgPSAnPGlucHV0IGNsYXNzPSJidXR0b24iIHR5cGU9InN1Ym1pdCIgbmFtZT0iJyAuICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VsZWN0IiAnCiAgICAgICAgICAgICAgICAuICd2YWx1ZT0iJyAuICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCJTZWxlY3QiKSAuICciPiZuYnNwOyc7CgogICAgICAgICAgICAjIHNldCBzZWFyY2gKICAgICAgICAgICAgJFNlYXJjaCA9ICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntTZWFyY2h9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoJUNJU2VhcmNoTGlzdCkgewoKICAgICAgICAgICAgJFZhbHVlID0gKCBrZXlzICVDSVNlYXJjaExpc3QgKVswXTsKICAgICAgICAgICAgbXkgJENJVmVyc2lvbkRhdGFSZWYgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgWE1MRGF0YUdldCAgID0+IDAsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRDSU5hbWUgPSAiIjsKCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJENJVmVyc2lvbkRhdGFSZWYpICYmICRDSVZlcnNpb25EYXRhUmVmLT57TmFtZX0gJiYgJENJVmVyc2lvbkRhdGFSZWYtPntOdW1iZXJ9ICkgewogICAgICAgICAgICAgICAgJENJTmFtZSA9ICRDSVZlcnNpb25EYXRhUmVmLT57TmFtZX0gLiAiICgiIC4gJENJVmVyc2lvbkRhdGFSZWYtPntOdW1iZXJ9IC4gIikiOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAgICAgICAgICRTZWFyY2ggPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJENJTmFtZSB8fCAnJywKICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIENJQ2xhc3Mgc3RyaW5nCiAgICBlbHNpZiAoJFZhbHVlKSB7CgogICAgICAgIG15ICRDSVZlcnNpb25EYXRhUmVmID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFZhbHVlLAogICAgICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMCwKICAgICAgICApOwogICAgICAgIG15ICRDSU5hbWUgPSAiIjsKCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkQ0lWZXJzaW9uRGF0YVJlZikgJiYgJENJVmVyc2lvbkRhdGFSZWYtPntOYW1lfSAmJiAkQ0lWZXJzaW9uRGF0YVJlZi0+e051bWJlcn0gKSB7CiAgICAgICAgICAgICRDSU5hbWUgPSAkQ0lWZXJzaW9uRGF0YVJlZi0+e05hbWV9IC4gIiAoIiAuICRDSVZlcnNpb25EYXRhUmVmLT57TnVtYmVyfSAuICIpIjsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkU2VhcmNoID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJENJTmFtZSB8fCAnJywKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIG15ICRTdHJpbmcgPSAnPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iJyAuICRQYXJhbXtLZXl9IC4gJyIgdmFsdWU9IicgLiAkVmFsdWUgLiAnIj4nCiAgICAgICAgLiAnPGlucHV0IHR5cGU9IlRleHQiIG5hbWU9IicKICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgLiAnOjpTZWFyY2giIGNsYXNzPSInCiAgICAgICAgLiAkQ2xhc3MKICAgICAgICAuICciIHNpemU9IicKICAgICAgICAuICRTaXplCiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFNlYXJjaCAuICciPicKICAgICAgICAuICc8YnI+JwogICAgICAgIC4gJFN0cmluZ09wdGlvbgogICAgICAgIC4gJFN0cmluZ1NlbGVjdAogICAgICAgIC4gJzxpbnB1dCBjbGFzcz0iYnV0dG9uIGJ0bi1jYW5jZWwtZ2hvc3QiIHR5cGU9InN1Ym1pdCIgbmFtZT0iJwogICAgICAgIC4gJFBhcmFte0tleX0KICAgICAgICAuICc6OkJ1dHRvblNlYXJjaCIgdmFsdWU9IicKICAgICAgICAuICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCJTZWFyY2giKSAuICciPic7CgogICAgaWYgKCRTZWFyY2gpIHsKICAgICAgICAkU3RyaW5nCiAgICAgICAgICAgIC49ICcmbmJzcDsnCiAgICAgICAgICAgIC4gJzxpbnB1dCBjbGFzcz0iYnV0dG9uIGJ0bi1jYW5jZWwtZ2hvc3QiIHR5cGU9InN1Ym1pdCIgbmFtZT0iJwogICAgICAgICAgICAuICRQYXJhbXtLZXl9CiAgICAgICAgICAgIC4gJzo6QnV0dG9uQ2xlYXIiIHZhbHVlPSInCiAgICAgICAgICAgIC4gJExhbmd1YWdlT2JqZWN0LT5UcmFuc2xhdGUoIkNsZWFyIikgLiAnIj4nOwogICAgfQoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ICA9PiAnSXRlbTo6MTo6Tm9kZTo6MicsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRJVFNNQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhLZXkgSXRlbSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntTZWFyY2hJbnB1dFR5cGV9ICYmICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1NlYXJjaElucHV0VHlwZX0gZXEgJ1BhdHRlcm4nICkgewogICAgICAgIG15IEBWYWx1ZXMgPSBxd3t9OwogICAgICAgIGlmICggISRTZWxmLT57Q0lJRH0gKSB7CgogICAgICAgICAgICBteSAkSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q0lDbGFzc05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJEl0ZW1EYXRhUmVmIHx8ICEoICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH0gKSApIHsKICAgICAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJVFNNQ29uZmlnSXRlbUxheW91dENJOiBDSS1DbGFzcyA8IgogICAgICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAuICI+IG5vdCBkZWZpbmVkIGluIEdlbmVyYWxDYXRhbG9nISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntDSUlEfSA9ICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15IEBTZWFyY2hWYWx1ZXMgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwoKICAgICAgICBTRUFSQ0hWQUxVRToKICAgICAgICBmb3IgbXkgJEN1cnJTZWFyY2hWYWx1ZSAoQFNlYXJjaFZhbHVlcykgewogICAgICAgICAgICBuZXh0IFNFQVJDSFZBTFVFIGlmICggISRDdXJyU2VhcmNoVmFsdWUgKTsKCiAgICAgICAgICAgIG15IEBTZWFyY2hWYWx1ZVBhcnRzID0gc3BsaXQoICdcfFx8JywgJEN1cnJTZWFyY2hWYWx1ZSApOwoKICAgICAgICAgICAgU0VBUkNIVkFMVUVQQVJUOgogICAgICAgICAgICBmb3IgbXkgJEN1cnJTZWFyY2hWYWx1ZVBhcnQgKEBTZWFyY2hWYWx1ZVBhcnRzKSB7CiAgICAgICAgICAgICAgICBuZXh0IFNFQVJDSFZBTFVFUEFSVCBpZiAoICEkQ3VyclNlYXJjaFZhbHVlUGFydCApOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgcGF0dGVybiBmb3IgaWQKICAgICAgICAgICAgICAgIGlmICggJEN1cnJTZWFyY2hWYWx1ZVBhcnQgPX4gbS9eXFtJRFxdKFswLTldKykkL2kgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQFZhbHVlcywgJDEgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUFSQ0hWQUxVRVBBUlQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ3VyclNlYXJjaFZhbHVlUGFydCA9fiBtL15cW051bWJlclxdKFswLTkqXSspJC9pICkgewogICAgICAgICAgICAgICAgICAgIG15ICRDSVNlYXJjaExpc3RSZWYgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgKICAgICAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgPT4gJDEsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzSURzID0+IFsgJFNlbGYtPntDSUlEfSBdLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRTZWFyY2hSZXN1bHQgKCBAeyRDSVNlYXJjaExpc3RSZWZ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoKCBAVmFsdWVzLCAkU2VhcmNoUmVzdWx0ICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBuZXh0IFNFQVJDSFZBTFVFUEFSVDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkQ0lTZWFyY2hMaXN0UmVmID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgPT4gJEN1cnJTZWFyY2hWYWx1ZVBhcnQsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkU2VsZi0+e0NJSUR9IF0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZm9yIG15ICRTZWFyY2hSZXN1bHQgKCBAeyRDSVNlYXJjaExpc3RSZWZ9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEBWYWx1ZXMsICRTZWFyY2hSZXN1bHQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCBzY2FsYXIoQFZhbHVlcykgPCAxIHx8ICEkVmFsdWVzWzBdICkgewogICAgICAgICAgICBAVmFsdWVzID0gQFNlYXJjaFZhbHVlczsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcQFZhbHVlczsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGdldCBmb3JtIGRhdGEKICAgICAgICBteSAkVmFsdWU7CiAgICAgICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkVmFsdWU7CiAgICB9Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MicsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoS2V5IEl0ZW0pKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRJbnB1dFN0cmluZyA9ICcnOwoKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57U2VhcmNoSW5wdXRUeXBlfSAmJiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntTZWFyY2hJbnB1dFR5cGV9IGVxICdQYXR0ZXJuJyApIHsKICAgICAgICBteSAkVmFsdWUgPSAnJzsKICAgICAgICBpZiAoIHJlZiggJFBhcmFte1ZhbHVlfSApIGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciBteSAkSXRlbVZhbHVlICggQHsgJFBhcmFte1ZhbHVlfSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCRWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICRWYWx1ZSAuPSAifHwiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkSXRlbVZhbHVlID1+IG0vXlswLTldKyQvICkgewogICAgICAgICAgICAgICAgICAgICRWYWx1ZSAuPSAiW0lEXSIgLiAkSXRlbVZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFZhbHVlIC49ICRJdGVtVmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJElucHV0U3RyaW5nID0gIjxpbnB1dCB0eXBlPVwiVGV4dFwiIG5hbWU9XCIkUGFyYW17S2V5fVwiIGNsYXNzPVwiVzUwcGNcIiB2YWx1ZT1cIiRWYWx1ZVwiPiI7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGhhc2ggd2l0aCB2YWx1ZXMgZm9yIHRoZSBpbnB1dCBmaWVsZAogICAgICAgIG15ICVGb3JtRGF0YTsKCiAgICAgICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFBhcmFte1ZhbHVlfTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIGlucHV0IGZpZWxkCiAgICAgICAgJElucHV0U3RyaW5nID0gJFNlbGYtPklucHV0Q3JlYXRlKAogICAgICAgICAgICAlRm9ybURhdGEsCiAgICAgICAgICAgIEtleSAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIEl0ZW0gPT4gJFBhcmFte0l0ZW19LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRJbnB1dFN0cmluZzsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCIAttachment.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDSUF0dGFjaG1lbnQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRGlnZXN0OjpNRDUgcXcobWQ1IG1kNV9oZXggbWQ1X2Jhc2U2NCk7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNJQXR0YWNobWVudCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJywKKTsKCnVzZSBwYXJlbnQgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0QmFzZVNlbGVjdGFibGUnOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q0lBdHRhY2htZW50IC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIENJQXR0YWNobWVudCBvYmplY3RzCgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJENJQXR0YWNobWVudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q0lBdHRhY2htZW50Jyk7CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiBpZiAhJFZhbHVlOwoKICAgIG15ICVBdHRhY2htZW50ID0gJENJQXR0YWNobWVudE9iamVjdC0+Q0lBdHRhY2htZW50R2V0KAogICAgICAgIEF0dGFjaG1lbnRJRCA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKCiAgICBteSAkU3RyaW5nCiAgICAgICAgPSAnPGEgaHJlZj0iJyAuICRMYXlvdXRPYmplY3QtPntCYXNlbGlua30gLiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50O0F0dGFjaG1lbnRJRD0nIC4gJFZhbHVlOwoKICAgICMgYWRkIHNlc3Npb24gaWQgaWYgbmVlZGVkCiAgICBpZiAoICEkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEQ29va2llfSApIHsKICAgICAgICAkU3RyaW5nIC49ICc7JyAuICRMYXlvdXRPYmplY3QtPntTZXNzaW9uTmFtZX0gLiAiPSIgLiAkTGF5b3V0T2JqZWN0LT57U2Vzc2lvbklEfTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICciPicgLiAkQXR0YWNobWVudHtGaWxlbmFtZX0gLiAnPC9hPiAoJyAuICRBdHRhY2htZW50e0ZpbGVzaXplfSAuICcpJzsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJENJQXR0YWNobWVudE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q0lBdHRhY2htZW50Jyk7CiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhLZXkgSXRlbSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkIGluIEZvcm1EYXRhR2V0ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJERpc3BsYXlWYWx1ZSAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgbXkgJEF0dGFjaG1lbnREZWxldGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICI6OkRlbGV0ZSIgKTsKICAgIG15ICRBdHRhY2htZW50SW5kZXggID0gJFNlbGYtPkF0dGFjaG1lbnRJbmRleEdldCglUGFyYW0pOwogICAgbXkgJEF0dGFjaG1lbnRLZXkgICAgPSAkU2VsZi0+QXR0YWNobWVudEtleUdldCglUGFyYW0pOwoKICAgIGZvciBteSAkR2V0UGFyYW0gKHF3KENvbmZpZ0l0ZW1JRCBDbGFzc0lEIFN1Ym1pdFNhdmUpKSB7CiAgICAgICAgJFBhcmFteyRHZXRQYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkR2V0UGFyYW0gKTsKICAgIH0KCiAgICBteSAlRm9ybURhdGE7CiAgICAkRm9ybURhdGF7VmFsdWV9ID0gdW5kZWY7CgogICAgbXkgJEZvcm1JRCA9ICRTZWxmLT5Gb3JtSURHZXQoCiAgICAgICAgQXR0YWNobWVudEtleSA9PiAkQXR0YWNobWVudEtleSwKICAgICk7CgogICAgIyBnZXQgdGhlIHVwbG9hZCBmaWxlCiAgICBteSAlVXBsb2FkRmlsZSA9ICRQYXJhbU9iamVjdC0+R2V0VXBsb2FkQWxsKAogICAgICAgIFBhcmFtICA9PiAkUGFyYW17S2V5fSAuICI6OlVwbG9hZCIsCiAgICAgICAgU291cmNlID0+ICdzdHJpbmcnLAogICAgKTsKCiAgICBpZiAoJVVwbG9hZEZpbGUpIHsKCiAgICAgICAgIyBnZW5lcmF0ZSBuZXcgaWQgZm9yIHRoZSBhdHRhY2htZW50IHdoaWNoIHdpbGwgYmUgc2F2ZWQKICAgICAgICAjIGluIHRoZSB4bWwgb2YgdGhlIGNvbmZpZyBpdGVtIHZlcnNpb24KICAgICAgICAkRGlzcGxheVZhbHVlID0gJFNlbGYtPkF0dGFjaG1lbnRJREdlbmVyYXRlKCk7CgogICAgICAgICMgYWRkIGF0dGFjaG1lbnQgdG8gdGVtcCBjYWNoZQogICAgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgJVVwbG9hZEZpbGUsCiAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoJEF0dGFjaG1lbnREZWxldGUpIHsKCiAgICAgICAgIyByZW1vdmUgYXR0YWNobWVudCBmcm9tIHRlbXAgY2FjaGUgaWYgdGhlIHVzZXIgcmVtb3ZlcyBpdCBmcm9tIHRoZSBmb3JtIGRhdGEKICAgICAgICAkU2VsZi0+QXR0YWNobWVudENhY2hlRGVsZXRlKAogICAgICAgICAgICBBdHRhY2htZW50SW5kZXggPT4gJEF0dGFjaG1lbnRJbmRleCwKICAgICAgICAgICAgRm9ybUlEICAgICAgICAgID0+ICRGb3JtSUQsCiAgICAgICAgKTsKCiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICcnOwogICAgfQoKICAgIGlmICgkRGlzcGxheVZhbHVlKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICREaXNwbGF5VmFsdWU7CiAgICB9CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbS4uLgogICAgcmV0dXJuIFwlRm9ybURhdGEgaWYgISRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfTsKICAgIHJldHVybiBcJUZvcm1EYXRhIGlmICRGb3JtRGF0YXtWYWx1ZX07CgogICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGF5b3V0T2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRDSUF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNJQXR0YWNobWVudCcpOwogICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlVwbG9hZENhY2hlJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWx1ZSAgICAgPSAkUGFyYW17VmFsdWV9IHx8ICcnOwogICAgbXkgJEtleSAgICAgICA9ICRQYXJhbXtLZXl9OwogICAgbXkgJEtleVVwbG9hZCA9ICRQYXJhbXtLZXl9IC4gIjo6VXBsb2FkIjsKCiAgICBteSAkRmlsZW5hbWU7CiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZmluZCB0aGUgYXR0YWNobWVudCBpbmRleCBmb3IgdGhlIGZpZWxkIGtleSBpbiB0aGUgdGVtcCBjYWNoZQogICAgICAgIG15ICRBdHRhY2htZW50SW5kZXggPSAkU2VsZi0+QXR0YWNobWVudEluZGV4R2V0KCVQYXJhbSk7CgogICAgICAgICMgZ2V0IHRoZSBhdHRhY2htZW50IGZpZWxkIGJhc2Uga2V5CiAgICAgICAgbXkgJEF0dGFjaG1lbnRLZXkgPSAkU2VsZi0+QXR0YWNobWVudEtleUdldCglUGFyYW0pOwoKICAgICAgICAjIGdldCB0aGUgZm9ybSBpZCBmb3IgdGhlIGZpZWxkIHdoZXJlIHRoZSBhdHRhY2htZW50cyBhcmUgc3RvcmVkCiAgICAgICAgbXkgJEZvcm1JRCA9ICRTZWxmLT5Gb3JtSURHZXQoCiAgICAgICAgICAgIEF0dGFjaG1lbnRLZXkgPT4gJEF0dGFjaG1lbnRLZXksCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBkZWZpbmVkICRBdHRhY2htZW50SW5kZXggJiYgZGVmaW5lZCAkQXR0YWNobWVudEtleSAmJiBkZWZpbmVkICRGb3JtSUQgKSB7CgogICAgICAgICAgICAjIGZpbmQgdGhlIGNhY2hlZCB0ZW1wIGF0dGFjaG1lbnQgZm9yIHRoZSBmaWVsZAogICAgICAgICAgICBteSAlQXR0YWNobWVudCA9ICRTZWxmLT5BdHRhY2htZW50Q2FjaGVHZXQoCiAgICAgICAgICAgICAgICBJbmRleCAgPT4gJEF0dGFjaG1lbnRJbmRleCwKICAgICAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCVBdHRhY2htZW50KSB7CiAgICAgICAgICAgICAgICAkRmlsZW5hbWUgPSAkQXR0YWNobWVudHtGaWxlbmFtZX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBnZXQgYXR0YWNobWVudCBmcm9tIHZpcnR1YWwgZnMKICAgICAgICAgICAgICAgIG15ICVDSUF0dGFjaG1lbnRHZXQgPSAkQ0lBdHRhY2htZW50T2JqZWN0LT5DSUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgQXR0YWNobWVudElEID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCVDSUF0dGFjaG1lbnRHZXQpIHsKICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPSAkU2VsZi0+QXR0YWNobWVudElER2VuZXJhdGUoKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudCB0byB0ZW1wIGNhY2hlCiAgICAgICAgICAgICAgICAgICAgJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkQ0lBdHRhY2htZW50R2V0e0ZpbGVuYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJENJQXR0YWNobWVudEdldHtDb250ZW50VHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRDSUF0dGFjaG1lbnRHZXR7Q29udGVudH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1JRCAgICAgID0+ICRGb3JtSUQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkT3V0cHV0ID0gJzxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IicKICAgICAgICAuICRLZXkKICAgICAgICAuICc6OkNJQXR0YWNobWVudCIgdmFsdWU9IjEiLz48aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInCiAgICAgICAgLiAkS2V5CiAgICAgICAgLiAnIiB2YWx1ZT0iJwogICAgICAgIC4gJFZhbHVlIC4gJyIvPiAnOwogICAgaWYgKCRGaWxlbmFtZSkgewogICAgICAgICRPdXRwdXQgLj0gJEZpbGVuYW1lOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dCAuPSAnPGlucHV0IHR5cGU9ImZpbGUiIGlkPSInIC4gJEtleVVwbG9hZCAuICciIG5hbWU9IicgLiAkS2V5VXBsb2FkIC4gJyIgY2xhc3M9ImZpeGVkIiAvPiAnOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTT25Eb2N1bWVudENvbXBsZXRlKCBDb2RlID0+IDw8IlpOVVVOWSIgKTsKCi8vIHVzZSBnZXRFbGVtZW50QnlJZCBiZWNhdXNlIGlkIGhhcyBjb2xvbnMKXCQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIiRLZXlVcGxvYWQiKSkub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgdmFyIFwkRm9ybSA9IFwkKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCIkS2V5VXBsb2FkIikpLmNsb3Nlc3QoJ2Zvcm0nKTsKICAgIENvcmUuRm9ybS5WYWxpZGF0ZS5EaXNhYmxlVmFsaWRhdGlvbihcJEZvcm0pOwogICAgXCRGb3JtLnN1Ym1pdCgpOwp9KTsKWk5VVU5ZCgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuOwp9Cgo9aGVhZDIgQXR0YWNobWVudElER2VuZXJhdGUoKQoKVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIHVuaXF1ZSBJRCBmb3IgdGhlIGF0dGFjaG1lbnQuCgogICAgbXkgJFN1Y2Nlc3MgPSAkQmFja2VuZE9iamVjdC0+QXR0YWNobWVudElER2VuZXJhdGUoKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRJREdlbmVyYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGltZScpOwoKICAgIG15ICRTeXN0ZW1UaW1lID0gJFRpbWVPYmplY3QtPlN5c3RlbVRpbWUoKTsKCiAgICBteSAkUmFuZCA9IHJhbmQoMV8wMDBfMDAwXzAwMCk7CgogICAgcmV0dXJuIG1kNV9oZXgoICRTeXN0ZW1UaW1lIC4gJFJhbmQgKTsKfQoKPWhlYWQyIEF0dGFjaG1lbnRJbmRleEdldCgpCgpUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGF0dGFjaG1lbnQgaW5kZXggZm9yIHRoZSBmaWVsZCBrZXkuCgogICAgbXkgJEF0dGFjaG1lbnRJbmRleCA9ICRCYWNrZW5kT2JqZWN0LT5BdHRhY2htZW50SW5kZXhHZXQoCiAgICAgICAgS2V5ID0+ICdmaWVsZDo6MScsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkQXR0YWNobWVudEluZGV4ID0gMDsKCj1jdXQKCnN1YiBBdHRhY2htZW50SW5kZXhHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoS2V5KSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSBARmllbGRTcGxpdCA9IHNwbGl0IC9cOlw6LywgJFBhcmFte0tleX07CiAgICByZXR1cm4gaW50KCAkRmllbGRTcGxpdFstMV0gKSAtIDE7Cn0KCj1oZWFkMiBBdHRhY2htZW50S2V5R2V0KCkKClRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgYXR0YWNobWVudCBpbmRleCBmb3IgdGhlIGZpZWxkIGtleS4KCiAgICBteSAkQXR0YWNobWVudEtleSA9ICRCYWNrZW5kT2JqZWN0LT5BdHRhY2htZW50S2V5R2V0KAogICAgICAgIEtleSA9PiAnZmllbGQ6OjEnLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJEF0dGFjaG1lbnRLZXkgPSAnZmllbGQnOwoKPWN1dAoKc3ViIEF0dGFjaG1lbnRLZXlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoS2V5KSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSBARmllbGRTcGxpdCA9IHNwbGl0IC9cOlw6LywgJFBhcmFte0tleX07CiAgICBwb3AgQEZpZWxkU3BsaXQ7CgogICAgcmV0dXJuIGpvaW4oICc6OicsIEBGaWVsZFNwbGl0ICk7Cn0KCj1oZWFkMiBGb3JtSURHZXQoKQoKVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBmb3JtIGlkIGZvciB0aGUgYXR0YWNobWVudCBmaWVsZC4KCiAgICBteSAkRm9ybUlEID0gJEJhY2tlbmRPYmplY3QtPkZvcm1JREdldCgKICAgICAgICBBdHRhY2htZW50S2V5ID0+IDEyMywKICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRGb3JtSUQgPSAnMTExLjEyLjMuMTIzLjEuMjMnOwoKPWN1dAoKc3ViIEZvcm1JREdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkV2ViVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQXR0YWNobWVudEtleSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEF0dGFjaG1lbnRLZXkgPSAkUGFyYW17QXR0YWNobWVudEtleX07CgogICAgbXkgJEZvcm1JRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGb3JtSUQnICk7CiAgICAkRm9ybUlEIHx8PSAkV2ViVXBsb2FkQ2FjaGVPYmplY3QtPntMYXN0Rm9ybUlEfTsKCiAgICByZXR1cm4gaWYgISRGb3JtSUQ7CgogICAgJEZvcm1JRCAuPSAnLkNJQXR0YWNobWVudCc7CiAgICAkRm9ybUlEIC49ICcuJyAuICRBdHRhY2htZW50S2V5OyAgICAjIE5vZGUKCiAgICByZXR1cm4gJEZvcm1JRDsKfQoKPWhlYWQyIEF0dGFjaG1lbnRDYWNoZUdldCgpCgpUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIHRlbXBvcmFyaWx5IGF0dGFjaG1lbnQgZGF0YSBvZiB0aGUgYXR0YWNobWVudCBmaWVsZC4KCiAgICBteSAlQXR0YWNobWVudCA9ICRCYWNrZW5kT2JqZWN0LT5BdHRhY2htZW50Q2FjaGVHZXQoCiAgICAgICAgSW5kZXggID0+IDAsCiAgICAgICAgRm9ybUlEID0+ICcxMjMnLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJUF0dGFjaG1lbnQgPSAoCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ2FzZGYudHh0JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgQ29udGVudCAgICAgPT4gJ2JsdWInLAogICAgKTsKCj1jdXQKCnN1YiBBdHRhY2htZW50Q2FjaGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkVXBsb2FkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSW5kZXggRm9ybUlEKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRm9ybUlEICAgICAgICAgID0gJFBhcmFte0Zvcm1JRH07CiAgICBteSAkQXR0YWNobWVudEluZGV4ID0gJFBhcmFte0luZGV4fTsKCiAgICBteSBARGF0YSA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgKTsKCiAgICByZXR1cm4gaWYgIUBEYXRhOwoKICAgIG15ICRBdHRhY2htZW50ID0gJERhdGFbJEF0dGFjaG1lbnRJbmRleF07CgogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQXR0YWNobWVudCk7CgogICAgcmV0dXJuICV7JEF0dGFjaG1lbnR9Owp9Cgo9aGVhZDIgQXR0YWNobWVudENhY2hlRGVsZXRlKCkKClRoaXMgZnVuY3Rpb24gZGVsZXRlcyB0aGUgdGVtcG9yYXJpbHkgYXR0YWNobWVudCBkYXRhIG9mIHRoZSBhdHRhY2htZW50IGZpZWxkLgoKICAgIG15ICRTdWNjZXNzID0gJEJhY2tlbmRPYmplY3QtPkF0dGFjaG1lbnRDYWNoZURlbGV0ZSgKICAgICAgICBBdHRhY2htZW50SW5kZXggPT4gMSwKICAgICAgICBGb3JtSUQgICAgICAgICAgPT4gJzEyMycsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgQXR0YWNobWVudENhY2hlRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFVwbG9hZENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6VXBsb2FkQ2FjaGUnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEF0dGFjaG1lbnRJbmRleCBGb3JtSUQpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRGb3JtSUQgICAgICAgICAgPSAkUGFyYW17Rm9ybUlEfTsKICAgIG15ICRBdHRhY2htZW50SW5kZXggPSAkUGFyYW17QXR0YWNobWVudEluZGV4fTsKCiAgICBteSBARGF0YSA9ICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlER2V0QWxsRmlsZXNEYXRhKAogICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgKTsKCiAgICByZXR1cm4gaWYgIUBEYXRhOwoKICAgIG15ICRBdHRhY2htZW50ID0gJERhdGFbJEF0dGFjaG1lbnRJbmRleF07CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBdHRhY2htZW50KTsKCiAgICAjIHJlbW92ZSB0aGUgYXR0YWNobWVudCBmcm9tIHRoZSB1cGxvYWQgY2FjaGUKICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEUmVtb3ZlRmlsZSgKICAgICAgICBGb3JtSUQgPT4gJEZvcm1JRCwKICAgICAgICBGaWxlSUQgPT4gJEF0dGFjaG1lbnQtPntGaWxlSUR9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCISimple.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dENJU2ltcGxlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q0lTaW1wbGUgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgQ0lDbGFzcyBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbUxheW91dENJU2ltcGxlJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgI2FsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntDSUlEfSA9IDA7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgI3RyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9IHx8ICcnLAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KAogICAgICAgIEtleSAgPT4gJ0l0ZW06OjE6Ok5vZGU6OjIsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBzZWxlY3RlZCBDSUNsYXNzCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIGNoZWNrIHJlcXVpcmVkIG9wdGlvbgogICAgcmV0dXJuIFwlRm9ybURhdGEgaWYgISRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfTsKICAgIHJldHVybiBcJUZvcm1EYXRhIGlmICRGb3JtRGF0YXtWYWx1ZX07CgogICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ICAgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtICA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIG5leHQgQVJHVU1FTlQgaWYgJFBhcmFteyRBcmd1bWVudH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAgIH0KCiAgICBpZiAoCiAgICAgICAgISRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NJRH0KICAgICAgICAmJiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDSUNsYXNzTmFtZX0KICAgICAgICApCiAgICB7CgogICAgICAgIG15ICRJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q0lDbGFzc05hbWV9LAogICAgICAgICk7CgogICAgICAgIGlmICggISRJdGVtRGF0YVJlZiB8fCAhKCAkSXRlbURhdGFSZWYtPntJdGVtSUR9ICkgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSVRTTUNvbmZpZ0l0ZW1MYXlvdXRDSVNpbXBsZTogQ0ktQ2xhc3MgPCIKICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NOYW1lfQogICAgICAgICAgICAgICAgICAgIC4gIj4gbm90IGRlZmluZWQgaW4gR2VuZXJhbENhdGFsb2chIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWxmLT57Q0lJRH0gPSAkSXRlbURhdGFSZWYtPntJdGVtSUR9OwogICAgICAgIH0KCiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NJRH0gKSB7CiAgICAgICAgJFNlbGYtPntDSUlEfSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NJRH07CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1SZXN1bHRMaXN0KAogICAgICAgIENsYXNzSUQgPT4gJFNlbGYtPntDSUlEfSwKICAgICAgICBTdGFydCAgID0+IDAsCiAgICAgICAgTGltaXQgICA9PiAxXzAwMF8wMDAsCiAgICApOwoKICAgIG15IEBTZWxlY3Rpb25WYWx1ZXM7CiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkQ29uZmlnSXRlbUxpc3RSZWYgfHwgW10gfSApIHsKICAgICAgICBwdXNoIEBTZWxlY3Rpb25WYWx1ZXMsIHsKICAgICAgICAgICAgS2V5ICAgPT4gJEl0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBWYWx1ZSA9PiAkSXRlbS0+e05hbWV9CiAgICAgICAgICAgICAgICAuICIgKCIKICAgICAgICAgICAgICAgIC4gJEl0ZW0tPntOdW1iZXJ9CiAgICAgICAgICAgICAgICAuICIpIiwKICAgICAgICB9OwogICAgfQoKICAgIG15ICRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXEBTZWxlY3Rpb25WYWx1ZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmFsdWUsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSAgPT4gJ0l0ZW06OjE6Ok5vZGU6OjInLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBuZXh0IEFSR1VNRU5UIGlmICRQYXJhbXskQXJndW1lbnR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntTZWFyY2hJbnB1dFR5cGV9ICYmICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1NlYXJjaElucHV0VHlwZX0gZXEgJ1BhdHRlcm4nICkgewogICAgICAgIG15IEBWYWx1ZXMgPSBxd3t9OwogICAgICAgIGlmICggISRTZWxmLT57Q0lJRH0gKSB7CgogICAgICAgICAgICBteSAkSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q0lDbGFzc05hbWV9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJEl0ZW1EYXRhUmVmIHx8ICEoICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH0gKSApIHsKICAgICAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJVFNNQ29uZmlnSXRlbUxheW91dENJU2ltcGxlOiBDSS1DbGFzcyA8IgogICAgICAgICAgICAgICAgICAgICAgICAuICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAuICI+IG5vdCBkZWZpbmVkIGluIEdlbmVyYWxDYXRhbG9nISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPntDSUlEfSA9ICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgICAgIH0KCiAgICAgICAgfQoKICAgICAgICBteSBAU2VhcmNoVmFsdWVzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAgICAgU0VBUkNIVkFMVUU6CiAgICAgICAgZm9yIG15ICRDdXJyU2VhcmNoVmFsdWUgKEBTZWFyY2hWYWx1ZXMpIHsKICAgICAgICAgICAgbmV4dCBTRUFSQ0hWQUxVRSBpZiAoICEkQ3VyclNlYXJjaFZhbHVlICk7CgogICAgICAgICAgICBteSBAU2VhcmNoVmFsdWVQYXJ0cyA9IHNwbGl0KCAnXHxcfCcsICRDdXJyU2VhcmNoVmFsdWUgKTsKCiAgICAgICAgICAgIFNFQVJDSFZBTFVFUEFSVDoKICAgICAgICAgICAgZm9yIG15ICRDdXJyU2VhcmNoVmFsdWVQYXJ0IChAU2VhcmNoVmFsdWVQYXJ0cykgewogICAgICAgICAgICAgICAgbmV4dCBTRUFSQ0hWQUxVRVBBUlQgaWYgKCAhJEN1cnJTZWFyY2hWYWx1ZVBhcnQgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHBhdHRlcm4gZm9yIGlkCiAgICAgICAgICAgICAgICBpZiAoICRDdXJyU2VhcmNoVmFsdWVQYXJ0ID1+IG0vXlxbSURcXShbMC05XSspJC9pICkgewogICAgICAgICAgICAgICAgICAgIHB1c2goIEBWYWx1ZXMsICQxICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgU0VBUkNIVkFMVUVQQVJUOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJEN1cnJTZWFyY2hWYWx1ZVBhcnQgPX4gbS9eXFtOdW1iZXJcXShbMC05Kl0rKSQvaSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ0lTZWFyY2hMaXN0UmVmID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoCiAgICAgICAgICAgICAgICAgICAgICAgIE51bWJlciAgID0+ICQxLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRTZWxmLT57Q0lJRH0gXSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkU2VhcmNoUmVzdWx0ICggQHskQ0lTZWFyY2hMaXN0UmVmfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCggQFZhbHVlcywgJFNlYXJjaFJlc3VsdCApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUFSQ0hWQUxVRVBBUlQ7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJENJU2VhcmNoTGlzdFJlZiA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgID0+ICRDdXJyU2VhcmNoVmFsdWVQYXJ0LAogICAgICAgICAgICAgICAgICAgIENsYXNzSURzID0+IFsgJFNlbGYtPntDSUlEfSBdLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkU2VhcmNoUmVzdWx0ICggQHskQ0lTZWFyY2hMaXN0UmVmfSApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBAVmFsdWVzLCAkU2VhcmNoUmVzdWx0ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICMgbm8gZ3VhcmQgY2xhdXNlIDspCgogICAgICAgIGlmICggc2NhbGFyKEBWYWx1ZXMpIDwgMSB8fCAhJFZhbHVlc1swXSApIHsKICAgICAgICAgICAgQFZhbHVlcyA9IEBTZWFyY2hWYWx1ZXM7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gXEBWYWx1ZXM7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgbXkgJFZhbHVlOwogICAgICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRWYWx1ZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFZhbHVlOwogICAgfQp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjInLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRJbnB1dFN0cmluZyA9ICcnOwoKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57U2VhcmNoSW5wdXRUeXBlfSAmJiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntTZWFyY2hJbnB1dFR5cGV9IGVxICdQYXR0ZXJuJyApIHsKICAgICAgICBteSAkVmFsdWUgPSAnJzsKICAgICAgICBpZiAoIHJlZiggJFBhcmFte1ZhbHVlfSApIGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgIGZvciBteSAkSXRlbVZhbHVlICggQHsgJFBhcmFte1ZhbHVlfSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCRWYWx1ZSkgewogICAgICAgICAgICAgICAgICAgICRWYWx1ZSAuPSAifHwiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkSXRlbVZhbHVlID1+IG0vXlswLTldKyQvICkgewogICAgICAgICAgICAgICAgICAgICRWYWx1ZSAuPSAiW0lEXSIgLiAkSXRlbVZhbHVlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFZhbHVlIC49ICRJdGVtVmFsdWU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJElucHV0U3RyaW5nID0gIjxpbnB1dCB0eXBlPVwiVGV4dFwiIG5hbWU9XCIkUGFyYW17S2V5fVwiIHNpemU9XCIzMFwiIHZhbHVlPVwiJFZhbHVlXCI+IjsKICAgIH0KICAgIGVsc2UgewogICAgICAgICMgaGFzaCB3aXRoIHZhbHVlcyBmb3IgdGhlIGlucHV0IGZpZWxkCiAgICAgICAgbXkgJUZvcm1EYXRhOwoKICAgICAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkUGFyYW17VmFsdWV9OwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgICAgICAkSW5wdXRTdHJpbmcgPSAkU2VsZi0+SW5wdXRDcmVhdGUoCiAgICAgICAgICAgICVGb3JtRGF0YSwKICAgICAgICAgICAgS2V5ICA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgSXRlbSA9PiAkUGFyYW17SXRlbX0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJElucHV0U3RyaW5nOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomer.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEN1c3RvbWVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDdXN0b21lciAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBjdXN0b21lciBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXItPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgJFBhcmFte1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9IHx8ICcnLAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgIyBnZXQgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlcgogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBjaGVjayBzZWFyY2ggYnV0dG9uCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VhcmNoJyApICkgewogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntTZWFyY2h9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpTZWFyY2gnICk7CiAgICB9CgogICAgIyBjaGVjayBzZWxlY3QgYnV0dG9uCiAgICBlbHNpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VsZWN0JyApICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlbGVjdCcgKTsKICAgIH0KCiAgICAjIGNoZWNrIGNsZWFyIGJ1dHRvbgogICAgZWxzaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkJ1dHRvbkNsZWFyJyApICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAnJzsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHJlc2V0IHZhbHVlIGlmIHNlYXJjaCBmaWVsZCBpcyBlbXB0eQogICAgICAgIGlmICgKICAgICAgICAgICAgISRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VhcmNoJyApCiAgICAgICAgICAgICYmIGRlZmluZWQgJEZvcm1EYXRhe1ZhbHVlfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJyc7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIG9wdGlvbgogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFZhbHVlID0gJyc7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH07CiAgICB9CiAgICBteSAkQ2xhc3MgICAgICAgICAgICA9ICdXNTBwYyBJVFNNQ3VzdG9tZXJTZWFyY2gnOwogICAgbXkgJEN1c3RvbWVyVXNlck5hbWUgPSAnJzsKICAgIG15ICRSZXF1aXJlZCAgICAgICAgID0gJFBhcmFte1JlcXVpcmVkfSB8fCAnJzsKICAgIG15ICRJbnZhbGlkICAgICAgICAgID0gJFBhcmFte0ludmFsaWR9ICB8fCAnJzsKICAgIG15ICRJdGVtSWQgICAgICAgICAgID0gJFBhcmFte0l0ZW1JZH0gICB8fCAnJzsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGNyZWF0ZSBjdXN0b21lciBzdHJpbmcKICAgIGlmICgkVmFsdWUpIHsKCiAgICAgICAgIyBnZXQgY3VzdG9tZXIgbmFtZQogICAgICAgICRDdXN0b21lclVzZXJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpLT5DdXN0b21lck5hbWUoCiAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkVmFsdWUsCiAgICAgICAgKTsKCiAgICAgICAgIyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgICAgICRDdXN0b21lclVzZXJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkQ3VzdG9tZXJVc2VyTmFtZSB8fCAnJywKICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgY3JlYXRlIHN0cmluZwogICAgbXkgJFN0cmluZyA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInCiAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAuICRWYWx1ZQogICAgICAgIC4gJyIgaWQ9IicKICAgICAgICAuICRJdGVtSWQgLiAnU2VsZWN0ZWQnCiAgICAgICAgLiAnIi8+JwogICAgICAgIC4gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSInCiAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgIC4gJzo6U2VhcmNoIiBjbGFzcz0iJwogICAgICAgIC4gJENsYXNzCiAgICAgICAgLiAnIiBpZD0iJwogICAgICAgIC4gJEl0ZW1JZAogICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAuICRDdXN0b21lclVzZXJOYW1lIC4gJyIvPic7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZTsKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KICAgIHJldHVybiAkVmFsdWU7Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkS2V5ID0gJFBhcmFte0tleX07CgogICAgIyBoYXNoIHdpdGggdmFsdWVzIGZvciB0aGUgaW5wdXQgZmllbGQKICAgIG15ICVGb3JtRGF0YTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgIG15ICRJbnB1dFN0cmluZyA9ICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAlRm9ybURhdGEsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW0gICA9PiAkUGFyYW17SXRlbX0sCiAgICAgICAgSXRlbUlkID0+ICRQYXJhbXtLZXl9LAogICAgKTsKCiAgICByZXR1cm4gJElucHV0U3RyaW5nOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutCustomerCompany.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEN1c3RvbWVyQ29tcGFueTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lckNvbXBhbnknLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q3VzdG9tZXJDb21wYW55IC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGN1c3RvbWVyIGNvbXBhbnkgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEN1c3RvbWVyQ29tcGFueS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0gfHwgJycsCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBGb3JtRGF0YUdldCgpCgpnZXQgZm9ybSBkYXRhIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoS2V5IEl0ZW0pKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBmb3JtIGRhdGEKICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwoKICAgICMgc2V0IGludmFsaWQgcGFyYW0KICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJFNlbGVjdGVkSUQgPSAkUGFyYW17VmFsdWV9IHx8ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gfHwgJyc7CgogICAgbXkgJENTU0NsYXNzID0gJ01vZGVybml6ZSc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9OwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9OwogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1JZH07CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ1NTQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJUNvbXBhbnlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpLT5DdXN0b21lckNvbXBhbnlMaXN0KAogICAgICAgIExpbWl0ID0+IDAsICAgICMgRGlzcGxheSBhbGwgQ3VzdG9tZXIgQ29tcGFuaWVzCiAgICApOwoKICAgICMgZ2VuZXJhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVDb21wYW55TGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSUQgICAgICAgICAgID0+ICRJdGVtSWQsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRTZWxlY3RlZElELAogICAgICAgIENsYXNzICAgICAgICA9PiAkQ1NTQ2xhc3MsCiAgICApOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSBAVmFsdWVzOwogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgIEBWYWx1ZXMgPSBAeyAkUGFyYW17VmFsdWV9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBAVmFsdWVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRBcnJheSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KCiAgICByZXR1cm4gXEBWYWx1ZXM7Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkVmFsdWVzID0gJFNlbGYtPlNlYXJjaEZvcm1EYXRhR2V0KCVQYXJhbSk7CgogICAgIyBnZXQgY29tcGFueSBkYXRhCiAgICBteSAlQ29tcGFueUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55JyktPkN1c3RvbWVyQ29tcGFueUxpc3QoCiAgICAgICAgTGltaXQgPT4gMCwKICAgICk7CgogICAgIyBnZW5lcmF0ZSBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgID0+IFwlQ29tcGFueUxpc3QsCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgU2l6ZSAgICAgICAgPT4gNSwKICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFZhbHVlcywKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDate.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dERhdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBkYXRlIG9iamVjdHMuCgo9Y3V0Cgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZS0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gJzIwMDctMDEtMDEnLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICAkUGFyYW17VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuRGF0ZSB8IExvY2FsaXplKCJEYXRlIikgJV0nLAogICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgRGF0ZSA9PiAkUGFyYW17VmFsdWV9IC4gJyAwMDowMDowMCcsCiAgICAgICAgfSwKICAgICk7CiAgICAkUGFyYW17VmFsdWV9ID1+IHMvMDA6MDA6MDAvLzsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSB8fCAnJzsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJERheSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpEYXknICk7CiAgICBteSAkTW9udGggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6Ok1vbnRoJyApOwogICAgbXkgJFllYXIgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpZZWFyJyApOwoKICAgIGlmICggJERheSAmJiAkTW9udGggJiYgJFllYXIgKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9IHNwcmludGYgJyUwMmQtJTAyZC0lMDJkJywgJFllYXIsICRNb250aCwgJERheTsKICAgIH0KCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgIyBTYW5pdHkgY2hlY2sgb2YgdGhlIGFzc2VtYmxlZCB0aW1lc3RhbXAKICAgIGlmICggJEZvcm1EYXRhe1ZhbHVlfSApIHsKCiAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZvcm1EYXRhe1ZhbHVlfSAuICcgMDA6MDA6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggISREYXRlVGltZU9iamVjdCApIHsKICAgICAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMy0yNicsICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRJbnZhbGlkID0gJFBhcmFte0ludmFsaWR9OwoKICAgIG15ICVWYWx1ZXM7CiAgICBteSAkQ2xhc3M7CiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSApIHsKICAgICAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9IHx8ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH07CgogICAgICAgIGlmICggJFZhbHVlID1+IC9eKFxkXGRcZFxkKS0oXGRcZHxcZCktKFxkXGR8XGQpJC9pICkgewogICAgICAgICAgICAkVmFsdWVzeyAkUGFyYW17S2V5fSAuICc6OlllYXInIH0gID0gJDE7CiAgICAgICAgICAgICRWYWx1ZXN7ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnIH0gPSAkMjsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpEYXknIH0gICA9ICQzOwoKICAgICAgICAgICAgaWYgKCRJbnZhbGlkKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3MgPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQYXJhbXtLZXl9IC4gJzo6JywKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIFllYXJQZXJpb2RQYXN0ICAgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57WWVhclBlcmlvZFBhc3R9ICAgfHwgMTAsCiAgICAgICAgWWVhclBlcmlvZEZ1dHVyZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kRnV0dXJlfSB8fCAxMCwKICAgICAgICAlVmFsdWVzLAogICAgICAgICRQYXJhbXtLZXl9IC4gJzo6JyAuICdDbGFzcycgPT4gJENsYXNzLAogICAgICAgIFZhbGlkYXRlICAgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBPdmVycmlkZVRpbWVab25lICAgICAgICAgICAgID0+ICRQYXJhbXtPdmVycmlkZVRpbWVab25lfSwKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRVc2VkOwogICAgbXkgJFN0YXJ0RGF5OwogICAgbXkgJFN0YXJ0TW9udGg7CiAgICBteSAkU3RhcnRZZWFyOwogICAgbXkgJFN0b3BEYXk7CiAgICBteSAkU3RvcE1vbnRoOwogICAgbXkgJFN0b3BZZWFyOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIGlmICggJFBhcmFte1ZhbHVlfSAmJiByZWYgJFBhcmFte1ZhbHVlfSBlcSAnSEFTSCcgKSB7CiAgICAgICAgJFVzZWQgICAgICAgPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IH07CiAgICAgICAgJFN0YXJ0RGF5ICAgPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpEYXknIH07CiAgICAgICAgJFN0YXJ0TW9udGggPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgfTsKICAgICAgICAkU3RhcnRZZWFyICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OlllYXInIH07CiAgICAgICAgJFN0b3BEYXkgICAgPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgfTsKICAgICAgICAkU3RvcE1vbnRoICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnIH07CiAgICAgICAgJFN0b3BZZWFyICAgPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OlllYXInIH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVXNlZCAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CiAgICAgICAgJFN0YXJ0RGF5ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6RGF5JyApOwogICAgICAgICRTdGFydE1vbnRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyApOwogICAgICAgICRTdGFydFllYXIgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OlllYXInICk7CiAgICAgICAgJFN0b3BEYXkgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpEYXknICk7CiAgICAgICAgJFN0b3BNb250aCAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNb250aCcgKTsKICAgICAgICAkU3RvcFllYXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OlllYXInICk7CiAgICB9CiAgICBpZiAoCiAgICAgICAgJFVzZWQKICAgICAgICAmJiAkU3RhcnREYXkgJiYgJFN0YXJ0TW9udGggJiYgJFN0YXJ0WWVhcgogICAgICAgICYmICRTdG9wRGF5ICAmJiAkU3RvcE1vbnRoICAmJiAkU3RvcFllYXIKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJFN0YXJ0RGF0ZSA9IHNwcmludGYgJyUwMmQtJTAyZC0lMDJkJywgJFN0YXJ0WWVhciwgJFN0YXJ0TW9udGgsICRTdGFydERheTsKICAgICAgICBteSAkU3RvcERhdGUgID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQnLCAkU3RvcFllYXIsICAkU3RvcE1vbnRoLCAgJFN0b3BEYXk7CgogICAgICAgIHJldHVybiB7ICctYmV0d2VlbicgPT4gWyAkU3RhcnREYXRlLCAkU3RvcERhdGUgXSB9OwogICAgfQoKICAgIHJldHVybiBbXTsgICAgIyBubyBjb25kaXRpb25zIGJ5IGRlZmF1bHQKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ICAgICAgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gICAgID0+ICRJdGVtUmVmLAogICAgICAgIE9wdGlvbmFsID0+IDEsICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMganVzdCBmb3IgY29udmVuaWVuY2UKICAgIG15ICRLZXkgICAgICAgICA9ICRQYXJhbXtLZXl9OwogICAgbXkgJFByZWZpeFN0YXJ0ID0gJEtleSAuICc6OlRpbWVTdGFydDo6JzsKICAgIG15ICRQcmVmaXhTdG9wICA9ICRLZXkgLiAnOjpUaW1lU3RvcDo6JzsKCiAgICAjIGdldCB0aW1lIHJlbGF0ZWQgcGFyYW1zCiAgICBteSAlR2V0UGFyYW07CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CiAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICVHZXRQYXJhbSA9ICV7ICRQYXJhbXtWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRHZXRQYXJhbXskS2V5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRLZXkgKTsKICAgICAgICBmb3IgbXkgJFRpbWVUeXBlICggJFByZWZpeFN0YXJ0LCAkUHJlZml4U3RvcCApIHsKICAgICAgICAgICAgZm9yIG15ICRQYXJ0IChxdyggWWVhciBNb250aCBEYXkgKSkgewogICAgICAgICAgICAgICAgbXkgJFBhcmFtS2V5ID0gJFRpbWVUeXBlIC4gJFBhcnQ7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1WYWwgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW1LZXkgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSB3aGl0ZSBzcGFjZSBvbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICAgICAgICAgICAgaWYgKCRQYXJhbVZhbCkgewogICAgICAgICAgICAgICAgICAgICRQYXJhbVZhbCA9fiBzeyBcQSBccysgfXt9eG1zOwogICAgICAgICAgICAgICAgICAgICRQYXJhbVZhbCA9fiBzeyBccysgXHogfXt9eG1zOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc3RvcmUgaW4gJUdldFBhcmFtCiAgICAgICAgICAgICAgICAkR2V0UGFyYW17JFBhcmFtS2V5fSA9ICRQYXJhbVZhbDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgQnVpbGQgc2VsZWN0aW9uIGZvciB0aGUgc3RhcnQgYW5kIHN0b3AgdGltZS4KICAgICMgTm90ZSB0aGF0IHNlYXJjaGluZyBpcyBieSBkYXRlLCB3aGlsZSBpbnB1dCBpcyBieSB0aW1lIGFzIHdlbGwKICAgIG15ICRUaW1lU3RhcnRTZWxlY3Rpb25TdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUHJlZml4U3RhcnQsCiAgICAgICAgRm9ybWF0ICAgICAgICAgICA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKICAgIG15ICRUaW1lU3RvcFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBPcHRpb25hbCAgICAgICAgID0+IDAsCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUHJlZml4U3RvcCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIFllYXJQZXJpb2RQYXN0ICAgPT4gMTAsCiAgICAgICAgWWVhclBlcmlvZEZ1dHVyZSA9PiAxMCwKICAgICAgICAlR2V0UGFyYW0sCiAgICApOwoKICAgIG15ICRDaGVja2JveCA9IHFxezxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IiRLZXkiIHZhbHVlPSIxIi8+fTsKICAgIGlmICggJFBhcmFte09wdGlvbmFsfSApIHsKICAgICAgICAkQ2hlY2tib3ggPSBxcXs8aW5wdXQgdHlwZT0iY2hlY2tib3giIG5hbWU9IiRLZXkiIHZhbHVlPSIxIi8+fTsKICAgIH0KCiAgICBteSAkQmV0d2VlbiA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQmV0d2VlbicpOwogICAgbXkgJEFuZCAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ2FuZCcpOwoKICAgIHJldHVybiAiPGRpdj4gJENoZWNrYm94ICRCZXR3ZWVuICRUaW1lU3RhcnRTZWxlY3Rpb25TdHJpbmcgPC9kaXY+IgogICAgICAgIC4gIjxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDI3cHg7XCI+JEFuZDwvc3Bhbj4gJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nIjsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDateTime.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dERhdGVUaW1lOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dERhdGVUaW1lIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIGRhdGV0aW1lIG9iamVjdHMuCgo9Y3V0Cgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RGF0ZVRpbWUtPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAxLTAxIDEyOjAwJywgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgJFBhcmFte1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlID0+ICdbJSBEYXRhLkRhdGUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBEYXRlID0+ICRQYXJhbXtWYWx1ZX0gLiAnOjAwJywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSB8fCAnJzsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJERheSAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6RGF5JyApOwogICAgbXkgJE1vbnRoICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6TW9udGgnICk7CiAgICBteSAkWWVhciAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpZZWFyJyApOwogICAgbXkgJEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6SG91cicgKSAgIHx8IDA7CiAgICBteSAkTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpNaW51dGUnICkgfHwgMDsKCiAgICBpZiAoICREYXkgJiYgJE1vbnRoICYmICRZZWFyICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCAlMDJkOiUwMmQnLCAkWWVhciwgJE1vbnRoLCAkRGF5LCAkSG91ciwgJE1pbnV0ZTsKICAgIH0KCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgIyBTYW5pdHkgY2hlY2sgb2YgdGhlIGFzc2VtYmxlZCB0aW1lc3RhbXAKICAgIGlmICggJEZvcm1EYXRhe1ZhbHVlfSApIHsKCiAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJEZvcm1EYXRhe1ZhbHVlfSAuICc6MDAnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggISREYXRlVGltZU9iamVjdCApIHsKICAgICAgICAgICAgJEZvcm1EYXRhe0ludmFsaWR9ID0gMTsKICAgICAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAnMjAwNy0wMy0yNiAxMjowMCcsICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEludmFsaWQgPSAkUGFyYW17SW52YWxpZH07CgogICAgbXkgJVZhbHVlczsKICAgIG15ICRDbGFzczsKICAgIGlmICggJFBhcmFte1ZhbHVlfSB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKCiAgICAgICAgaWYgKCAkVmFsdWUgPX4gL14oXGRcZFxkXGQpLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKSQvaSApIHsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpZZWFyJyB9ICAgPSAkMTsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNb250aCcgfSAgPSAkMjsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpEYXknIH0gICAgPSAkMzsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpIb3VyJyB9ICAgPSAkNDsKICAgICAgICAgICAgJFZhbHVlc3sgJFBhcmFte0tleX0gLiAnOjpNaW51dGUnIH0gPSAkNTsKCiAgICAgICAgICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICAgICAgICAgJENsYXNzID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZERhdGVTZWxlY3Rpb24oCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUGFyYW17S2V5fSAuICc6OicsCiAgICAgICAgRm9ybWF0ICAgICAgICAgICA9PiAnRGF0ZUlucHV0Rm9ybWF0TG9uZycsCiAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntZZWFyUGVyaW9kUGFzdH0gICB8fCAxMCwKICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1llYXJQZXJpb2RGdXR1cmV9IHx8IDEwLAogICAgICAgICVWYWx1ZXMsCiAgICAgICAgJFBhcmFte0tleX0gLiAnOjonIC4gJ0NsYXNzJyA9PiAkQ2xhc3MsCiAgICAgICAgVmFsaWRhdGUgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRVc2VkOwogICAgbXkgJFN0YXJ0TWludXRlOwogICAgbXkgJFN0YXJ0SG91cjsKICAgIG15ICRTdGFydERheTsKICAgIG15ICRTdGFydE1vbnRoOwogICAgbXkgJFN0YXJ0WWVhcjsKICAgIG15ICRTdG9wTWludXRlOwogICAgbXkgJFN0b3BIb3VyOwogICAgbXkgJFN0b3BEYXk7CiAgICBteSAkU3RvcE1vbnRoOwogICAgbXkgJFN0b3BZZWFyOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgaWYgKCAkUGFyYW17VmFsdWV9ICYmIHJlZiAkUGFyYW17VmFsdWV9IGVxICdIQVNIJyApIHsKICAgICAgICAkVXNlZCAgICAgICAgPSAkUGFyYW17VmFsdWV9LT57ICRQYXJhbXtLZXl9IH07CiAgICAgICAgJFN0YXJ0TWludXRlID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyB9OwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkhvdXInIH07CiAgICAgICAgJFN0YXJ0RGF5ICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6RGF5JyB9OwogICAgICAgICRTdGFydE1vbnRoICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6Ok1vbnRoJyB9OwogICAgICAgICRTdGFydFllYXIgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OlllYXInIH07CiAgICAgICAgJFN0b3BNaW51dGUgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpNaW51dGUnIH07CiAgICAgICAgJFN0b3BIb3VyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpIb3VyJyB9OwogICAgICAgICRTdG9wRGF5ICAgICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6RGF5JyB9OwogICAgICAgICRTdG9wTW9udGggICA9ICRQYXJhbXtWYWx1ZX0tPnsgJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnIH07CiAgICAgICAgJFN0b3BZZWFyICAgID0gJFBhcmFte1ZhbHVlfS0+eyAkUGFyYW17S2V5fSAuICc6OlRpbWVTdG9wOjpZZWFyJyB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFVzZWQgICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgICAgICAkU3RhcnRNaW51dGUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlRpbWVTdGFydDo6TWludXRlJyApIHx8IDAwOwogICAgICAgICRTdGFydEhvdXIgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpIb3VyJyApCiAgICAgICAgICAgIHx8IDAwOwogICAgICAgICRTdGFydERheSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RhcnQ6OkRheScgKTsKICAgICAgICAkU3RhcnRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpNb250aCcgKTsKICAgICAgICAkU3RhcnRZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0YXJ0OjpZZWFyJyApOwogICAgICAgICRTdG9wTWludXRlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TWludXRlJyApCiAgICAgICAgICAgIHx8IDU5OwogICAgICAgICRTdG9wSG91ciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkhvdXInICkKICAgICAgICAgICAgfHwgMjM7CiAgICAgICAgJFN0b3BEYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OkRheScgKTsKICAgICAgICAkU3RvcE1vbnRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpUaW1lU3RvcDo6TW9udGgnICk7CiAgICAgICAgJFN0b3BZZWFyICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6VGltZVN0b3A6OlllYXInICk7CiAgICB9CgogICAgaWYgKAogICAgICAgICRVc2VkCiAgICAgICAgJiYgJFN0YXJ0TWludXRlICYmICRTdGFydEhvdXIgJiYgJFN0YXJ0RGF5ICYmICRTdGFydE1vbnRoICYmICRTdGFydFllYXIKICAgICAgICAmJiAkU3RvcE1pbnV0ZSAgJiYgJFN0b3BIb3VyICAmJiAkU3RvcERheSAgJiYgJFN0b3BNb250aCAgJiYgJFN0b3BZZWFyCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGFkZCBob3VyLCBtaW51dGVzIGFuZCBzZWNvbmRzLAogICAgICAgICMgc28gdGhhdCB0aGF0IHRoZSBmaXJzdCBhbmQgdGhlIGxhc3QgZGF5IGlzIHNlbGVjdGVkIGFzIHdlbGwKICAgICAgICBteSAkU3RhcnREYXRlID0gc3ByaW50ZiAnJTAyZC0lMDJkLSUwMmQgJTAyZDolMDJkOjAwJwogICAgICAgICAgICAsICRTdGFydFllYXIsICRTdGFydE1vbnRoLCAkU3RhcnREYXksICRTdGFydEhvdXIsICRTdGFydE1pbnV0ZTsKICAgICAgICBteSAkU3RvcERhdGUgPSBzcHJpbnRmICclMDJkLSUwMmQtJTAyZCAlMDJkOiUwMmQ6NTknCiAgICAgICAgICAgICwgJFN0b3BZZWFyLCAkU3RvcE1vbnRoLCAkU3RvcERheSwgJFN0b3BIb3VyLCAkU3RvcE1pbnV0ZTsKCiAgICAgICAgcmV0dXJuIHsgJy1iZXR3ZWVuJyA9PiBbICRTdGFydERhdGUsICRTdG9wRGF0ZSBdIH07CiAgICB9CgogICAgcmV0dXJuIFtdOyAgICAjIG5vIGNvbmRpdGlvbnMgYnkgZGVmYXVsdAp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgT3B0aW9uYWwgPT4gMSwgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGRlZmF1bHQgMCAoMHwxKQogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEtleSAgICAgICAgID0gJFBhcmFte0tleX07CiAgICBteSAkUHJlZml4U3RhcnQgPSAkS2V5IC4gJzo6VGltZVN0YXJ0OjonOwogICAgbXkgJFByZWZpeFN0b3AgID0gJEtleSAuICc6OlRpbWVTdG9wOjonOwoKICAgICMgZ2V0IHRpbWUgcmVsYXRlZCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJUdldFBhcmFtID0gJXsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgICAgIGZvciBteSAkVGltZVR5cGUgKCAkUHJlZml4U3RhcnQsICRQcmVmaXhTdG9wICkgewogICAgICAgICAgICBmb3IgbXkgJFBhcnQgKHF3KCBZZWFyIE1vbnRoIERheSApKSB7CiAgICAgICAgICAgICAgICBteSAkUGFyYW1LZXkgPSAkVGltZVR5cGUgLiAkUGFydDsKICAgICAgICAgICAgICAgIG15ICRQYXJhbVZhbCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbUtleSApOwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHdoaXRlIHNwYWNlIG9uIHRoZSBzdGFydCBhbmQgZW5kCiAgICAgICAgICAgICAgICBpZiAoJFBhcmFtVmFsKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxBIFxzKyB9e314bXM7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFtVmFsID1+IHN7IFxzKyBceiB9e314bXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBpbiAlR2V0UGFyYW0KICAgICAgICAgICAgICAgICRHZXRQYXJhbXskUGFyYW1LZXl9ID0gJFBhcmFtVmFsOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBCdWlsZCBzZWxlY3Rpb24gZm9yIHRoZSBzdGFydCBhbmQgc3RvcCB0aW1lLgogICAgbXkgJFRpbWVTdGFydFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRQcmVmaXhTdGFydCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKICAgIG15ICRUaW1lU3RvcFNlbGVjdGlvblN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBPcHRpb25hbCAgICAgICAgID0+IDAsCiAgICAgICAgUHJlZml4ICAgICAgICAgICA9PiAkUHJlZml4U3RvcCwKICAgICAgICBGb3JtYXQgICAgICAgICAgID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDEwLAogICAgICAgIFllYXJQZXJpb2RGdXR1cmUgPT4gMTAsCiAgICAgICAgJUdldFBhcmFtLAogICAgKTsKCiAgICBteSAkQ2hlY2tib3ggPSBxcXs8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICBpZiAoICRQYXJhbXtPcHRpb25hbH0gKSB7CiAgICAgICAgJENoZWNrYm94ID0gcXF7PGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSIkS2V5IiB2YWx1ZT0iMSIvPn07CiAgICB9CgogICAgbXkgJEJldHdlZW4gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0JldHdlZW4nKTsKICAgIG15ICRBbmQgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdhbmQnKTsKCiAgICByZXR1cm4gIjxkaXY+ICRDaGVja2JveCAkQmV0d2VlbiAkVGltZVN0YXJ0U2VsZWN0aW9uU3RyaW5nIDwvZGl2PiIKICAgICAgICAuICI8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyN3B4O1wiPiAkQW5kIDwvc3Bhbj4gJFRpbWVTdG9wU2VsZWN0aW9uU3RyaW5nIjsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutDummy.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dER1bW15OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXREdW1teSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBkdW1teSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0RHVtbXktPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKCk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgIG15ICRMaW5rRmVhdHVyZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgPSAwOwogICAgfQoKICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgIFRleHQgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICBMaW5rRmVhdHVyZSAgICA9PiAkTGlua0ZlYXR1cmUsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgpOwoKPWN1dAoKc3ViIEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEtleSBJdGVtKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICAkRm9ybURhdGF7VmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKCiAgICAjIHNldCBpbnZhbGlkIHBhcmFtCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSAmJiAhJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhLZXkgSXRlbSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9IHx8ICcnOwogICAgfQoKICAgIG15ICRDbGFzcyAgICA9ICcnOwogICAgbXkgJFNpemUgICAgID0gJ1c1MHBjJzsKICAgIG15ICRSZXF1aXJlZCA9ICRQYXJhbXtSZXF1aXJlZH07CiAgICBteSAkSW52YWxpZCAgPSAkUGFyYW17SW52YWxpZH07CiAgICBteSAkSXRlbUlkICAgPSAkUGFyYW17SXRlbUlkfTsKCiAgICBpZiAoJFJlcXVpcmVkKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICgkSW52YWxpZCkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KICAgICRDbGFzcyAuPSAnICcgLiAkU2l6ZTsKICAgIG15ICRTdHJpbmcgPSAiPHNwYW4gc3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IGhlaWdodDogMS4zZW07XCI+IjsKICAgICRTdHJpbmcKICAgICAgICAuPSAiPGlucHV0IHN0eWxlPVwiZGlzcGxheTpub25lO1wiIHR5cGU9XCJ0ZXh0XCIgbmFtZT1cIiRQYXJhbXtLZXl9XCIgY2xhc3M9XCIkQ2xhc3NcIiAiOwoKICAgIGlmICgkSXRlbUlkKSB7CiAgICAgICAgJFN0cmluZyAuPSAiaWQ9XCIkSXRlbUlkXCIgIjsKICAgIH0KCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgICAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICAgICAjIHRyYW5zbGF0ZQogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFZhbHVlKTsKICAgICAgICB9CgogICAgICAgICMgdHJhbnNmb3JtIGFzY2lpIHRvIGh0bWwKICAgICAgICAkVmFsdWUgPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAkU3RyaW5nIC49ICJ2YWx1ZT1cIiRWYWx1ZVwiICI7CgogICAgIyBhZGQgbWF4aW11bSBsZW5ndGgKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofSApIHsKICAgICAgICAkU3RyaW5nIC49ICJtYXhsZW5ndGg9XCIkUGFyYW17SXRlbX0tPntJbnB1dH0tPntNYXhMZW5ndGh9XCIgIjsKICAgIH0KCiAgICAkU3RyaW5nIC49ICcvPiA8L3NwYW4+JzsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KCk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgcmV0dXJuIFtdOwp9Cgo9aGVhZDIgU2VhcmNoSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgc2VhcmNoIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSgpOwoKPWN1dAoKc3ViIFNlYXJjaElucHV0Q3JlYXRlIHsKICAgIHJldHVybiAnJm5ic3A7JzsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutGeneralCatalog.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEdlbmVyYWxDYXRhbG9nOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0R2VuZXJhbENhdGFsb2cgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRHZW5lcmFsQ2F0YWxvZy0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAkUGFyYW17VmFsdWV9IC8vPSAnJzsKCiAgICAjIHRyYW5zbGF0ZQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17VmFsdWV9ICk7CiAgICB9CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBGb3JtRGF0YUdldCgpCgpnZXQgZm9ybSBkYXRhIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBmb3JtIGRhdGEKICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwoKICAgICMgc2V0IGludmFsaWQgcGFyYW0KICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENTU0NsYXNzID0gJ01vZGVybml6ZSc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9OwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9OwogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1JZH07CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDU1NDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ1NTQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyB0cmFuc2xhdGlvbiBvbiBvciBvZmYKICAgIG15ICRUcmFuc2xhdGlvbiA9IDA7CiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAkVHJhbnNsYXRpb24gPSAxOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q2xhc3N9IHx8ICcnLAogICAgKTsKCiAgICAjIHJldmVyc2UgdGhlIGNsYXNzIGxpc3QKICAgIG15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwoKICAgIG15ICRTZWxlY3RlZElEOwoKICAgICMgZ2V0IHRoZSBjdXJyZW50IHZhbHVlCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkU2VsZWN0ZWRJRCA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBnZXQgdGhlIGRlZmF1bHQgaWQgYnkgZGVmYXVsdCB2YWx1ZQogICAgZWxzZSB7CiAgICAgICAgJFNlbGVjdGVkSUQgPSAkUmV2ZXJzZUNsYXNzTGlzdHsgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSB8fCAnJyB9IHx8ICcnOwogICAgfQoKICAgICMgZ2VuZXJhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSUQgICAgICAgICAgID0+ICRJdGVtSWQsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gID0+ICRUcmFuc2xhdGlvbiwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGVjdGVkSUQsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDU1NDbGFzcywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBTZWFyY2hGb3JtRGF0YUdldCgpCgpnZXQgc2VhcmNoIGZvcm0gZGF0YQoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17S2V5fSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgS2V5IScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSBAVmFsdWVzOwogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgIEBWYWx1ZXMgPSBAeyAkUGFyYW17VmFsdWV9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBAVmFsdWVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRBcnJheSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KCiAgICByZXR1cm4gXEBWYWx1ZXM7Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZXMgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICAjIHRyYW5zbGF0aW9uIG9uIG9yIG9mZgogICAgbXkgJFRyYW5zbGF0aW9uID0gMDsKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRUcmFuc2xhdGlvbiA9IDE7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDbGFzc30gfHwgJycsCiAgICApOwoKICAgICMgZ2VuZXJhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgIE5hbWUgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAkVHJhbnNsYXRpb24sCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFZhbHVlcywKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutInteger.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEludGVnZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JwopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0SW50ZWdlciAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiBpbnRlZ2VyIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgICRCYWNrZW5kT2JqZWN0ID0gS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRJbnRlZ2VyLT5uZXcoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT3V0cHV0U3RyaW5nQ3JlYXRlKCkKCmNyZWF0ZSBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPk91dHB1dFN0cmluZ0NyZWF0ZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJyc7CiAgICB9CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBGb3JtRGF0YUdldCgpCgpnZXQgZm9ybSBkYXRhIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJEZvcm1EYXRhUmVmID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVGb3JtRGF0YTsKCiAgICAjIGdldCBmb3JtIGRhdGEKICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwoKICAgICMgc2V0IGludmFsaWQgcGFyYW0KICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSA9IDE7CiAgICAgICAgJFBhcmFte0l0ZW19LT57Rm9ybX0tPnsgJFBhcmFte0tleX0gfS0+e0ludmFsaWR9ID0gMTsKICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgbWluLCBtYXggYW5kIGRlZmF1bHQKICAgIG15ICRWYWx1ZU1pbiA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlTWlufSAvLyAxOwogICAgbXkgJFZhbHVlTWF4ID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNYXh9IC8vIDE7CiAgICBpZiAoICRWYWx1ZU1pbiA+ICRWYWx1ZU1heCApIHsKICAgICAgICAkVmFsdWVNaW4gPSAkVmFsdWVNYXg7CiAgICB9CiAgICBpZiAoCiAgICAgICAgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fQogICAgICAgICYmICgKICAgICAgICAgICAgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSA8ICRWYWx1ZU1pbgogICAgICAgICAgICB8fCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ID4gJFZhbHVlTWF4CiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ID0gJyc7CiAgICB9CgogICAgIyBjcmVhdGUgZGF0YSBhcnJheQogICAgbXkgJEludGVnZXJMaXN0ID0gW107CiAgICBmb3IgbXkgJENvdW50ZXIgKCAkVmFsdWVNaW4gLi4gJFZhbHVlTWF4ICkgewogICAgICAgIHB1c2ggQHskSW50ZWdlckxpc3R9LCAkQ291bnRlcjsKICAgIH0KCiAgICAjIGdlbmVyYXRlIHN0cmluZwogICAgbXkgJFN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRJbnRlZ2VyTGlzdCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtWYWx1ZX0gfHwgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSB8fCAnJywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgU2VhcmNoRm9ybURhdGFHZXQoKQoKZ2V0IHNlYXJjaCBmb3JtIGRhdGEKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0tleX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEtleSEnCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSBAVmFsdWVzOwogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgIEBWYWx1ZXMgPSBAeyAkUGFyYW17VmFsdWV9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBAVmFsdWVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRBcnJheSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KCiAgICByZXR1cm4gXEBWYWx1ZXM7Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IG1pbiwgbWF4CiAgICBteSAkVmFsdWVNaW4gPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZU1pbn0gLy8gMTsKICAgIG15ICRWYWx1ZU1heCA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlTWF4fSAvLyAxOwogICAgaWYgKCAkVmFsdWVNaW4gPiAkVmFsdWVNYXggKSB7CiAgICAgICAgJFZhbHVlTWluID0gJFZhbHVlTWF4OwogICAgfQoKICAgICMgc2V0IHByZXNlbGVjdGVkIHZhbHVlLCBlaXRoZXIgZnJvbSBwcmV2aW91cyBzZWxlY3Rpb24gb3IgdGhlIGRlZmF1bHQKICAgIG15ICRWYWx1ZXMgPSAkU2VsZi0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICAjIGNoZWNrIHdoZXRoZXIgdGhlIHByZXNlbGVjdGVkIHZhbHVlIGlzIHdpdGhpbiB0aGUgdmFsaWQgcmFuZ2UKICAgIG15IEBGaWx0ZXJlZFZhbHVlczsKICAgIFZBTFVFOgogICAgZm9yIG15ICRWYWx1ZSAoIEB7JFZhbHVlc30gKSB7CiAgICAgICAgbmV4dCBWQUxVRSBpZiAhZGVmaW5lZCAkVmFsdWU7CiAgICAgICAgbmV4dCBWQUxVRSBpZiAhJFZhbHVlOwogICAgICAgIG5leHQgVkFMVUUgaWYgJFZhbHVlIDwgJFZhbHVlTWluOwogICAgICAgIG5leHQgVkFMVUUgaWYgJFZhbHVlID4gJFZhbHVlTWF4OwoKICAgICAgICBwdXNoIEBGaWx0ZXJlZFZhbHVlcywgJFZhbHVlOwogICAgfQoKICAgICMgY3JlYXRlIGRhdGEgYXJyYXkKICAgIG15IEBJbnRlZ2VyTGlzdCA9ICggJFZhbHVlTWluIC4uICRWYWx1ZU1heCApOwoKICAgICMgZ2VuZXJhdGUgc3RyaW5nCiAgICBteSAkU3RyaW5nID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICA9PiBcQEludGVnZXJMaXN0LAogICAgICAgIE5hbWUgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIFNpemUgICAgICAgID0+IDUsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBTZWxlY3RlZElEICA9PiBcQEZpbHRlcmVkVmFsdWVzLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIHJldHVybiAkU3RyaW5nOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutPriority.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFByaW9yaXR5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlByaW9yaXR5JywKKTsKCnVzZSBwYXJlbnQgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0QmFzZVNlbGVjdGFibGUnOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0UHJpb3JpdHkgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKTGF5b3V0IGZ1bmN0aW9ucyBmb3IgQ0kgcHJpb3JpdHkgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFByaW9yaXR5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlByaW9yaXR5Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgI2NoZWNrIG5lZWRlZCBzdHVmZgogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBuZXh0IEFSR1VNRU5UIGlmICRQYXJhbXskQXJndW1lbnR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENsYXNzID0gJ1c1MHBjIE1vZGVybml6ZSc7CiAgICBpZiAoICRQYXJhbXtSZXF1aXJlZH0gKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICggJFBhcmFte0ludmFsaWR9ICkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAgIH0KCiAgICBteSAlUHJpb3JpdGllcyAgICAgICAgPSAkUHJpb3JpdHlPYmplY3QtPlByaW9yaXR5TGlzdCgpOwogICAgbXkgJFByaW9yaXR5U2VsZWN0aW9uID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIElEICAgICAgICAgICA9PiAkUGFyYW17SXRlbUlkfSwKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQcmlvcml0aWVzLAogICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgVHJlZVZpZXcgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRWYWx1ZSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRQcmlvcml0eVNlbGVjdGlvbjsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutQueue.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFF1ZXVlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJywKKTsKCnVzZSBwYXJlbnQgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0QmFzZVNlbGVjdGFibGUnOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0UXVldWUgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKTGF5b3V0IGZ1bmN0aW9ucyBmb3IgQ0kgcXVldWUgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRRdWV1ZU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgI2NoZWNrIG5lZWRlZCBzdHVmZgogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBuZXh0IEFSR1VNRU5UIGlmICRQYXJhbXskQXJndW1lbnR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENsYXNzID0gJ1c1MHBjIE1vZGVybml6ZSc7CiAgICBpZiAoICRQYXJhbXtSZXF1aXJlZH0gKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICggJFBhcmFte0ludmFsaWR9ICkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAgIH0KCiAgICBteSAlUXVldWVzICAgICAgICAgPSAkUXVldWVPYmplY3QtPlF1ZXVlTGlzdCgpOwogICAgbXkgJFF1ZXVlU2VsZWN0aW9uID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIElEICAgICAgICAgICA9PiAkUGFyYW17SXRlbUlkfSwKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVRdWV1ZXMsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFZhbHVlLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFF1ZXVlU2VsZWN0aW9uOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutService.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFNlcnZpY2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCik7Cgp1c2UgcGFyZW50ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEJhc2VTZWxlY3RhYmxlJzsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFNlcnZpY2UgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKTGF5b3V0IGZ1bmN0aW9ucyBmb3IgQ0kgc2VydmljZSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ICAgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtICA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwoKICAgICNjaGVjayBuZWVkZWQgc3R1ZmYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDbGFzcyA9ICdXNTBwYyBNb2Rlcm5pemUnOwogICAgaWYgKCAkUGFyYW17UmVxdWlyZWR9ICkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtJbnZhbGlkfSApIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgbXkgJFZhbHVlID0gJyc7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH07CiAgICB9CgogICAgbXkgJVNlcnZpY2VzICAgICAgICAgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3QoIFVzZXJJRCA9PiAkTGF5b3V0T2JqZWN0LT57VXNlcklEfSApOwogICAgbXkgJFNlcnZpY2VTZWxlY3Rpb24gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSUQgICAgICAgICAgID0+ICRQYXJhbXtJdGVtSWR9LAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVNlcnZpY2VzLAogICAgICAgIENsYXNzICAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgVHJlZVZpZXcgICAgID0+IDEsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRWYWx1ZSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICk7CgogICAgcmV0dXJuICRTZXJ2aWNlU2VsZWN0aW9uOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutSLA.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFNMQTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTTEEnLAopOwoKdXNlIHBhcmVudCAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRCYXNlU2VsZWN0YWJsZSc7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRTTEEgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKTGF5b3V0IGZ1bmN0aW9ucyBmb3IgQ0kgU0xBIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJFNMQU9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTTEEnKTsKCiAgICAjY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIG5leHQgQVJHVU1FTlQgaWYgJFBhcmFteyRBcmd1bWVudH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ2xhc3MgPSAnVzUwcGMgTW9kZXJuaXplJzsKICAgIGlmICggJFBhcmFte1JlcXVpcmVkfSApIHsKICAgICAgICAkQ2xhc3MgLj0gJyBWYWxpZGF0ZV9SZXF1aXJlZCc7CiAgICB9CgogICAgaWYgKCAkUGFyYW17SW52YWxpZH0gKSB7CiAgICAgICAgJENsYXNzIC49ICcgU2VydmVyRXJyb3InOwogICAgfQoKICAgIG15ICRWYWx1ZSA9ICcnOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9OwogICAgfQoKICAgIG15ICVTTEFzICAgICAgICAgPSAkU0xBT2JqZWN0LT5TTEFMaXN0KCBVc2VySUQgPT4gJExheW91dE9iamVjdC0+e1VzZXJJRH0gKTsKICAgIG15ICRTTEFTZWxlY3Rpb24gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSUQgICAgICAgICAgID0+ICRQYXJhbXtJdGVtSWR9LAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVNMQXMsCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICBUcmVlVmlldyAgICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFZhbHVlLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJFNMQVNlbGVjdGlvbjsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutState.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFN0YXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRlJywKKTsKCnVzZSBwYXJlbnQgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0QmFzZVNlbGVjdGFibGUnOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0U3RhdGUgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKTGF5b3V0IGZ1bmN0aW9ucyBmb3IgQ0kgU3RhdGUgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgo9aGVhZDIgSW5wdXRDcmVhdGUoKQoKY3JlYXRlIGEgaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKAogICAgICAgIEtleSAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElucHV0Q3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkU3RhdGVPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRlJyk7CgogICAgI2NoZWNrIG5lZWRlZCBzdHVmZgogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBuZXh0IEFSR1VNRU5UIGlmICRQYXJhbXskQXJndW1lbnR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENsYXNzID0gJ1c1MHBjIE1vZGVybml6ZSc7CiAgICBpZiAoICRQYXJhbXtSZXF1aXJlZH0gKSB7CiAgICAgICAgJENsYXNzIC49ICcgVmFsaWRhdGVfUmVxdWlyZWQnOwogICAgfQoKICAgIGlmICggJFBhcmFte0ludmFsaWR9ICkgewogICAgICAgICRDbGFzcyAuPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICBteSAkVmFsdWUgPSAnJzsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fTsKICAgIH0KCiAgICBteSAlU3RhdGVzICAgICAgICAgPSAkU3RhdGVPYmplY3QtPlN0YXRlTGlzdCggVXNlcklEID0+ICRMYXlvdXRPYmplY3QtPntVc2VySUR9ICk7CiAgICBteSAkU3RhdGVTZWxlY3Rpb24gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgSUQgICAgICAgICAgID0+ICRQYXJhbXtJdGVtSWR9LAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVN0YXRlcywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyZWVWaWV3ICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmFsdWUsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkU3RhdGVTZWxlY3Rpb247Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutText.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFRleHQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFRleHQgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgdGV4dCBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dC0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIE91dHB1dFN0cmluZ0NyZWF0ZSgpCgpjcmVhdGUgb3V0cHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIE91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9ICcnOwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyB0cmFuc2xhdGUKICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHJhbnNsYXRpb259ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRQYXJhbXtWYWx1ZX0gKTsKICAgIH0KCiAgICBteSAkTGlua0ZlYXR1cmUgPSAxOwoKICAgICMgZG8gbm90IHRyYW5zZm9ybSBsaW5rcyBpbiBwcmludCB2aWV3CiAgICBpZiAoICRQYXJhbXtQcmludH0gKSB7CiAgICAgICAgJExpbmtGZWF0dXJlID0gMDsKICAgIH0KCiAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gJExpbmtGZWF0dXJlLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhLZXkgSXRlbSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgIWRlZmluZWQgJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgIyB2YWx1ZSB3YXMgZW50ZXJlZCBpbiB0aGUgZm9ybSwgYSByZWdleCBpcyBkZWZpbmVkIGFuZCB0aGUgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ2V4CiAgICBpZiAoCiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfQogICAgICAgICYmICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4fQogICAgICAgICYmICRGb3JtRGF0YXtWYWx1ZX0gIX4gbXsgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9IH14bXMKICAgICAgICApCiAgICB7CgogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSAgICAgICAgICAgPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntSZWdFeEVycm9yTWVzc2FnZX0gPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeEVycm9yTWVzc2FnZX07CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoS2V5IEl0ZW0pKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSB8fCAnJzsKICAgIH0KCiAgICBteSAkQ2xhc3MgICAgPSAnJzsKICAgIG15ICRTaXplICAgICA9ICdXNTBwYyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9OwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9OwogICAgbXkgJEl0ZW1JZCAgID0gJFBhcmFte0l0ZW1JZH07CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CiAgICAkQ2xhc3MgLj0gJyAnIC4gJFNpemU7CiAgICBteSAkU3RyaW5nID0gIjxpbnB1dCB0eXBlPVwidGV4dFwiIG5hbWU9XCIkUGFyYW17S2V5fVwiIGNsYXNzPVwiJENsYXNzXCIgIjsKCiAgICBpZiAoJEl0ZW1JZCkgewogICAgICAgICRTdHJpbmcgLj0gImlkPVwiJEl0ZW1JZFwiICI7CiAgICB9CgogICAgaWYgKCRWYWx1ZSkgewoKICAgICAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICAgICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAgICAgIyB0cmFuc2xhdGUKICAgICAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAgICAgJFZhbHVlID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRWYWx1ZSk7CiAgICAgICAgfQoKICAgICAgICAjIHRyYW5zZm9ybSBhc2NpaSB0byBodG1sCiAgICAgICAgJFZhbHVlID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFZhbHVlLAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgJFN0cmluZyAuPSAidmFsdWU9XCIkVmFsdWVcIiAiOwoKICAgICMgYWRkIG1heGltdW0gbGVuZ3RoCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e01heExlbmd0aH0gKSB7CiAgICAgICAgJFN0cmluZyAuPSAibWF4bGVuZ3RoPVwiJFBhcmFte0l0ZW19LT57SW5wdXR9LT57TWF4TGVuZ3RofVwiICI7CiAgICB9CgogICAgJFN0cmluZyAuPSAnLz4gJzsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0tleX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEtleSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJFZhbHVlOwogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQogICAgcmV0dXJuICRWYWx1ZTsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhLZXkgSXRlbSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZhbHVlID0gJFNlbGYtPlNlYXJjaEZvcm1EYXRhR2V0KCVQYXJhbSk7CiAgICBpZiAoICFkZWZpbmVkICRWYWx1ZSApIHsKICAgICAgICAkVmFsdWUgPSAnJzsKICAgIH0KCiAgICBteSAkU3RyaW5nID0gcXF7PGlucHV0IHR5cGU9InRleHQiIG5hbWU9IiRQYXJhbXtLZXl9IiB2YWx1ZT0iJFZhbHVlIiBjbGFzcz0iVzUwcGMiID59OwoKICAgIHJldHVybiAkU3RyaW5nOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutTextArea.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFRleHRBcmVhOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0QXJlYSAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiB0ZXh0YXJlYSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dEFyZWEtPm5ldygKICAgICAgICAlUGFyYW0sCiAgICApOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0l0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBJdGVtIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRQYXJhbXtWYWx1ZX0gPSAnJzsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgdHJhbnNsYXRlCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAkUGFyYW17VmFsdWV9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUGFyYW17VmFsdWV9ICk7CiAgICB9CgogICAgbXkgJExpbmtGZWF0dXJlICAgID0gMTsKICAgIG15ICRIVE1MUmVzdWx0TW9kZSA9IDE7CgogICAgIyBkbyBub3QgdHJhbnNmb3JtIGxpbmtzIGluIHByaW50IHZpZXcKICAgIGlmICggJFBhcmFte1ByaW50fSApIHsKICAgICAgICAkTGlua0ZlYXR1cmUgICAgPSAwOwogICAgICAgICRIVE1MUmVzdWx0TW9kZSA9IDA7CiAgICB9CgogICAgIyB0cmFuc2Zvcm0gYXNjaWkgdG8gaHRtbAogICAgJFBhcmFte1ZhbHVlfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAkSFRNTFJlc3VsdE1vZGUsCiAgICAgICAgTGlua0ZlYXR1cmUgICAgPT4gJExpbmtGZWF0dXJlLAogICAgKTsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEZvcm1EYXRhR2V0KCkKCmdldCBmb3JtIGRhdGEgYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkQmFja2VuZE9iamVjdC0+Rm9ybURhdGFHZXQoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUZvcm1EYXRhOwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBzZXQgaW52YWxpZCBwYXJhbQogICAgaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZXF1aXJlZH0gJiYgIWRlZmluZWQgJEZvcm1EYXRhe1ZhbHVlfSApIHsKICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSA9IDE7CiAgICB9CgogICAgIyB2YWx1ZSB3YXMgZW50ZXJlZCBpbiB0aGUgZm9ybSwgYSByZWdleCBpcyBkZWZpbmVkIGFuZCB0aGUgdmFsdWUgZG9lcyBub3QgbWF0Y2ggdGhlIHJlZ2V4CiAgICBpZiAoCiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfQogICAgICAgICYmICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlZ0V4fQogICAgICAgICYmICRGb3JtRGF0YXtWYWx1ZX0gIX4gbXsgJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVnRXh9IH14bXMKICAgICAgICApCiAgICB7CgogICAgICAgICRGb3JtRGF0YXtJbnZhbGlkfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntJbnZhbGlkfSAgICAgICAgICAgPSAxOwogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntSZWdFeEVycm9yTWVzc2FnZX0gPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntSZWdFeEVycm9yTWVzc2FnZX07CiAgICB9CgogICAgcmV0dXJuIFwlRm9ybURhdGE7Cn0KCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb2xzID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q29sc30gfHwgNTg7CiAgICBteSAkUm93cyA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1Jvd3N9IHx8IDEwOwoKICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSB8fCAnJzsKICAgIH0KCiAgICBteSAkQ2xhc3MgICAgPSAnVzUwcGMnOwogICAgbXkgJFJlcXVpcmVkID0gJFBhcmFte1JlcXVpcmVkfTsKICAgIG15ICRJbnZhbGlkICA9ICRQYXJhbXtJbnZhbGlkfTsKICAgIG15ICRJdGVtSWQgICA9ICRQYXJhbXtJdGVtSWR9OwoKICAgIGlmICgkUmVxdWlyZWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBWYWxpZGF0ZV9SZXF1aXJlZCc7CiAgICB9CgogICAgaWYgKCRJbnZhbGlkKSB7CiAgICAgICAgJENsYXNzIC49ICcgU2VydmVyRXJyb3InOwogICAgfQoKICAgICMgdHJhbnNsYXRlCiAgICBpZiAoICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1RyYW5zbGF0aW9ufSApIHsKICAgICAgICAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkVmFsdWUpOwogICAgfQogICAgbXkgJFN0cmluZwogICAgICAgID0gIjx0ZXh0YXJlYSBuYW1lPVwiJFBhcmFte0tleX1cIiBpZD1cIiRJdGVtSWRcIiBjb2xzPVwiJENvbHNcIiByb3dzPVwiJFJvd3NcIiBjbGFzcz1cIiRDbGFzc1wiPiRWYWx1ZTwvdGV4dGFyZWE+IjsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBLZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZTsKICAgIGlmICggJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gKTsKICAgIH0KICAgIHJldHVybiAkVmFsdWU7Cn0KCj1oZWFkMiBTZWFyY2hJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBzZWFyY2ggaW5wdXQgc3RyaW5nCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWYWx1ZSA9ICRTZWxmLT5TZWFyY2hGb3JtRGF0YUdldCglUGFyYW0pOwogICAgaWYgKCAhZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgJFZhbHVlID0gJyc7CiAgICB9CgogICAgbXkgJFN0cmluZyA9IHFxezxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSIkUGFyYW17S2V5fSIgdmFsdWU9IiRWYWx1ZSIgY2xhc3M9Ilc1MHBjIj59OwoKICAgIHJldHVybiAkU3RyaW5nOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutTextLink.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRUZXh0TGluazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VGV4dCApOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFRleHRMaW5rIC0gbGF5b3V0IGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBsYXlvdXQgZnVuY3Rpb25zIG9mIHRleHRsaW5rIG9iamVjdHMKCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBPdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPlNVUEVSOjpPdXRwdXRTdHJpbmdDcmVhdGUoJVBhcmFtKTsKICAgIHJldHVybiAkUmVzdWx0IGlmICEkUmVzdWx0OwoKICAgIG15ICRMaW5rID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VVJMfTsKICAgICRMaW5rID1+IHMvPFZBTFVFPi8kUmVzdWx0LzsKCiAgICAkUmVzdWx0ID0gPDwiSFRNTCI7CjxhIGhyZWY9IiRMaW5rIiB0YXJnZXQ9Il9ibGFuayI+JFJlc3VsdDwvYT4KSFRNTAoKICAgIHJldHVybiAkUmVzdWx0Owp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutType.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFR5cGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VHlwZScsCik7Cgp1c2UgcGFyZW50ICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dEJhc2VTZWxlY3RhYmxlJzsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dFR5cGUgLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKTGF5b3V0IGZ1bmN0aW9ucyBmb3IgQ0kgdHlwZSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCj1oZWFkMiBJbnB1dENyZWF0ZSgpCgpjcmVhdGUgYSBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ICAgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtICA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRUeXBlT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwoKICAgICNjaGVjayBuZWVkZWQgc3R1ZmYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDbGFzcyA9ICdXNTBwYyBNb2Rlcm5pemUnOwogICAgaWYgKCAkUGFyYW17UmVxdWlyZWR9ICkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtJbnZhbGlkfSApIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgbXkgJFZhbHVlID0gJyc7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte1ZhbHVlfSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1ZhbHVlRGVmYXVsdH07CiAgICB9CgogICAgbXkgJVR5cGVzICAgICAgICAgPSAkVHlwZU9iamVjdC0+VHlwZUxpc3QoKTsKICAgIG15ICRUeXBlU2VsZWN0aW9uID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIElEICAgICAgICAgICA9PiAkUGFyYW17SXRlbUlkfSwKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVUeXBlcywKICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAogICAgICAgIFRyZWVWaWV3ICAgICA9PiAxLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkVmFsdWUsCiAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkVHlwZVNlbGVjdGlvbjsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/LayoutUser.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRVc2VyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VXNlciAtIGxheW91dCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgbGF5b3V0IGZ1bmN0aW9ucyBvZiB1c2VyIG9iamVjdHMKCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICAkQmFja2VuZE9iamVjdCA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0VXNlci0+bmV3KAogICAgICAgICVQYXJhbSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBPdXRwdXRTdHJpbmdDcmVhdGUoKQoKY3JlYXRlIG91dHB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgT3V0cHV0U3RyaW5nQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIHRyYW5zZm9ybSBBU0NJSSB0byBodG1sCiAgICAkUGFyYW17VmFsdWV9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9IHx8ICcnLAogICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICApOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRm9ybURhdGFHZXQoKQoKZ2V0IGZvcm0gZGF0YSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCgKICAgICAgICBLZXkgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBGb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewoKICAgICAgICBuZXh0IEFSR1VNRU5UIGlmICRQYXJhbXskQXJndW1lbnR9OwogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlRm9ybURhdGE7CgogICAgIyBnZXQgcGFyYW0gb2JqZWN0CgogICAgIyBnZXQgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlcgogICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9ICk7CgogICAgIyBjaGVjayBzZWFyY2ggYnV0dG9uCiAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VhcmNoJyApICkgewogICAgICAgICRQYXJhbXtJdGVtfS0+e0Zvcm19LT57ICRQYXJhbXtLZXl9IH0tPntTZWFyY2h9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFte0tleX0gLiAnOjpTZWFyY2gnICk7CiAgICB9CgogICAgIyBjaGVjayBzZWxlY3QgYnV0dG9uCiAgICBlbHNpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6QnV0dG9uU2VsZWN0JyApICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OlNlbGVjdCcgKTsKICAgIH0KCiAgICAjIGNoZWNrIGNsZWFyIGJ1dHRvbgogICAgZWxzaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSAuICc6OkJ1dHRvbkNsZWFyJyApICkgewogICAgICAgICRGb3JtRGF0YXtWYWx1ZX0gPSAnJzsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIHJlc2V0IHZhbHVlIGlmIHNlYXJjaCBmaWVsZCBpcyBlbXB0eQogICAgICAgIGlmICgKICAgICAgICAgICAgISRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbXtLZXl9IC4gJzo6U2VhcmNoJyApCiAgICAgICAgICAgICYmIGRlZmluZWQgJEZvcm1EYXRhe1ZhbHVlfQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9ybURhdGF7VmFsdWV9ID0gJyc7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIHJlcXVpcmVkIG9wdGlvbgogICAgICAgIGlmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57UmVxdWlyZWR9ICYmICEkRm9ybURhdGF7VmFsdWV9ICkgewogICAgICAgICAgICAkUGFyYW17SXRlbX0tPntGb3JtfS0+eyAkUGFyYW17S2V5fSB9LT57SW52YWxpZH0gPSAxOwogICAgICAgICAgICAkRm9ybURhdGF7SW52YWxpZH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVGb3JtRGF0YTsKfQoKPWhlYWQyIElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIGlucHV0IHN0cmluZwoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbnB1dENyZWF0ZSgKICAgICAgICBLZXkgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkVXNlck9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWYWx1ZSA9ICcnOwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJFZhbHVlID0gJFBhcmFte1ZhbHVlfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVEZWZhdWx0fSApIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZURlZmF1bHR9OwogICAgfQoKICAgIG15ICRDbGFzcyA9ICdXNTBwYyBJVFNNVXNlclNlYXJjaCc7CgogICAgbXkgJFNlYXJjaCAgID0gJyc7CiAgICBteSAkUmVxdWlyZWQgPSAkUGFyYW17UmVxdWlyZWR9IHx8ICcnOwogICAgbXkgJEludmFsaWQgID0gJFBhcmFte0ludmFsaWR9ICB8fCAnJzsKICAgIG15ICRJdGVtSWQgICA9ICRQYXJhbXtJdGVtSWR9ICAgfHwgJyc7CgogICAgaWYgKCRSZXF1aXJlZCkgewogICAgICAgICRDbGFzcyAuPSAnIFZhbGlkYXRlX1JlcXVpcmVkJzsKICAgIH0KCiAgICBpZiAoJEludmFsaWQpIHsKICAgICAgICAkQ2xhc3MgLj0gJyBTZXJ2ZXJFcnJvcic7CiAgICB9CgogICAgIyBjcmVhdGUgY3VzdG9tZXIgc3RyaW5nCiAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICMgZ2V0IHVzZXIgZGF0YQogICAgICAgIG15ICVVc2VyID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJFZhbHVlLAogICAgICAgICk7CiAgICAgICAgaWYgKCVVc2VyKSB7CgogICAgICAgICAgICBteSAkVXNlclZhbHVlID0gc3ByaW50ZiAnIiVzICVzIiA8JXM+JywKICAgICAgICAgICAgICAgICRVc2Vye1VzZXJGaXJzdG5hbWV9LAogICAgICAgICAgICAgICAgJFVzZXJ7VXNlckxhc3RuYW1lfSwKICAgICAgICAgICAgICAgICRVc2Vye1VzZXJFbWFpbH07CgogICAgICAgICAgICAjIHRyYW5zZm9ybSBBU0NJSSB0byBodG1sCiAgICAgICAgICAgICRTZWFyY2ggPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFVzZXJWYWx1ZSwKICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIHN0cmluZwogICAgbXkgJFN0cmluZyA9ICc8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSInCiAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAuICRWYWx1ZQogICAgICAgIC4gJyIgaWQ9IicKICAgICAgICAuICRJdGVtSWQgLiAnU2VsZWN0ZWQnCiAgICAgICAgLiAnIi8+JwogICAgICAgIC4gJzxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSInCiAgICAgICAgLiAkUGFyYW17S2V5fQogICAgICAgIC4gJzo6U2VhcmNoIiBjbGFzcz0iJwogICAgICAgIC4gJENsYXNzCiAgICAgICAgLiAnIiBpZD0iJwogICAgICAgIC4gJEl0ZW1JZAogICAgICAgIC4gJyIgdmFsdWU9IicKICAgICAgICAuICRTZWFyY2ggLiAnIi8+JzsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlYXJjaEZvcm1EYXRhR2V0KCkKCmdldCBzZWFyY2ggZm9ybSBkYXRhCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KAogICAgICAgIEtleSAgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaEZvcm1EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSApKSB7CiAgICAgICAgbmV4dCBBUkdVTUVOVCBpZiAkUGFyYW17JEFyZ3VtZW50fTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJFZhbHVlOwogICAgaWYgKCAkUGFyYW17VmFsdWV9ICkgewogICAgICAgICRWYWx1ZSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkVmFsdWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkUGFyYW17S2V5fSApOwogICAgfQogICAgcmV0dXJuICRWYWx1ZTsKfQoKPWhlYWQyIFNlYXJjaElucHV0Q3JlYXRlKCkKCmNyZWF0ZSBhIHNlYXJjaCBpbnB1dCBzdHJpbmcKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBJdGVtKSkgewogICAgICAgIG5leHQgQVJHVU1FTlQgaWYgJFBhcmFteyRBcmd1bWVudH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkS2V5ID0gJFBhcmFte0tleX07CgogICAgIyBoYXNoIHdpdGggdmFsdWVzIGZvciB0aGUgaW5wdXQgZmllbGQKICAgIG15ICVGb3JtRGF0YTsKCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gKSB7CiAgICAgICAgJEZvcm1EYXRhe1ZhbHVlfSA9ICRQYXJhbXtWYWx1ZX07CiAgICB9CgogICAgIyBjcmVhdGUgaW5wdXQgZmllbGQKICAgIG15ICRJbnB1dFN0cmluZyA9ICRTZWxmLT5JbnB1dENyZWF0ZSgKICAgICAgICAlRm9ybURhdGEsCiAgICAgICAgS2V5ICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgIEl0ZW0gICA9PiAkUGFyYW17SXRlbX0sCiAgICAgICAgSXRlbUlkID0+ICRQYXJhbXtLZXl9LAogICAgKTsKCiAgICByZXR1cm4gJElucHV0U3RyaW5nOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/MenuGeneric.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok1lbnVHZW5lcmljOwp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6QmFzZScpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCik7CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb25maWdJdGVtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29uZmlnSXRlbSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ3JhbnQgYWNjZXNzIGJ5IGRlZmF1bHQKICAgIG15ICRBY2Nlc3MgPSAxOwoKICAgICMgZ2V0IGFjdGlvbgogICAgbXkgJEFjdGlvbiA9ICRQYXJhbXtDb25maWd9LT57QWN0aW9ufTsKICAgIGlmICggJEFjdGlvbiBlcSAnQWdlbnRMaW5rT2JqZWN0JyApIHsKCiAgICAgICAgIyBUaGUgTGluay1saW5rIGlzIGEgc3BlY2lhbCBjYXNlLCBhcyBpdCBpcyBub3Qgc3BlY2lmaWMgdG8gSVRTTUNvbmZpZ0l0ZW0uCiAgICAgICAgIyBBcyBhIHdvcmthcm91bmQgd2UgaGFyZGNvZGUgdGhhdCBBZ2VudExpbmtPYmplY3QgaXMgdHJlYXRlZCBsaWtlIEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0CiAgICAgICAgJEFjdGlvbiA9ICdBZ2VudElUU01Db25maWdJdGVtRWRpdCc7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgZ3JvdXBzCiAgICBteSAkR3JvdXBzUm8gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXBSb30gfHwgW107CiAgICBteSAkR3JvdXBzUncgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpNb2R1bGUnKS0+eyRBY3Rpb259LT57R3JvdXB9ICAgfHwgW107CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CgogICAgICAgICAgICBuZXh0IFJPR1JPVVAgaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRSb0dyb3VwLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdybycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUk9HUk9VUDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVhZCB3cml0ZSBncm91cHMKICAgICAgICBSV0dST1VQOgogICAgICAgIGZvciBteSAkUndHcm91cCAoIEB7JEdyb3Vwc1J3fSApIHsKCiAgICAgICAgICAgIG5leHQgUldHUk9VUCBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJ3R3JvdXAsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgICMgb3V0cHV0IG1lbnUgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdNZW51JyApOwoKICAgICMgb3V0cHV0IG1lbnUgaXRlbQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWVudUl0ZW0nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBkaWFsb2cgaGFzIHRvIGJlIHNob3duCiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57RGlhbG9nVGl0bGV9ICkgewogICAgICAgIG15ICRDb25maWdPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAgICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICAgICAjIFJlcGxhY2UgdGhlIHRlbXBsYXRlIHRvb2xraXQgZXhwcmVzc2lvbnMgd2l0aCB0aGUgZmluYWwgdmFsdWUuCiAgICAgICAgbXkgJUpTRGF0YSA9ICgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnSXRlbX0gfSwKICAgICAgICAgICAgJXsgJFBhcmFte0NvbmZpZ30gfSwKICAgICAgICApOwoKICAgICAgICBkZWxldGUgJEpTRGF0YXtDb25maWd9OwogICAgICAgIGRlbGV0ZSAkSlNEYXRhe0NvbmZpZ0l0ZW19OwoKICAgICAgICAkSlNEYXRhe0VsZW1lbnRTZWxlY3Rvcn0gICAgICAgICAgICA9fiBzL1xbJVxzKkRhdGFcLk1lbnVJRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe01lbnVJRH0vaTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ0NvbnRlbnRRdWVyeVN0cmluZ30gICA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKICAgICAgICAkSlNEYXRhe0NvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nfSA9fiBzL1xbJVxzKkRhdGFcLkNvbmZpZ0l0ZW1JRFxzKlx8XHMqaHRtbFxzKiVcXS8kSlNEYXRhe0NvbmZpZ0l0ZW1JRH0vaTsKCiAgICAgICAgJEpTRGF0YXtEaWFsb2dUaXRsZX0gPX4gcy9cWyVccypUcmFuc2xhdGVcKCIoLiopIlwpXHMqXHxccypodG1sXHMqJVxdLyRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkNvbmZpZ1woIiguKikiXClccyolXF0vJENvbmZpZ09iamVjdC0+R2V0KCQxKS9laTsKICAgICAgICAkSlNEYXRhe0RpYWxvZ1RpdGxlfSA9fiBzL1xbJVxzKkRhdGEuTnVtYmVyXHMqXHxccypodG1sXHMqJVxdLyRKU0RhdGF7TnVtYmVyfS9laTsKCiAgICAgICAgJEpTRGF0YXtNZW51SUR9ID0gJ01lbnUnIC4gJEpTRGF0YXtNZW51SUR9OwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNU2hvd0NvbmZpcm1EaWFsb2cuJyAuICRQYXJhbXtNZW51SUR9LAogICAgICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICAgICApOwogICAgfQoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/ITSMConfigItem/OverviewSmall.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06Ok92ZXJ2aWV3U21hbGw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpNYWluJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIG5lZWQgQ29uZmlnSXRlbUlEcwogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdGhlIENvbmZpZ0l0ZW1JRHMhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGRlZmluZSBpbmNpZGVudCBzaWduYWxzLCBuZWVkZWQgZm9yIHNlcnZpY2VzCiAgICBteSAlSW5jaVNpZ25hbHMgPSAoCiAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCd3YXJuaW5nJykgICAgID0+ICd5ZWxsb3dsZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnaW5jaWRlbnQnKSAgICA9PiAncmVkbGVkJywKICAgICk7CgogICAgIyB0byBzdG9yZSB0aGUgY29sb3IgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJURlcGxTaWduYWxzOwoKICAgICMgZ2V0IGdlbmVyYWwgY2F0YWxvZyBvYmplY3QKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGxpc3Qgb2YgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgc2V0IGRlcGxveW1lbnQgc3R5bGUgY29sb3JzCiAgICBteSAkU3R5bGVDbGFzc2VzID0gJyc7CgogICAgSVRFTUlEOgogICAgZm9yIG15ICRJdGVtSUQgKCBzb3J0IGtleXMgJXskRGVwbG95bWVudFN0YXRlc0xpc3R9ICkgewoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIHByZWZlcmVuY2VzCiAgICAgICAgbXkgJVByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIGlmICEkUHJlZmVyZW5jZXN7Q29sb3J9OwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlCiAgICAgICAgbXkgJERlcGxTdGF0ZSA9ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9OwoKICAgICAgICAjIHJlbW92ZSBhbnkgbm9uIGFzY2lpIHdvcmQgY2hhcmFjdGVycwogICAgICAgICREZXBsU3RhdGUgPX4gc3sgW15hLXpBLVowLTldIH17X31tc3hnOwoKICAgICAgICAjIHN0b3JlIHRoZSBvcmlnaW5hbCBkZXBsb3ltZW50IHN0YXRlIGFzIGtleQogICAgICAgICMgYW5kIHRoZSBzcyBzYWZlIGNvdmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZSBhbmQgcmVtb3ZlIGFueXRoaW5nIHNlY3VyaXR5IHJlbGV2YW50LgogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciAgICAgPSBsYyAkUHJlZmVyZW5jZXN7Q29sb3J9OwogICAgICAgIG15ICVTYWZlRGVwbFN0YXRlQ29sb3IgPSAkSFRNTFV0aWxzT2JqZWN0LT5TYWZldHkoCiAgICAgICAgICAgIFN0cmluZyAgICAgICA9PiAkRGVwbFN0YXRlQ29sb3IsCiAgICAgICAgICAgIE5vQXBwbGV0ICAgICA9PiAxLAogICAgICAgICAgICBOb09iamVjdCAgICAgPT4gMSwKICAgICAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgICAgIE5vU1ZHICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0ltZyAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9JbnRTcmNMb2FkID0+IDEsCiAgICAgICAgICAgIE5vRXh0U3JjTG9hZCA9PiAxLAogICAgICAgICAgICBOb0phdmFTY3JpcHQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkRGVwbFN0YXRlQ29sb3IgPSAkU2FmZURlcGxTdGF0ZUNvbG9ye1N0cmluZ30gLy8gJyc7CgogICAgICAgICMgYWRkIHRvIHN0eWxlIGNsYXNzZXMgc3RyaW5nCiAgICAgICAgJFN0eWxlQ2xhc3NlcyAuPSAiCiAgICAgICAgICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICAjIHN0b3JlIGVpdGhlciBDb25maWdJdGVtIElEcyBMb2NhbGx5CiAgICBteSBAQ29uZmlnSXRlbUlEcyA9IEB7ICRQYXJhbXtDb25maWdJdGVtSURzfSB9OwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlJykgKSB7CiAgICAgICAgbXkgQEdyb3VwczsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgKSB7CiAgICAgICAgICAgIEBHcm91cHMgPSBAeyAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpIH07CiAgICAgICAgfQogICAgICAgIGlmICggIUBHcm91cHMgKSB7CiAgICAgICAgICAgICRCdWxrRmVhdHVyZSA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgZm9yIG15ICRHcm91cCAoQEdyb3VwcykgewogICAgICAgICAgICAgICAgbmV4dCBHUk9VUCBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRCdWxrRmVhdHVyZSA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIHByZSBtZW51IG1vZHVsZXMKICAgIG15IEBBY3Rpb25JdGVtczsKICAgIGlmICggcmVmICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlJykgZXEgJ0hBU0gnICkgewogICAgICAgIG15ICVNZW51cyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlJykgfTsKCiAgICAgICAgTUVOVToKICAgICAgICBmb3IgbXkgJE1lbnVLZXkgKCBzb3J0IGtleXMgJU1lbnVzICkgewoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNZW51c3skTWVudUtleX0tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkT2JqZWN0ID0gJE1lbnVzeyRNZW51S2V5fS0+e01vZHVsZX0tPm5ldygKICAgICAgICAgICAgICAgICAgICAleyRTZWxmfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgbWVudSBpcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgIG5leHQgTUVOVSBpZiByZWYgJE1lbnVzeyRNZW51S2V5fSBuZSAnSEFTSCc7CgogICAgICAgICAgICAgICAgIyBzZXQgY2xhc3NlcwogICAgICAgICAgICAgICAgaWYgKCAkTWVudXN7JE1lbnVLZXl9LT57VGFyZ2V0fSApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkTWVudXN7JE1lbnVLZXl9LT57VGFyZ2V0fSBlcSAnUG9wVXAnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnVLZXl9LT57TWVudUNsYXNzfSA9ICdBc1BvcHVwJzsKICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51S2V5fS0+e1BvcHVwVHlwZX0gPSAnSVRTTUNvbmZpZ0l0ZW1BY3Rpb24nOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51S2V5fS0+e01lbnVDbGFzc30gPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51S2V5fS0+e1BvcHVwVHlwZX0gPSAnJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgYnkgZGVmYXVsdAogICAgICAgICAgICAgICAgbXkgJEFjY2VzcyA9IDE7CgogICAgICAgICAgICAgICAgbXkgJEFjdGlvbiA9ICRNZW51c3skTWVudUtleX0tPntBY3Rpb259OwoKICAgICAgICAgICAgICAgICMgY2FuIG5vdCBleGVjdXRlIHRoZSBtb2R1bGUgZHVlIHRvIGEgQ29uZmlnSXRlbSBpcyByZXF1aXJlZCwgdGhlbiBqdXN0IGNoZWNrIHRoZQogICAgICAgICAgICAgICAgIyBwZXJtaXNzaW9ucyBhcyBpbiB0aGUgTWVudU1vZHVsZUdlbmVyaWMKICAgICAgICAgICAgICAgIG15ICRHcm91cHNSbyA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cFJvfSB8fCBbXTsKICAgICAgICAgICAgICAgIG15ICRHcm91cHNSdyA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cH0gICB8fCBbXTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgICAgICAgICAgICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAgICAgICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgICAgICAgICAgICAgUk9HUk9VUDoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvR3JvdXAgKCBAeyRHcm91cHNSb30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgUk9HUk9VUCBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJvR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAgICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBST0dST1VQOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayByZWFkIHdyaXRlIGdyb3VwcwogICAgICAgICAgICAgICAgICAgIFJXR1JPVVA6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSd0dyb3VwICggQHskR3JvdXBzUnd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFJXR1JPVVAgaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uQ2hlY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lID0+ICRSd0dyb3VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgUldHUk9VUDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZXR1cm4gaWYgdGhlcmUgaXMgbm8gYWNjZXNzIHRvIHRoZSBtb2R1bGUKICAgICAgICAgICAgICAgIG5leHQgTUVOVSBpZiAhJEFjY2VzczsKCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSBOYW1lIGFuZCBEZXNjcmlwdGlvbgogICAgICAgICAgICAgICAgbXkgJERlc2NyaXB0aW9uID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkTWVudXN7JE1lbnVLZXl9LT57RGVzY3JpcHRpb259ICk7CiAgICAgICAgICAgICAgICBteSAkTmFtZSAgICAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRNZW51c3skTWVudUtleX0tPntEZXNjcmlwdGlvbn0gKTsKCiAgICAgICAgICAgICAgICAjIGdlbmVyYXJ0ZSBhIHdlYiBzYWZlIGxpbmsKICAgICAgICAgICAgICAgIG15ICRMaW5rID0gJExheW91dE9iamVjdC0+e0Jhc2VsaW5rfSAuICRNZW51c3skTWVudUtleX0tPntMaW5rfTsKCiAgICAgICAgICAgICAgICAjIHNhbml0eSBjaGVjawogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkTWVudXN7JE1lbnVLZXl9LT57TWVudUNsYXNzfSApIHsKICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnVLZXl9LT57TWVudUNsYXNzfSA9ICcnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ2VuZXJhdGUgSFRNTCBmb3IgdGhlIG1lbnUgaXRlbQogICAgICAgICAgICAgICAgbXkgJE1lbnVIVE1MID0gPDwiRU5EIjsKPGxpPgogICAgPGEgaHJlZj0iJExpbmsiIGNsYXNzPSIkTWVudXN7JE1lbnVLZXl9LT57TWVudUNsYXNzfSIgdGl0bGU9IiREZXNjcmlwdGlvbiI+JE5hbWU8L2E+CjwvbGk+CkVORAoKICAgICAgICAgICAgICAgICRNZW51SFRNTCA9fiBzL1xuKy8vZzsKICAgICAgICAgICAgICAgICRNZW51SFRNTCA9fiBzL1xzKy8gL2c7CiAgICAgICAgICAgICAgICAkTWVudUhUTUwgPX4gcy88XCEtLS4rPy0tPi8vZzsKCiAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnVLZXl9LT57SUR9ID0gJE1lbnVzeyRNZW51S2V5fS0+e05hbWV9OwogICAgICAgICAgICAgICAgJE1lbnVzeyRNZW51S2V5fS0+e0lEfSA9fiBzLyhcc3wmfDspLy9pZzsKCiAgICAgICAgICAgICAgICBwdXNoIEBBY3Rpb25JdGVtcywgewogICAgICAgICAgICAgICAgICAgIEhUTUwgICAgICAgID0+ICRNZW51SFRNTCwKICAgICAgICAgICAgICAgICAgICBJRCAgICAgICAgICA9PiAkTWVudXN7JE1lbnVLZXl9LT57SUR9LAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgID0+ICRMaW5rLAogICAgICAgICAgICAgICAgICAgIFRhcmdldCAgICAgID0+ICRNZW51c3skTWVudUtleX0tPntUYXJnZXR9LAogICAgICAgICAgICAgICAgICAgIFBvcHVwVHlwZSAgID0+ICRNZW51c3skTWVudUtleX0tPntQb3B1cFR5cGV9LAogICAgICAgICAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICREZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBTaG93Q29sdW1ucyBwYXJhbWV0ZXIKICAgIG15IEBTaG93Q29sdW1uczsKICAgIG15IEBYTUxTaG93Q29sdW1uczsKICAgIGlmICggJFBhcmFte1Nob3dDb2x1bW5zfSAmJiByZWYgJFBhcmFte1Nob3dDb2x1bW5zfSBlcSAnQVJSQVknICkgewogICAgICAgIEBTaG93Q29sdW1ucyA9IEB7ICRQYXJhbXtTaG93Q29sdW1uc30gfTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBidWlsZCBjb2x1bW4gaGVhZGVyIGJsb2NrcwogICAgaWYgKEBTaG93Q29sdW1ucykgewoKICAgICAgICAjIHNob3cgdGhlIGJ1bGsgYWN0aW9uIGJ1dHRvbiBjaGVja2JveGVzIGlmIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgICAgIGlmICgkQnVsa0ZlYXR1cmUpIHsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICdCdWxrQWN0aW9uJzsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICMgY3JlYXRlIG5lZWRlZCB2ZXJpYWJsZXMKICAgICAgICAgICAgbXkgJENTUyA9ICdPdmVydmlld0hlYWRlcic7CiAgICAgICAgICAgIG15ICRPcmRlckJ5OwoKICAgICAgICAgICAgIyByZW1vdmUgSUQgaWYgbmVjZXNhcnkKICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtTb3J0Qnl9ID0gKCAkUGFyYW17U29ydEJ5fSBlcSAnSW5jaVN0YXRlSUQnICkKICAgICAgICAgICAgICAgICAgICA/ICdDdXJJbmNpU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgOiAoICRQYXJhbXtTb3J0Qnl9IGVxICdEZXBsU3RhdGVJRCcgKSA/ICdDdXJEZXBsU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgOiAoICRQYXJhbXtTb3J0Qnl9IGVxICdDbGFzc0lEJyApICAgICA/ICdDbGFzcycKICAgICAgICAgICAgICAgICAgICA6ICggJFBhcmFte1NvcnRCeX0gZXEgJ0NoYW5nZVRpbWUnICkgID8gJ0xhc3RDaGFuZ2VkJwogICAgICAgICAgICAgICAgICAgIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgdGhlIGNvcnJlY3QgU2V0IENTUyBjbGFzcyBhbmQgb3JkZXIgYnkgbGluawogICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICYmICggJFBhcmFte1NvcnRCeX0gZXEgJENvbHVtbiApICkgewogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gJiYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ0Rvd24nOwogICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ1VwJzsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ1VwJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgIENTUyAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRoZSBYTUwgY29sdW1uIGhlYWRlcnMgb25seSBpZiB0aGUgZmlsdGVyIGlzIG5vdCBzZXQgdG8gJ2FsbCcKICAgICAgICAjIGFuZCBpZiB0aGVyZSBhcmUgQ0lzIHRvIHNob3cKICAgICAgICBpZiAoICRQYXJhbXtGaWx0ZXJ9ICYmICRQYXJhbXtGaWx0ZXJ9IG5lICdBbGwnICYmIEBDb25maWdJdGVtSURzICkgewoKICAgICAgICAgICAgIyBnZXQgdGhlIHZlcnNpb24gZGF0YSBvZiB0aGUgZmlyc3QgY29uZmlnIGl0ZW0sIGluY2x1ZGluZyBhbGwgdGhlIFhNTCBkYXRhCiAgICAgICAgICAgICMgdG8gZ2V0IHRoZSBjb2x1bW4gaGVhZGVyIG5hbWVzCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRHNbMF0sCiAgICAgICAgICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY29udmVydCB0aGUgWE1MIGRhdGEgaW50byBhIGhhc2gKICAgICAgICAgICAgbXkgJEV4dGVuZGVkVmVyc2lvbkRhdGEgPSAkTGF5b3V0T2JqZWN0LT5YTUxEYXRhMkhhc2goCiAgICAgICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRDb25maWdJdGVtLT57WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgID0+ICRDb25maWdJdGVtLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259LT5bMV0sCiAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgICAgICAgICBQcmludCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCB0aGUgeG1sIGNvbHVtbnMgKHRoZXkgY29udGFpbiA6OikKICAgICAgICAgICAgQFhNTFNob3dDb2x1bW5zID0gZ3JlcCB7Lzo6L30gQFNob3dDb2x1bW5zOwoKICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFhNTFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiBjb2x1bW4gZXhpc3RzIGluIENJLURhdGEKICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICEkRXh0ZW5kZWRWZXJzaW9uRGF0YS0+eyRDb2x1bW59LT57TmFtZX07CgogICAgICAgICAgICAgICAgIyBzaG93IHRoZSB4bWwgYXR0cmlidXRlIGhlYWRlcgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkWE1MQXR0cmlidXRlSGVhZGVyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBYTUxBdHRyaWJ1dGVIZWFkZXIgPT4gJEV4dGVuZGVkVmVyc2lvbkRhdGEtPnskQ29sdW1ufS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgID0gJyc7CiAgICBteSAkQ291bnRlciA9IDA7CgogICAgIyBzaG93IGNvbmZpZyBpdGVtcyBpZiB0aGVyZSBhcmUgc29tZQogICAgaWYgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICMgdG8gc3RvcmUgYWxsIGRhdGEKICAgICAgICBteSAlRGF0YTsKCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgICAgICAgICAgICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICAgICAgICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJEhhc0FjY2VzczsKCiAgICAgICAgICAgICAgICAjIGdldCBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFhNTERhdGFHZXQgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJENvbmZpZ0l0ZW07CgogICAgICAgICAgICAgICAgIyBjb252ZXJ0IHRoZSBYTUwgZGF0YSBpbnRvIGEgaGFzaAogICAgICAgICAgICAgICAgbXkgJEV4dGVuZGVkVmVyc2lvbkRhdGEgPSAkTGF5b3V0T2JqZWN0LT5YTUxEYXRhMkhhc2goCiAgICAgICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkQ29uZmlnSXRlbS0+e1hNTERlZmluaXRpb259LAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgICAgICAgICAgICAgUHJpbnQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHN0b3JlIGNvbmZpZyBpdGVtIGRhdGEsCiAgICAgICAgICAgICAgICAlRGF0YSA9ICV7JENvbmZpZ0l0ZW19OwoKICAgICAgICAgICAgICAgICMgR2V0IGNvbmZpZyBpdGVtIGRhdGEgZm9yICdDcmVhdGVUaW1lJyBhbmQgJ0NoYW5nZVRpbWUnLgogICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gPSAkQ29uZmlnSXRlbURhdGEtPntDcmVhdGVUaW1lfTsKICAgICAgICAgICAgICAgICREYXRhe0NoYW5nZVRpbWV9ID0gJENvbmZpZ0l0ZW1EYXRhLT57Q2hhbmdlVGltZX07CgogICAgICAgICAgICAgICAgIyBidWlsZCByZWNvcmQgYmxvY2sKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBidWlsZCBjb2x1bW4gcmVjb3JkIGJsb2NrcwogICAgICAgICAgICAgICAgaWYgKEBTaG93Q29sdW1ucykgewoKICAgICAgICAgICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBTaG93Q29sdW1ucykgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkRGF0YXtDdXJJbmNpU3RhdGVUeXBlfSB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTaWduYWwgPT4gJERlcGxTaWduYWxzeyAkRGF0YXtDdXJEZXBsU3RhdGV9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAWE1MU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgY29sdW1uIGV4aXN0cyBpbiBDSS1EYXRhCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OIGlmICEkRXh0ZW5kZWRWZXJzaW9uRGF0YS0+eyRDb2x1bW59LT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAjIENvbnZlcnQgdG8gYXNjaWkgdGV4dCBpbiBjYXNlIHRoZSB2YWx1ZSBjb250YWlucyBodG1sLgogICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJykKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+VG9Bc2NpaSggU3RyaW5nID0+ICRFeHRlbmRlZFZlcnNpb25EYXRhLT57JENvbHVtbn0tPntWYWx1ZX0gLy8gJycgKSAvLyAnJzsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBhbGwgd2hpdGVzcGFjZSBhbmQgbmV3bGluZXMgdG8gc2luZ2xlIHNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPX4gc3sgXHMrIH17IH1neG1zOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG93IHRoZSB4bWwgYXR0cmlidXRlIGRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmRYTUxBdHRyaWJ1dGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTEF0dHJpYnV0ZURhdGEgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBtYWtlIGEgZGVlcCBjb3B5IG9mIHRoZSBhY3Rpb24gaXRlbXMgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgICAgICAgICAgICAgIG15ICRDbG9uZWRBY3Rpb25JdGVtcyA9IFN0b3JhYmxlOjpkY2xvbmUoIFxAQWN0aW9uSXRlbXMgKTsKCiAgICAgICAgICAgICAgICAjIHN1YnN0aXR1dGUgVFQgdmFyaWFibGVzCiAgICAgICAgICAgICAgICBmb3IgbXkgJEFjdGlvbkl0ZW0gKCBAeyRDbG9uZWRBY3Rpb25JdGVtc30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEFjdGlvbkl0ZW0tPntIVE1MfSA9fiBzeyBcUVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXVxFIH17JENvbmZpZ0l0ZW1JRH14bXNnOwogICAgICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57SFRNTH0gPX4gc3sgXFFbJSBEYXRhLlZlcnNpb25JRCB8IGh0bWwgJV1cRSB9eyRDb25maWdJdGVtLT57VmVyc2lvbklEfX14bXNnOwogICAgICAgICAgICAgICAgICAgICRBY3Rpb25JdGVtLT57TGlua30gPX4gc3sgXFFbJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV1cRSB9eyRDb25maWdJdGVtSUR9eG1zZzsKICAgICAgICAgICAgICAgICAgICAkQWN0aW9uSXRlbS0+e0xpbmt9ID1+IHN7IFxRWyUgRGF0YS5WZXJzaW9uSUQgfCBodG1sICVdXEUgfXskQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH19eG1zZzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKAogICAgICAgICAgICAgICAgIyAgICBEYXRhID0+ICRDbG9uZWRBY3Rpb25JdGVtcywKICAgICAgICAgICAgICAgICMpOwoKICAgICAgICAgICAgICAgICMkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICMgICAgTmFtZSA9PiAnRG9jdW1lbnRSZWFkeUFjdGlvblJvd0FkZCcsCiAgICAgICAgICAgICAgICAjICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgIyAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAjICAgICAgICBEYXRhICAgICAgICAgPT4gJEpTT04sCiAgICAgICAgICAgICAgICAjICAgIH0sCiAgICAgICAgICAgICAgICAjKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtQWN0aW9uUm93LicgLiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRDbG9uZWRBY3Rpb25JdGVtcywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBpZiB0aGVyZSBhcmUgbm8gY29uZmlnIGl0ZW1zIHRvIHNob3csIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZCBpbiB0aGUgdGFibGUKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVG90YWxDb2x1bW5zID0+IHNjYWxhciBAU2hvd0NvbHVtbnMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgICAgIENvbHVtbkNvdW50ICA9PiBzY2FsYXIgQFNob3dDb2x1bW5zLAogICAgICAgICAgICBTdHlsZUNsYXNzZXMgPT4gJFN0eWxlQ2xhc3NlcywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/Output/HTML/Layout/ITSMConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0OjpJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0OjpJVFNNQ29uZmlnSXRlbSAtIGFsbCBDb25maWdJdGVtLXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIElUU00gQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50LXJlbGF0ZWQgSFRNTCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoKQoKcmV0dXJucyBhbiBvdXRwdXQgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtT3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgIFZhbHVlID0+IDExLCAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBJdGVtICA9PiAkSXRlbVJlZiwKICAgICAgICBQcmludCA9PiAxLCAgICAgICAgIyAob3B0aW9uYWwsIGRlZmF1bHQgMCkKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0l0ZW19ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBJdGVtIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICcnIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGdlbmVyYXRlIG91dHB1dCBzdHJpbmcKICAgIG15ICRTdHJpbmcgPSAkQmFja2VuZE9iamVjdC0+T3V0cHV0U3RyaW5nQ3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbUZvcm1EYXRhR2V0KCkKCnJldHVybnMgdGhlIHZhbHVlcyBmcm9tIHRoZSBodG1sIGZvcm0gYXMgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkRm9ybURhdGFSZWYgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUZvcm1EYXRhR2V0KAogICAgICAgIEtleSAgICAgICAgICA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSAgICAgICAgID0+ICRJdGVtUmVmLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoS2V5IEl0ZW0gQ29uZmlnSXRlbUlEKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4ge30gaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgZ2V0IGZvcm0gZGF0YQogICAgbXkgJEZvcm1EYXRhID0gJEJhY2tlbmRPYmplY3QtPkZvcm1EYXRhR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRGb3JtRGF0YTsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtSW5wdXRDcmVhdGUoKQoKcmV0dXJucyBhIGlucHV0IGZpZWxkIGh0bWwgc3RyaW5nCgogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtSW5wdXRDcmVhdGUoCiAgICAgICAgS2V5ID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1JbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhLZXkgSXRlbSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICcnIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGxvb2t1cCBpdGVtIHZhbHVlCiAgICBteSAkU3RyaW5nID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbVNlYXJjaEZvcm1EYXRhR2V0KCkKCnJldHVybnMgdGhlIHZhbHVlcyBmcm9tIHRoZSBzZWFyY2ggaHRtbCBmb3JtCgogICAgbXkgJEFycmF5UmVmID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoS2V5IEl0ZW0pKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiBbXSBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBnZXQgZm9ybSBkYXRhCiAgICBteSAkVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZvcm1EYXRhR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRWYWx1ZXM7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbVNlYXJjaElucHV0Q3JlYXRlKCkKCnJldHVybnMgYSBzZWFyY2ggaW5wdXQgZmllbGQgaHRtbCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1TZWFyY2hJbnB1dENyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtU2VhcmNoSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoS2V5IEl0ZW0pKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9hZCBiYWNrZW5kCiAgICBteSAkQmFja2VuZE9iamVjdCA9ICRTZWxmLT5fSVRTTUxvYWRMYXlvdXRCYWNrZW5kKAogICAgICAgIFR5cGUgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VHlwZX0sCiAgICApOwoKICAgIHJldHVybiAnJyBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBsb29rdXAgaXRlbSB2YWx1ZQogICAgbXkgJFN0cmluZyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hJbnB1dENyZWF0ZSglUGFyYW0pOwoKICAgIHJldHVybiAkU3RyaW5nOwp9Cgo9aGVhZDIgX0lUU01Mb2FkTGF5b3V0QmFja2VuZCgpCgpsb2FkIGEgaW5wdXQgdHlwZSBiYWNrZW5kIG1vZHVsZQoKICAgICRCYWNrZW5kT2JqZWN0ID0gJExheW91dE9iamVjdC0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICdHZW5lcmFsQ2F0YWxvZycsCiAgICApOwoKPWN1dAoKc3ViIF9JVFNNTG9hZExheW91dEJhY2tlbmQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBsb2cgb2JqZWN0CiAgICBteSAkTG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIGlmICggISRQYXJhbXtUeXBlfSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFR5cGUhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkR2VuZXJpY01vZHVsZSA9ICJLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkxheW91dCRQYXJhbXtUeXBlfSI7CgogICAgIyBsb2FkIHRoZSBiYWNrZW5kIG1vZHVsZQogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSgkR2VuZXJpY01vZHVsZSkgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgbG9hZCBiYWNrZW5kIG1vZHVsZSAkUGFyYW17VHlwZX0hIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY3JlYXRlIG5ldyBpbnN0YW5jZQogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkR2VuZXJpY01vZHVsZS0+bmV3KAogICAgICAgICV7JFNlbGZ9LAogICAgICAgICVQYXJhbSwKICAgICAgICBMYXlvdXRPYmplY3QgPT4gJFNlbGYsCiAgICApOwoKICAgIGlmICggISRCYWNrZW5kT2JqZWN0ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBiYWNrZW5kIG1vZHVsZSAkUGFyYW17VHlwZX0hIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJEJhY2tlbmRPYmplY3Q7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbUxpc3RTaG93KCkKClJldHVybnMgYSBsaXN0IG9mIGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBzb3J0IGFuZCBwYWdpbmF0aW9uIGNhcGFiaWxpdGllcy4KClRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBMPEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXRUaWNrZXQ6OlRpY2tldExpc3RTaG93KCk+CmluIEY8S2VybmVsL091dHB1dC9IVE1ML0xheW91dFRpY2tldC5wbT4uCgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiAkQ29uZmlnSXRlbUlEc1JlZiwgICAgICAgICAgICAgICAgICAjIHRvdGFsIGxpc3Qgb2YgY29uZmlnIGl0ZW0gaWRzLCB0aGF0IGNhbiBiZSBsaXN0ZWQKICAgICAgICBUb3RhbCAgICAgICAgID0+IHNjYWxhciBAeyAkQ29uZmlnSXRlbUlEc1JlZiB9LCAgICAgICMgdG90YWwgbnVtYmVyIG9mIGxpc3QgaXRlbXMsIGNvbmZpZyBpdGVtcyBpbiB0aGlzIGNhc2UKICAgICAgICBWaWV3ICAgICAgICAgID0+ICRTZWxmLT57Vmlld30sICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwsIHRoZSBkZWZhdWx0IHZhbHVlIGlzICdTbWFsbCcKICAgICAgICBGaWx0ZXIgICAgICAgID0+ICdBbGwnLAogICAgICAgIEZpbHRlcnMgICAgICAgPT4gXCVOYXZCYXJGaWx0ZXIsCiAgICAgICAgRmlsdGVyTGluayAgICA9PiAkTGlua0ZpbHRlciwKICAgICAgICBUaXRsZU5hbWUgICAgID0+ICdPdmVydmlldzogQ29uZmlnIEl0ZW06IENvbXB1dGVyJywKICAgICAgICBUaXRsZVZhbHVlICAgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICBFbnYgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgIEZyb250ZW5kICAgICAgPT4gJ0FnZW50JywgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsIChBZ2VudHxDdXN0b21lciksIGRlZmF1bHQ6IEFnZW50LCBpbmRpY2F0ZXMgZnJvbSB3aGljaCBmcm9udGVuZCB0aGlzIGZ1bmN0aW9uIHdhcyBjYWxsZWQKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdGFrZSBvYmplY3QgcmVmIHRvIGxvY2FsLCByZW1vdmUgaXQgZnJvbSAlUGFyYW0gKHByZXZlbnQgbWVtb3J5IGxlYWspCiAgICBteSAkRW52ID0gZGVsZXRlICRQYXJhbXtFbnZ9OwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFBhcmFte1ZpZXd9ICYmICRTZWxmLT57ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGZyb250ZW5kCiAgICBteSAkRnJvbnRlbmQgPSAkUGFyYW17RnJvbnRlbmR9IHx8ICdBZ2VudCc7CgogICAgIyBzZXQgZGVmYXV0IHZpZXcgbW9kZSB0byAnc21hbGwnCiAgICBteSAkVmlldyA9ICRQYXJhbXtWaWV3fSB8fCAnU21hbGwnOwoKICAgICMgc3RvcmUgbGF0ZXN0IHZpZXcgbW9kZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZ2V0IGJhY2tlbmQgZnJvbSBjb25maWcKICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdOZWVkIGNvbmZpZyBvcHRpb24gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBoYXNoLXJlZgogICAgaWYgKCByZWYgJEJhY2tlbmRzIG5lICdIQVNIJyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGNvbmZpZyBrZXkKICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAiTm8gY29uZmlnIG9wdGlvbiBmb3VuZCBmb3IgdGhlIHZpZXcgJyRWaWV3JyEiLAogICAgICAgICk7CiAgICB9CgogICAgIyBuYXYgYmFyCiAgICBteSAkU3RhcnRIaXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKAogICAgICAgIFBhcmFtID0+ICdTdGFydEhpdCcsCiAgICApIHx8IDE7CgogICAgIyBnZXQgcGVyc29uYWwgcGFnZSBzaG93biBjb3VudAogICAgbXkgJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5ID0gJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKICAgIG15ICRQYWdlU2hvd24gICAgICAgICAgICAgICA9ICRTZWxmLT57JFBhZ2VTaG93blByZWZlcmVuY2VzS2V5fSB8fCAxMDsKICAgIG15ICRHcm91cCAgICAgICAgICAgICAgICAgICA9ICdDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoZW4gZWxlbWVudHMgYXZhaWxhYmxlLCBzZXQKICAgICMgaXQgdG8gdGhlIGxhc3Qgb3ZlcnZpZXcgcGFnZSAoVGhhbmtzIHRvIFN0ZWZhbiBTY2htaWR0ISkKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGdldCBkYXRhIHNlbGVjdGlvbgogICAgbXkgJURhdGE7CiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpOwogICAgaWYgKCAkQ29uZmlnICYmICRDb25maWctPnskR3JvdXB9ICYmICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gKSB7CiAgICAgICAgJURhdGEgPSAleyAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9IH07CiAgICB9CgogICAgIyBzZXQgcGFnZSBsaW1pdCBhbmQgYnVpbGQgcGFnZSBuYXYKICAgIG15ICRMaW1pdCAgID0gJFBhcmFte0xpbWl0fSB8fCAyMF8wMDA7CiAgICBteSAlUGFnZU5hdiA9ICRMYXlvdXRPYmplY3QtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249JyAuICRFbnYtPntBY3Rpb259LAogICAgICAgIExpbmsgICAgICA9PiAkUGFyYW17TGlua1BhZ2V9LAogICAgKTsKCiAgICAjIGJ1aWxkIHNob3duIHRpY2tldCBhIHBhZ2UKICAgICRQYXJhbXtSZXF1ZXN0ZWRVUkx9ICAgID0gJFBhcmFte1JlcXVlc3RlZFVSTH0gfHwgIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07JFBhcmFte0xpbmtQYWdlfSI7CiAgICAkUGFyYW17R3JvdXB9ICAgICAgICAgICA9ICRHcm91cDsKICAgICRQYXJhbXtQcmVmZXJlbmNlc0tleX0gID0gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5OwogICAgJFBhcmFte1BhZ2VTaG93blN0cmluZ30gPSAkU2VsZi0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5LAogICAgICAgIFNlbGVjdGVkSUQgID0+ICRQYWdlU2hvd24sCiAgICAgICAgRGF0YSAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFRyYW5zbGF0aW9uID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgPT4gJ051bWVyaWNWYWx1ZScsCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgYnVpbGQgbmF2YmFyIGNvbnRlbnQKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRQYXJhbXtQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgZmlsdGVycwogICAgaWYgKCAkUGFyYW17RmlsdGVyc30gKSB7CgogICAgICAgICMgZ2V0IGdpdmVuIGZpbHRlcnMKICAgICAgICBteSBATmF2QmFyRmlsdGVyczsKICAgICAgICBmb3IgbXkgJFByaW8gKCBzb3J0IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgZmlsdGVyIGNvbnRlbnQKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGxvb3Agb3ZlciBmaWx0ZXJzCiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJEZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKCiAgICAgICAgICAgICMgaW5jcmVtZW50IGZpbHRlciBjb3VudCBhbmQgYnVpbGQgZmlsdGVyIGl0ZW0KICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZmlsdGVyIGlzIHNlbGVjdGVkCiAgICAgICAgICAgIGlmICggJEZpbHRlci0+e0ZpbHRlcn0gZXEgJFBhcmFte0ZpbHRlcn0gKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb29wIG92ZXIgY29uZmlndXJlZCBiYWNrZW5kcwogICAgZm9yIG15ICRCYWNrZW5kICggc29ydCBrZXlzICV7JEJhY2tlbmRzfSApIHsKCiAgICAgICAgIyBidWlsZCBuYXZiYXIgdmlldyBtb2RlCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGUnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY3VycmVudCB2aWV3IGlzIGNvbmZpZ3VyZWQgaW4gYmFja2VuZAogICAgICAgIGlmICggJFZpZXcgZXEgJEJhY2tlbmQgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBwYWdlIG5hdiBpcyBhdmFpbGFibGUKICAgIGlmICglUGFnZU5hdikgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VOYXZCYXInLAogICAgICAgICAgICBEYXRhID0+IFwlUGFnZU5hdiwKICAgICAgICApOwoKICAgICAgICAjIGRvbid0IHNob3cgY29udGV4dCBzZXR0aW5ncyBpbiBBSkFYIGNhc2UgKGUuIGcuIGluIGN1c3RvbWVyIHRpY2tldCBoaXN0b3J5KSwKICAgICAgICAjICAgYmVjYXVzZSB0aGUgc3VibWl0IHdpdGggcGFnZSByZWxvYWQgd2lsbCBub3Qgd29yayB0aGVyZQogICAgICAgIGlmICggISRQYXJhbXtBSkFYfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZXh0U2V0dGluZ3MnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgbXkgJEJ1bGtGZWF0dXJlID0gMDsKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlJykgKSB7CiAgICAgICAgbXkgQEdyb3VwczsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgKSB7CiAgICAgICAgICAgIEBHcm91cHMgPSBAeyAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpIH07CiAgICAgICAgfQogICAgICAgIGlmICggIUBHcm91cHMgKSB7CiAgICAgICAgICAgICRCdWxrRmVhdHVyZSA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBHUk9VUDoKICAgICAgICAgICAgZm9yIG15ICRHcm91cCAoQEdyb3VwcykgewogICAgICAgICAgICAgICAgbmV4dCBHUk9VUCBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkR3JvdXAsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdydycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRCdWxrRmVhdHVyZSA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IEdST1VQOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgc2hvdyB0aGUgYnVsayBhY3Rpb24gYnV0dG9uIGlmIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdCdWxrQWN0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFnZU5hdiwKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgYnVpbGQgaHRtbCBjb250ZW50CiAgICBteSAkT3V0cHV0TmF2QmFyID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwoKICAgICMgY3JlYXRlIG91dHB1dAogICAgbXkgJE91dHB1dFJhdyA9ICcnOwogICAgaWYgKCAhJFBhcmFte091dHB1dH0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+UHJpbnQoCiAgICAgICAgICAgIE91dHB1dCA9PiBcJE91dHB1dE5hdkJhciwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dFJhdyAuPSAkT3V0cHV0TmF2QmFyOwogICAgfQoKICAgICMgbG9hZCBtb2R1bGUKICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0gKSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGJhY2tlbmQgb2JqZWN0CiAgICBteSAkT2JqZWN0ID0gJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfS0+bmV3KCAleyRFbnZ9ICk7CiAgICByZXR1cm4gaWYgISRPYmplY3Q7CgogICAgIyBydW4gbW9kdWxlCiAgICBteSAkT3V0cHV0ID0gJE9iamVjdC0+UnVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBGcm9udGVuZCAgPT4gJEZyb250ZW5kLAogICAgKTsKCiAgICAjIGNyZWF0ZSBvdXRwdXQKICAgIGlmICggISRQYXJhbXtPdXRwdXR9ICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPlByaW50KAogICAgICAgICAgICBPdXRwdXQgPT4gXCRPdXRwdXQsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRPdXRwdXRSYXcgLj0gJE91dHB1dDsKICAgIH0KCiAgICAjIGNyZWF0ZSBvdmVydmlldyBuYXYgYmFyCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyByZXR1cm4gY29udGVudCBpZiBhdmFpbGFibGUKICAgIHJldHVybiAkT3V0cHV0UmF3Owp9Cgo9aGVhZDIgWE1MRGF0YTJIYXNoKCkKCnJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoIHRoZSByZXF1ZXN0ZWQgYXR0cmlidXRlcyBkYXRhIGZvciBhIGNvbmZpZyBpdGVtCgpSZXR1cm4KCiAgICAkRGF0YSA9IHsKICAgICAgICAnSGFyZERpc2s6OjInID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJ0hEMicsCiAgICAgICAgICAgIE5hbWUgID0+ICdIYXJkIERpc2snLAogICAgICAgICB9LAogICAgICAgICdDUFU6OjEnID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJycsCiAgICAgICAgICAgIE5hbWUgID0+ICdDUFUnLAogICAgICAgIH0sCiAgICAgICAgJ0hhcmREaXNrOjoyOjpDYXBhY2l0eTo6MScgPT4gewogICAgICAgICAgICBWYWx1ZSA9PiAnNzgwIEdCJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0NhcGFjaXR5JywKICAgICAgICB9LAogICAgfTsKCiAgICBteSAkRGF0YSA9ICRMYXlvdXRPYmplY3QtPlhNTERhdGEySGFzaCgKICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRWZXJzaW9uLT57WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkVmVyc2lvbi0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgIEF0dHJpYnV0ZXMgICAgPT4gWydDUFU6OjEnLCAnSGFyZERyaXZlOjoyOjpDYXBhY2l0eTo6MScsIC4uLl0sCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJURhdGFIYXNoUmVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBQcmVmaXggICAgICAgID0+ICdIYXJkRGlzazo6MScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBYTUxEYXRhMkhhc2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGF0YX07CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufTsKICAgIHJldHVybiBpZiAhJFBhcmFte0F0dHJpYnV0ZXN9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGF0YX0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte0F0dHJpYnV0ZXN9IG5lICdBUlJBWSc7CgogICAgIyB0byBzdG9yZSB0aGUgcmV0dXJuIGRhdGEKICAgIG15ICREYXRhID0gJFBhcmFte0RhdGF9IHx8IHt9OwoKICAgICMgY3JlYXRlIGEgbG9va3VwIHN0cnVjdHVyZQogICAgbXkgJVJlbGV2YW50QXR0cmlidXRlcyA9IG1hcCB7ICRfID0+IDEgfSBAeyAkUGFyYW17QXR0cmlidXRlc30gfTsKCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtICggQHsgJFBhcmFte1hNTERlZmluaXRpb259IH0gKSB7CgogICAgICAgIG15ICRDb3VudE1heCA9ICRJdGVtLT57Q291bnRNYXh9IHx8IDE7CgogICAgICAgIENPVU5URVI6CiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkQ291bnRNYXggKSB7CgogICAgICAgICAgICAjIGFkZCBwcmVmaXgKICAgICAgICAgICAgbXkgJFByZWZpeCA9ICRJdGVtLT57S2V5fSAuICc6OicgLiAkQ291bnRlcjsKICAgICAgICAgICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAgICAgICAgICRQcmVmaXggPSAkUGFyYW17UHJlZml4fSAuICc6OicgLiAkUHJlZml4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNraXAgbm90IG5lZWRlZCBlbGVtZW50cyBhbmQgc3ViIGVsZW1lbnRzCiAgICAgICAgICAgIG5leHQgQ09VTlRFUiBpZiAhZ3JlcCB7ICRfID1+IG17XEEkUHJlZml4fSB9IEB7ICRQYXJhbXtBdHRyaWJ1dGVzfSB9OwoKICAgICAgICAgICAgIyBsb29rdXAgdmFsdWUKICAgICAgICAgICAgbXkgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlhNTFZhbHVlTG9va3VwKAogICAgICAgICAgICAgICAgSXRlbSAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0tPntDb250ZW50fSAvLyAnJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSBpZiB2YWx1ZSBpcyBkZWZpbmVkCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkVmFsdWUgKSB7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgb3V0cHV0IHN0cmluZwogICAgICAgICAgICAgICAgJFZhbHVlID0gJFNlbGYtPklUU01Db25maWdJdGVtT3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICBQcmludCA9PiAkUGFyYW17UHJpbnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUmVsZXZhbnRBdHRyaWJ1dGVzeyRQcmVmaXh9ICkgewoKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIGl0ZW0gaW4gaGFzaAogICAgICAgICAgICAgICAgJERhdGEtPnskUHJlZml4fSA9IHsKICAgICAgICAgICAgICAgICAgICBOYW1lICA9PiAkSXRlbS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSAvLyAnJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAgICAgaWYgKCAkSXRlbS0+e1N1Yn0gKSB7CiAgICAgICAgICAgICAgICAkRGF0YSA9ICRTZWxmLT5YTUxEYXRhMkhhc2goCiAgICAgICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0sCiAgICAgICAgICAgICAgICAgICAgUHJlZml4ICAgICAgICA9PiAkUHJlZml4LAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlcyAgICA9PiAkUGFyYW17QXR0cmlidXRlc30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkRGF0YTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/Output/HTML/LinkObject/ITSMConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW0gLSBsYXlvdXQgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGxheW91dCBmdW5jdGlvbnMgb2YgbGluayBvYmplY3QgKGNvbmZpZyBpdGVtKQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgJEJhY2tlbmRPYmplY3QgPSBLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW0tPm5ldygKICAgICAgICBVc2VyTGFuZ3VhZ2UgPT4gJ2VuJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgY2hlY2sgbmVlZGVkIG9iamVjdHMKICAgIGZvciBteSAkTmVlZGVkIChxdyhVc2VyTGFuZ3VhZ2UgVXNlcklEKSkgewogICAgICAgICRTZWxmLT57JE5lZWRlZH0gPSAkUGFyYW17JE5lZWRlZH0gfHwgZGllICJHb3Qgbm8gJE5lZWRlZCEiOwogICAgfQoKICAgICMgV2UgbmVlZCBvdXIgb3duIExheW91dE9iamVjdCBpbnN0YW5jZSB0byBhdm9pZCBibG9ja2RhdGEgY29sbGlzaW9ucwogICAgIyAgIHdpdGggdGhlIG1haW4gcGFnZS4KICAgICRTZWxmLT57TGF5b3V0T2JqZWN0fSA9IEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQtPm5ldyggJXskU2VsZn0gKTsKCiAgICAjIGRlZmluZSBuZWVkZWQgdmFyaWFibGVzCiAgICAkU2VsZi0+e09iamVjdERhdGF9ID0gewogICAgICAgIE9iamVjdCAgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBSZWFsbmFtZSAgID0+ICdDb25maWdJdGVtJywKICAgICAgICBPYmplY3ROYW1lID0+ICdTb3VyY2VPYmplY3RJRCcsCiAgICB9OwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFRhYmxlQ3JlYXRlQ29tcGxleCgpCgpyZXR1cm4gYW4gYXJyYXkgd2l0aCB0aGUgYmxvY2sgZGF0YQoKUmV0dXJuCgogICAgQEJsb2NrRGF0YSA9ICgKICAgICAgICB7CgogICAgICAgICAgICBPYmplY3ROYW1lICA9PiAnQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgT2JqZWN0SUQgICAgPT4gJzEyMycsCgogICAgICAgICAgICBPYmplY3QgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgQmxvY2tuYW1lID0+ICdDb25maWdJdGVtIENvbXB1dGVyJywKICAgICAgICAgICAgSGVhZGxpbmUgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMjAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NvbmZpZ0l0ZW0jJywKICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEwMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDcmVhdGVkJywKICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEl0ZW1MaXN0ID0+IFsKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgICAgID0+ICcxMjMnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyMycsCiAgICAgICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9MTIzJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdUaGUgTmFtZSBvZiB0aGUgQ29uZmlnIEl0ZW0nLAogICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnSW4gUmVwYWlyJywKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RpbWVMb25nJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMS0wMSAxMjoxMjowMCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgID0+ICdDdXJJbmNpU2lnbmFsJywKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICAgICAgICA9PiAnMjM0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMzQnLAogICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgID0+ICdBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPTIzNCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnVGhlIE5hbWUgb2YgdGhlIENvbmZpZyBJdGVtIDIzNCcsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICdQcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RpbWVMb25nJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwNy0xMS0xMSAxMjoxMjowMCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgQEJsb2NrRGF0YSA9ICRMaW5rT2JqZWN0LT5UYWJsZUNyZWF0ZUNvbXBsZXgoCiAgICAgICAgT2JqZWN0TGlua0xpc3RXaXRoRGF0YSA9PiAkT2JqZWN0TGlua0xpc3RSZWYsCiAgICApOwoKPWN1dAoKc3ViIFRhYmxlQ3JlYXRlQ29tcGxleCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfHwgcmVmICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIE9iamVjdExpbmtMaXN0V2l0aERhdGEhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEhUTUxVdGlsc09iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgZ2V0IGFuZCByZW1lbWJlciB0aGUgRGVwbG95bWVudCBzdGF0ZSBjb2xvcnMKICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCBpZiAhJFByZWZlcmVuY2Vze0NvbG9yfTsKCiAgICAgICAgIyBhZGQgY29sb3Igc3R5bGUgZGVmaW5pdGlvbgogICAgICAgIG15ICREZXBsU3RhdGUgPSAkRGVwbG95bWVudFN0YXRlc0xpc3QtPnskSXRlbUlEfTsKCiAgICAgICAgIyByZW1vdmUgYW55IG5vbiBhc2NpaSB3b3JkIGNoYXJhY3RlcnMKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBjb252ZXJ0IHRvIGxvd2VyIGNhc2UgYW5kIHJlbW92ZSBhbnl0aGluZyBzZWN1cml0eSByZWxldmFudC4KICAgICAgICAkU2VsZi0+e0RlcGxTdGF0ZUNvbG9yc30tPnskRGVwbFN0YXRlfSA9IGxjICRQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgJVNhZmVEZXBsU3RhdGVDb2xvciA9ICRIVE1MVXRpbHNPYmplY3QtPlNhZmV0eSgKICAgICAgICAgICAgU3RyaW5nICAgICAgID0+ICRTZWxmLT57RGVwbFN0YXRlQ29sb3JzfS0+eyREZXBsU3RhdGV9LAogICAgICAgICAgICBOb0FwcGxldCAgICAgPT4gMSwKICAgICAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgICAgIE5vRW1iZWQgICAgICA9PiAxLAogICAgICAgICAgICBOb1NWRyAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9JbWcgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vSW50U3JjTG9hZCA9PiAxLAogICAgICAgICAgICBOb0V4dFNyY0xvYWQgPT4gMSwKICAgICAgICAgICAgTm9KYXZhU2NyaXB0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPntEZXBsU3RhdGVDb2xvcnN9LT57JERlcGxTdGF0ZX0gPSAkU2FmZURlcGxTdGF0ZUNvbG9ye1N0cmluZ30gLy8gJyc7CiAgICB9CgogICAgIyBHZXQgdGhlIGNvbHVtbnMgY29uZmlnLgogICAgbXkgJENvbHVtbnNDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OklUU01Db25maWdJdGVtOjpTaG93Q29sdW1ucycpOwoKICAgICMgR2V0IHRoZSBjb2x1bW5zIGJ5IGNsYXNzIGNvbmZpZy4KICAgIG15ICRDb2x1bW5zQnlDbGFzc0NvbmZpZwogICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbTo6U2hvd0NvbHVtbnNCeUNsYXNzJyk7CgogICAgIyBHZXQgY29uZmlndXJlZCBjb2x1bW5zIGFuZCByZW9yZ2FuaXplIHRoZW0gYnkgY2xhc3MgbmFtZS4KICAgIG15ICVDb2x1bW5CeUNsYXNzOwogICAgbXkgJVNpZ25hbENvbHVtbkxpc3Q7CiAgICBpZiAoICRDb2x1bW5zQnlDbGFzc0NvbmZpZyAmJiByZWYgJENvbHVtbnNCeUNsYXNzQ29uZmlnIGVxICdBUlJBWScgJiYgQHskQ29sdW1uc0J5Q2xhc3NDb25maWd9ICkgewoKICAgICAgICBOQU1FOgogICAgICAgIGZvciBteSAkTmFtZSAoIEB7JENvbHVtbnNCeUNsYXNzQ29uZmlnfSApIHsKICAgICAgICAgICAgbXkgKCAkQ2xhc3MsICRDb2x1bW4gKSA9IHNwbGl0IC86Oi8sICROYW1lLCAyOwoKICAgICAgICAgICAgbmV4dCBOQU1FIGlmICEkQ29sdW1uOwoKICAgICAgICAgICAgIyBJZiBzaWduYWwgY29sdW1ucyBhcmUgY29uZmlndXJlZCBqdXN0IGZvciBjZXJ0YWluIGNsYXNzZXMsIGFkZCB0aGVtIHRvIHRoZSBiZWdpbm5pbmcgb2YgSXRlbUNvbHVtbnMgYXJyYXksCiAgICAgICAgICAgICMgbm90IHRvIHRoZSBhcnJheSB3aXRoIG90aGVyIGNvbHVtbnMuCiAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgfHwgJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57JENvbHVtbn0gPSAxOwogICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30gfSwgJENvbHVtbjsKICAgICAgICB9CiAgICB9CgogICAgIyBjb252ZXJ0IHRoZSBsaXN0CiAgICBteSAlTGlua0xpc3Q7CiAgICBmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICV7ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfSB9ICkgewoKICAgICAgICAjIGV4dHJhY3QgbGluayB0eXBlIExpc3QKICAgICAgICBteSAkTGlua1R5cGVMaXN0ID0gJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9LT57JExpbmtUeXBlfTsKCiAgICAgICAgZm9yIG15ICREaXJlY3Rpb24gKCBzb3J0IGtleXMgJXskTGlua1R5cGVMaXN0fSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBkaXJlY3Rpb24gbGlzdAogICAgICAgICAgICBteSAkRGlyZWN0aW9uTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufTsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IGNsYXNzCiAgICAgICAgICAgICAgICBteSAkQ2xhc3MgPSAkRGlyZWN0aW9uTGlzdC0+eyRDb25maWdJdGVtSUR9LT57Q2xhc3N9IHx8ICcnOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkQ2xhc3M7CgogICAgICAgICAgICAgICAgJExpbmtMaXN0eyRDbGFzc30tPnskQ29uZmlnSXRlbUlEfS0+e0RhdGF9ID0gJERpcmVjdGlvbkxpc3QtPnskQ29uZmlnSXRlbUlEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBteSBAQmxvY2tEYXRhOwogICAgZm9yIG15ICRDbGFzcyAoIHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBrZXlzICVMaW5rTGlzdCApIHsKCiAgICAgICAgIyBleHRyYWN0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICBteSAkQ29uZmlnSXRlbUxpc3QgPSAkTGlua0xpc3R7JENsYXNzfTsKCiAgICAgICAgIyB0byBzdG9yZSB0aGUgY29sdW1uIGhlYWRsaW5lCiAgICAgICAgbXkgQFNob3dDb2x1bW5zSGVhZGxpbmVzOwoKICAgICAgICAjIGNyZWF0ZSB0aGUgaXRlbSBsaXN0CiAgICAgICAgbXkgQEl0ZW1MaXN0OwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICgKICAgICAgICAgICAgc29ydCB7ICRDb25maWdJdGVtTGlzdC0+eyRhfS0+e0RhdGF9LT57TmFtZX0gY21wICRDb25maWdJdGVtTGlzdC0+eyRifS0+e0RhdGF9LT57TmFtZX0gfQogICAgICAgICAgICBrZXlzICV7JENvbmZpZ0l0ZW1MaXN0fQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBleHRyYWN0IHZlcnNpb24gZGF0YQogICAgICAgICAgICBteSAkVmVyc2lvbiA9ICRDb25maWdJdGVtTGlzdC0+eyRDb25maWdJdGVtSUR9LT57RGF0YX07CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGUgY29sdW1uIGhlYWRsaW5lIGFycmF5IGlzIGVtcHR5IGZvciBlYWNoIGxvb3AKICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKCk7CgogICAgICAgICAgICAjIGdldCB0aGUgdmVyc2lvbiBkYXRhLCBpbmNsdWRpbmcgYWxsIHRoZSBYTUwgZGF0YQogICAgICAgICAgICBteSAkVmVyc2lvblhNTERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgWE1MRGF0YUdldCAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBASXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkVmVyc2lvbi0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgTGluayAgICA9PiAkU2VsZi0+e0xheW91dE9iamVjdH0tPntCYXNlbGlua30KICAgICAgICAgICAgICAgICAgICAgICAgLiAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0nCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAiQ29uZmlnSXRlbSMgJFZlcnNpb24tPntOdW1iZXJ9ICgkVmVyc2lvbi0+e0NsYXNzfSk6ICRWZXJzaW9uLT57TmFtZX0iLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQWRkIGNvbHVtbnMgZnJvbSAnTGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW06OlNob3dDb2x1bW5zJyBzZXR0aW5nIHRvIHRoZSBjdXJyZW50IENJIGNsYXNzCiAgICAgICAgICAgICMgaWYgaXQgZG9lcyBub3QgY29udGFpbiB0aGVtLiBTaWduYWwgY29sdW1ucyBpcyBzYXZlZCBpbiBoYXNoIGJlY2F1c2UgdGhleSB3aWxsIGJlIGFkZGVkIGxhdGVyLgogICAgICAgICAgICBDT0xVTU5DT05GSUc6CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uICggQHskQ29sdW1uc0NvbmZpZ30gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57JENvbHVtbn0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAhZ3JlcCB7ICRfIGVxICRDb2x1bW4gfSBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkQ29sdW1uQnlDbGFzc3skQ2xhc3N9IH0sICRDb2x1bW47CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWRkIHNpZ25hbCBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5IGlmIG5lZWRlZC4KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VyRGVwbFNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0N1ckRlcGxTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRWZXJzaW9uLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkU2lnbmFsQ29sdW1uTGlzdHskQ2xhc3N9LT57Q3VySW5jaVNpZ25hbH0gKSB7CiAgICAgICAgICAgICAgICB1bnNoaWZ0IEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0N1ckluY2lTaWduYWwnLAogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICRWZXJzaW9uLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICRWZXJzaW9uLT57Q3VySW5jaVN0YXRlVHlwZX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHRoZXNlIGNvbHVtbnMgd2lsbCBiZSBhZGRlZCBpZiBubyBjbGFzcyBiYXNlZCBjb2x1bW4gY29uZmlnIGlzIGRlZmluZWQKICAgICAgICAgICAgbXkgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRWZXJzaW9uLT57Q3VyRGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnVGltZUxvbmcnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbmZpZ0l0ZW1EYXRhLT57Q3JlYXRlVGltZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBpbmRpdmlkdWFsIGNvbHVtbiBjb25maWcgZm9yIHRoaXMgY2xhc3MgZXhpc3RzCiAgICAgICAgICAgIGlmICggJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSApIHsKCiAgICAgICAgICAgICAgICAjIGNvbnZlcnQgdGhlIFhNTCBkYXRhIGludG8gYSBoYXNoCiAgICAgICAgICAgICAgICBteSAkRXh0ZW5kZWRWZXJzaW9uRGF0YSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+WE1MRGF0YTJIYXNoKAogICAgICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJFZlcnNpb25YTUxEYXRhLT57WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkVmVyc2lvblhNTERhdGEtPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzICAgID0+ICRDb2x1bW5CeUNsYXNzeyRDbGFzc30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIENPTFVNTjoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uICggQHsgJENvbHVtbkJ5Q2xhc3N7JENsYXNzfSB9ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3Mgc29tZSBub24teG1sIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgICAgICBpZiAoICRWZXJzaW9uLT57JENvbHVtbn0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGhhbmRsZSB0aGUgQ0kgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ05hbWUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1Db2x1bW5zLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBoZWFkbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGNvbHVtbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAkVmVyc2lvbi0+eyRDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpYWwgdHJhbnNsYXRpb24gaGFuZGxpbmcKICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU3RhdGUnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBjb2x1bW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1Db2x1bW5zLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJFZlcnNpb24tPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGhlYWRsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmFuc2xhdGlvbiBoYW5kbGluZwogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0NsYXNzJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgY29sdW1uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICRWZXJzaW9uLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIHRoZSBoZWFkbGluZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnNIZWFkbGluZXMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDbGFzcycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNwZWNpYWwgZGF0ZS90aW1lIGhhbmRsaW5nCiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3JlYXRlVGltZScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGNvbHVtbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBASXRlbUNvbHVtbnMsIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdUaW1lTG9uZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkVmVyc2lvbi0+e0NyZWF0ZVRpbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNob3dDb2x1bW5zSGVhZGxpbmVzLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTFVNTjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCB0byBhc2NpaSB0ZXh0IGluIGNhc2UgdGhlIHZhbHVlIGNvbnRhaW5zIGh0bWwKICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWUgPSAkRXh0ZW5kZWRWZXJzaW9uRGF0YS0+eyRDb2x1bW59LT57VmFsdWV9IC8vICcnOwogICAgICAgICAgICAgICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSgkVmFsdWUpICkgewogICAgICAgICAgICAgICAgICAgICAgICAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICApIC8vICcnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjb252ZXJ0IGFsbCB3aGl0ZXNwYWNlIGFuZCBuZXdsaW5lcyB0byBzaW5nbGUgc3BhY2VzCiAgICAgICAgICAgICAgICAgICAgJFZhbHVlID1+IHN7IFxzKyB9eyB9Z3htczsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGhlIGNvbHVtbgogICAgICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1Db2x1bW5zLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgaGVhZGxpbmUKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1uc0hlYWRsaW5lcywgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRFeHRlbmRlZFZlcnNpb25EYXRhLT57JENvbHVtbn0tPntOYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGluZGl2aWR1YWwgY29sdW1uIGNvbmZpZyBmb3IgdGhpcyBjbGFzcyBkb2VzIG5vdCBleGlzdCwKICAgICAgICAgICAgIyBzbyB0aGUgZGVmYXVsdCBjb2x1bW5zIHdpbGwgYmUgdXNlZAogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGFkZCB0aGUgZGVmYXVsdCBjb2x1bW5zCiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtQ29sdW1ucywgQEFkZGl0aW9uYWxEZWZhdWx0SXRlbUNvbHVtbnM7CgogICAgICAgICAgICAgICAgIyBhZGQgdGhlIGRlZmF1bHQgY29sdW1uIGhlYWRsaW5lcwogICAgICAgICAgICAgICAgQFNob3dDb2x1bW5zSGVhZGxpbmVzID0gKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDEzMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTMwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBJdGVtTGlzdCwgXEBJdGVtQ29sdW1uczsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpZiAhQEl0ZW1MaXN0OwoKICAgICAgICAjIGRlZmluZSB0aGUgYmxvY2sgZGF0YQogICAgICAgIG15ICVCbG9jayA9ICgKICAgICAgICAgICAgT2JqZWN0ICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9LAogICAgICAgICAgICBCbG9ja25hbWUgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSAuICcgKCcgLiAkQ2xhc3MgLiAnKScsCiAgICAgICAgICAgIEhlYWRsaW5lICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSXRlbUxpc3QgPT4gXEBJdGVtTGlzdCwKICAgICAgICApOwoKICAgICAgICAjIEFkZCAnQ3VySW5jaVNpZ25hbCcgYW5kICdDdXJEZXBsU2lnbmFsJyBjb2x1bW5zIHRvIHRoZSBiZWdpbm5pbmcgb2YgaGVhZGxpbmUgaWYgbmVlZGVkLgogICAgICAgIGlmICggJFNpZ25hbENvbHVtbkxpc3R7JENsYXNzfS0+e0N1ckRlcGxTaWduYWx9ICkgewogICAgICAgICAgICB1bnNoaWZ0IEB7ICRCbG9ja3tIZWFkbGluZX0gfSwgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnRGVwbG95bWVudCBTdGF0ZScsCiAgICAgICAgICAgICAgICBXaWR0aCAgID0+IDIwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBpZiAoICRTaWduYWxDb2x1bW5MaXN0eyRDbGFzc30tPntDdXJJbmNpU2lnbmFsfSApIHsKICAgICAgICAgICAgdW5zaGlmdCBAeyAkQmxvY2t7SGVhZGxpbmV9IH0sIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0luY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgICAgIFdpZHRoICAgPT4gMjAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCB0aGUgY29sdW1uIGhlYWRsaW5lcwogICAgICAgIHB1c2ggQHsgJEJsb2Nre0hlYWRsaW5lfSB9LCBAU2hvd0NvbHVtbnNIZWFkbGluZXM7CgogICAgICAgIHB1c2ggQEJsb2NrRGF0YSwgXCVCbG9jazsKICAgIH0KCiAgICByZXR1cm4gQEJsb2NrRGF0YTsKfQoKPWhlYWQyIFRhYmxlQ3JlYXRlU2ltcGxlKCkKCnJldHVybiBhIGhhc2ggd2l0aCB0aGUgbGluayBvdXRwdXQgZGF0YQoKUmV0dXJuCgogICAgJUxpbmtPdXRwdXREYXRhID0gKAogICAgICAgIE5vcm1hbDo6U291cmNlID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOjU1NTU1JywKICAgICAgICAgICAgICAgICAgICBUaXRsZSAgID0+ICdDb25maWdJdGVtIyA1NTU1NTU6IFRoZSBjb25maWcgaXRlbSBuYW1lJywKICAgICAgICAgICAgICAgICAgICBDc3MgICAgID0+ICdzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBsaW5lLXRocm91Z2giJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTGluaycsCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ0k6MjIyMjInLAogICAgICAgICAgICAgICAgICAgIFRpdGxlICAgPT4gJ0NvbmZpZ0l0ZW0jIDIyMjIyOiBUaXRsZSBvZiBjb25maWcgbmFtZSAyMjIyMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUGFyZW50Q2hpbGQ6OlRhcmdldCA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdMaW5rJywKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDSTo3Nzc3NycsCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAnQ29uZmlnSXRlbSMgNzc3Nzc6IENvbmZpZ0l0ZW0gbmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICApOwoKICAgICVMaW5rT3V0cHV0RGF0YSA9ICRMaW5rT2JqZWN0LT5UYWJsZUNyZWF0ZVNpbXBsZSgKICAgICAgICBPYmplY3RMaW5rTGlzdFdpdGhEYXRhID0+ICRPYmplY3RMaW5rTGlzdFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgVGFibGVDcmVhdGVTaW1wbGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte09iamVjdExpbmtMaXN0V2l0aERhdGF9IHx8IHJlZiAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gbmUgJ0hBU0gnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBPYmplY3RMaW5rTGlzdFdpdGhEYXRhIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJUxpbmtPdXRwdXREYXRhOwogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0gfSApIHsKCiAgICAgICAgIyBleHRyYWN0IGxpbmsgdHlwZSBMaXN0CiAgICAgICAgbXkgJExpbmtUeXBlTGlzdCA9ICRQYXJhbXtPYmplY3RMaW5rTGlzdFdpdGhEYXRhfS0+eyRMaW5rVHlwZX07CgogICAgICAgIGZvciBteSAkRGlyZWN0aW9uICggc29ydCBrZXlzICV7JExpbmtUeXBlTGlzdH0gKSB7CgogICAgICAgICAgICAjIGV4dHJhY3QgZGlyZWN0aW9uIGxpc3QKICAgICAgICAgICAgbXkgJERpcmVjdGlvbkxpc3QgPSAkUGFyYW17T2JqZWN0TGlua0xpc3RXaXRoRGF0YX0tPnskTGlua1R5cGV9LT57JERpcmVjdGlvbn07CgogICAgICAgICAgICBteSBASXRlbUxpc3Q7CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXskRGlyZWN0aW9uTGlzdH0gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICRWZXJzaW9uID0gJERpcmVjdGlvbkxpc3QtPnskQ29uZmlnSXRlbUlEfTsKCiAgICAgICAgICAgICAgICAjIGRlZmluZSBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICVJdGVtID0gKAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0xpbmsnLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NJOicgLiAkVmVyc2lvbi0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICA9PiAiQ29uZmlnSXRlbSMgJFZlcnNpb24tPntOdW1iZXJ9ICgkVmVyc2lvbi0+e0NsYXNzfSk6ICRWZXJzaW9uLT57TmFtZX0iLAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgPT4gJFNlbGYtPntMYXlvdXRPYmplY3R9LT57QmFzZWxpbmt9CiAgICAgICAgICAgICAgICAgICAgICAgIC4gJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JwogICAgICAgICAgICAgICAgICAgICAgICAuICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW1MaXN0LCBcJUl0ZW07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGl0ZW0gbGlzdCB0byBsaW5rIG91dHB1dCBkYXRhCiAgICAgICAgICAgICRMaW5rT3V0cHV0RGF0YXsgJExpbmtUeXBlIC4gJzo6JyAuICREaXJlY3Rpb24gfS0+e0lUU01Db25maWdJdGVtfSA9IFxASXRlbUxpc3Q7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlTGlua091dHB1dERhdGE7Cn0KCj1oZWFkMiBDb250ZW50U3RyaW5nQ3JlYXRlKCkKCnJldHVybiBhIG91dHB1dCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+Q29udGVudFN0cmluZ0NyZWF0ZSgKICAgICAgICBDb250ZW50RGF0YSA9PiAkSGFzaFJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgQ29udGVudFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29udGVudERhdGF9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb250ZW50RGF0YSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZXh0cmFjdCBjb250ZW50CiAgICBteSAkQ29udGVudCA9ICRQYXJhbXtDb250ZW50RGF0YX07CgogICAgaWYgKCAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJJbmNpU2lnbmFsJyAmJiAkQ29udGVudC0+e1R5cGV9IG5lICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFN0cmluZzsKICAgIGlmICggJENvbnRlbnQtPntUeXBlfSBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CgogICAgICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgICAgIG15ICVJbmNpU2lnbmFscyA9ICgKICAgICAgICAgICAgaW5jaWRlbnQgICAgPT4gJ3JlZGxlZCcsCiAgICAgICAgICAgIG9wZXJhdGlvbmFsID0+ICdncmVlbmxlZCcsCiAgICAgICAgICAgIHVua25vd24gICAgID0+ICdncmF5bGVkJywKICAgICAgICAgICAgd2FybmluZyAgICAgPT4gJ3llbGxvd2xlZCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBjdXJyZW50IGluY2lkZW50IHNpZ25hbAogICAgICAgICRDb250ZW50LT57Q3VySW5jaVN0YXRlVHlwZX0gfHw9ICd1bmtub3duJzsKICAgICAgICBteSAkQ3VySW5jaVNpZ25hbCA9ICRJbmNpU2lnbmFsc3sgJENvbnRlbnQtPntDdXJJbmNpU3RhdGVUeXBlfSB9OwogICAgICAgICRDdXJJbmNpU2lnbmFsIHx8PSAkSW5jaVNpZ25hbHN7dW5rbm93bn07CgogICAgICAgICRTdHJpbmcgPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJzxkaXYgY2xhc3M9IkZsYWcgU21hbGwiIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+ICcKICAgICAgICAgICAgICAgIC4gJzxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+IDwvZGl2PicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAkQ3VySW5jaVNpZ25hbCwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgPT4gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkQ29udGVudC0+e1R5cGV9IGVxICdDdXJEZXBsU2lnbmFsJyApIHsKCiAgICAgICAgIyBjb252ZXJ0IGRlcGxveW1lbnQgc3RhdGUgdG8gYSB3ZWIgc2FmZSBDU1MgY2xhc3MKICAgICAgICBteSAkRGVwbFN0YXRlID0gJENvbnRlbnQtPntDb250ZW50fSB8fCAnJzsKICAgICAgICAkRGVwbFN0YXRlID1+IHN7IFteYS16QS1aMC05XSB9e199bXN4ZzsKCiAgICAgICAgIyBnZXQgdGhlIGNvbG9yIG9mIHRoZSBkZXBseW1lbnQgc3RhdGUgaWYgZGVmaW5lZAogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9ICRTZWxmLT57RGVwbFN0YXRlQ29sb3JzfS0+eyREZXBsU3RhdGV9IHx8ICcnOwoKICAgICAgICBteSAkVGVtcGxhdGUgPSAnPGRpdiBjbGFzcz0iRmxhZyBTbWFsbCIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdIj4gJzsKCiAgICAgICAgIyBjaGVjayBpZiBjb2xvciBpcyBkZWZpbmVkIGFuZCBzZXQgdGhlIHN0eWxlIGNsYXNzCiAgICAgICAgaWYgKCREZXBsU3RhdGVDb2xvcikgewogICAgICAgICAgICAkVGVtcGxhdGUgLj0gPDwiRU5EIjsKPHN0eWxlPgogICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkRGVwbFN0YXRlQ29sb3I7CiAgICB9Cjwvc3R5bGU+CkVORAogICAgICAgIH0KCiAgICAgICAgJFRlbXBsYXRlIC49ICI8c3BhbiBjbGFzcz1cIkRlcGxTdGF0ZSAkRGVwbFN0YXRlXCI+PC9zcGFuPiA8L2Rpdj4iOwoKICAgICAgICAkU3RyaW5nID0gJFNlbGYtPntMYXlvdXRPYmplY3R9LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlID0+ICRUZW1wbGF0ZSwKICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlID0+ICRDb250ZW50LT57Q29udGVudH0gfHwgJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIFNlbGVjdGFibGVPYmplY3RMaXN0KCkKCnJldHVybiBhbiBhcnJheSBoYXNoIHdpdGggQzxzZWxlY3RhYmxlPiBvYmplY3RzCgpSZXR1cm4KCiAgICBAU2VsZWN0YWJsZU9iamVjdExpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnLScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdDb25maWdJdGVtJywKICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjoyNScsCiAgICAgICAgICAgIFZhbHVlID0+ICdDb25maWdJdGVtOjpDb21wdXRlcicsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6MjYnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQ29uZmlnSXRlbTo6U29mdHdhcmUnLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OjI3JywKICAgICAgICAgICAgVmFsdWUgPT4gJ0NvbmZpZ0l0ZW06Ok5ldHdvcmsnLAogICAgICAgIH0sCiAgICApOwoKICAgIEBTZWxlY3RhYmxlT2JqZWN0TGlzdCA9ICRMaW5rT2JqZWN0LT5TZWxlY3RhYmxlT2JqZWN0TGlzdCgKICAgICAgICBTZWxlY3RlZCA9PiAkSWRlbnRpZmllciwgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBTZWxlY3RhYmxlT2JqZWN0TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGhlYWRsaW5lCiAgICBteSBAT2JqZWN0U2VsZWN0TGlzdDsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiBpZiAhJENsYXNzTGlzdDsKICAgIHJldHVybiBpZiByZWYgJENsYXNzTGlzdCBuZSAnSEFTSCc7CgogICAgIyBnZXQgdGhlIGNvbmZpZyB3aXRoIHRoZSBkZWZhdWx0IHN1Ym9iamVjdHMKICAgIG15ICREZWZhdWx0U3Vib2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdMaW5rT2JqZWN0OjpEZWZhdWx0U3ViT2JqZWN0JykgfHwge307CgogICAgQ0xBU1NJRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyBsYyAkQ2xhc3NMaXN0LT57JGF9IGNtcCBsYyAkQ2xhc3NMaXN0LT57JGJ9IH0ga2V5cyAleyRDbGFzc0xpc3R9ICkgewoKICAgICAgICAjIHNob3cgY2xhc3Mgb25seSBpZiB1c2VyIGhhcyBhY2Nlc3MgcmlnaHRzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5QZXJtaXNzaW9uKAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICdybycsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDTEFTU0lEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICBteSAkQ2xhc3MgICAgICA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gfHwgJyc7CiAgICAgICAgbXkgJElkZW50aWZpZXIgPSAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSAuICc6OicgLiAkQ2xhc3NJRDsKCiAgICAgICAgIyBzZXQgc2VsZWN0ZWQgZmxhZwogICAgICAgIG15ICRTZWxlY3RlZDsKICAgICAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gKSB7CgogICAgICAgICAgICBpZiAoICRQYXJhbXtTZWxlY3RlZH0gZXEgJElkZW50aWZpZXIgKSB7CiAgICAgICAgICAgICAgICAkU2VsZWN0ZWQgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICRQYXJhbXtTZWxlY3RlZH0gZXEgJFNlbGYtPntPYmplY3REYXRhfS0+e09iamVjdH0KICAgICAgICAgICAgICAgICYmICREZWZhdWx0U3Vib2JqZWN0LT57ICRTZWxmLT57T2JqZWN0RGF0YX0tPntPYmplY3R9IH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCBkZWZhdWx0IGNsYXNzIG5hbWUKICAgICAgICAgICAgICAgIG15ICREZWZhdWx0Q2xhc3MgPSAkRGVmYXVsdFN1Ym9iamVjdC0+eyAkU2VsZi0+e09iamVjdERhdGF9LT57T2JqZWN0fSB9IHx8ICcnOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgY2xhc3MKICAgICAgICAgICAgICAgIGlmICggJERlZmF1bHRDbGFzcyBlcSAkQ2xhc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgcm93CiAgICAgICAgbXkgJVJvdyA9ICgKICAgICAgICAgICAgS2V5ICAgICAgPT4gJElkZW50aWZpZXIsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICRTZWxmLT57T2JqZWN0RGF0YX0tPntSZWFsbmFtZX0gLiAnOjonIC4gJENsYXNzLAogICAgICAgICAgICBTZWxlY3RlZCA9PiAkU2VsZWN0ZWQsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAT2JqZWN0U2VsZWN0TGlzdCwgXCVSb3c7CiAgICB9CgogICAgIyBvbmx5IGFkZCBoZWFkbGluZSBpZiB0aGVyZSBhcmUgY29uZmlnaXRlbSBjbGFzc2VzCiAgICAjIHdoZXJlIHRoZSB1c2VyIGhhcyB0aGUgcGVybWlzc2lvbiB0byB1c2UgdGhlbQogICAgaWYgKEBPYmplY3RTZWxlY3RMaXN0KSB7CgogICAgICAgICMgYWRkIGhlYWRsaW5lIGFzIGZpcnN0IGFycmF5IGVsZW1lbnQKICAgICAgICB1bnNoaWZ0IEBPYmplY3RTZWxlY3RMaXN0LCB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICctJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJFNlbGYtPntPYmplY3REYXRhfS0+e1JlYWxuYW1lfSwKICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBAT2JqZWN0U2VsZWN0TGlzdDsKfQoKPWhlYWQyIFNlYXJjaE9wdGlvbkxpc3QoKQoKcmV0dXJuIGFuIGFycmF5IGhhc2ggd2l0aCBzZWFyY2ggb3B0aW9ucwoKUmV0dXJuCgogICAgQFNlYXJjaE9wdGlvbkxpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnQ29uZmlnSXRlbSMnLAogICAgICAgICAgICBJbnB1dFN0cmcgPT4gJEZvcm1TdHJpbmcsCiAgICAgICAgICAgIEZvcm1EYXRhICA9PiAnMTIzNCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIE5hbWUgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIElucHV0U3RyZyA9PiAkRm9ybVN0cmluZywKICAgICAgICAgICAgRm9ybURhdGEgID0+ICdCbGFCbGEnLAogICAgICAgIH0sCiAgICApOwoKICAgIEBTZWFyY2hPcHRpb25MaXN0ID0gJExpbmtPYmplY3QtPlNlYXJjaE9wdGlvbkxpc3QoCiAgICAgICAgU3ViT2JqZWN0ID0+ICcyNScsICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoT3B0aW9uTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2VhcmNoIG9wdGlvbiBsaXN0CiAgICBteSBAU2VhcmNoT3B0aW9uTGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ051bWJlcicsCiAgICAgICAgICAgIE5hbWUgPT4gJ0NvbmZpZ0l0ZW0jJywKICAgICAgICAgICAgVHlwZSA9PiAnVGV4dCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ05hbWUnLAogICAgICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICAgICAgVHlwZSA9PiAnVGV4dCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICBUeXBlID0+ICdMaXN0JywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgTmFtZSA9PiAnSW5jaWRlbnQgU3RhdGUnLAogICAgICAgICAgICBUeXBlID0+ICdMaXN0JywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCBvYmplY3QgZGVwZW5kZW5jZSBhdHRyaWJ1dGVzCiAgICAjaWYgKCAkUGFyYW17U3ViT2JqZWN0fSApIHsKICAgICMKICAgICMgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgIyAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgIyAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICMgICAgKTsKICAgICMKICAgICMgICAgaWYgKCAkQ2xhc3NMaXN0ICYmICRDbGFzc0xpc3QgZXEgJ0hBU0gnICkgewogICAgIwogICAgIyAgICAgICAgIyBhZGQgaGVyZSB0aGUgc2VhcmNoIGF0dHJpYnV0ZXMgb2YgdGhlIHN1Ym9iamVjdCEKICAgICMgICAgfQogICAgI30KCiAgICAjIGFkZCBmb3Jta2V5CiAgICBmb3IgbXkgJFJvdyAoQFNlYXJjaE9wdGlvbkxpc3QpIHsKICAgICAgICAkUm93LT57Rm9ybUtleX0gPSAnU0VBUkNIOjonIC4gJFJvdy0+e0tleX07CiAgICB9CgogICAgIyBhZGQgZm9ybSBkYXRhIGFuZCBpbnB1dCBzdHJpbmcKICAgIFJPVzoKICAgIGZvciBteSAkUm93IChAU2VhcmNoT3B0aW9uTGlzdCkgewoKICAgICAgICAjIHByZXBhcmUgdGV4dCBpbnB1dCBmaWVsZHMKICAgICAgICBpZiAoICRSb3ctPntUeXBlfSBlcSAnVGV4dCcgKSB7CgogICAgICAgICAgICAjIGdldCBmb3JtIGRhdGEKICAgICAgICAgICAgJFJvdy0+e0Zvcm1EYXRhfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICRSb3ctPntGb3JtS2V5fSApOwoKICAgICAgICAgICAgIyBwYXJzZSB0aGUgaW5wdXQgdGV4dCBibG9jawogICAgICAgICAgICAkU2VsZi0+e0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSW5wdXRUZXh0JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICRSb3ctPntGb3JtS2V5fSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUm93LT57Rm9ybURhdGF9IHx8ICcnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIHRoZSBpbnB1dCBzdHJpbmcKICAgICAgICAgICAgJFJvdy0+e0lucHV0U3RyZ30gPSAkU2VsZi0+e0xheW91dE9iamVjdH0tPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnTGlua09iamVjdCcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CgogICAgICAgICMgcHJlcGFyZSBsaXN0IGJveGVzCiAgICAgICAgaWYgKCAkUm93LT57VHlwZX0gZXEgJ0xpc3QnICkgewoKICAgICAgICAgICAgIyBnZXQgZm9ybSBkYXRhCiAgICAgICAgICAgIG15IEBGb3JtRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0QXJyYXkoIFBhcmFtID0+ICRSb3ctPntGb3JtS2V5fSApOwogICAgICAgICAgICAkUm93LT57Rm9ybURhdGF9ID0gXEBGb3JtRGF0YTsKCiAgICAgICAgICAgICMgcHJlcGFyZSBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgICAgICAgICAgbXkgJUxpc3REYXRhOwogICAgICAgICAgICBpZiAoICRSb3ctPntLZXl9IGVxICdEZXBsU3RhdGVJRHMnICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgICAgICAgICAgICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxpc3QKICAgICAgICAgICAgICAgIGlmICggJERlcGxTdGF0ZUxpc3QgJiYgcmVmICREZXBsU3RhdGVMaXN0IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgICAgICAlTGlzdERhdGEgPSAleyREZXBsU3RhdGVMaXN0fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcmVwYXJlIGluY2lkZW50IHN0YXRlIGxpc3QKICAgICAgICAgICAgZWxzaWYgKCAkUm93LT57S2V5fSBlcSAnSW5jaVN0YXRlSURzJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgICAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYWRkIGxpc3QKICAgICAgICAgICAgICAgIGlmICggJEluY2lTdGF0ZUxpc3QgJiYgcmVmICRJbmNpU3RhdGVMaXN0IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgICAgICAlTGlzdERhdGEgPSAleyRJbmNpU3RhdGVMaXN0fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgdGhlIGlucHV0IHN0cmluZwogICAgICAgICAgICAkUm93LT57SW5wdXRTdHJnfSA9ICRTZWxmLT57TGF5b3V0T2JqZWN0fS0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+IFwlTGlzdERhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICRSb3ctPntGb3JtS2V5fSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJFJvdy0+e0Zvcm1EYXRhfSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgPT4gMywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFJPVzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBTZWFyY2hPcHRpb25MaXN0Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AdminDynamicFieldConfigItem.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIExheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyRmlyc3QgQWN0aW9uc1NpZGVCYXIiPgoKICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4gQWN0aW9uc1NpZGVCYXJDb21wIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWN0aW9ucyIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9uTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWRtaW5EeW5hbWljRmllbGQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkdvIGJhY2sgdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CgogICAgICAgIDxoMSBjbGFzcz0iSW52aXNpYmxlVGV4dCI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMiKSB8IGh0bWwgJV0gLSBbJSBUcmFuc2xhdGUoRGF0YS5PYmplY3RUeXBlTmFtZSkgfCBodG1sICVdOgogICAgICAgICAgICBbJSBVU0UgVGl0bGUgPSBTdHJpbmcoRGF0YS5CcmVhZGNydW1iVGV4dCkgJV0KICAgICAgICAgICAgWyUgVGl0bGUgfCBodG1sICVdCiAgICAgICAgPC9oMT4KCiAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGggPSBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0R5bmFtaWMgRmllbGRzIE1hbmFnZW1lbnQnKSwKICAgICAgICAgICAgICAgICAgICBMaW5rID0+ICdBZG1pbkR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdCiAgICAgICAgJV0KCiAgICAgICAgWyUgVVNFIEJyZWFkY3J1bWJOYW1lID0gU3RyaW5nKFRyYW5zbGF0ZShEYXRhLk9iamVjdFR5cGVOYW1lKSkgJV0KCiAgICAgICAgWyUgU1dJVENIIERhdGEuTW9kZSAlXQogICAgICAgICAgICBbJSBDQVNFICdBZGQnICVdCiAgICAgICAgICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsgTmFtZSA9PiBCcmVhZGNydW1iTmFtZS5hcHBlbmQoICc6ICcsIFRpdGxlICkgfSkgJV0KICAgICAgICAgICAgWyUgQ0FTRSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7IE5hbWUgPT4gQnJlYWRjcnVtYk5hbWUuYXBwZW5kKCAnOiAnLCBUaXRsZSwgJyAtICcsIERhdGEuTmFtZSApIH0pICVdCiAgICAgICAgWyUgRU5EICVdCgogICAgICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJBZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0iPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJbJSBEYXRhLk1vZGUgfCBodG1sICVdQWN0aW9uIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iT2JqZWN0VHlwZSIgdmFsdWU9IlslIERhdGEuT2JqZWN0VHlwZSB8IGh0bWwgJV0iPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGaWVsZFR5cGUiIHZhbHVlPSJbJSBEYXRhLkZpZWxkVHlwZSB8IGh0bWwgJV0iPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJJRCIgdmFsdWU9IlslIERhdGEuSUQgfCBodG1sICVdIj4KICAgICAgICAgICAgWyUgSUYgRGF0YS5Nb2RlID09ICdDaGFuZ2UnICVdCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgIFslIEVORCAlXQoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiR2VuZXJhbCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkxheW91dEdyaWQgQ29sdW1uc1dpdGhTcGFjaW5nIG5vLXBhZGRpbmciPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTaXplMW9mMiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5hbWUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iTmFtZSIgY2xhc3M9Ilc1MHBjIFslIERhdGEuTmFtZVNlcnZlckVycm9yIHwgaHRtbCAlXSBbJSBEYXRhLlNob3dXYXJuaW5nIHwgaHRtbCAlXSAgVmFsaWRhdGVfQWxwaGFudW1lcmljIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjIwMCIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik5hbWUiIFslIERhdGEuUmVhZG9ubHlJbnRlcm5hbEZpZWxkIHwgaHRtbCAlXT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZCBhbmQgdGhlIHZhbHVlIG11c3QgYmUgYWxwaGFudW1lcmljLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLk5hbWVTZXJ2ZXJFcnJvck1lc3NhZ2UpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIk11c3QgYmUgdW5pcXVlIGFuZCBvbmx5IGFjY2VwdHMgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9Ildhcm5pbmcgSGlkZGVuIj5bJSBUcmFuc2xhdGUoIkNoYW5naW5nIHRoaXMgdmFsdWUgd2lsbCByZXF1aXJlIG1hbnVhbCBjaGFuZ2VzIGluIHRoZSBzeXN0ZW0uIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkxhYmVsIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkxhYmVsIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJMYWJlbCIgY2xhc3M9Ilc1MHBjIFslIERhdGEuTGFiZWxTZXJ2ZXJFcnJvciB8IGh0bWwgJV0gVmFsaWRhdGVfUmVxdWlyZWQiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMjAwIiB2YWx1ZT0iWyUgRGF0YS5MYWJlbCB8IGh0bWwgJV0iIG5hbWU9IkxhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkxhYmVsRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTGFiZWxTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsU2VydmVyRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJUaGlzIGlzIHRoZSBuYW1lIHRvIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIHRoZSBmaWVsZCBpcyBhY3RpdmUuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkZpZWxkT3JkZXIiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiRmllbGQgb3JkZXIiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZE9yZGVyU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRmllbGRPcmRlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkIGFuZCBtdXN0IGJlIG51bWVyaWMuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iRmllbGRPcmRlclNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKERhdGEuRmllbGRPcmRlclNlcnZlckVycm9yTWVzc2FnZSkgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiVGhpcyBpcyB0aGUgb3JkZXIgaW4gd2hpY2ggdGhpcyBmaWVsZCB3aWxsIGJlIHNob3duIG9uIHRoZSBzY3JlZW5zIHdoZXJlIGl0IGlzIGFjdGl2ZS4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNpemUxb2YyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVmFsaWRJRCI+WyUgVHJhbnNsYXRlKCJWYWxpZGl0eSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsaWRpdHlTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iRmllbGRUeXBlTmFtZSI+WyUgVHJhbnNsYXRlKCJGaWVsZCB0eXBlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJGaWVsZFR5cGVOYW1lIiByZWFkb25seSBjbGFzcz0iVzUwcGMiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMjAwIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKERhdGEuRmllbGRUeXBlTmFtZSkgfCBodG1sICVdIiBuYW1lPSJGaWVsZFR5cGVOYW1lIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJPYmplY3RUeXBlTmFtZSI+WyUgVHJhbnNsYXRlKCJPYmplY3QgdHlwZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iT2JqZWN0VHlwZU5hbWUiIHJlYWRvbmx5IGNsYXNzPSJXNTBwYyIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIyMDAiIHZhbHVlPSJbJSBUcmFuc2xhdGUoRGF0YS5PYmplY3RUeXBlTmFtZSkgfCBodG1sICVdIiBuYW1lPSJPYmplY3RUeXBlTmFtZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW50ZXJuYWxGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkludGVybmFsRmllbGQiPlslIFRyYW5zbGF0ZSgiSW50ZXJuYWwgZmllbGQiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IkludGVybmFsRmllbGQiIHJlYWRvbmx5IGNsYXNzPSJXNTBwYyIgdHlwZT0idGV4dCIgbWF4bGVuZ3RoPSIxIiB2YWx1ZT0iWyUgRGF0YS5JbnRlcm5hbEZpZWxkIHwgaHRtbCAlXSIgbmFtZT0iSW50ZXJuYWxGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHByb3RlY3RlZCBhbmQgY2FuJ3QgYmUgZGVsZXRlZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbnRlcm5hbEZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJGaWVsZCBTZXR0aW5ncyIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuRmllbGRUeXBlTmFtZSkgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgpbJSBJTkNMVURFICJBZG1pbkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0vQ29uZmlnLnR0IiAlXQogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIGNhcmQiPgogICAgICAgICAgICAgICAgPGRpdiAgY2xhc3M9ImZpZWxkLXdyYXBwZXIgZm9ybS1idXR0b24tYWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgYnV0dG9ucy1maWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJidG4tY2FuY2VsLWdob3N0IGJ0bi1tYWluIGJ0bi13aWR0aC1tZCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuTW9kZSA9PSAnQ2hhbmdlJyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IGJ0bi1wcmltYXJ5LWdob3N0IGJ0bi1tYWluIGJ0bi13aWR0aC1tZCIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUgYW5kIGZpbmlzaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSBidG4tcHJpbWFyeSBidG4tbWFpbiBidG4td2lkdGgtbWQiIGlkPSJTdWJtaXRBbmRDb250aW51ZSIgdHlwZT0iYnV0dG9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIEVMU0UgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUHJpbWFyeSBidG4tcHJpbWFyeSBidG4tbWFpbiBidG4td2lkdGgtbWQiIGlkPSJTdWJtaXQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AdminDynamicFieldConfigItem/Config.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iQ29uZmlnSXRlbUNsYXNzIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkNvbmZpZyBpdGVtIGNsYXNzIikgfCBodG1sICVdPC9sYWJlbD4KICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICBbJSBEYXRhLkNvbmZpZ0l0ZW1DbGFzc1N0cmcgJV0KICAgICAgICBbJSBJRiBEYXRhLlNlbGVjdGVkQ29uZmlnSXRlbUNsYXNzSXNJbnZhbGlkICVdCiAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIlRoZSBzZWxlY3RlZCBjb25maWcgaXRlbSBjbGFzcyBpcyBpbnZhbGlkIG9yIGRvZXMgbm90IGV4aXN0LiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICBbJSBFTkQgJV0KICAgICAgICA8ZGl2IGlkPSJDb25maWdJdGVtQ2xhc3NFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgPGRpdiBpZD0iQ29uZmlnSXRlbUNsYXNzU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIGl0ZW0gZGVwbG95bWVudCBzdGF0ZXMiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuRGVwbFN0YXRlU2VsZWN0aW9uSFRNTCAlXQogICAgPC9kaXY+CjwvZGl2PgoKPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICA8bGFiZWwgZm9yPSJDb25maWdJdGVtTGlua1R5cGUiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIGl0ZW0gbGluayB0eXBlIikgfCBodG1sICVdPC9sYWJlbD4KICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICBbJSBEYXRhLkNvbmZpZ0l0ZW1MaW5rVHlwZVNlbGVjdGlvbkhUTUwgJV0KICAgICAgICA8cCBjbGFzcz0iRmllbGRFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJTZWxlY3QgYSBsaW5rIHR5cGUgdG8gZW5hYmxlIGxpbmtpbmcgYmV0d2VlbiB0aGUgdGlja2V0IGFuZCB0aGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW1zLiBOb3RlIHRoYXQgbGlua2luZyBpcyBvbmx5IGF2YWlsYWJlIGZvciBkeW5hbWljIGZpZWxkcyBvZiB0aWNrZXRzLiIpIHwgaHRtbCAlXTwvcD4KICAgIDwvZGl2Pgo8L2Rpdj4KCjxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgPGxhYmVsIGZvcj0iQ29uZmlnSXRlbUxpbmtTb3VyY2UiPlslIFRyYW5zbGF0ZSgiQ29uZmlnIGl0ZW0gbGluayBzb3VyY2UiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuQ29uZmlnSXRlbUxpbmtTb3VyY2VTZWxlY3Rpb25IVE1MICVdCiAgICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgIDxsYWJlbCBmb3I9IkNvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCI+WyUgVHJhbnNsYXRlKCJDb25maWcgaXRlbSBsaW5rIHJlbW92YWwiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgIFslIERhdGEuQ29uZmlnSXRlbUxpbmtSZW1vdmFsU2VsZWN0aW9uSFRNTCAlXQogICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIHJlbW92ZSBsaW5rcyBiZXR3ZWVuIHRoZSB0aWNrZXQgYW5kIGNvbmZpZyBpdGVtcyB0aGF0IGFyZSByZW1vdmVkIGZyb20gdGhpcyBmaWVsZC4iKSB8IGh0bWwgJV08L3A+CiAgICA8L2Rpdj4KPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZGRpdGlvbmFsREZTdG9yYWdlIikgJV0KCjxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQWRkaXRpb25hbCBkeW5hbWljIGZpZWxkIHN0b3JhZ2UiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgPGRpdiBjbGFzcz0iRmllbGQgVmFsdWVJbnNlcnQgQWRkaXRpb25hbERGU3RvcmFnZVJvdyIgZGF0YS1mb3JtZWxlbWVudC1yZXN0b3JlLWRlc3RpbmF0aW9uPSdBZGRpdGlvbmFsREZTdG9yYWdlJyAgZGF0YS1mb3JtZWxlbWVudC1hZGQtZGVzdGluYXRpb249IkFkZGl0aW9uYWxERlN0b3JhZ2UiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyIikgJV0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyIiBkYXRhLWZvcm1lbGVtZW50LWFkZC1jb3VudGVyPSJBZGRpdGlvbmFsREZTdG9yYWdlQ291bnRlciIgdmFsdWU9IlslIERhdGEuQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlciB8IGh0bWwgJV0iIGlkPSJBZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyIiBjbGFzcz0iVmFsdWVDb3VudGVyIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkFkZGl0aW9uYWxERlN0b3JhZ2VSb3ciKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlUm93IGZpZWxkLXdyYXBwZXIgZnVsbC13aWR0aCBmaWVsZC13cmFwcGVyIiBkYXRhLWZvcm1lbGVtZW50LXJlbW92ZS1kZXN0aW5hdGlvbj0iQWRkaXRpb25hbERGU3RvcmFnZVJvd19bJSBEYXRhLkFkZGl0aW9uYWxERlN0b3JhZ2VWYWx1ZUNvdW50ZXIgfCBodG1sICVdIiA+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkR5bmFtaWNGaWVsZF9bJSBEYXRhLkFkZGl0aW9uYWxERlN0b3JhZ2VWYWx1ZUNvdW50ZXIgfCBodG1sICVdIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBmaWVsZCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZFNlbGVjdGlvbiAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iRHluYW1pY0ZpZWxkX1slIERhdGEuQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlciB8IGh0bWwgJV1FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJEeW5hbWljRmllbGRfWyUgRGF0YS5BZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyIHwgaHRtbCAlXVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKERhdGEuRHluYW1pY0ZpZWxkRXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJDb25maWdJdGVtS2V5X1slIERhdGEuQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlciB8IGh0bWwgJV0iPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+WyUgVHJhbnNsYXRlKCJDb25maWcgaXRlbSBrZXkiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGlucHV0IG5hbWU9IkNvbmZpZ0l0ZW1LZXlfWyUgRGF0YS5BZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyIHwgaHRtbCAlXSIgaWQ9IkNvbmZpZ0l0ZW1LZXlfWyUgRGF0YS5BZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyIHwgaHRtbCAlXSIgY2xhc3M9IkRlZmF1bHRWYWx1ZUl0ZW0gVmFsaWRhdGVfUmVxdWlyZWQgRGF0YVRhYmxlIFZhcmlhYmxlV2lkdGggWyUgRGF0YS5Db25maWdJdGVtS2V5RXJyb3IgfCBodG1sICVdIiB0eXBlPSJ0ZXh0IiBtYXhsZW5ndGg9IjEwMCIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUtleSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbmZpZ0l0ZW1LZXlfWyUgRGF0YS5BZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyIHwgaHRtbCAlXUVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkNvbmZpZ0l0ZW1LZXlfWyUgRGF0YS5BZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyIHwgaHRtbCAlXVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKERhdGEuQ29uZmlnSXRlbUtleUVycm9yTWVzc2FnZSkgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgWyUgRGF0YS5UeXBlT3B0aW9uICVdCgogICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0iUmVtb3ZlVmFsdWVfWyUgRGF0YS5BZGRpdGlvbmFsREZTdG9yYWdlVmFsdWVDb3VudGVyIHwgaHRtbCAlXSIgY2xhc3M9IlJlbW92ZUJ1dHRvbiBWYWx1ZVJlbW92ZSIgZGF0YS1mb3JtZWxlbWVudC1yZW1vdmU9J0FkZGl0aW9uYWxERlN0b3JhZ2UnICBkYXRhLWZvcm1lbGVtZW50LXJlbW92ZS1kZXN0aW5hdGlvbi1uYW1lPSJBZGRpdGlvbmFsREZTdG9yYWdlUm93X1slIERhdGEuQWRkaXRpb25hbERGU3RvcmFnZVZhbHVlQ291bnRlciB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlJlbW92ZSB2YWx1ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJBZGRpdGlvbmFsREZTdG9yYWdlUm93IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQWRkaXRpb25hbERGU3RvcmFnZVRlbXBsYXRlIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJWYWx1ZVRlbXBsYXRlIEhpZGRlbiBmdWxsLXdpZHRoIGZpZWxkLXdyYXBwZXIiIGRhdGEtZm9ybWVsZW1lbnQtYWRkLXNvdXJjZT0iQWRkaXRpb25hbERGU3RvcmFnZVRlbXBsYXRlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iRHluYW1pY0ZpZWxkIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBmaWVsZCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZFNlbGVjdGlvblRlbXBsYXRlICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJEeW5hbWljRmllbGRFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJEeW5hbWljRmllbGRTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJDb25maWdJdGVtS2V5Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPlslIFRyYW5zbGF0ZSgiQ29uZmlnIGl0ZW0ga2V5IikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxpbnB1dCBuYW1lPSJDb25maWdJdGVtS2V5IiBpZD0iQ29uZmlnSXRlbUtleSIgY2xhc3M9IkRlZmF1bHRWYWx1ZUl0ZW0gRGF0YVRhYmxlIFZhcmlhYmxlV2lkdGgiIHR5cGU9InRleHQiIG1heGxlbmd0aD0iMTAwIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDb25maWdJdGVtS2V5RXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29uZmlnSXRlbUtleVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIFslIERhdGEuVHlwZU9wdGlvbiAlXQoKICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlJlbW92ZVZhbHVlIiBjbGFzcz0iUmVtb3ZlQnV0dG9uIFZhbHVlUmVtb3ZlIiBkYXRhLWZvcm1lbGVtZW50LXJlbW92ZT0nQWRkaXRpb25hbERGU3RvcmFnZScgZGF0YS1mb3JtZWxlbWVudC1yZW1vdmUtZGVzdGluYXRpb24tbmFtZT0iQWRkaXRpb25hbERGU3RvcmFnZVJvdyI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIHZhbHVlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkFkZGl0aW9uYWxERlN0b3JhZ2VUZW1wbGF0ZSIpICVdCiAgICA8L2Rpdj4KPC9kaXY+Cgo8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgIDxsYWJlbCBmb3I9IkFkZFZhbHVlIj5bJSBUcmFuc2xhdGUoIkFkZCBkeW5hbWljIGZpZWxkIikgfCBodG1sICVdPC9sYWJlbD4KICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQWRkVmFsdWUgQWRkQnV0dG9uIiBpZD0iQWRkVmFsdWUiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkFkZCBWYWx1ZSIpIHwgaHRtbCAlXSIKICAgICAgICAgICAgZGF0YS1mb3JtZWxlbWVudC1hZGQ9J0FkZGl0aW9uYWxERlN0b3JhZ2UnCiAgICAgICAgICAgIGRhdGEtZm9ybWVsZW1lbnQtYWRkLWRlc3RpbmF0aW9uLW5hbWU9IkFkZGl0aW9uYWxERlN0b3JhZ2UiCiAgICAgICAgICAgIGRhdGEtZm9ybWVsZW1lbnQtYWRkLXNvdXJjZS1uYW1lPSJBZGRpdGlvbmFsREZTdG9yYWdlVGVtcGxhdGUiCiAgICAgICAgICAgIGRhdGEtZm9ybWVsZW1lbnQtYWRkLWNvdW50ZXItbmFtZT0iQWRkaXRpb25hbERGU3RvcmFnZUNvdW50ZXIiCiAgICAgICAgICAgIGRhdGEtZm9ybWVsZW1lbnQtYWRkLW1ldGhvZD0nYXBwZW5kJz4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJBZGQgVmFsdWUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgPC9hPgogICAgICAgIDxhIGhyZWY9IiMiIGlkPSJSZXN0b3JlIiBjbGFzcz0iUmVzdG9yZSBpY29uLWhvdmVyIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZXN0b3JlIHZhbHVlcyIpIHwgaHRtbCAlXSIKICAgICAgICAgICAgZGF0YS1mb3JtZWxlbWVudC1yZXN0b3JlCiAgICAgICAgICAgIGRhdGEtZm9ybWVsZW1lbnQtcmVzdG9yZS1kZXN0aW5hdGlvbi1uYW1lPSdBZGRpdGlvbmFsREZTdG9yYWdlJz4KICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXVuZG8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZXN0b3JlIHZhbHVlcyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICA8L2E+CiAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiVGhlc2UgZHluYW1pYyBmaWVsZHMgd2lsbCBiZSBmaWxsZWQgd2l0aCB2YWx1ZXMgb2YgdGhlIHNhbWUgc2VsZWN0ZWQgY29uZmlnIGl0ZW0ocykuIikgfCBodG1sICVdPC9wPgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQWRkaXRpb25hbERGU3RvcmFnZSIpICVdCg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AdminITSMConfigItem.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXciKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0IEFjdGlvbnNTaWRlQmFyIj4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIEFjdGlvbnNTaWRlQmFyQ29tcCI+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFjdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0nQ29udGVudCc+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbkxpc3QiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9ImdldCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJEZWZpbml0aW9uQ2hhbmdlIi8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNsYXNzT3B0aW9uU3RyZyAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBidG4tbWFpbiBidG4tcHJpbWFyeS1naG9zdCBidG4td2lkdGgtbWQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkNoYW5nZSBjbGFzcyBkZWZpbml0aW9uIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBY3Rpb25PdmVydmlldyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXSIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gYnRuLW1haW4gYnRuLXByaW1hcnktZ2hvc3QgYnRuLXdpZHRoLW1kIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPlslIFRyYW5zbGF0ZSgiR28gdG8gb3ZlcnZpZXciKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJBY3Rpb25PdmVydmlldyIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgIFslIEJyZWFkY3J1bWJQYXRoID0gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRlKCdDb25maWcgSXRlbSBNYW5hZ2VtZW50JyksCiAgICAgICAgICAgICAgICAgICAgTGluayA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdCiAgICAgICAgJV0KCiAgICAgICAgWyUgSUYgKERhdGEuQ2xhc3NTZWxlY3RlZCkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgICAgICBOYW1lID0+IERhdGEuQ2xhc3NTZWxlY3RlZC5OYW1lLAogICAgICAgICAgICAgICAgTGluayA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbTtTdWJhY3Rpb249RGVmaW5pdGlvbkxpc3Q7Q2xhc3NJRD0nIF8gRGF0YS5DbGFzc1NlbGVjdGVkLklECiAgICAgICAgICAgIH0pICVdCiAgICAgICAgWyUgRU5EICVdCgogICAgICAgIFslIElGIChEYXRhLlZlcnNpb25TZWxlY3RlZCkgJV0KICAgICAgICAgICAgWyUgQnJlYWRjcnVtYlBhdGgucHVzaCh7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdWZXJzaW9uICcgXyBEYXRhLlZlcnNpb25TZWxlY3RlZC5WZXJzaW9uLAogICAgICAgICAgICAgICAgTGluayA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbTtTdWJhY3Rpb249RGVmaW5pdGlvblZpZXc7RGVmaW5pdGlvbklEPScgXyBEYXRhLlZlcnNpb25TZWxlY3RlZC5JRAogICAgICAgICAgICB9KSAlXQogICAgICAgIFslIEVORCAlXQoKICAgICAgICBbJSBJRiAoRGF0YS5FZGl0KSAlXQogICAgICAgICAgICBbJSBCcmVhZGNydW1iUGF0aC5wdXNoKHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0VkaXQgZGVmaW5pdGlvbicsCiAgICAgICAgICAgIH0pICVdCiAgICAgICAgWyUgRU5EICVdCgogICAgICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0xpc3QiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiTGlzdCIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIENsYXNzIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdMaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RGVmaW5pdGlvbkxpc3Q7Q2xhc3NJRD1bJSBEYXRhLkNsYXNzSUQgfCB1cmkgJV0iPlslIERhdGEuTmFtZSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdMaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld0xpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWZpbml0aW9uTGlzdCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJMaXN0IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJXNTBwYyI+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBDbGFzcyIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIkRlZmluaXRpb25MaXN0Um93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249RGVmaW5pdGlvblZpZXc7RGVmaW5pdGlvbklEPVslIERhdGEuRGVmaW5pdGlvbklEIHwgdXJpICVdIj5bJSBEYXRhLkNsYXNzIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5WZXJzaW9uIHwgaHRtbCAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+WyUgRGF0YS5DcmVhdGVCeVVzZXIgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJEZWZpbml0aW9uTGlzdFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICAgICAgICAgIDwvdGFibGU+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRGVmaW5pdGlvbkxpc3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZWZpbml0aW9uVmlldyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJWaWV3IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSBDbGFzcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ2xhc3MgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVmVyc2lvbiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmVyc2lvbiB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DcmVhdGVCeVVzZXIgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiRGVmaW5pdGlvbiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgcm93cz0iMzAiIGNvbHM9IjgwIiB3cmFwPSJvZmYiIHJlYWRvbmx5PSJyZWFkb25seSI+WyUgRGF0YS5EZWZpbml0aW9uU3RyaW5nICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlZmluaXRpb25WaWV3IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVmaW5pdGlvbkNoYW5nZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJDaGFuZ2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkRlZmluaXRpb25TYXZlIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ2xhc3NJRCIgdmFsdWU9IlslIERhdGEuQ2xhc3NJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDb250aW51ZUFmdGVyU2F2ZSIgaWQ9IkNvbnRpbnVlQWZ0ZXJTYXZlIiB2YWx1ZT0iIi8+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIENsYXNzIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZWZpbml0aW9uIj5bJSBUcmFuc2xhdGUoIkRlZmluaXRpb24iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJEZWZpbml0aW9uIiBpZD0iRGVmaW5pdGlvbiIgcm93cz0iWyUgRGF0YS5Sb3dzIHwgaHRtbCAlXSIgY29scz0iODAiIHdyYXA9Im9mZiI+WyUgRGF0YS5EZWZpbml0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIGZvcm0tYnV0dG9uLWFjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgYnV0dG9ucy1maWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImJ0bi1tYWluIGJ0bi1jYW5jZWwtZ2hvc3QgYnRuLXdpZHRoLW1kIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXSI+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L2E+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iU3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQcmltYXJ5IGJ0bi1tYWluIGJ0bi1wcmltYXJ5LWdob3N0IGJ0bi13aWR0aC1tZCIgaWQ9IlN1Ym1pdCIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iU3VibWl0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTYXZlIGFuZCBmaW5pc2giKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbmFtZT0iU3VibWl0QW5kQ29udGludWUiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkgYnRuLW1haW4gYnRuLXByaW1hcnkgYnRuLXdpZHRoLW1kIiBpZD0iU3VibWl0QW5kQ29udGludWUiIHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlN1Ym1pdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlZmluaXRpb25DaGFuZ2UiKSAlXQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+Cgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3IikgJV0K</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentDashboardITSMConfigItemGeneric.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKPGRpdiBjbGFzcz0iRGFzaGJvYXJkQWN0aW9ucyBkcm9wZG93bi1jb250YWluZXIgZHJvcGRvd24tZmlsdGVyIj4KICAgIDxsYWJlbCBjbGFzcz0iYnRuLW1haW4gYnRuLXNlY29uZGFyeS1naG9zdCBidG4td2lkdGgteHhsIGJ0bi1kcm9wZG93biBhbGlnbi1sZWZ0IiBocmVmPSIjIiBpZD0iRGFzaGJvYXJkWyUgRGF0YS5OYW1lIHwgaHRtbCAlXUFsbCIgZGF0YS1maWx0ZXI9IkFsbCI+CiAgICAgICAgPHNwYW4gY2xhc3M9ImJ0bi13cmFwcGVyIHNwYWNlLWJldHdlZW4iPgogICAgICAgICAgICA8c3BhbiBjbGFzcz0iYnRuLXRleHQiPgogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InJlZ3VsYXIiPlslIFRyYW5zbGF0ZSgnU2hvdycpIHwgaHRtbCAlXTo8L3NwYW4+CiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iYm9sZCI+ICZuYnNwOyBbJSBUcmFuc2xhdGUoRGF0YS5GaWx0ZXIuTGFiZWwpIHwgaHRtbCAlXSAoWyUgRGF0YS5GaWx0ZXIuQ291bnQgfCBodG1sICVdKTwvc3Bhbj4KICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPgogICAgICAgIDwvc3Bhbj4KICAgIDwvbGFiZWw+CiAgICA8dWwgY2xhc3M9IklUU01Db25maWdJdGVtRmlsdGVyIFRhYiBBY3Rpb25zIGRyb3Bkb3duLW1lbnUiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgPGxpIGNsYXNzPSJBZGRpdGlvbmFsRmlsdGVyIFNlbGVjdGVkIFslIERhdGEuQ1NTIHwgaHRtbCAlXSBbJSBEYXRhLk5hbWUgfCBodG1sICVdIGRyb3Bkb3duLWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IkRhc2hib2FyZEFkZGl0aW9uYWxGaWx0ZXJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBkYXRhLWZpbHRlcj0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgZGF0YS1maWx0ZXItY291bnQ9IlslIERhdGEuQ291bnQgfCBodG1sICVdIiBjbGFzcz0iRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljRmlsdGVyIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKSA8L2E+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90IikgJV0KICAgICAgICAgICAgPGxpIGNsYXNzPSJBZGRpdGlvbmFsRmlsdGVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSBbJSBEYXRhLk5hbWUgfCBodG1sICVdIGRyb3Bkb3duLWl0ZW0iPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IkRhc2hib2FyZEFkZGl0aW9uYWxGaWx0ZXJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBkYXRhLWZpbHRlcj0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgZGF0YS1maWx0ZXItY291bnQ9IlslIERhdGEuQ291bnQgfCBodG1sICVdIiBjbGFzcz0iRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljRmlsdGVyIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0gKFslIERhdGEuQ291bnQgfCBodG1sICVdKSA8L2E+CiAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXIiKSAlXQogICAgPC91bD4KPC9kaXY+CgojPCEtLSBUaGlzIGZvcm0gd2lsbCBub3QgYmUgc3VibWl0dGVkLCB3ZSBuZWVkIGl0IGZvciB0aGUgQUpBWCBjYWxscy4gLS0+Cjxmb3JtIGNsYXNzPSJzY3JvbGwtYmFyLXN0eWxlZCIgYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ3VzdG9tZXJJRCIgdmFsdWU9IlslIERhdGEuQ3VzdG9tZXJJRCB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkN1c3RvbWVyVXNlcklEIiB2YWx1ZT0iWyUgRGF0YS5DdXN0b21lclVzZXJJRCB8IGh0bWwgJV0iLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkZpbHRlclslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGlkPSJGaWx0ZXJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5GaWx0ZXJWYWx1ZSB8IGh0bWwgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBZGRpdGlvbmFsRmlsdGVyWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgaWQ9IkFkZGl0aW9uYWxGaWx0ZXJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5BZGRpdGlvbmFsRmlsdGVyVmFsdWUgfCBodG1sICVdIiAvPgogICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICBbJSBEYXRhLlN0eWxlQ2xhc3NlcyAlXQogICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJJbmNpU2lnbmFsSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGFzaGJvYXJkSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkluY2lkZW50IFN0YXRlIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckluY2lTaWduYWxIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU2lnbmFsSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGFzaGJvYXJkSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgU3RhdGUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFNpZ25hbEhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkRhc2hib2FyZEhlYWRlciBOdW1iZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5Db2x1bW4gfCBodG1sICVdIiBuYW1lPSJPdmVydmlld0NvbnRyb2xbJSBEYXRhLkNvbHVtbiB8IGh0bWwgJV0iIGhyZWY9IiMiIGRhdGEtY29sdW1uPSJOdW1iZXIiPlslIENvbmZpZygiSVRTTUNvbmZpZ0l0ZW06Okhvb2siKSAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROYW1lSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGFzaGJvYXJkSGVhZGVyIE5hbWUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5Db2x1bW4gfCBodG1sICVdIiBuYW1lPSJPdmVydmlld0NvbnRyb2xbJSBEYXRhLkNvbHVtbiB8IGh0bWwgJV0iIGhyZWY9IiMiIGRhdGEtY29sdW1uPSJOYW1lIj5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTmFtZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENsYXNzSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGFzaGJvYXJkSGVhZGVyIENsYXNzIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Ik92ZXJ2aWV3Q29udHJvbFslIERhdGEuQ29sdW1uIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5Db2x1bW4gfCBodG1sICVdIiBocmVmPSIjIiBkYXRhLWNvbHVtbj0iQ2xhc3NJRCI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDbGFzc0hlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckRlcGxTdGF0ZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkRhc2hib2FyZEhlYWRlciBDdXJEZXBsU3RhdGUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8YSBpZD0iT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5Db2x1bW4gfCBodG1sICVdIiBuYW1lPSJPdmVydmlld0NvbnRyb2xbJSBEYXRhLkNvbHVtbiB8IGh0bWwgJV0iIGhyZWY9IiMiIGRhdGEtY29sdW1uPSJEZXBsU3RhdGVJRCI+WyUgVHJhbnNsYXRlKCJEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckRlcGxTdGF0ZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckRlcGxTdGF0ZVR5cGVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiRGVwbG95bWVudCBTdGF0ZSBUeXBlIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckRlcGxTdGF0ZVR5cGVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJJbmNpU3RhdGVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEYXNoYm9hcmRIZWFkZXIgQ3VySW5jaVN0YXRlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGEgaWQ9Ik92ZXJ2aWV3Q29udHJvbFslIERhdGEuQ29sdW1uIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sWyUgRGF0YS5Db2x1bW4gfCBodG1sICVdIiBocmVmPSIjIiBkYXRhLWNvbHVtbj0iSW5jaVN0YXRlSUQiPlslIFRyYW5zbGF0ZSgiQ3VycmVudCBJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJJbmNpU3RhdGVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJJbmNpU3RhdGVUeXBlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGFzaGJvYXJkSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJJbmNpU3RhdGVUeXBlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkWE1MQXR0cmlidXRlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGFzaGJvYXJkSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoRGF0YS5YTUxBdHRyaWJ1dGVIZWFkZXIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRYTUxBdHRyaWJ1dGVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYXN0Q2hhbmdlZEhlYWRlciIpICVdCiAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkRhc2hib2FyZEhlYWRlciBMYXN0Q2hhbmdlZCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDxhIGlkPSJPdmVydmlld0NvbnRyb2xbJSBEYXRhLkNvbHVtbiB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbFslIERhdGEuQ29sdW1uIHwgaHRtbCAlXSIgaHJlZj0iIyIgZGF0YS1jb2x1bW49Ikxhc3RDaGFuZ2VkIj5bJSBUcmFuc2xhdGUoIkxhc3QgY2hhbmdlZCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYXN0Q2hhbmdlZEhlYWRlciIpICVdCiAgICAgICAgICAgIDwvdHI+CiAgICAgICAgPC90aGVhZD4KICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIk5vRGF0YUZvdW5kTXNnIikgJV0KICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgPHRkIGNvbHNwYW49IlslIERhdGEuVG90YWxDb2x1bW5zIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vRGF0YUZvdW5kTXNnIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgPHRyIGlkPSJDb25maWdJdGVtSURfWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICA8dGQgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckluY2lTdGF0ZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGbGFnIFNtYWxsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VySW5jaVNpZ25hbCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckRlcGxTaWduYWwiKSAlXQogICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmxhZyBTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckRlcGxTaWduYWwgfCBodG1sICVdIj4iWyUgVHJhbnNsYXRlKERhdGEuQ3VyRGVwbFN0YXRlKSB8IGh0bWwgJV0iPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckRlcGxTaWduYWwiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgPHRkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXJMaW5rU3RhcnQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLk51bWJlciB8IHVyaSAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5hbWUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROYW1lTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgdXJpICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROYW1lTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSI+WyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXTwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROYW1lTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTmFtZUxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDbGFzcyIpICVdCiAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENsYXNzIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VyRGVwbFN0YXRlIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ3VyRGVwbFN0YXRlKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJEZXBsU3RhdGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU3RhdGVUeXBlIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGVUeXBlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZVR5cGUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckRlcGxTdGF0ZVR5cGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckluY2lTdGF0ZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckluY2lTdGF0ZVR5cGUiKSAlXQogICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkN1ckluY2lTdGF0ZVR5cGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlVHlwZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VySW5jaVN0YXRlVHlwZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFhNTEF0dHJpYnV0ZSIpICVdCiAgICAgICAgICAgICAgICA8dGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFhNTEF0dHJpYnV0ZUxpbmtTdGFydCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXSIgdGl0bGU9IlslIERhdGEuTnVtYmVyIHwgdXJpICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRYTUxBdHRyaWJ1dGVMaW5rU3RhcnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlhNTEF0dHJpYnV0ZURhdGEgfCBodG1sICVdIj5bJSBEYXRhLlhNTEF0dHJpYnV0ZURhdGEgfCBodG1sICVdPC9kaXY+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFhNTEF0dHJpYnV0ZUxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFhNTEF0dHJpYnV0ZUxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFhNTEF0dHJpYnV0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZExhc3RDaGFuZ2VkIikgJV0KICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXSI+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L2Rpdj4KICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRMYXN0Q2hhbmdlZCIpICVdCiAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgIDwvdGJvZHk+CiAgICA8L3RhYmxlPgo8L2Zvcm0+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZW50TGFyZ2VJVFNNQ29uZmlnSXRlbUdlbmVyaWNGaWx0ZXJOYXZCYXIiKSAlXQo8c3BhbiBjbGFzcz0iUGFnaW5hdGlvbiI+CiAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KPC9zcGFuPgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGVudExhcmdlSVRTTUNvbmZpZ0l0ZW1HZW5lcmljRmlsdGVyTmF2QmFyIikgJV0K</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemAdd.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCBBY3Rpb25zU2lkZUJhciI+CgogICAgPGRpdiBjbGFzcz0iU2lkZWJhckNvbHVtbiBBY3Rpb25zU2lkZUJhckNvbXAiPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyQ2xhc3NlcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIENsYXNzZXMiKSB8IGh0bWwgJV08L2xhYmVsPjwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iRmlsdGVyQ2xhc3NlcyIgY2xhc3M9IkZpbHRlckJveCIgbmFtZT0iRmlsdGVyQ2xhc3NlcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBDbGFzc2VzIikgfCBodG1sICVdIiBwbGFjZWhvbGRlcj0iWyUgVHJhbnNsYXRlKCJKdXN0IHN0YXJ0IHR5cGluZyB0byBmaWx0ZXIuLi4iKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJIaW50IikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU2VsZWN0IGEgQ2xhc3MgZnJvbSB0aGUgbGlzdCB0byBjcmVhdGUgYSBuZXcgQ29uZmlnIEl0ZW0uIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIikgfCBodG1sICVdPC9oMT4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxpc3QiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSIgaWQ9IkNsYXNzZXMiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJXMTAwcGMiPlslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV08L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8dHIgY2xhc3M9IkZpbHRlck1lc3NhZ2UgSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5bJSBUcmFuc2xhdGUoIk5vIG1hdGNoZXMgZm91bmQuIikgfCBodG1sICVdPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdJdGVtTGlzdCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q2xhc3NJRD1bJSBEYXRhLkNsYXNzSUQgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld0l0ZW1MaXN0IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+Cg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemBulk.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQnVsa0FjdGlvbiIpICVdCjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJjb21wb3NlIiBjbGFzcz0iVmFsaWRhdGUiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iRG8iLz4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIklUU00gQ29uZmlnSXRlbSBCdWxrIEFjdGlvbiIpIHwgaHRtbCAlXTwvaDE+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNhdmVCdXR0b25zIj4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIGJ0bi1jYW5jZWwtZ2hvc3QgYnRuLW1haW4gYnRuLXdpZHRoLW1kIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiVXNlZENvbmZpZ0l0ZW1JRCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQ29uZmlnSXRlbUlEIiB2YWx1ZT0iWyUgRGF0YS5Db25maWdJdGVtSUQgfCBodG1sICVdIiAvPgpbJSBSZW5kZXJCbG9ja0VuZCgiVXNlZENvbmZpZ0l0ZW1JRCIpICVdCgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEIj5bJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgc3RhdGUiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRGVwbFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiSW5jaVN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRCI+WyUgVHJhbnNsYXRlKCJJbmNpZGVudCBzdGF0ZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbmNpU3RhdGVTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkxpbmtUb2dldGhlciI+WyUgVHJhbnNsYXRlKCJMaW5rIHRvZ2V0aGVyIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUb2dldGhlclllc05vT3B0aW9uICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVG9nZXRoZXJMaW5rVHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTGlua1RvZ2V0aGVyQW5vdGhlciI+WyUgVHJhbnNsYXRlKCJMaW5rIHRvIGFub3RoZXIiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iWyUgRGF0YS5MaW5rVG9nZXRoZXJBbm90aGVySW52YWxpZCB8IGh0bWwgJV0gVzI1cGMiIGlkPSJMaW5rVG9nZXRoZXJBbm90aGVyIiBuYW1lPSJMaW5rVG9nZXRoZXJBbm90aGVyIiB2YWx1ZT0iWyUgRGF0YS5MaW5rVG9nZXRoZXJBbm90aGVyIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkxpbmtUb2dldGhlckFub3RoZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIlRoZSBudW1iZXIgb2YgYW5vdGhlciBDb25maWd1cmF0aW9uIEl0ZW0gdG8gbGluayB3aXRoLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZvb3RlciBmaWVsZC13cmFwcGVyIGZvcm0tYnV0dG9uLWFjdGlvbnMiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJidXR0b25zLWZpZWxkIj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiBidG4tbWFpbiBidG4tcHJpbWFyeSBidG4td2lkdGgtbWQiIGlkPSJzdWJtaXRSaWNoVGV4dCIgYWNjZXNza2V5PSJnIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV0gKGcpIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlN1Ym1pdCIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJTdWJtaXQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIkJ1bGtBY3Rpb24iKSAlXQo=</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemCustomerCIsWidget.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIldpZGdldCIpICVdCjxkaXYgaWQ9IkFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldCIgY2xhc3M9Im1vZCBtb2RTaWRlYmFyV2lkZ2V0IiBzdHlsZT0iWyUgRGF0YS5DU1NTdHlsZSB8IGh0bWwgJV0iPgogICAgPGRpdiBjbGFzcz0iaW5uZXIiPgogICAgICAgIDxkaXYgY2xhc3M9InNpZGViYXJXaWRnZXRUaXRsZSBIaWRkZW4iPgogICAgICAgICAgICA8aDM+WyUgVHJhbnNsYXRlKCJDdXN0b21lciByZWxhdGVkIGNvbmZpZyBpdGVtcyIpIHwgaHRtbCAlXTwvaDM+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0ic2lkZWJhcldpZGdldENvbnRlbnQgSGlkZGVuIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0ibW9kIG1vZEN1c3RvbWVyUmVsYXRlZENvbmZpZ0l0ZW1zIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImlubmVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSIgQ3VzdG9tZXJSZWxhdGVkQ29uZmlnSXRlbXMiIFdpZGdldFNpbXBsZT4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0SXNMb2FkaW5nIEhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc3Bpbm5lciBmYS1zcGluIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IEhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgaWQ9J0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJcycgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwgTmFycm93Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm5vbmUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiV2lkZ2V0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbmZpZ0l0ZW1zIikgJV0KICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDb25maWdJdGVtLVslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJDaGVja2VkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJDb25maWdJdGVtTGluayIgbmFtZT0iQ29uZmlnSXRlbUxpbmsiIGlkPSJDb25maWdJdGVtTGluayIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgWyUgSUYgRGF0YS5MaW5rZWQgJV1jaGVja2VkWyUgRU5EICVdIC8+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0iIHRhcmdldD0iX2JsYW5rIj5bJSBJRiBEYXRhLkljb24gJV08aSBjbGFzcz0iZmEgWyUgRGF0YS5JY29uICVdIj48L2k+Jm5ic3A7WyUgRU5EICVdWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSAoWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdKTwvYT4KICAgICAgICAgICAgICAgIDwvbGFiZWw+CiAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29uZmlnSXRlbXMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb25maWdJdGVtc05vbmUiKSAlXQpbJSBUcmFuc2xhdGUoIm5vbmUiKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbmZpZ0l0ZW1zTm9uZSIpICVd</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemDelete.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKPGRpdiBjbGFzcz0icm93LW9mLWNvbHVtbnMiPgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgVzMwMHB4IGZsZXgtcm93Ij4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIk51bWJlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OdW1iZXIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDxwIGNsYXNzPSJTcGFjaW5nVG9wIG1lc3NhZ2UtcHJpbWFyeSI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyIpIHwgaHRtbCAlXQogICAgICAgIDwvcD4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemEdit.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhcnROb3JtYWwiKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QgQWN0aW9uc1NpZGVCYXIiPgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoIkNvbmZpZyBJdGVtIikgfCBodG1sICVdIFslIFRyYW5zbGF0ZShEYXRhLk51bWJlcikgfCBodG1sICVdIC0gWyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoRGF0YS5DbGFzcykgfCBodG1sICVdPC9oMT4KClslIFJlbmRlckJsb2NrRW5kKCJTdGFydE5vcm1hbCIpICVdCiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkNsYXNzSXRlbSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMgV2lkZ2V0U2ltcGxlIiBpZD0iQ2xhc3NJdGVtIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhcnRTbWFsbCIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQiKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKCJDb25maWcgSXRlbSIpIHwgaHRtbCAlXSBbJSBUcmFuc2xhdGUoRGF0YS5OdW1iZXIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZSgiQ2xhc3MiKSB8IGh0bWwgJV0gWyUgVHJhbnNsYXRlKERhdGEuQ2xhc3MpIHwgaHRtbCAlXTwvaDE+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU2F2ZUJ1dHRvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCBidG4tY2FuY2VsLWdob3N0IGJ0bi1tYWluIGJ0bi13aWR0aC1tZCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNjcmVlblR5cGUiIHZhbHVlPSJQb3B1cCIvPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhcnRTbWFsbCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIi8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVmVyc2lvblNhdmUiLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkR1cGxpY2F0ZUlEIiB2YWx1ZT0iWyUgRGF0YS5EdXBsaWNhdGVJRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJGb3JtSUQiIHZhbHVlPSJbJSBEYXRhLkZvcm1JRCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJtaXRTYXZlIiB2YWx1ZT0iWyUgRGF0YS5TdWJtaXRTYXZlIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0icG9wdXAtY2FyZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93TmFtZSIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOYW1lIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgaWQ9Ik5hbWUiIGNsYXNzPSJWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLlJvd05hbWVJbnZhbGlkIHwgaHRtbCAlXSIgbWF4bGVuZ3RoPSIyNTAiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJUaGUgbmFtZSBvZiB0aGlzIGNvbmZpZyBpdGVtIikgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9Ik5hbWVFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiID48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3dOYW1lRXJyb3JEZWZhdWx0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd05hbWVFcnJvckRlZmF1bHQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3dOYW1lRXJyb3JEdXBsaWNhdGVzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJOYW1lIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyIsIERhdGEuRHVwbGljYXRlcykgfCBodG1sICVdPC9wPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93TmFtZUVycm9yRHVwbGljYXRlcyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJvd05hbWVFcnJvclJlZ0V4IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iTmFtZVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKERhdGEuUmVnRXhFcnJvck1lc3NhZ2UpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJvd05hbWVFcnJvclJlZ0V4IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tFbmQoIlJvd05hbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3dEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iRGVwbFN0YXRlSUQiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTogPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRGVwbFN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJEZXBsU3RhdGVJREVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSIgPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkRlcGxTdGF0ZUlEU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj48cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93RGVwbFN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUm93SW5jaVN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkluY2lTdGF0ZUlEIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkluY2lkZW50IFN0YXRlIikgfCBodG1sICVdOiA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5JbmNpU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkluY2lTdGF0ZUlERXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iSW5jaVN0YXRlSURTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrRW5kKCJSb3dJbmNpU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiWE1MUm93IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiWE1MUm93RmllbGRzZXRTdGFydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KWyUgUmVuZGVyQmxvY2tFbmQoIlhNTFJvd0ZpZWxkc2V0U3RhcnQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiWE1MUm93VmFsdWUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFslIERhdGEuTGFiZWxDbGFzcyAlXSBbJSBEYXRhLkxhYmVsRm9yICVdPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJYTUxSb3dWYWx1ZUNvbnRlbnRSZXF1aXJlZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+ClslIFJlbmRlckJsb2NrRW5kKCJYTUxSb3dWYWx1ZUNvbnRlbnRSZXF1aXJlZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlslIERhdGEuQ2xhc3MgJV0gRmllbGQgZmxleC1yb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLklucHV0U3RyaW5nICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlhNTFJvd1ZhbHVlQ29udGVudERlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkRpc2FibGVWYWxpZGF0aW9uIFJlbW92ZSBpY29uLWhvdmVyLW1kIiB0eXBlPSJzdWJtaXQiIG5hbWU9IlslIERhdGEuSW5wdXRLZXkgfCBodG1sICVdOjpEZWxldGUiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CgpbJSBSZW5kZXJCbG9ja0VuZCgiWE1MUm93VmFsdWVDb250ZW50RGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIiA+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiWE1MUm93VmFsdWVTZXJ2ZXJFcnJvciIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuSXRlbUlEIHwgaHRtbCAlXVNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+PHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlhNTFJvd1ZhbHVlU2VydmVyRXJyb3IiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJYTUxSb3dWYWx1ZVJlZ0V4RXJyb3IiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLkl0ZW1JRCB8IGh0bWwgJV1TZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPjxwPlslIFRyYW5zbGF0ZShEYXRhLlJlZ0V4RXJyb3JNZXNzYWdlKSB8IGh0bWwgJV08L3A+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJYTUxSb3dWYWx1ZVJlZ0V4RXJyb3IiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJYTUxSb3dWYWx1ZSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJYTUxSb3dBZGRDb250ZW50IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbJSBEYXRhLkNsYXNzICVdIGZvcj0iWyUgRGF0YS5JdGVtSUQgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV06IDwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJEaXNhYmxlVmFsaWRhdGlvbiBBZGQgaWNvbi1ob3Zlci1tZCIgaWQ9IlslIERhdGEuSXRlbUlEIHwgaHRtbCAlXSIgdHlwZT0ic3VibWl0IiBuYW1lPSJbJSBEYXRhLklucHV0S2V5IHwgaHRtbCAlXTo6QWRkIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvbikgfCBodG1sICVdIiA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiWE1MUm93QWRkQ29udGVudCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJYTUxSb3dGaWVsZHNldEVuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJYTUxSb3dGaWVsZHNldEVuZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJYTUxSb3ciKSAlXQoKICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBjb21wb25lbnQtYXR0YWNobWVudCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElOQ0xVREUgIkZvcm1FbGVtZW50cy9BdHRhY2htZW50TGlzdC50dCIgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIGZvcm0tYnV0dG9uLWFjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgYnV0dG9ucy1maWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IkNhbmNlbEJ1dHRvbiIgY2xhc3M9ImJ0bi1tYWluIGJ0bi1jYW5jZWwtZ2hvc3QgYnRuLXdpZHRoLW1kIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCI+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJTdWJtaXQiIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFByaW1hcnkgYnRuLW1haW4gYnRuLXByaW1hcnkgYnRuLXdpZHRoLW1kIiBpZD0iU3VibWl0QnV0dG9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTdWJtaXQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJFbmRTbWFsbCIpICVdCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRW5kU21hbGwiKSAlXQogICAgICAgIDwvZm9ybT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRW5kTm9ybWFsIikgJV0KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkVuZE5vcm1hbCIpICVdCg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemHistory.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKPCEtLSBzdGFydCBmb3JtIC0tPgo8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMiLCBEYXRhLk5hbWUpIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICAgICAgPGRpdiBjbGFzcz0iU2F2ZUJ1dHRvbnMiPgogICAgICAgICAgICA8YSBocmVmPSIjIiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCBidG4tY2FuY2VsLWdob3N0IGJ0bi1tYWluIGJ0bi13aWR0aC1tZCI+WyUgVHJhbnNsYXRlKCJDYW5jZWwiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSGlzdG9yeSBDb250ZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCBuby1wYWRkaW5nIj4KICAgICAgICAgICAgICAgIDx0YWJsZSBzdW1tYXJ5PSJDb25maWd1cmF0aW9uIEl0ZW0gSGlzdG9yeSIgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBY3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDb21tZW50IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiWm9vbSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlVzZXIiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJDcmVhdGV0aW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5IaXN0b3J5VHlwZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNvbW1lbnQgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhICBjbGFzcz0iTGlua1pvb21WaWV3IEFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgJV07VmVyc2lvbklEPVslIERhdGEuVmVyc2lvbklEICVdIj5bJSBUcmFuc2xhdGUoIlpvb20gdmlldyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5Vc2VyRnVsbG5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUm93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICA8L2Rpdj4KPC9kaXY+CjwhLS0gZW5kIGZvcm0gLS0+Cg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewNavBar.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXIiKSAlXQo8ZGl2IGNsYXNzPSJPdmVydmlld0JveCBBUklBUm9sZU1haW4gWyUgRGF0YS5WaWV3IHwgaHRtbCAlXSI+CiAgICA8aDE+WyUgVHJhbnNsYXRlKERhdGEuVGl0bGVOYW1lKSB8IGh0bWwgJV06CiAgICAgICAgPGRpdiBjbGFzcz0ib3ZlcnZpZXctYnJlYWRjcnVtYiI+CiAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5UaXRsZVZhbHVlKSB8IGh0bWwgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2gxPgogICAgWyUgRGF0YS5EYXRhSW5UaGVNaWRkbGUgJV0KCiAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgUXVldWVPdmVydmlldyBsZXZlbC1maWx0ZXItdmlldyI+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDx1bCBjbGFzcz0iUXVldWVPdmVydmlld0xpc3QgTGV2ZWxfMCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IlslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBY3RpdmUiIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5GaWx0ZXJMaW5rICVdRmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08c3Bhbj4gKFslIERhdGEuQ291bnQgfCBodG1sICVdKTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkZpbHRlckxpbmsgJV1GaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTxzcGFuPiAoWyUgRGF0YS5Db3VudCB8IGh0bWwgJV0pPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQogICAgICAgICAgICA8L3VsPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdDb250cm9sIiBpZD0iT3ZlcnZpZXdDb250cm9sIj4KICAgICAgICA8ZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250cm9sUm93Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXIiKSAlXQogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuRmlsdGVyTGluayAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90IikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IlslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1slIERhdGEuRmlsdGVyTGluayAlXUZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPHNwYW4+WyUgRGF0YS5Db3VudCB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KICAgICAgICAgICAgICAgICAgICAtClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQogICAgICAgICAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlQmFjayIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9IklUU01Db25maWdJdGVtU2VhcmNoIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtCYWNrICVdIj5bJSBUcmFuc2xhdGUoIkNoYW5nZSBzZWFyY2ggb3B0aW9ucyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZUJhY2siKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGV4dFNldHRpbmdzIikgJV0KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ29udGV4dEZ1bmN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJDb250ZXh0U2V0dGluZ3MiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iaWNvbi1ob3ZlciIgaHJlZj0iIyIgaWQ9IlNob3dDb250ZXh0U2V0dGluZ3NEaWFsb2ciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbnRleHQgU2V0dGluZ3MiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNvZyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJDb250ZXh0IFNldHRpbmdzIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyIiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50UHJlZmVyZW5jZXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVXBkYXRlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikdyb3VwIiB2YWx1ZT0iWyUgRGF0YS5Hcm91cCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmVkaXJlY3RVUkwiIHZhbHVlPSJbJSBEYXRhLlJlcXVlc3RlZFVSTCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5QcmVmZXJlbmNlc0tleSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiQ29uZmlnIEl0ZW1zIHBlciBwYWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5QYWdlU2hvd25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGV4dFNldHRpbmdzIikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdBY3Rpb25zIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkJ1bGtBY3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQWN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBpZD0iQ29uZmlnSXRlbUJ1bGtBY3Rpb24iIGNsYXNzPSJCdWxrIEluYWN0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQnVsayIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiQnVsa0FjdGlvbiIpICVdCgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQWN0aW9uUm93ICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlBhZ2luYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgRGF0YS5SZXN1bHRMb25nICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJwYWdlLWxpbmtzIj5bJSBEYXRhLlNpdGVOYXZCYXJMb25nICVdPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCgogICAgICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Ik92ZXJ2aWV3Wm9vbSI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgfCB1cmkgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgfCB1cmkgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiMgc29ydCBvcmRlciBiYXIgaWYgbmVlZGVkCiAgICAgICAgICAgICAgICBbJSBEYXRhLlNvcnRPcmRlckJhciAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyIikgJV0K</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemOverviewSmall.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKPGRpdiBpZD0iT3ZlcnZpZXdCb2R5IiBjbGFzcz0iT3ZlcnZpZXcgVGlja2V0TGlzdCI+CiAgICA8Zm9ybT4KICAgICAgICA8dGFibGUgY2xhc3M9IlRhYmxlU21hbGwiIHN1bW1hcnk9IlslIFRyYW5zbGF0ZSgiQSBnZW5lcmljIElUU00gQ29uZmlndXJhdGlvbiBJdGVtIHRhYmxlIikgfCBodG1sICVdIj4KICAgICAgICAgICAgWyUgRGF0YS5TdHlsZUNsYXNzZXMgJV0KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRCdWxrQWN0aW9uSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNoZWNrYm94IEZpeGVkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iQ2hlY2tib3giIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlbGVjdCBhbGwiKSB8IGh0bWwgJV0iIGlkPSJTZWxlY3RBbGxDb25maWdJdGVtcyIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEJ1bGtBY3Rpb25IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJJbmNpU2lnbmFsSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgU3RhdGUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckluY2lTaWduYWxIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU2lnbmFsSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFNpZ25hbEhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlckhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJOdW1iZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBDb25maWcoIklUU01Db25maWdJdGVtOjpIb29rIikgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5hbWVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iTmFtZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1OYW1lO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5hbWVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDbGFzc0hlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDbGFzcyBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1DbGFzc0lEO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDbGFzc0hlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckRlcGxTdGF0ZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDdXJEZXBsU3RhdGUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9RGVwbFN0YXRlSUQ7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFN0YXRlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VyRGVwbFN0YXRlVHlwZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgU3RhdGUgVHlwZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFN0YXRlVHlwZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckluY2lTdGF0ZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDdXJJbmNpU3RhdGUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9SW5jaVN0YXRlSUQ7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ3VycmVudCBJbmNpZGVudCBTdGF0ZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VySW5jaVN0YXRlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVN0YXRlVHlwZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VySW5jaVN0YXRlVHlwZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFhNTEF0dHJpYnV0ZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoRGF0YS5YTUxBdHRyaWJ1dGVIZWFkZXIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkWE1MQXR0cmlidXRlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTGFzdENoYW5nZWRIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iTGFzdENoYW5nZWQgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5MaW5rU29ydCAlXTtTb3J0Qnk9Q2hhbmdlVGltZTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJMYXN0IGNoYW5nZWQiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZExhc3RDaGFuZ2VkSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3JlYXRlVGltZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkxpbmtTb3J0ICVdO1NvcnRCeT1DcmVhdGVUaW1lO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkNyZWF0ZSBUaW1lIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDcmVhdGVUaW1lSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgIDx0ZCBjb2xzcGFuPSJbJSBEYXRhLlRvdGFsQ29sdW1ucyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIGRhdGEgZm91bmQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZCIpICVdCiAgICAgICAgICAgICAgICA8dHIgaWQ9IkNvbmZpZ0l0ZW1JRF9bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IGh0bWwgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRCdWxrQWN0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNoZWNrYm94IEZpeGVkIE5vblRleHRDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJDaGVja2JveCIgdHlwZT0iY2hlY2tib3giIG5hbWU9IkNvbmZpZ0l0ZW1JRCIgdmFsdWU9IlslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXSIgIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRCdWxrQWN0aW9uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VySW5jaVNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJJbmNpU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VyRGVwbFNpZ25hbCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlslIERhdGEuQ3VyRGVwbFNpZ25hbCB8IGh0bWwgJV0iPiJbJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGUpIHwgaHRtbCAlXSI8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJEZXBsU2lnbmFsIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdIiBjbGFzcz0iTWFzdGVyQWN0aW9uTGluayI+WyUgRGF0YS5OdW1iZXIgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTmFtZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj5bJSBEYXRhLk5hbWUgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTmFtZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENsYXNzIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDdXJEZXBsU3RhdGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VyRGVwbFN0YXRlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZEN1ckRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckRlcGxTdGF0ZVR5cGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VyRGVwbFN0YXRlVHlwZSkgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5DdXJEZXBsU3RhdGVUeXBlKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VyRGVwbFN0YXRlVHlwZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEN1ckluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3VySW5jaVN0YXRlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3VySW5jaVN0YXRlVHlwZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGVUeXBlKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLkN1ckluY2lTdGF0ZVR5cGUpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDdXJJbmNpU3RhdGVUeXBlIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkWE1MQXR0cmlidXRlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuWE1MQXR0cmlidXRlRGF0YSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPlslIERhdGEuWE1MQXR0cmlidXRlRGF0YSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRYTUxBdHRyaWJ1dGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRMYXN0Q2hhbmdlZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXSI+WyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTGFzdENoYW5nZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDcmVhdGVUaW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDcmVhdGVUaW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZCIpICVdCiAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgPC90YWJsZT4KICAgIDwvZm9ybT4KPC9kaXY+Cg==</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemSearch.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VhcmNoQUpBWCIpICVdCgo8ZGl2IGNsYXNzPSJtYWluLXNlYXJjaC1jb21wb25lbnQiPgogICAgPGRpdiBjbGFzcz0ic2VhcmNoLXRpY2tldCI+CiAgICAgICAgPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50IHRvcC1zZWN0aW9uIFNwYWNpbmdCb3R0b20iPgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDbGFzcyI+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiIGlkPSdEaXZDbGFzc0lEJz4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc09wdGlvblN0cmcgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSW5uZXJDb250ZW50IG1haW4tc2VhcmNoLWNvbXBvbmVudCIgaWQ9IkFKQVhVcGRhdGUiPgoKICAgICAgICA8Zm9ybSBjbGFzcz0ic2VhcmNoLXRpY2tldCIgYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGlkPSJTZWFyY2hGb3JtIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaENsYXNzSUQiLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBib3R0b20tc2VjdGlvbiBIaWRkZW4iIGlkPSdJVFNNU2VhcmNoUHJvZmlsZScgc3R5bGU9ImRpc3BsYXk6bm9uZTsiID4KICAgICAgICAgICAgICAgIDxsZWdlbmQ+PHNwYW4+WyUgVHJhbnNsYXRlKCJUZW1wbGF0ZXMiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZWFyY2hQcm9maWxlIj5bJSBUcmFuc2xhdGUoIlNlYXJjaCB0ZW1wbGF0ZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iU2VhcmNoUHJvZmlsZSIgbmFtZT0iU2VhcmNoUHJvZmlsZSIgdmFsdWU9IlslIERhdGEuUHJvZmlsZSB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmV3LXRwbC1pbnB1dCIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRCbG9jayI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iUHJvZmlsZU5hbWUiIGlkPSJTZWFyY2hQcm9maWxlQWRkTmFtZSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY3JlYXRlLXRwbS1idG4iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gYnRuLWdob3N0LXNtIiB0eXBlPSJidXR0b24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBUZW1wbGF0ZSIpIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlNhdmVQcm9maWxlIiB2YWx1ZT0iMSIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iU2VhcmNoUHJvZmlsZU5ldyIgY2xhc3M9IkNhbGxGb3JBY3Rpb24gYnRuLWdob3N0LXNtIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hQcm9maWxlRGVsZXRlIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBidG4tZ2hvc3Qtc20gSGlkZGVuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hQcm9maWxlQXNMaW5rIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBidG4tZ2hvc3Qtc20gSGlkZGVuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJQcm9maWxlIGxpbmsiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudEZvb3RlciBtYWluLXNlYXJjaC1jb21wb25lbnQtYnRucyI+CiAgICAgICAgPGJ1dHRvbiBpZD0iQ2FuY2VsIiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBidG4tbWFpbiBidG4td2lkdGgtbWQgYnRuLWNhbmNlbC1naG9zdCBEb250UHJpbnQiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IiBDYW5jZWwiPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ2FuY2VsIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgoKICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hGb3JtU3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBidG4tcHJpbWFyeSBidG4tbWFpbiBidG4td2lkdGgtbWQgSGlkZGVuIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iPjxzcGFuPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU2VhcmNoQUpBWCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBSkFYQ29udGVudCIpICVdCjxmb3JtIGNsYXNzPSJzZWFyY2gtdGlja2V0IiBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgaWQ9IlNlYXJjaEFjdGlvbiIvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2VhcmNoIi8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDbGFzc0lEIiB2YWx1ZT0iWyUgRGF0YS5DbGFzc0lEIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaENsYXNzSUQiPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU2VhcmNoRGlhbG9nIiB2YWx1ZT0nMSc+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KCiAgICA8ZGl2IGNsYXNzPSJ0b3Atc2VjdGlvbiI+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgSGlkZGVuIiBpZD0nSVRTTVNlYXJjaFByb2ZpbGUnPgogICAgICAgICAgICA8bGVnZW5kPjxzcGFuPlslIFRyYW5zbGF0ZSgiVGVtcGxhdGVzIikgfCBodG1sICVdPC9zcGFuPjwvbGVnZW5kPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlNlYXJjaFByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2VhcmNoIHRlbXBsYXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlByb2ZpbGVzU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5ldy10cGwtaW5wdXQiIGlkPSJTZWFyY2hQcm9maWxlQWRkQmxvY2siPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iUHJvZmlsZU5hbWUiIGlkPSJTZWFyY2hQcm9maWxlQWRkTmFtZSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjcmVhdGUtdHBtLWJ0biI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJidG4tbWFpbiAgYnRuLWdob3N0LXNtIiB0eXBlPSJidXR0b24iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBUZW1wbGF0ZSIpIHwgaHRtbCAlXSIgaWQ9IlNlYXJjaFByb2ZpbGVBZGRBY3Rpb24iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgY3JlYXRlLXRwbS1idG4iPgogICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaFByb2ZpbGVOZXciIGNsYXNzPSJidG4tbWFpbiBidG4tZ2hvc3Qtc20iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSBOZXciKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hQcm9maWxlRGVsZXRlIiBjbGFzcz0iYnRuLW1haW4gYnRuLWdob3N0LXNtIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJTZWFyY2hQcm9maWxlQXNMaW5rIiBjbGFzcz0iYnRuLW1haW4gYnRuLWdob3N0LXNtIEhpZGRlbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiUHJvZmlsZSBsaW5rIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlByb2ZpbGUgbGluayIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2F2ZVByb2ZpbGUiPlslIFRyYW5zbGF0ZSgiU2F2ZSBjaGFuZ2VzIGluIHRlbXBsYXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIGFsaWduLWl0ZW0tbGVmdCI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBuYW1lPSJTYXZlUHJvZmlsZSIgaWQ9IlNhdmVQcm9maWxlIiB2YWx1ZT0iMSIvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZmllbGRzZXQ+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJUYWJsZUxpa2UgYm90dG9tLXNlY3Rpb24gSGlkZGVuIiBpZD0nSVRTTVNlYXJjaEZpZWxkcyc+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiIGlkPSJTZWFyY2hJbnNlcnQiPgogICAgICAgICAgICA8bGVnZW5kPjxzcGFuPlslIFRyYW5zbGF0ZSgiRmlsdGVycyBpbiB1c2UiKSB8IGh0bWwgJV08L3NwYW4+PC9sZWdlbmQ+CiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgPGxlZ2VuZD48c3Bhbj5bJSBUcmFuc2xhdGUoIkFkZGl0aW9uYWwgZmlsdGVycyIpIHwgaHRtbCAlXTwvc3Bhbj48L2xlZ2VuZD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJBZGQgYW5vdGhlciBhdHRyaWJ1dGUiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQXR0cmlidXRlc1N0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUHJldmlvdXNWZXJzaW9uU2VhcmNoIj5bJSBUcmFuc2xhdGUoIkFsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5QcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIk91dHB1dCIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRGb3JtU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZmllbGRzZXQ+CiAgICA8L2Rpdj4KPC9mb3JtPgo8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBIaWRkZW4iIGlkPSJTZWFyY2hBdHRyaWJ1dGVzSGlkZGVuIj4KCiAgICA8ZGl2IGNsYXNzPSJmaWVsZC13cmFwcGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJsYWJlbC13cmFwcGVyIj4KICAgICAgICAgICAgPGxhYmVsIGZvcj0iTnVtYmVyIiBpZD0iTGFiZWxOdW1iZXIiPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdIFslIFRyYW5zbGF0ZSgiKGUuIGcuIDEwKjUxNTUgb3IgMTA1NjU4KikiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik51bWJlciIgdmFsdWU9IlslIERhdGEuTnVtYmVyIHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLXdyYXBwZXIiPgogICAgICAgICAgICA8bGFiZWwgZm9yPSJOYW1lIiBpZD0iTGFiZWxOYW1lIj5bJSBUcmFuc2xhdGUoIk5hbWUiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Ik5hbWUiIHZhbHVlPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtd3JhcHBlciI+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRlcGxTdGF0ZUlEcyIgaWQ9IkxhYmVsRGVwbFN0YXRlSURzIj5bJSBUcmFuc2xhdGUoIkRlcGxveW1lbnQgU3RhdGUiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgIDxhIGNsYXNzPSJSZW1vdmVCdXR0b24iIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlJlbW92ZSB0aGlzIGVudHJ5IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJSZW1vdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9hPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iZmllbGQtd3JhcHBlciI+CiAgICAgICAgPGRpdiBjbGFzcz0ibGFiZWwtd3JhcHBlciI+CiAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2lTdGF0ZUlEcyIgaWQ9IkxhYmVsSW5jaVN0YXRlSURzIj5bJSBUcmFuc2xhdGUoIkluY2lkZW50IFN0YXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQXR0cmlidXRlUm93IikgJV0KICAgIDxkaXYgY2xhc3M9ImZpZWxkLXdyYXBwZXIiPgogICAgICAgIDxkaXYgY2xhc3M9ImxhYmVsLXdyYXBwZXIiPgogICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBUcmFuc2xhdGUoRGF0YS5LZXkpIHwgaHRtbCAlXSIgaWQ9IkxhYmVsWyUgRGF0YS5LZXkgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5EZXNjcmlwdGlvbikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgWyUgRGF0YS5JbnB1dFN0cmluZyAlXQogICAgICAgICAgICA8YSBjbGFzcz0iUmVtb3ZlQnV0dG9uIiBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJSZW1vdmUgdGhpcyBlbnRyeSIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiUmVtb3ZlIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0cmlidXRlUm93IikgJV0KICAgIHRoaXNbJSBEYXRhLkF0dHJpYnV0ZXNPcmlnU3RyZyAlXXRoYXQKPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tFbmQoIkFKQVhDb250ZW50IikgJV0K</File>
        <File Permission="660" Location="Kernel/Output/HTML/Templates/Standard/AgentITSMConfigItemZoom.tt" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxkaXYgY2xhc3M9IkZsYWciIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5DdXJJbmNpU3RhdGUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJbJSBEYXRhLkN1ckluY2lTaWduYWwgfCBodG1sICVdIj48L3NwYW4+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGgxIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkNvbmZpZ3VyYXRpb24gSXRlbSIpIHwgaHRtbCAlXTogWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdICZuZGFzaDsgWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIikgfCBodG1sICVdOiBbJSBEYXRhLk51bWJlciB8IGh0bWwgJV0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5OYW1lIHwgdHJ1bmNhdGUoNjApIHwgaHRtbCAlXQogICAgICAgIDwvaDE+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkxheW91dEZpeGVkU2lkZWJhciBTaWRlYmFyTGFzdCI+CgogICAgICAgIFslIERhdGEuU3R5bGVDbGFzc2VzICVdCgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZXRhIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIFRpZ2h0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDbGFzcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIFRyYW5zbGF0ZShEYXRhLkNsYXNzKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTmFtZSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuTmFtZSB8IHRydW5jYXRlKDI1KSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VyRGVwbFN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DdXJEZXBsU2lnbmFsIHwgaHRtbCAlXSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkN1ckRlcGxTdGF0ZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDdXJyZW50IEluY2lkZW50IFN0YXRlIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlZhbHVlIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuQ3VySW5jaVN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5DdXJJbmNpU2lnbmFsIHwgaHRtbCAlXSI+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkN1ckluY2lTdGF0ZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgoKICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3JlYXRlQnlVc2VyRnVsbE5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTGFzdCBjaGFuZ2VkIGJ5IikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DaGFuZ2VCeVVzZXJGdWxsTmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJNZXRhIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTGlua1RhYmxlU2ltcGxlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIERvbnRQcmludCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkxpbmtlZCBPYmplY3RzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MaW5rVGFibGVTdHJnICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMaW5rVGFibGVTaW1wbGUiKSAlXQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4gV2lkZ2V0U2ltcGxlIj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbnMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZW51IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWVudUl0ZW0iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iIGlkPSJNZW51WyUgRGF0YS5NZW51SUQgfCBodG1sICVdIiBjbGFzcz0iWyUgRGF0YS5NZW51Q2xhc3MgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJNZW51SXRlbSIpICVdClslIFJlbmRlckJsb2NrRW5kKCJNZW51IikgJV0KICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJJVFNNVHJlZSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRyZWUiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iSVRTTVRhYmxlIiAgY2xhc3M9IlRpY2tldExpc3QgV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250cm9sUm93IEhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IklUU01JdGVtVmlldyBJY29ucyBmbGV4LXJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkV4cGFuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iT25lSVRTTUl0ZW0gQWN0aXZlIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1Nob3dWZXJzaW9ucz0wIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9uZSB2ZXJzaW9uIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtbWludXMiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNob3cgb25lIHZlcnNpb24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQWxsSVRTTUl0ZW1zIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1Nob3dWZXJzaW9ucz0xIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IGFsbCB2ZXJzaW9ucyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXJlb3JkZXIiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNob3cgYWxsIHZlcnNpb25zIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiRXhwYW5kIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29sbGFwc2UiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9Ik9uZUlUU01JdGVtIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgdXJpICVdO1Nob3dWZXJzaW9ucz0wIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9uZSB2ZXJzaW9uIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtbWludXMiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNob3cgb25lIHZlcnNpb24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQWxsSVRTTUl0ZW1zIEFjdGl2ZSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXTtTaG93VmVyc2lvbnM9MSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBhbGwgdmVyc2lvbnMiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1yZW9yZGVyIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTaG93IGFsbCB2ZXJzaW9ucyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIkNvbGxhcHNlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iSVRTTVRhYmxlQm9keSIgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNjcm9sbGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PHNwYW4+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIEluY2lkZW50IFN0YXRlIikgfCBodG1sICVdPC9zcGFuPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PHNwYW4+WyUgVHJhbnNsYXRlKCJWZXJzaW9uIERlcGxveW1lbnQgU3RhdGUiKSB8IGh0bWwgJV08L3NwYW4+PC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD48c3Bhbj5bJSBUcmFuc2xhdGUoIlZlcnNpb24gTnVtYmVyIikgfCBodG1sICVdPC9zcGFuPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PHNwYW4+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdPC9zcGFuPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PHNwYW4+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdPC9zcGFuPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+PHNwYW4+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdPC9zcGFuPjwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlRyZWVJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJbJSBEYXRhLkFjdGl2ZSB8IGh0bWwgJV0gTWFzdGVyQWN0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuSW5jaVN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5JbmNpU2lnbmFsIHwgaHRtbCAlXSI+WyUgRGF0YS5JbmNpU3RhdGUgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuRGVwbFN0YXRlKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZsYWcgU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iWyUgRGF0YS5EZXBsU2lnbmFsIHwgaHRtbCAlXSI+WyUgRGF0YS5EZXBsU3RhdGUgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNvdW50IHwgaHRtbCAlXS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgTWFzdGVyQWN0aW9uTGluayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCB1cmkgJV07U2hvd1ZlcnNpb25zPVslIERhdGEuU2hvd1ZlcnNpb25zIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKERhdGEuRGVwbFN0YXRlKSB8IGh0bWwgJV0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZUJ5VXNlckZ1bGxOYW1lIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRyZWVJdGVtIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhhbmRsZSB1aS1yZXNpemFibGUtaGFuZGxlIHVpLXJlc2l6YWJsZS1zIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiUmVzaXplIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVHJlZSIpICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGlkPSJJVFNNSXRlbXMiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFdpZGdldEJveCBFeHBhbmRlZCI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTGlnaHRSb3cgSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+PGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50LiIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkNvbmZpZ3VyYXRpb24gSXRlbSBWZXJzaW9uIERldGFpbHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+WyUgVHJhbnNsYXRlKCJQcm9wZXJ0eSIpIHwgaHRtbCAlXTwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5bJSBUcmFuc2xhdGUoIlZhbHVlIikgfCBodG1sICVdPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGF0YSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlcyNXBjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVmFsdWUgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiRGF0YSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iVzI1cGMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkF0dGFjaG1lbnRzIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQXR0YWNobWVudHMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtGaWxlbmFtZT1bJSBEYXRhLkZpbGVuYW1lIHwgdXJpICVdO0NvbmZpZ0l0ZW1JRD1bJSBEYXRhLkNvbmZpZ0l0ZW1JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5GaWxlbmFtZSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChbJSBEYXRhLkZpbGVzaXplIHwgTG9jYWxpemUoJ0ZpbGVzaXplJykgfCBodG1sICVdKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJBdHRhY2htZW50cyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkF0dGFjaG1lbnRSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJXMjVwYyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1Eb3dubG9hZEF0dGFjaG1lbnQ7RmlsZW5hbWU9WyUgRGF0YS5GaWxlbmFtZSB8IHVyaSAlXTtDb25maWdJdGVtSUQ9WyUgRGF0YS5Db25maWdJdGVtSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmlsZW5hbWUgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWyUgRGF0YS5GaWxlc2l6ZSB8IExvY2FsaXplKCdGaWxlc2l6ZScpIHwgaHRtbCAlXSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiQXR0YWNobWVudFJvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJMaW5rVGFibGVDb21wbGV4IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkxpbmtUYWJsZVN0cmcgJV0KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJMaW5rVGFibGVDb21wbGV4IikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K</File>
        <File Permission="660" Location="Kernel/System/Console/Command/Admin/ITSM/Configitem/Delete.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ2l0ZW06OkRlbGV0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignRGVsZXRlIGNvbmZpZyBpdGVtcyAoYWxsLCBieSBjbGFzcyAoYW5kIGRlcGxveW1lbnQgc3RhdGUpIG9yIGJ5IG51bWJlcikuJyk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMCwKICAgICk7CiAgICAkU2VsZi0+QWRkQXJndW1lbnQoCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2FjY2VwdCcsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkFjY2VwdCBkZWxldGUgYWxsIG9yIGNhbmNlbC4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvXEEoeXxuKVx6L2ksCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnY2xhc3MnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWxldGUgYWxsIGNvbmZpZyBpdGVtcyBvZiB0aGlzIGNsYXNzLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4rLywKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdkZXBsb3ltZW50LXN0YXRlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiRGVsZXRlIGFsbCBjb25maWcgaXRlbXMgd2l0aCB0aGlzIGRlcGxveW1lbnQgc3RhdGUgKE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIpLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyLy4rLywKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdjb25maWdpdGVtLW51bWJlcicsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBsaXN0ZWQgY29uZmlnIGl0ZW1zLiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL1xBXGQrXHovLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnYWxsLW9sZC12ZXJzaW9ucycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgZXhjZXB0IHRoZSBuZXdlc3QgdmVyc2lvbi4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMCwKICAgICk7CiAgICAkU2VsZi0+QWRkT3B0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGdpdmVuIG51bWJlciBvZiBuZXdlc3QgdmVyc2lvbnMuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDEsCiAgICAgICAgVmFsdWVSZWdleCAgPT4gcXIvXEFcZCtcei8sCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgb2xkZXIgdGhhbiBnaXZlbiBudW1iZXIgb2YgZGF5cy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci9cQVxkK1x6LywKICAgICk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEFsbCAgICAgICAgICAgICAgID0gJFNlbGYtPkdldE9wdGlvbignYWxsJyk7CiAgICBteSAkQ2xhc3MgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdjbGFzcycpIC8vICcnOwogICAgbXkgQENvbmZpZ0l0ZW1OdW1iZXJzID0gQHsgJFNlbGYtPkdldE9wdGlvbignY29uZmlnaXRlbS1udW1iZXInKSAvLyBbXSB9OwogICAgbXkgJERlcGxveW1lbnRTdGF0ZSAgID0gJFNlbGYtPkdldE9wdGlvbignZGVwbG95bWVudC1zdGF0ZScpICAgICAgICAgICAgIC8vICcnOwogICAgbXkgJEFsbE9sZFZlcnNpb25zICAgID0gJFNlbGYtPkdldE9wdGlvbignYWxsLW9sZC12ZXJzaW9ucycpICAgICAgICAgICAgIC8vICcnOwogICAgbXkgJEFsbEJ1dEtlZXBMYXN0ICAgID0gJFNlbGYtPkdldE9wdGlvbignYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMnKSAgIC8vICcnOwogICAgbXkgJEFsbE9sZGVyVGhhbkRheXMgID0gJFNlbGYtPkdldE9wdGlvbignYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucycpIC8vICcnOwoKICAgIGlmICgKICAgICAgICAhJEFsbAogICAgICAgICYmICEkQ2xhc3MKICAgICAgICAmJiAhQENvbmZpZ0l0ZW1OdW1iZXJzCiAgICAgICAgJiYgISREZXBsb3ltZW50U3RhdGUKICAgICAgICAmJiAhJEFsbE9sZFZlcnNpb25zCiAgICAgICAgJiYgISRBbGxCdXRLZWVwTGFzdAogICAgICAgICYmICEkQWxsT2xkZXJUaGFuRGF5cwogICAgICAgICkKICAgIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlBsZWFzZSBwcm92aWRlIG9wdGlvbiAtLWFsbCwgLS1jbGFzcywgLS1jb25maWdpdGVtLW51bWJlciwgLS1hbGwtb2xkLXZlcnNpb25zLCAtLWFsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zIG9yIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucy4iCiAgICAgICAgICAgIC4gIiBGb3IgbW9yZSBkZXRhaWxzIHVzZSAtLWhlbHBcbiI7CiAgICB9CgogICAgbXkgJEFsbE9wdGlvblR5cGVDb3VudDsKICAgIGZvciBteSAkVmFsdWUgKCAkQWxsLCAkQWxsT2xkVmVyc2lvbnMsICRBbGxCdXRLZWVwTGFzdCwgJEFsbE9sZGVyVGhhbkRheXMgKSB7CiAgICAgICAgaWYgKCRWYWx1ZSkgewogICAgICAgICAgICAkQWxsT3B0aW9uVHlwZUNvdW50Kys7CiAgICAgICAgfQogICAgfQogICAgaWYgKCAkQWxsT3B0aW9uVHlwZUNvdW50ID4gMSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb25zIC0tYWxsLCAtLWFsbC1vbGQtdmVyc2lvbnMsIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgYW5kIC0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucyBjYW4gbm90IGJlIG1peGVkLiBcbkZvciBtb3JlIGRldGFpbHMgdXNlIC0taGVscFxuIjsKICAgIH0KICAgIGlmICggJEFsbE9wdGlvblR5cGVDb3VudCAmJiAoICRDbGFzcyB8fCBAQ29uZmlnSXRlbU51bWJlcnMgfHwgJERlcGxveW1lbnRTdGF0ZSApICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiVGhlIG9wdGlvbnMgLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyBhbmQgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIGNhbiBub3QgdXNlZCB0b2dldGhlciB3aXRoIGFueSBvdGhlciBvcHRpb24uIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggJERlcGxveW1lbnRTdGF0ZSAmJiAhJENsYXNzICkgewogICAgICAgIGRpZQogICAgICAgICAgICAiRGVsZXRpbmcgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIHRoaXMgZGVwbG95bWVudCBzdGF0ZSBpcyBwb3NpYmxlIE9OTFkgVE9HRVRIRVIgd2l0aCB0aGUgLS1jbGFzcyBwYXJhbWV0ZXIuIFxuRm9yIG1vcmUgZGV0YWlscyB1c2UgLS1oZWxwXG4iOwogICAgfQoKICAgIGlmICggQENvbmZpZ0l0ZW1OdW1iZXJzICYmICggJENsYXNzIHx8ICREZXBsb3ltZW50U3RhdGUgKSApIHsKICAgICAgICBkaWUKICAgICAgICAgICAgIlRoZSBvcHRpb24gLS1jb25maWdpdGVtLW51bWJlciBjYW4gbm90IGJlIHVzZWQgdG9nZXRoZXIgd2l0aCB0aGUgLS1jbGFzcyBvciB0aGUgLS1kZXBsb3ltZW50LXN0YXRlIHBhcmFtZXRlci4gXG5Gb3IgbW9yZSBkZXRhaWxzIHVzZSAtLWhlbHBcbiI7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcy4uLjwveWVsbG93PlxuXG4iKTsKCiAgICBteSAkQWxsICAgICAgICAgICAgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwnKTsKICAgIG15ICRDbGFzcyAgICAgICAgICAgICA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CiAgICBteSBAQ29uZmlnSXRlbU51bWJlcnMgPSBAeyAkU2VsZi0+R2V0T3B0aW9uKCdjb25maWdpdGVtLW51bWJlcicpIC8vIFtdIH07CiAgICBteSAkRGVwbG95bWVudFN0YXRlICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdkZXBsb3ltZW50LXN0YXRlJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsT2xkVmVyc2lvbnMgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkLXZlcnNpb25zJykgICAgICAgICAgICAgLy8gJyc7CiAgICBteSAkQWxsQnV0S2VlcExhc3QgICAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycpICAgLy8gJyc7CiAgICBteSAkQWxsT2xkZXJUaGFuRGF5cyAgPSAkU2VsZi0+R2V0T3B0aW9uKCdhbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJykgLy8gJyc7CgogICAgIyBkZWxldGUgYWxsIGNvbmZpZyBpdGVtcwogICAgaWYgKCRBbGwpIHsKCiAgICAgICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9IEB7ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCkgfTsKCiAgICAgICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgICAgIG15ICRDSUNvdW50ID0gc2NhbGFyIEBDb25maWdJdGVtSURzOwoKICAgICAgICAjIGlmIHRoZXJlIGFyZSBhbnkgQ0kgdG8gZGVsZXRlCiAgICAgICAgaWYgKCRDSUNvdW50KSB7CgogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+QXJlIHlvdSBzdXJlIHRoYXQgeW91IHdhbnQgdG8gZGVsZXRlIEFMTCAkQ0lDb3VudCBjb25maWcgaXRlbXM/PC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoaXMgaXMgaXJyZXZvY2FibGUuIFt5L25dIDwveWVsbG93PlxuIik7CiAgICAgICAgICAgIG15ICRDb25maXJtYXRpb24gPSAkU2VsZi0+R2V0QXJndW1lbnQoJ2FjY2VwdCcpOwogICAgICAgICAgICBjaG9tcCggJENvbmZpcm1hdGlvbiA9IGxjIDxTVERJTj4gKSBpZiAhZGVmaW5lZCAkQ29uZmlybWF0aW9uOwoKICAgICAgICAgICAgIyBpZiB0aGUgdXNlciBjb25maXJtcyB0aGUgZGVsZXRpb24KICAgICAgICAgICAgaWYgKCAkQ29uZmlybWF0aW9uIGVxICd5JyApIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBjb25maWcgaXRlbXMKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRlbGV0aW5nIGFsbCBjb25maWcgaXRlbXMuLi48L2dyZWVuPlxuIik7CiAgICAgICAgICAgICAgICAkU2VsZi0+RGVsZXRlQ29uZmlnSXRlbXMoIENvbmZpZ0l0ZW1JRHMgPT4gXEBDb25maWdJdGVtSURzICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Q29tbWFuZCBkZWxldGUgd2FzIGNhbmNlbGVkPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhlcmUgYXJlIE5PIGNvbmZpZyBpdGVtcyB0byBkZWxldGUuPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgbGlzdGVkIGNvbmZpZyBpdGVtcwogICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoIFxAQ29uZmlnSXRlbU51bWJlcnMgKSApIHsKCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHM7CgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbU51bWJlciAoQENvbmZpZ0l0ZW1OdW1iZXJzKSB7CgogICAgICAgICAgICAjIGNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGNvbmZpZyBpdGVtIGlkCiAgICAgICAgICAgIG15ICRJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSUQpIHsKICAgICAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRJRDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5VbmFibGUgdG8gZmluZCBjb25maWcgaXRlbSAkQ29uZmlnSXRlbU51bWJlci48L3llbGxvdz5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBjb25maWcgaXRlbXMgKGlmIGFueSB2YWxpZCBudW1iZXIgd2FzIGdpdmVuKQogICAgICAgIGlmIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+RGVsZXRpbmcgc3BlY2lmaWVkIGNvbmZpZyBpdGVtcy4uLjwveWVsbG93PlxuIik7CiAgICAgICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtcyggQ29uZmlnSXRlbUlEcyA9PiBcQENvbmZpZ0l0ZW1JRHMgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgY29uZmlnIGl0ZW1zIHRoYXQgYmVsb25nIHRvIHRoZSBjbGFzcwogICAgZWxzaWYgKCRDbGFzcykgewoKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIFZhbGlkID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBpbnZlcnQgdGhlIGhhc2ggdG8gaGF2ZSB0aGUgY2xhc3NlcyBuYW1lcyBhcyBrZXlzCiAgICAgICAgbXkgJUNsYXNzTmFtZTJJRCA9IHJldmVyc2UgJXskQ2xhc3NMaXN0fTsKCiAgICAgICAgaWYgKCAkQ2xhc3NOYW1lMklEeyRDbGFzc30gKSB7CiAgICAgICAgICAgIG15ICRJRCA9ICRDbGFzc05hbWUySUR7JENsYXNzfTsKCiAgICAgICAgICAgICMgZGVmaW5lIHRoZSBzZWFyY2ggcGFyYW0gZm9yIHRoZSBjbGFzcyBzZWFyY2gKICAgICAgICAgICAgbXkgJVNlYXJjaFBhcmFtID0gKAogICAgICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyRJRF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFsc28gYSBkZXBsb3ltZW50IHN0YXRlIGlzIGdpdmVuCiAgICAgICAgICAgIGlmICgkRGVwbG95bWVudFN0YXRlKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICAgICAgICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBpbnZlcnQgdGhlIGhhc2ggdG8gaGF2ZSB0aGUgZGVwbG95bWVudCBzdGF0ZSBuYW1lcyBhcyBrZXlzCiAgICAgICAgICAgICAgICBteSAlRGVwbG95bWVudFN0YXRlMklEID0gcmV2ZXJzZSAleyREZXBsb3ltZW50U3RhdGVMaXN0fTsKCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBkZXBsb3ltZW50IHN0YXRlIGlzIHZhbGlkCiAgICAgICAgICAgICAgICBpZiAoICREZXBsb3ltZW50U3RhdGUySUR7JERlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICMgZ2V0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgICAgICAgICAgbXkgJElEID0gJERlcGxveW1lbnRTdGF0ZTJJRHskRGVwbG95bWVudFN0YXRlfTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgc2VhcmNoIHBhcmFtZXRlcgogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXtEZXBsU3RhdGVJRHN9ID0gWyRJRF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgZGVwbG95bWVudCBzdGF0ZSAkRGVwbG95bWVudFN0YXRlLiIpOwogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcyAoYW5kIG1heWJlIGRlcGxveW1lbnQgc3RhdGUpIGNvbmZpZyBpdGVtcwogICAgICAgICAgICBAQ29uZmlnSXRlbUlEcyA9IEB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbVNlYXJjaCglU2VhcmNoUGFyYW0pCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiVW5hYmxlIHRvIGZpbmQgY2xhc3MgbmFtZSAkQ2xhc3MuIik7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgY29uZmlnIGl0ZW1zIChpZiBhbnkgdmFsaWQgbnVtYmVyIHdhcyBnaXZlbikKICAgICAgICBpZiAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkRlbGV0aW5nIGNvbmZpZyBpdGVtcyB0aGF0IGJlbG9uZyB0byB0aGUgY2xhc3MgJENsYXNzLi4uPC95ZWxsb3c+XG4iKTsKICAgICAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1zKCBDb25maWdJdGVtSURzID0+IFxAQ29uZmlnSXRlbUlEcyApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlRoZXJlIGFyZSBubyBjb25maWcgaXRlbXMgdGhhdCBiZWxvbmcgdG8gdGhlIGNsYXNzICRDbGFzcy4uLjwveWVsbG93PlxuIik7CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIHZlcnNpb25zIG9sZGVyIHRoYW4geHggZGF5cyBmcm9tIGFsbCBjb25maWcgaXRlbXMKICAgIGVsc2lmICgkQWxsT2xkZXJUaGFuRGF5cykgewoKICAgICAgICBteSAkT2xkZXJEYXRlRFRPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAkT2xkZXJEYXRlRFRPYmplY3QtPlN1YnRyYWN0KAogICAgICAgICAgICBEYXlzID0+ICRBbGxPbGRlclRoYW5EYXlzLAogICAgICAgICk7CgogICAgICAgIG15ICRWZXJzaW9uc09sZGVyRGF0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICAgICAgT2xkZXJEYXRlID0+ICRPbGRlckRhdGVEVE9iamVjdC0+VG9TdHJpbmcoKSwKICAgICAgICApOwoKICAgICAgICAjIFdlIG5lZWQgdG8gZ2V0IGFsbCB2ZXJzaW9ucyB0byBtYWtlIHN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgdmVyc2lvbiByZW1haW5zCiAgICAgICAgIyAtPiBpZiBvbmUgdmVyc2lvbiBvZiBhIGNvbmZpZ2l0ZW0gaXMgeW91bmdlciB0aGFuIHRoZSBhbW91bnQgb2YgZGF5cywKICAgICAgICAjICAgIHdlIGNhbiBkZWxldGUgYWxsIFZlcnNpb25zIHJlY2VpdmVkIGJ5IHRoZSAiT2xkZXJEYXRlIiBxdWVyeQogICAgICAgICMgLT4gaWYgbm8gdmVyc2lvbiBpcyB5b3VuZ2VyIHRoYW4gdGhlIGFtb3VudCBvZiBkYXlzCiAgICAgICAgIyAgICB3ZSBoYXZlIHRvIGtlZXAgb25lIHZlcnNpb24gb2YgdGhlICJPbGRlckRhdGUiIHF1ZXJ5IHJlc3VsdAogICAgICAgIG15ICRWZXJzaW9uc0FsbCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uTGlzdEFsbCgpOwoKICAgICAgICBteSBAVmVyc2lvbnNUb0RlbGV0ZTsKCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zT2xkZXJEYXRlfSApIHsKCiAgICAgICAgICAgICMgbnVtYmVyIG9mIGZvdW5kIG9sZGVyIHZlcnNpb25zIG9mIHRoaXMgQ0kKICAgICAgICAgICAgbXkgJE51bWJlck9mT2xkZXJWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG51bWJlciBvZiBhbGwgdmVyc2lvbnMgb2YgdGhpcyBDSQogICAgICAgICAgICBteSAkTnVtYmVyT2ZBbGxWZXJzaW9ucyA9IHNjYWxhciBrZXlzICV7ICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9IH07CgogICAgICAgICAgICAjIG5leHQgaWYgdGhlcmUgYXJlIG5vIG9sZGVyIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTnVtYmVyT2ZPbGRlclZlcnNpb25zOwoKICAgICAgICAgICAgIyBuZXh0IGlmIHRoZXJlIGlzIG9ubHkgb25lIG9yIHplcm8gb2YgYWxsIHZlcnNpb25zCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICROdW1iZXJPZkFsbFZlcnNpb25zIDw9IDE7CgogICAgICAgICAgICAjIGlmIHRoZSBhbW91bnQgb2YgVmVyc2lvbnMgd2UgaGF2ZSB0byBkZWxldGUKICAgICAgICAgICAgIyBpcyBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSBhbW91bnQgb2YgQWxsVmVyc2lvbnMKICAgICAgICAgICAgIyB3ZSBoYXZlIHRvIGtlZXAgdGhlIGxhc3Qgb25lCiAgICAgICAgICAgICMgaW4gb3JkZXIgdG8ga2VlcCB0aGUgc3lzdGVtIHdvcmtpbmcKICAgICAgICAgICAgIwogICAgICAgICAgICAjIC0+IHNvIGxldCdzIHN0YXJ0IGNvdW50aW5nIGF0ICIxIiBpbnN0ZWFkIG9mICIwIgogICAgICAgICAgICAjIGluIG9yZGVyIHRvIHN0b3AgZGVsZXRpbmcgYmVmb3JlIHdlIHJlYWNoIHRoZSBuZXdlc3QgdmVyc2lvbgogICAgICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgICAgICBpZiAoICROdW1iZXJPZk9sZGVyVmVyc2lvbnMgPT0gJE51bWJlck9mQWxsVmVyc2lvbnMgKSB7CiAgICAgICAgICAgICAgICAkQ291bnQgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG1ha2Ugc3VyZSB0aGF0IHRoZSB2ZXJzaW9ucyBhcmUgbnVtZXJpY2FsbHkgc29ydGVkCiAgICAgICAgICAgIGZvciBteSAkVmVyc2lvbiAoIHNvcnQgeyAkYSA8PT4gJGIgfSBrZXlzICV7ICRWZXJzaW9uc09sZGVyRGF0ZS0+eyRDb25maWdJdGVtSUR9IH0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQ291bnQgPCAkTnVtYmVyT2ZPbGRlclZlcnNpb25zICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsICRWZXJzaW9uOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgZXhjZXB0IHRoZSBuZXdlc3QgdmVyc2lvbgogICAgZWxzaWYgKCRBbGxPbGRWZXJzaW9ucykgewoKICAgICAgICBteSAkVmVyc2lvbnNBbGwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkxpc3RBbGwoKTsKCiAgICAgICAgbXkgQFZlcnNpb25zVG9EZWxldGU7CiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkVmVyc2lvbnNBbGwpICkgewoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyRWZXJzaW9uc0FsbH0gKSB7CgogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSApOwoKICAgICAgICAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIHZlcnNpb25zIGFyZSBudW1lcmljYWxseSBzb3J0ZWQKICAgICAgICAgICAgICAgIG15IEBSZWR1Y2VkVmVyc2lvbnMgPSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIHRoZSBsYXN0IChuZXdlc3QpIHZlcnNpb24KICAgICAgICAgICAgICAgIHBvcCBAUmVkdWNlZFZlcnNpb25zOwoKICAgICAgICAgICAgICAgIHB1c2ggQFZlcnNpb25zVG9EZWxldGUsIEBSZWR1Y2VkVmVyc2lvbnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRTZWxmLT5EZWxldGVDb25maWdJdGVtVmVyc2lvbnMoCiAgICAgICAgICAgIFZlcnNpb25JRHMgPT4gXEBWZXJzaW9uc1RvRGVsZXRlLAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgWFggdmVyc2lvbnMKICAgIGVsc2lmICgkQWxsQnV0S2VlcExhc3QpIHsKCiAgICAgICAgbXkgJFZlcnNpb25zQWxsID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0QWxsKCk7CgogICAgICAgIG15IEBWZXJzaW9uc1RvRGVsZXRlOwoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRWZXJzaW9uc0FsbCkgKSB7CgogICAgICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7JFZlcnNpb25zQWxsfSApIHsKCiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICRWZXJzaW9uc0FsbC0+eyRDb25maWdJdGVtSUR9ICk7CgogICAgICAgICAgICAgICAgIyBtYWtlIHN1cmUgdGhhdCB0aGUgdmVyc2lvbnMgYXJlIG51bWVyaWNhbGx5IHJldmVyc2Ugc29ydGVkCiAgICAgICAgICAgICAgICBteSBAUmVkdWNlZFZlcnNpb25zID0gcmV2ZXJzZSBzb3J0IHsgJGEgPD0+ICRiIH0ga2V5cyAleyAkVmVyc2lvbnNBbGwtPnskQ29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAgICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgICAgICAgICBAUmVkdWNlZFZlcnNpb25zID0gZ3JlcCB7ICRDb3VudCsrOyAkQ291bnQgPiAkQWxsQnV0S2VlcExhc3QgfSBAUmVkdWNlZFZlcnNpb25zOwogICAgICAgICAgICAgICAgcHVzaCBAVmVyc2lvbnNUb0RlbGV0ZSwgQFJlZHVjZWRWZXJzaW9uczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPkRlbGV0ZUNvbmZpZ0l0ZW1WZXJzaW9ucygKICAgICAgICAgICAgVmVyc2lvbklEcyA9PiBcQFZlcnNpb25zVG9EZWxldGUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIk5vIGNvbmZpZyBpdGVtIGZvciBkZWxldGUuIik7CiAgICB9CgogICAgIyBzaG93IHN1Y2Nlc3NmdWxsIG91dHB1dAogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKc3ViIERlbGV0ZUNvbmZpZ0l0ZW1zIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWxldGVkQ0k7CgogICAgIyBkZWxldGUgc3BlY2lmaWVkIGNvbmZpZyBpdGVtcwogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICBteSAkVHJ1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICBpZiAoICEkVHJ1ZSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlVuYWJsZSB0byBkZWxldGUgY29uZmlnIGl0ZW0gd2l0aCBpZCAkQ29uZmlnSXRlbUlELiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJERlbGV0ZWRDSSsrOwogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5EZWxldGVkICREZWxldGVkQ0kgY29uZmlnIGl0ZW0ocykuPC9ncmVlbj5cblxuIik7CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBEZWxldGVDb25maWdJdGVtVmVyc2lvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtWZXJzaW9uSURzfSApOwoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRlbGV0aW5nIGNvbmZpZyBpdGVtIHZlcnNpb25zLjwvZ3JlZW4+XG5cbiIpOwoKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uRGVsZXRlKAogICAgICAgIFZlcnNpb25JRHMgPT4gJFBhcmFte1ZlcnNpb25JRHN9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/System/Console/Command/Admin/ITSM/Configitem/ListDuplicates.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ2l0ZW06Okxpc3REdXBsaWNhdGVzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignTGlzdCBjb25maWcgaXRlbXMgd2hpY2ggaGF2ZSBhIG5vbi11bmlxdWUgbmFtZS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2NsYXNzJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQ2hlY2sgb25seSBjb25maWcgaXRlbXMgb2YgdGhpcyBjbGFzcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMSwKICAgICAgICBWYWx1ZVJlZ2V4ICA9PiBxci8uKy8sCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnc2NvcGUnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJEZWZpbmUgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayAoZ2xvYmFsfGNsYXNzKSIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAxLAogICAgICAgIFZhbHVlUmVnZXggID0+IHFyL1xBKGdsb2JhbHxjbGFzcylcei8sCiAgICApOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnYWxsLXN0YXRlcycsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gIkFsc28gY2hlY2sgY29uZmlnIGl0ZW1zIGluIG5vbi1wcm9kdWN0aXZlIHN0YXRlcy4iLAogICAgICAgIFJlcXVpcmVkICAgID0+IDAsCiAgICAgICAgSGFzVmFsdWUgICAgPT4gMCwKICAgICk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY2xhc3MgYXJndW1lbnQKICAgIG15ICRDbGFzcyA9ICRTZWxmLT5HZXRPcHRpb24oJ2NsYXNzJykgLy8gJyc7CgogICAgaWYgKCRDbGFzcykgewoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwoKICAgICAgICAjIGludmVydCB0aGUgaGFzaCB0byBoYXZlIHRoZSBjbGFzc2VzJyBuYW1lcyBhcyBrZXlzCiAgICAgICAgbXkgJUNsYXNzTmFtZTJJRCA9IHJldmVyc2UgJXskQ2xhc3NMaXN0fTsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGlzIGNsYXNzIGV4aXN0cwogICAgICAgIGlmICggJENsYXNzTmFtZTJJRHskQ2xhc3N9ICkgewogICAgICAgICAgICBteSAkSUQgPSAkQ2xhc3NOYW1lMklEeyRDbGFzc307CgogICAgICAgICAgICAjIGdldCBpZHMgb2YgdGhpcyBjbGFzcycgY29uZmlnIGl0ZW1zCiAgICAgICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57Q2xhc3NJRHN9ID0gWyRJRF07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBkaWUgIkNsYXNzICRDbGFzcyBkb2VzIG5vdCBleGlzdC4uLlxuIjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93Pkxpc3RpbmcgZHVwbGljYXRlcyBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgaWYgKCAhJFNlbGYtPkdldE9wdGlvbignYWxsLXN0YXRlcycpICkgewoKICAgICAgICBteSAkU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJERlcGxveW1lbnRTdGF0ZUlEcyA9IFsga2V5cyAleyRTdGF0ZUxpc3R9IF07CgogICAgICAgICRTZWxmLT57U2VhcmNoQ3JpdGVyaWF9LT57RGVwbFN0YXRlSURzfSA9IFsga2V5cyAleyRTdGF0ZUxpc3R9IF07CgogICAgfQoKICAgICMgZ2V0IElUU01Db25maWdpdGVtIG9iamVjdAogICAgbXkgJElUU01Db25maWdpdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZXQgYWxsIGNvbmZpZyBpdGVtcyBpZHMKICAgIG15IEBDb25maWdJdGVtSURzID0gQHsgJElUU01Db25maWdpdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKCAleyAkU2VsZi0+e1NlYXJjaENyaXRlcmlhfSB9ICkgfTsKCiAgICAjIGdldCBudW1iZXIgb2YgY29uZmlnIGl0ZW1zCiAgICBteSAkQ0lDb3VudCA9IHNjYWxhciBAQ29uZmlnSXRlbUlEczsKCiAgICAjIGdldCBjbGFzcyBhcmd1bWVudAogICAgbXkgJENsYXNzID0gJFNlbGYtPkdldE9wdGlvbignY2xhc3MnKSAvLyAnJzsKCiAgICAjIGlmIHRoZXJlIGFyZSBhbnkgQ0kgdG8gY2hlY2sKICAgIGlmICgkQ0lDb3VudCkgewoKICAgICAgICAjIGlmIHRoZSBzY29wZSB3YXMgZXhwbGljaXRlbHkgZGVmaW5lZCwgc2V0IGl0LCBvdGhlcndpc2UgdGhpcyBzY3JpcHQgd2lsbCBmYWxsIGJhY2sgdG8gdGhlCiAgICAgICAgIyB2YWx1ZSBzZXQgaW4gU3lzQ29uZmlnCiAgICAgICAgbXkgJFNjb3BlID0gJFNlbGYtPkdldE9wdGlvbignc2NvcGUnKTsKICAgICAgICBpZiAoJFNjb3BlKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPlNldCgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRTY29wZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkQ2xhc3MpIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkNoZWNraW5nIGNvbmZpZyBpdGVtcyBvZiBjbGFzcyAkQ2xhc3MuLi48L3llbGxvdz5cbiIpOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8eWVsbG93PkNoZWNraW5nIGFsbCBjb25maWcgaXRlbXMuLi5cbjwveWVsbG93PlxuIik7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+UHJpbnQoICI8Z3JlZW4+IiAuICggJz0nIHggNjkgKSAuICI8L2dyZWVuPlxuIiApOwoKICAgICAgICBteSAkRHVwbGljYXRlc0ZvdW5kID0gMDsKCiAgICAgICAgIyBjaGVjayBjb25maWcgaXRlbXMKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CgogICAgICAgICAgICAjIGdldCB0aGUgYXR0cmlidXRlcyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJElUU01Db25maWdpdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICAgICAgICAgIG15ICRWZXJzaW9uID0gJElUU01Db25maWdpdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgVmVyc2lvbklEICA9PiAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgWE1MRGF0YUdldCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRWZXJzaW9uOwoKICAgICAgICAgICAgaWYgKCAhJFZlcnNpb24tPntOYW1lfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5Ta2lwcGluZyBDb25maWdJdGVtICRDb25maWdJdGVtSUQgYXMgaXQgZG9lc24ndCBoYXZlIGEgbmFtZS5cbjwvcmVkPlxuIik7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSAkSVRTTUNvbmZpZ2l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb24tPntOYW1lfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJER1cGxpY2F0ZXMpICkgewoKICAgICAgICAgICAgICAgICREdXBsaWNhdGVzRm91bmQgPSAxOwoKICAgICAgICAgICAgICAgIG15IEBEdXBsaWNhdGVEYXRhOwoKICAgICAgICAgICAgICAgIGZvciBteSAkRHVwbGljYXRlSUQgKCBAeyREdXBsaWNhdGVzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlICMgb2YgdGhlIGR1cGxpY2F0ZQogICAgICAgICAgICAgICAgICAgIG15ICREdXBsaWNhdGVDb25maWdJdGVtID0gJElUU01Db25maWdpdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJER1cGxpY2F0ZUlELAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREdXBsaWNhdGVWZXJzaW9uID0gJElUU01Db25maWdpdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJER1cGxpY2F0ZUNvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEdXBsaWNhdGVEYXRhLCAkRHVwbGljYXRlVmVyc2lvbjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICAgICAgICAgIjx5ZWxsb3c+Q29uZmlnSXRlbSAkVmVyc2lvbi0+e051bWJlcn0gKE5hbWU6ICRWZXJzaW9uLT57TmFtZX0sIENvbmZpZ0l0ZW1JRDogIgogICAgICAgICAgICAgICAgICAgICAgICAuICIkVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0pIGhhcyB0aGUgZm9sbG93aW5nIGR1cGxpY2F0ZXM6PC95ZWxsb3c+XG4iCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgbGlzdCBhbGwgdGhlIGRldGFpbHMgb2YgdGhlIGR1cGxpY2F0ZXMKICAgICAgICAgICAgICAgIGZvciBteSAkRHVwbGljYXRlVmVyc2lvbiAoQER1cGxpY2F0ZURhdGEpIHsKICAgICAgICAgICAgICAgICAgICBwcmludCAiXG4iOwogICAgICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgICAgICAgICAgICAgIjxncmVlbj5cdCAqICREdXBsaWNhdGVWZXJzaW9uLT57TnVtYmVyfSAoQ29uZmlnSXRlbUlEOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIkRHVwbGljYXRlVmVyc2lvbi0+e0NvbmZpZ0l0ZW1JRH0pPC9ncmVlbj5cbiIKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCggIjxncmVlbj4iIC4gKCAnLScgeCA2OSApIC4gIjwvZ3JlZW4+XG4iICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICgkRHVwbGljYXRlc0ZvdW5kKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkZpbmlzaGVkIGNoZWNraW5nIGZvciBkdXBsaWNhdGUgbmFtZXMuXG48L2dyZWVuPlxuIik7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+Tm8gZHVwbGljYXRlIG5hbWVzIGZvdW5kLlxuPC95ZWxsb3c+XG4iKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+VGhlcmUgYXJlIE5PIGNvbmZpZyBpdGVtcyB0byBjaGVjay5cbjwveWVsbG93PlxuIik7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKCn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/System/Console/Command/Admin/ITSM/IncidentState/Recalculate.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ1JlY2FsY3VsYXRlcyB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgY29uZmlnIGl0ZW1zLicpOwoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWNhbGN1bGF0aW5nIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBjb25maWcgaXRlbXMuLi48L3llbGxvdz5cblxuIik7CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGdldCB0aGUgdmFsaWQgY2xhc3MgaWRzCiAgICBteSBAVmFsaWRDbGFzc0lEcyA9IHNvcnQga2V5cyAleyRDbGFzc0xpc3R9OwoKICAgICMgZ2V0IGFsbCBjb25maWcgaXRlbXMgaWRzIGZvcm0gYWxsIHZhbGlkIGNsYXNzZXMKICAgIG15ICRDb25maWdJdGVtc0lEc1JlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgIENsYXNzSURzID0+IFxAVmFsaWRDbGFzc0lEcywKICAgICk7CgogICAgIyBnZXQgbnVtYmVyIG9mIGNvbmZpZyBpdGVtcwogICAgbXkgJENJQ291bnQgPSBzY2FsYXIgQHskQ29uZmlnSXRlbXNJRHNSZWZ9OwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5SZWNhbGN1bGF0aW5nIGluY2lkZW50IHN0YXRlIGZvciAkQ0lDb3VudCBjb25maWcgaXRlbXMuPC95ZWxsb3c+XG4iKTsKCiAgICAjIFJlbWVtYmVyIGNvbmZpZyBpdGVtIHJlc3VsdHMgdGhyb3VnaCBtdWx0aXBsZSBydW5zIG9mIEN1ckluY2lTdGF0ZVJlY2FsYygpLgogICAgbXkgJU5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlOwogICAgbXkgJVNjYW5uZWRDb25maWdJdGVtSURzOwoKICAgIG15ICRDb3VudCA9IDA7CiAgICBDT05GSUdJVEVNOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyRDb25maWdJdGVtc0lEc1JlZn0gKSB7CgogICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkN1ckluY2lTdGF0ZVJlY2FsYygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUgPT4gXCVOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSwKICAgICAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgICAgICAgPT4gXCVTY2FubmVkQ29uZmlnSXRlbUlEcywKICAgICAgICApOwoKICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPi4uLiBjb3VsZCBub3QgcmVjYWxjdWxhdGUgaW5jaWRlbnQgc3RhdGUgZm9yIGNvbmZpZyBpdGVtIGlkICckQ29uZmlnSXRlbUlEJyE8L3JlZD5cbiIpOwogICAgICAgICAgICBuZXh0IENPTkZJR0lURU07CiAgICAgICAgfQoKICAgICAgICAkQ291bnQrKzsKCiAgICAgICAgaWYgKCAkQ291bnQgJSAxMDAgPT0gMCApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+Li4uICRDb3VudCBjb25maWcgaXRlbXMgcmVjYWxjdWxhdGVkLjwvZ3JlZW4+XG4iKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPlByaW50KCJcbjxncmVlbj5SZWFkeS4gUmVjYWxjdWxhdGVkICRDb3VudCBjb25maWcgaXRlbXMuPC9ncmVlbj5cblxuIik7CgogICAgIyBnZXQgc2VydmljZSBvYmplY3QKICAgIG15ICRTZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKTsKCiAgICAjIGdldCBsaXN0IG9mIGFsbCBzZXJ2aWNlcyAodmFsaWQgYW5kIGludmFsaWQpCiAgICBteSAlU2VydmljZUxpc3QgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgID0+IDAsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgIG15ICROdW1iZXJPZlNlcnZpY2VzID0gc2NhbGFyIGtleXMgJVNlcnZpY2VMaXN0OwoKICAgICRTZWxmLT5QcmludCgKICAgICAgICAiPGdyZWVuPlJlc2V0dGluZyBTZXJ2aWNlUHJlZmVyZW5jZXMgJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJyBmb3IgJE51bWJlck9mU2VydmljZXMgc2VydmljZXMuLi48L2dyZWVuPlxuIgogICAgKTsKCiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3QgKSB7CgogICAgICAgICMgdXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2Ugd2l0aCBhbiBlbXB0eSB2YWx1ZQogICAgICAgICMgdGhpcyBpcyBuZWNlc3NhcnkgdG8gZm9yY2UgYSByZWNhbGN1bGF0aW9uIG9uIGEgU2VydmljZUdldCgpCiAgICAgICAgJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VQcmVmZXJlbmNlc1NldCgKICAgICAgICAgICAgU2VydmljZUlEID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJycsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+UmVhZHkuPC9ncmVlbj5cbiIpOwogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cgp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/Console/Command/Maint/ITSM/Configitem/DefinitionPerl2YAML.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ2l0ZW06OkRlZmluaXRpb25QZXJsMllBTUw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ0NvbnZlcnQgY29uZmlnIGl0ZW1zIGRlZmluaXRpb25zIGZyb20gbGVnYWN5IFBlcmwgY29kZSB0byBhIFlBTUwgc3RydWN0dXJlLicpOwoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Db252ZXJ0aW5nIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zLi4uPC95ZWxsb3c+XG5cbiIpOwoKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAwLAoKICAgICAgICAjUHJlZmVyZW5jZXMgICA9PiB7IH0sCiAgICApOwoKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICIKICAgICAgICAgICAgU0VMRUNUIGlkLCBjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uCiAgICAgICAgICAgIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgICAgICAgICAgIFdIRVJFIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBOT1QgTElLRSAnLS0tJScKICAgICAgICAgICAgT1JERVIgQlkgY2xhc3NfaWQgQVNDLCB2ZXJzaW9uIEFTQyIsCiAgICApOwoKICAgIG15IEBEZWZpbml0aW9uTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURlZmluaXRpb247CiAgICAgICAgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSA9ICRSb3dbMF07CiAgICAgICAgJERlZmluaXRpb257Q2xhc3NJRH0gICAgICA9ICRSb3dbMV07CiAgICAgICAgJERlZmluaXRpb257RGVmaW5pdGlvbn0gICA9ICRSb3dbMl07CiAgICAgICAgJERlZmluaXRpb257VmVyc2lvbn0gICAgICA9ICRSb3dbM107CgogICAgICAgIHB1c2ggQERlZmluaXRpb25MaXN0LCBcJURlZmluaXRpb247CiAgICB9CgogICAgaWYgKCAhc2NhbGFyIEBEZWZpbml0aW9uTGlzdCApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoIiAgTm8gY29uZmlnIGl0ZW1zIHVzaW5nIGxlZ2FjeSBQZXJsIGNvZGUgZm91bmRcblxuIik7CgogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwogICAgfQoKICAgIG15ICRTdWNjZXNzICAgID0gMTsKICAgIG15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICBERUZJTklUSU9OOgogICAgZm9yIG15ICREZWZpbml0aW9uIChARGVmaW5pdGlvbkxpc3QpIHsKCiAgICAgICAgbXkgJEN1cnJlbnRSZWNvcmQKICAgICAgICAgICAgPSAiICAgUHJvY2Vzc2luZyBkZWZpbml0aW9uIGZvciBjbGFzczogPHllbGxvdz4kQ2xhc3NMaXN0LT57ICREZWZpbml0aW9uLT57Q2xhc3NJRH0gfTwveWVsbG93PiB2ZXJzaW9uOiA8eWVsbG93PiREZWZpbml0aW9uLT57VmVyc2lvbn08L3llbGxvdz4uLi4iOwoKICAgICAgICAjIFRyeSB0byBldmFsdWF0ZSBwZXJsIHN0cnVjdHVyZS4KICAgICAgICBteSAkUGVybFN0cnVjdHVyZSA9IGV2YWwgJERlZmluaXRpb24tPntEZWZpbml0aW9ufTsgICAgIyMgbm8gY3JpdGljCiAgICAgICAgaWYgKCRAKSB7CiAgICAgICAgICAgIG15ICRFcnJvciA9ICRAOwogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIiRDdXJyZW50UmVjb3JkIDxyZWQ+RmFpbGVkIGV2YWx1YXRlIHBlcmwgc3RydWN0dXJlOiAkRXJyb3I8L3JlZD5cbiIpOwogICAgICAgICAgICAkU3VjY2VzcyA9IDA7CiAgICAgICAgICAgIG5leHQgREVGSU5JVElPTjsKICAgICAgICB9CgogICAgICAgICMgVHJ5IHRvIGNvbnZlcnQgZnJvbSBQZXJsIHRvIFlBTUwuCiAgICAgICAgbXkgJFlBTUxTdHIgPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICAgICAgRGF0YSA9PiAkUGVybFN0cnVjdHVyZSwKICAgICAgICApOwogICAgICAgIGlmICggISRZQU1MU3RyICkgewogICAgICAgICAgICAkU2VsZi0+UHJpbnQoIiRDdXJyZW50UmVjb3JkIDxyZWQ+RmFpbGVkIHRvIGNvbnZlcnQgdG8gWUFNTDwvcmVkPlxuIik7CiAgICAgICAgICAgICRTdWNjZXNzID0gMDsKICAgICAgICAgICAgbmV4dCBERUZJTklUSU9OOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgVVBEQVRFIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbgogICAgICAgICAgICAgICAgU0VUIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiA9ID8KICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFlBTUxTdHIsIFwkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gXSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+UHJpbnQoIiRDdXJyZW50UmVjb3JkIDxncmVlbj5PSzwvZ3JlZW4+XG4iKTsKCiAgICB9CgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIlxuVW5hYmxlIHRvIGNvbnZlcnQgYWxsIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zLiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/System/DynamicField/ConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6Q29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpDb25maWdJdGVtIC0gRHluYW1pYyBmaWVsZCBDb25maWdJdGVtIGxpYgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKICAgIERvbid0IHVzZSB0aGUgY29uc3RydWN0b3IgZGlyZWN0bHksIHVzZSB0aGUgT2JqZWN0TWFuYWdlciBpbnN0ZWFkOgoKICAgIG15ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6Q29uZmlnSXRlbScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgbXkgQENvbmZpZ0l0ZW1TdGFuZGFyZEZpZWxkcwogICAgICAgID0gcXcoQ29uZmlnSXRlbUlEIE5hbWUgQ2xhc3NJRCBDbGFzcyBEZWZpbml0aW9uSUQgRGVwbFN0YXRlSUQgRGVwbFN0YXRlIEluY2lTdGF0ZUlEIEluY2lTdGF0ZSk7CiAgICBteSAlQ29uZmlnSXRlbVN0YW5kYXJkRmllbGRzID0gbWFwIHsgJF8gPT4gMSB9IEBDb25maWdJdGVtU3RhbmRhcmRGaWVsZHM7CiAgICAkU2VsZi0+e0NvbmZpZ0l0ZW1TdGFuZGFyZEZpZWxkc30gPSBcJUNvbmZpZ0l0ZW1TdGFuZGFyZEZpZWxkczsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCiMgVE9ETzogd2Ugc2hvdWxkIHVzZSB0aGUgc2FtZSBuYW1pbmcgbGlrZSBERi1MREFQIChBdXRvRmlsbCkgb3Igc3RhbmRhcmRpemUgdGhlc2UKCj1oZWFkMiBHZXRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSgpCgogICAgUmV0dXJucyBkYXRhIGZvciBkeW5hbWljIGZpZWxkcyB0aGF0IHNob3VsZCBiZSBmaWxsZWQgYmFzZWQgb24gdGhlIHNvdXJjZSBkeW5hbWljIGZpZWxkCiAgICBjb25maWd1cmF0aW9uIGFuZCB0aGUgc2VsZWN0ZWQgY29uZmlnIGl0ZW1zLgoKICAgIG15ICRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSA9ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0LT5HZXRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSgKICAgICAgICBTb3VyY2VEeW5hbWljRmllbGROYW1lID0+ICdNeUNvbmZpZ0l0ZW0nLAogICAgICAgIFNlbGVjdGVkQ29uZmlnSXRlbUlEcyAgPT4gWyA0NSwgMTMsIF0sCiAgICAgICAgU3RvcmFnZVR5cGUgICAgICAgICAgICA9PiAnRnJvbnRlbmQnLCAjIG9yICdCYWNrZW5kJwogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgPT4gNzQsCiAgICApOwoKICAgIFJldHVybnM6CgogICAgewogICAgICAgICdNeUR5bmFtaWNGaWVsZDEnID0+ICRWYWx1ZSwgIyBDYW4gYmUgYW55dGhpbmcuIElmIHRoZSBkeW5hbWljIGZpZWxkIGlzIGEgbXVsdGlzZWxlY3QsIHRoaXMgaXMgYW4gYXJyYXkuCiAgICB9LAoKPWN1dAoKc3ViIEdldEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KFNvdXJjZUR5bmFtaWNGaWVsZE5hbWUgU2VsZWN0ZWRDb25maWdJdGVtSURzIFN0b3JhZ2VUeXBlIFVzZXJJRCkpIHsKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJFBhcmFte1NvdXJjZUR5bmFtaWNGaWVsZE5hbWV9LAogICAgKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgcmV0dXJuIGlmICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IG5lICdDb25maWdJdGVtRHJvcGRvd24nCiAgICAgICAgJiYgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gbmUgJ0NvbmZpZ0l0ZW1NdWx0aXNlbGVjdCc7CgogICAgIyBPbmx5IHRpY2tldCBkeW5hbWljIGZpZWxkcyBhcmUgc3VwcG9ydGVkLgogICAgcmV0dXJuIGlmICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBuZSAnVGlja2V0JzsKCiAgICAjIEV2YWx1YXRlIHNlbGVjdGVkIGNvbmZpZyBpdGVtIElEcy4KICAgICRQYXJhbXtTZWxlY3RlZENvbmZpZ0l0ZW1JRHN9IC8vPSBbXTsKICAgIG15IEBTZWxlY3RlZENvbmZpZ0l0ZW1JRHMgPQogICAgICAgIGdyZXAgewogICAgICAgIGRlZmluZWQgJF8KICAgICAgICAgICAgJiYgJF8gPX4gbXtcQVsxLTldXGQqXHp9CiAgICAgICAgfQogICAgICAgIEB7ICRQYXJhbXtTZWxlY3RlZENvbmZpZ0l0ZW1JRHN9IH07CgogICAgIyBFdmFsdWF0ZSBhZGRpdGlvbmFsIGR5bmFtaWMgZmllbGQgc3RvcmFnZSBjb25maWdzLgogICAgbXkgJEFkZGl0aW9uYWxERlN0b3JhZ2VDb25maWdzID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntBZGRpdGlvbmFsREZTdG9yYWdlfTsKICAgIHJldHVybiBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRBZGRpdGlvbmFsREZTdG9yYWdlQ29uZmlncyk7CgogICAgIyBMaW1pdCB0byB0aG9zZSBzdG9yYWdlIGNvbmZpZ3MgbWF0Y2hpbmcgdGhlIGdpdmVuIHN0b3JhZ2UgdHlwZS4KICAgICMgUmVnZXggZm9yIHN0b3JhZ2UgdHlwZSBiZWNhdXNlIHRoZSBjb25maWcgdmFsdWUgY2FuIGFsc28gYmUgJ0Zyb250ZW5kQmFja2VuZCcuCiAgICBteSBAQWRkaXRpb25hbERGU3RvcmFnZUNvbmZpZ3MgPSBncmVwIHsgJF8tPntUeXBlfSA9fiBteyRQYXJhbXtTdG9yYWdlVHlwZX19IH0gQHskQWRkaXRpb25hbERGU3RvcmFnZUNvbmZpZ3N9OwoKICAgICMKICAgICMgQXNzZW1ibGUgZGF0YSBvZiBjb25maWcgaXRlbXMuCiAgICAjCiAgICBteSBAQ29uZmlnSXRlbURhdGE7CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBTZWxlY3RlZENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICBteSAkQ29uZmlnSXRlbURhdGEgPSAkU2VsZi0+X0dldENvbmZpZ0l0ZW1EYXRhKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRDb25maWdJdGVtRGF0YSk7CgogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1EYXRhLCAkQ29uZmlnSXRlbURhdGE7CiAgICB9CgogICAgIyBOb3RlOiBAQ29uZmlnSXRlbURhdGEgY2FuIGJlIGVtcHR5IGF0IHRoaXMgcG9pbnQuCiAgICAjIEluIHRoaXMgY2FzZSwgYWRkaXRpb25hbCBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIHNldCBlbXB0eS4KICAgICMgU2VlIGlzc3VlICMxMjogaHR0cHM6Ly9naXQuem51bnkuY29tL1pudW55L1ByaXZhdGUvWm51bnktRHluYW1pY0ZpZWxkQ29uZmlnSXRlbS8tL2lzc3Vlcy8xMgoKICAgIG15ICRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSA9ICRTZWxmLT5fR2V0QWRkaXRpb25hbERGU3RvcmFnZURhdGEoCiAgICAgICAgQ29uZmlnSXRlbURhdGEgICAgICAgICAgICAgPT4gXEBDb25maWdJdGVtRGF0YSwKICAgICAgICBBZGRpdGlvbmFsREZTdG9yYWdlQ29uZmlncyA9PiBcQEFkZGl0aW9uYWxERlN0b3JhZ2VDb25maWdzLAogICAgKTsKCiAgICByZXR1cm4gJEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhOwp9Cgo9aGVhZDIgU3RvcmVEeW5hbWljRmllbGRWYWx1ZXMoKQoKICAgIFN0b3JlcyBkeW5hbWljIGZpZWxkIHZhbHVlcyB3aXRoIGdpdmVuIGFkZGl0aW9uYWwgZHluYW1pYyBmaWVsZCBzdG9yYWdlIGRhdGEuCgogICAgbXkgJFN0b3JlZER5bmFtaWNGaWVsZHMgPSAkRHluYW1pY0ZpZWxkQ29uZmlnSXRlbU9iamVjdC0+U3RvcmVEeW5hbWljRmllbGRWYWx1ZXMoCiAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgPT4gNTYsCiAgICAgICAgQWRkaXRpb25hbERGU3RvcmFnZURhdGEgPT4gewogICAgICAgICAgICAjIGhhc2ggcmV0dXJuZWQgYnkgR2V0QWRkaXRpb25hbERGU3RvcmFnZURhdGEoKQogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDIxMywKICAgICk7CgogICAgUmV0dXJucyBhcnJheSByZWYgd2l0aCBuYW1lcyBvZiBkeW5hbWljIGZpZWxkcyB0aGF0IGhhdmUgYmVlbiB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4KCj1jdXQKCnN1YiBTdG9yZUR5bmFtaWNGaWVsZFZhbHVlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVGlja2V0SUQgQWRkaXRpb25hbERGU3RvcmFnZURhdGEgVXNlcklEKSkgewogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSA9ICRQYXJhbXtBZGRpdGlvbmFsREZTdG9yYWdlRGF0YX07CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSk7CgogICAgbXkgQFN0b3JlZER5bmFtaWNGaWVsZHM7CgogICAgRFlOQU1JQ0ZJRUxETkFNRToKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIHNvcnQga2V5cyAleyRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YX0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEROQU1FIGlmICFleGlzdHMgJFBhcmFte0FkZGl0aW9uYWxERlN0b3JhZ2VEYXRhfS0+eyREeW5hbWljRmllbGROYW1lfTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICApOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxETkFNRSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgQWRkaXRpb25hbCBkeW5hbWljIGZpZWxkIHN0b3JhZ2UgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRpY2tldCBkeW5hbWljIGZpZWxkcy4KICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUUgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9IG5lICdUaWNrZXQnOwoKICAgICAgICBteSAkVmFsdWVTdG9yZWQ7CiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXtBZGRpdGlvbmFsREZTdG9yYWdlRGF0YX0tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICRWYWx1ZVN0b3JlZCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0FkZGl0aW9uYWxERlN0b3JhZ2VEYXRhfS0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRWYWx1ZVN0b3JlZCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRE5BTUUgaWYgISRWYWx1ZVN0b3JlZDsKCiAgICAgICAgcHVzaCBAU3RvcmVkRHluYW1pY0ZpZWxkcywgJER5bmFtaWNGaWVsZE5hbWU7CiAgICB9CgogICAgcmV0dXJuIFxAU3RvcmVkRHluYW1pY0ZpZWxkczsKfQoKPWhlYWQyIF9HZXRDb25maWdJdGVtRGF0YSgpCgogICAgUmV0dXJucyBkYXRhIG9mIHRoZSBsYXN0IHZlcnNpb24gaW4gYSBzYW5lIGZvcm0gZm9yIHRoZSBnaXZlbiBjb25maWcgaXRlbSBJRC4KCiAgICBteSAkQ29uZmlnSXRlbURhdGEgPSAkRHluYW1pY0ZpZWxkQ29uZmlnSXRlbU9iamVjdC0+X0dldENvbmZpZ0l0ZW1EYXRhKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiA1MiwKICAgICAgICBVc2VySUQgICAgICAgPT4gNTQsCiAgICApOwoKICAgIFJldHVybnMgYSBoYXNoIHJlZmVyZW5jZS4KCj1jdXQKCnN1YiBfR2V0Q29uZmlnSXRlbURhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1WZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIFhNTERhdGFHZXQgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1WZXJzaW9uKTsKCiAgICBteSAlQ29uZmlnSXRlbURhdGE7CiAgICAkQ29uZmlnSXRlbURhdGF7WE1MRGF0YX0gPSB7fTsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRDb25maWdJdGVtVmVyc2lvbi0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdICkgKSB7CiAgICAgICAgJFNlbGYtPl9QYXJzZVhNTDJEYXRhKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFJlc3VsdCAgICAgICAgICA9PiAkQ29uZmlnSXRlbURhdGF7WE1MRGF0YX0sCiAgICAgICAgICAgIERhdGEgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVZlcnNpb24tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICAgICAgWE1MRGF0YU11bHRpcGxlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICBmb3IgbXkgJEZpZWxkICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29uZmlnSXRlbVN0YW5kYXJkRmllbGRzfSB9ICkgewogICAgICAgICRDb25maWdJdGVtRGF0YXskRmllbGR9ID0gJENvbmZpZ0l0ZW1WZXJzaW9uLT57JEZpZWxkfTsKICAgIH0KICAgICRDb25maWdJdGVtRGF0YXtYTUxEZWZpbml0aW9ufSA9ICRDb25maWdJdGVtVmVyc2lvbi0+e1hNTERlZmluaXRpb259OwoKICAgIHJldHVybiBcJUNvbmZpZ0l0ZW1EYXRhOwp9Cgo9aGVhZDIgX0dldEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhKCkKCiAgICBSZXR1cm5zIGRhdGEgd2hpY2ggc2hvdWxkIGJlIHN0b3JlZCBpbiBhZGRpdGlvbmFsIGR5bmFtaWMgZmllbGRzIGZvciB0aGUgZ2l2ZW4KICAgIGNvbmZpZyBpdGVtIGRhdGEuCgogICAgbXkgJEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhID0gJER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1PYmplY3QtPl9HZXRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSgKICAgICAgICBDb25maWdJdGVtRGF0YSA9PiBbICMgY2FuIGJlIGVtcHR5L3VuZGVmLCBhZGRpdGlvbmFsIGR5bmFtaWMgZmllbGRzIHdpbGwgYmUgc2V0IGVtcHR5IGluIHRoaXMgY2FzZS4KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyBEYXRhIHJldHVybmVkIGJ5IF9HZXRDb25maWdJdGVtRGF0YSgpCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICMgRGF0YSByZXR1cm5lZCBieSBfR2V0Q29uZmlnSXRlbURhdGEoKQogICAgICAgICAgICB9LAogICAgICAgICAgICAjIC4uLgogICAgICAgIF0sCiAgICAgICAgQWRkaXRpb25hbERGU3RvcmFnZUNvbmZpZ3MgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICdNeUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ICAgID0+ICdDUFU6OjEnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnRnJvbnRlbmQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICAjIC4uLgogICAgICAgIF0sCiAgICApOwoKICAgIFJldHVybnMgaGFzaCB3aXRoIGRhdGEgdG8gYmUgc3RvcmVkIGluIGR5bmFtaWMgZmllbGRzLgogICAgRHluYW1pYyBmaWVsZCBuYW1lID0+IHZhbHVlKHMpCgo9Y3V0CgpzdWIgX0dldEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEFkZGl0aW9uYWxERlN0b3JhZ2VDb25maWdzKSkgewogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVEeW5hbWljRmllbGRWYWx1ZXM7CgogICAgQURESVRJT05BTERGU1RPUkFHRUNPTkZJRzoKICAgIGZvciBteSAkQWRkaXRpb25hbERGU3RvcmFnZUNvbmZpZyAoIEB7ICRQYXJhbXtBZGRpdGlvbmFsREZTdG9yYWdlQ29uZmlnc30gfSApIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRBZGRpdGlvbmFsREZTdG9yYWdlQ29uZmlnLT57RHluYW1pY0ZpZWxkfSwKICAgICAgICApOwogICAgICAgIG5leHQgQURESVRJT05BTERGU1RPUkFHRUNPTkZJRyBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICMgT25seSB0aWNrZXQgZHluYW1pYyBmaWVsZHMgYXJlIHN1cHBvcnRlZAogICAgICAgIG5leHQgQURESVRJT05BTERGU1RPUkFHRUNPTkZJRyBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gbmUgJ1RpY2tldCc7CgogICAgICAgICMgSW5pdGlhbGl6ZSBldmVyeSBjb25maWd1cmVkIGFkZGl0aW9uYWwgREYgc3RvcmFnZSBmaWVsZCB3aXRoIGVtcHR5IHN0cmluZwogICAgICAgICMgc28gdGhhdCBmaWVsZHMgd2hpY2ggYXJlIGVtcHR5IGluIHRoZSBzZWxlY3RlZCBjb25maWcgaXRlbShzKSB3aWxsIGJlIGNsZWFyZWQKICAgICAgICAjIGFuZCBubyBkYXRhIHdpbGwgYmUgbGVmdCBmcm9tIHByZXZpb3VzbHkgc2VsZWN0ZWQgY29uZmlnIGl0ZW0ocykuCiAgICAgICAgIyBBbHNvIHRoaXMgaXMgdGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBkeW5hbWljIGZpZWxkIGlmIGl0IHdpbGwgYmUgY2xlYXJlZAogICAgICAgICMgYmVjYXVzZSBubyBjb25maWcgaXRlbSBpcyBzZWxlY3RlZCAoYW55bW9yZSkuCiAgICAgICAgJER5bmFtaWNGaWVsZFZhbHVlc3sgJEFkZGl0aW9uYWxERlN0b3JhZ2VDb25maWctPntEeW5hbWljRmllbGR9IH0gPSAnJzsKCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlczsKCiAgICAgICAgbXkgJFhNTFZhbHVlTG9va3VwOwogICAgICAgIG15ICRDb25maWdJdGVtS2V5ID0gJEFkZGl0aW9uYWxERlN0b3JhZ2VDb25maWctPntDb25maWdJdGVtS2V5fTsKICAgICAgICBteSAkQXR0cmlidXRlUGF0aDsKCiAgICAgICAgIyBjaGVjayBpZiBfVmFsdWUgcG9zdGZpeCBpcyBzZXQKICAgICAgICBpZiAoICRDb25maWdJdGVtS2V5ID1+IG17X1ZhbHVlXHp9ICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbUtleSA9fiBze19WYWx1ZVx6fXt9bXM7CiAgICAgICAgICAgICRBdHRyaWJ1dGVQYXRoID0gJENvbmZpZ0l0ZW1LZXk7CiAgICAgICAgICAgICRBdHRyaWJ1dGVQYXRoID1+IHN7OjpcZCt9e31tczsKICAgICAgICAgICAgJFhNTFZhbHVlTG9va3VwID0gMTsKICAgICAgICB9CgogICAgICAgIENPTkZJR0lURU1EQVRBOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURhdGEgKCBAeyAkUGFyYW17Q29uZmlnSXRlbURhdGF9IH0gKSB7CiAgICAgICAgICAgIG15ICRTdHJpbmdpZmllZFhNTERhdGEgPSAkU2VsZi0+X1hNTERhdGEyU3RyaW5naWZpZWRYTUxEYXRhKAogICAgICAgICAgICAgICAgWE1MRGF0YSA9PiAkQ29uZmlnSXRlbURhdGEtPntYTUxEYXRhfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRmllbGRSYXdWYWx1ZTsKICAgICAgICAgICAgbXkgJEl0ZW07CgogICAgICAgICAgICBpZiAoJFhNTFZhbHVlTG9va3VwKSB7CiAgICAgICAgICAgICAgICAkSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQXR0cmlidXRlSW5mbygKICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVQYXRoID0+ICRBdHRyaWJ1dGVQYXRoLCAgICAgICAgICAgICAgICAgICAgICMgJ0hhcmREaXNrOjpDYXBhY2l0eScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbiAgICA9PiAkQ29uZmlnSXRlbURhdGEtPntYTUxEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3RhbmRhcmQgZmllbGQKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ0l0ZW1TdGFuZGFyZEZpZWxkc30tPnskQ29uZmlnSXRlbUtleX0gKSB7CiAgICAgICAgICAgICAgICBpZiAoJFhNTFZhbHVlTG9va3VwKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPlhNTFZhbHVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1EYXRhLT57JENvbmZpZ0l0ZW1LZXl9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUZpZWxkUmF3VmFsdWUgPSAkQ29uZmlnSXRlbURhdGEtPnskQ29uZmlnSXRlbUtleX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZGlyZWN0bHkgZm91bmQgc3RyaW5naWZpZWQgZGF0YQogICAgICAgICAgICBlbHNpZiAoCiAgICAgICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkU3RyaW5naWZpZWRYTUxEYXRhKQogICAgICAgICAgICAgICAgJiYgJFN0cmluZ2lmaWVkWE1MRGF0YS0+eyRDb25maWdJdGVtS2V5fQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZiAoJFhNTFZhbHVlTG9va3VwKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPlhNTFZhbHVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFN0cmluZ2lmaWVkWE1MRGF0YS0+eyRDb25maWdJdGVtS2V5fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlID0gJFN0cmluZ2lmaWVkWE1MRGF0YS0+eyRDb25maWdJdGVtS2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBtdWx0aXBsZSB2YWx1ZXMKICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJFN0cmluZ2lmaWVkWE1MRGF0YSkKICAgICAgICAgICAgICAgICYmICRDb25maWdJdGVtS2V5ICF+IG17XDpcOlxkK31nbXgKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbXkgQENvbmZpZ0l0ZW1LZXlzID0gZ3JlcCB7ICRfID1+IG17XiRDb25maWdJdGVtS2V5fSB9IHNvcnQga2V5cyAleyRTdHJpbmdpZmllZFhNTERhdGF9OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUtleSAoQENvbmZpZ0l0ZW1LZXlzKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCRYTUxWYWx1ZUxvb2t1cCkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7JENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlfSwgJENvbmZpZ0l0ZW1PYmplY3QtPlhNTFZhbHVlTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSXRlbSAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkU3RyaW5naWZpZWRYTUxEYXRhLT57JENvbmZpZ0l0ZW1LZXl9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyRDb25maWdJdGVtRmllbGRSYXdWYWx1ZX0sICRTdHJpbmdpZmllZFhNTERhdGEtPnskQ29uZmlnSXRlbUtleX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUZpZWxkUmF3VmFsdWUpICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUZpZWxkUmF3VmFsdWVzLCBAeyRDb25maWdJdGVtRmllbGRSYXdWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtRmllbGRSYXdWYWx1ZXMsICRDb25maWdJdGVtRmllbGRSYXdWYWx1ZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlOwogICAgICAgIGlmIChAQ29uZmlnSXRlbUZpZWxkUmF3VmFsdWVzKSB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRWYWx1ZSA9ICRTZWxmLT5fQ29udmVydENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlc1RvRHluYW1pY0ZpZWxkVmFsdWUoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRUeXBlICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtRmllbGRSYXdWYWx1ZXMgPT4gXEBDb25maWdJdGVtRmllbGRSYXdWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkVmFsdWVzeyAkQWRkaXRpb25hbERGU3RvcmFnZUNvbmZpZy0+e0R5bmFtaWNGaWVsZH0gfSA9ICREeW5hbWljRmllbGRWYWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlRHluYW1pY0ZpZWxkVmFsdWVzOwp9Cgo9aGVhZDIgX1hNTERhdGEyU3RyaW5naWZpZWRYTUxEYXRhKCkKCkNvbnZlcnRzIFhNTCBkYXRhIHN0cnVjdHVyZSB1c2VkIGJ5IEtlcm5lbDo6U3lzdGVtOjpabnVueUhlbHBlcjo6X0lUU01Db25maWdJdGVtVmVyc2lvbkFkZAp0byBzdHJpbmdpZmllZCBYTUxEYXRhICdDUFU6OjEnLiBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSBpbnRlZ3JhdGVkIGludG8gWm51bnk6OklUU00uCgogICAgbXkgJFN0cmluZ2lmaWVkWE1MRGF0YSA9ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0LT5fWE1MRGF0YTJTdHJpbmdpZmllZFhNTERhdGEoCiAgICAgICAgUHJlZml4ICA9PiAkUHJlZml4LAogICAgICAgIFhNTERhdGEgPT4gewogICAgICAgICAgICAnTklDJyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQnICAgID0+ICdOaWNOYW1lMScsCiAgICAgICAgICAgICAgICAgICAgJ0lQb3ZlckRIQ1AnID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQnID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAnSVBBZGRyZXNzJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAnMTIzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgICA9PiAnTmljTmFtZTInLAogICAgICAgICAgICAgICAgICAgICdJUG92ZXJESENQJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAnSVBBZGRyZXNzJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAnNDU2JywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgfQogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN0cmluZ2lmaWVkWE1MRGF0YSA9IHsKICAgICAgICBOSUM6OjEgICAgICAgICAgICAgICAgPT4gJ05pY05hbWUxJywKICAgICAgICBOSUM6OjE6OklQQWRkcmVzczo6MSAgPT4gJzEyMycsCiAgICAgICAgTklDOjoxOjpJUG92ZXJESENQOjoxID0+ICdZZXMnLAogICAgICAgIE5JQzo6MiAgICAgICAgICAgICAgICA9PiAnTmljTmFtZTInLAogICAgICAgIE5JQzo6Mjo6SVBBZGRyZXNzOjoxICA9PiAnNDU2JywKICAgICAgICBOSUM6OjI6OklQb3ZlckRIQ1A6OjEgPT4gJ05vJywKICAgIH07Cgo9Y3V0CgpzdWIgX1hNTERhdGEyU3RyaW5naWZpZWRYTUxEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBpZiAoICEkUGFyYW17WE1MRGF0YX0gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIHBhcmFtZXRlciAnWE1MRGF0YScuIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlWE1MRGF0YSA9ICV7IFN0b3JhYmxlOjpkY2xvbmUoICRQYXJhbXtYTUxEYXRhfSApIH07CiAgICBteSAkRGF0YTsKCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtICggc29ydCBrZXlzICVYTUxEYXRhICkgewogICAgICAgIG5leHQgSVRFTSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkWE1MRGF0YXskSXRlbX0gKTsKCiAgICAgICAgbXkgJENvdW50ZXJJbnNlcnQgPSAxOwogICAgICAgIGZvciBteSAkU3ViSXRlbSAoIEB7ICRYTUxEYXRheyRJdGVtfSB9ICkgewogICAgICAgICAgICBteSAkS2V5ID0gJEl0ZW0gLiAnOjonIC4gJENvdW50ZXJJbnNlcnQ7CiAgICAgICAgICAgIGlmICggJFBhcmFte1ByZWZpeH0gKSB7CiAgICAgICAgICAgICAgICAkS2V5ID0gJFBhcmFte1ByZWZpeH0gLiAnOjonIC4gJEtleTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkU3ViSXRlbS0+e0NvbnRlbnR9ICkgewogICAgICAgICAgICAgICAgJERhdGEtPnskS2V5fSA9ICRTdWJJdGVtLT57Q29udGVudH07CiAgICAgICAgICAgICAgICBkZWxldGUgJFN1Ykl0ZW0tPntDb250ZW50fTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFN1YlhNTERhdGEgPSAkU2VsZi0+X1hNTERhdGEyU3RyaW5naWZpZWRYTUxEYXRhKAogICAgICAgICAgICAgICAgWE1MRGF0YSA9PiAkU3ViSXRlbSwKICAgICAgICAgICAgICAgIFByZWZpeCAgPT4gJEtleSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkU3ViWE1MRGF0YSkgewogICAgICAgICAgICAgICAgJXskRGF0YX0gPSAoCiAgICAgICAgICAgICAgICAgICAgJXskRGF0YX0sCiAgICAgICAgICAgICAgICAgICAgJXskU3ViWE1MRGF0YX0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb3VudGVySW5zZXJ0Kys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkRGF0YTsKfQoKPWhlYWQyIF9Db252ZXJ0Q29uZmlnSXRlbUZpZWxkUmF3VmFsdWVzVG9EeW5hbWljRmllbGRWYWx1ZSgpCgogICAgQ29udmVydHMgZ2l2ZW4gcmF3IHZhbHVlcyAod2hpY2ggaXMgYWx3YXlzIGFuIGFycmF5KSB0byBhIHZhbHVlIHRoYXQgY2FuIGJlIGdpdmVuCiAgICB0byB0aGUgZHluYW1pYyBmaWVsZCBtZXRob2QgVmFsdWVTZXQuCgogICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gJER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1PYmplY3QtPl9Db252ZXJ0Q29uZmlnSXRlbUZpZWxkUmF3VmFsdWVzVG9EeW5hbWljRmllbGRWYWx1ZSgKICAgICAgICBEeW5hbWljRmllbGRUeXBlICAgICAgICAgPT4gJ011bHRpc2VsZWN0JywKICAgICAgICBDb25maWdJdGVtRmllbGRSYXdWYWx1ZXMgPT4gWwogICAgICAgICAgICAjIC4uLgogICAgICAgIF0sCiAgICApOwoKICAgIFJldHVybnMgdmFsdWUgZm9yIGR5bmFtaWMgZmllbGQgbWV0aG9kIFZhbHVlU2V0LgogICAgUmV0dXJucyBub3RoaW5nIGlmIHZhbHVlIGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQuCgo9Y3V0CgpzdWIgX0NvbnZlcnRDb25maWdJdGVtRmllbGRSYXdWYWx1ZXNUb0R5bmFtaWNGaWVsZFZhbHVlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRHluYW1pY0ZpZWxkVHlwZSBDb25maWdJdGVtRmllbGRSYXdWYWx1ZXMpKSB7CiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlcyA9ICRQYXJhbXtDb25maWdJdGVtRmllbGRSYXdWYWx1ZXN9IC8vIFtdOwogICAgcmV0dXJuIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlcyk7CgogICAgbXkgJER5bmFtaWNGaWVsZFR5cGUgPSAkUGFyYW17RHluYW1pY0ZpZWxkVHlwZX07CgogICAgIyBMZWF2ZSBhcnJheXMgYXMgdGhleSBhcmUgZm9yIG11bHRpc2VsZWN0LiBEb24ndCBjaGVjayBwb3NzaWJsZSB2YWx1ZXMgb2YgZHluYW1pYyBmaWVsZCBiZWNhdXNlIGZyb250ZW5kCiAgICAjIGNvdWxkIGhhdmUgY2hhbmdlZCB0aGVtIGFueXdheXMuCiAgICByZXR1cm4gJENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlcyBpZiAkRHluYW1pY0ZpZWxkVHlwZSBlcSAnTXVsdGlzZWxlY3QnOwoKICAgICMgVXNlIGZpcnN0IHZhbHVlIGZvciBkcm9wZG93bi4KICAgIHJldHVybiAkQ29uZmlnSXRlbUZpZWxkUmF3VmFsdWVzLT5bMF0gaWYgJER5bmFtaWNGaWVsZFR5cGUgZXEgJ0Ryb3Bkb3duJzsKCiAgICAjIENvbmNhdGVuYXRlIGZvciB0ZXh0KGFyZWEpLgogICAgaWYgKCAkRHluYW1pY0ZpZWxkVHlwZSA9fiBte1xBVGV4dChBcmVhKT9cen0gKSB7CgogICAgICAgICMgbWFwIGNhbGw6IEF2b2lkIHdhcm5pbmdzIGFib3V0IHVuZGVmaW5lZCB2YWx1ZXMgaW4gYXJyYXkuCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZFZhbHVlID0gam9pbiAnLCAnLCBtYXAgeyAkXyAvLyAnJyB9IEB7JENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlc307CiAgICAgICAgcmV0dXJuICREeW5hbWljRmllbGRWYWx1ZTsKICAgIH0KCiAgICAjIEFkZC9yZW1vdmUgdGltZSBmb3IgRGF0ZShUaW1lKS4KICAgICMgT25seSBjb25zaWRlciBmaXJzdCB2YWx1ZSBmcm9tIGNvbmZpZyBpdGVtcy4KICAgIGlmICggJER5bmFtaWNGaWVsZFR5cGUgPX4gbXtcQURhdGUoVGltZSk/XHp9ICkgewogICAgICAgIG15ICRDb25maWdJdGVtRmllbGRSYXdWYWx1ZSA9ICRDb25maWdJdGVtRmllbGRSYXdWYWx1ZXMtPlswXTsKCiAgICAgICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJENvbmZpZ0l0ZW1GaWVsZFJhd1ZhbHVlLAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgICAgICByZXR1cm4gaWYgISREYXRlVGltZU9iamVjdDsKCiAgICAgICAgcmV0dXJuICREYXRlVGltZU9iamVjdC0+Rm9ybWF0KCBGb3JtYXQgPT4gJyVZLSVtLSVkICVIOiVNOiVTJyApIGlmICREeW5hbWljRmllbGRUeXBlIGVxICdEYXRlVGltZSc7CiAgICAgICAgcmV0dXJuICREYXRlVGltZU9iamVjdC0+Rm9ybWF0KCBGb3JtYXQgPT4gJyVZLSVtLSVkJyApOwogICAgfQoKICAgIHJldHVybjsKfQoKIwojIFRha2VuIGZyb20gWm51bnktUmVwbzogS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyICg4ZTMzNmI4MmNjNGUwMzBmZTQ4Nzc4ZTA0YzAxMWMxMmUwNTIzOTdmKQojCgo9aGVhZDIgX1BhcnNlWE1MMkRhdGEoKQoKdGhpcyBpcyBhIGludGVybmFsIGZ1bmN0aW9uIGZvciBfSVRTTVZlcnNpb25HZXQgdG8gcGFyc2UgdGhlIGFkZGl0aW9uYWwgZGF0YQpzdG9yZWQgaW4gWE1MRGF0YS4KCiAgICBteSAkU3VjY2VzcyA9ICRabnVueUhlbHBlck9iamVjdC0+X1BhcnNlWE1MMkRhdGEoCiAgICAgICAgUGFyZW50ICAgICAgICAgID0+ICRJZGVudGlmaWVyLCAgICAgICAgICAjIG9wdGlvbmFsOiBjb250YWlucyB0aGUgZmllbGQgbmFtZSBvZiB0aGUgcGFyZW50IHhtbAogICAgICAgIFJlc3VsdCAgICAgICAgICA9PiAkUmVzdWx0LCAgICAgICAgICAgICAgIyBjb250YWlucyB0aGUgcmVmZXJlbmNlIHRvIHRoZSByZXN1bHQgaGFzaAogICAgICAgIERhdGEgICAgICAgICAgICA9PiAkRGF0YXskRmllbGR9LT5bMV0sICAgIyBjb250YWlucyB0aGUgeG1sIGhhc2ggd2Ugd2FudCB0byBwYXJzZQogICAgICAgIFhNTERhdGFNdWx0aXBsZSA9PiAxLCAgICAgICAgICAgICAgICAgICAgIyBkZWZhdWx0OiAwLCBUaGlzIG9wdGlvbiB3aWxsIHJldHVybiBhIG1vcmUgY29tcGxleCBYTUxEYXRhIHN0cnVjdHVyZSB3aXRoIG11bHRpcGxlIGVsZW1lbnQgZGF0YSEgTWFrZXMgc2Vuc2UgaWYgeW91IGFyZSB1c2luZyBDb3VudE1pbiwgQ291bnRNYXggZXRjLi4KICAgICk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBfUGFyc2VYTUwyRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZXN1bHQgICAgICAgICAgPSAkUGFyYW17UmVzdWx0fTsKICAgIG15ICRYTUxEYXRhTXVsdGlwbGUgPSAkUGFyYW17WE1MRGF0YU11bHRpcGxlfTsKICAgIG15ICRQYXJlbnQgICAgICAgICAgPSAkUGFyYW17UGFyZW50fSB8fCAnJzsKICAgIG15ICVEYXRhICAgICAgICAgICAgPSAleyAkUGFyYW17RGF0YX0gfHwge30gfTsKCiAgICBGSUVMRDoKICAgIGZvciBteSAkRmllbGQgKCBzb3J0IGtleXMgJURhdGEgKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkRGF0YXskRmllbGR9ICk7CgogICAgICAgIGlmICgkWE1MRGF0YU11bHRpcGxlKSB7CiAgICAgICAgICAgICRSZXN1bHQtPnskRmllbGR9ID0gW107CgogICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiAkI3sgJERhdGF7JEZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgbXkgJFZhbHVlID0gJERhdGF7JEZpZWxkfS0+WyRJbmRleF0tPntDb250ZW50fTsKCiAgICAgICAgICAgICAgICBteSAkQ3VycmVudFJlc3VsdCA9IHt9OwoKICAgICAgICAgICAgICAgICRTZWxmLT5fUGFyc2VYTUwyRGF0YSgKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgUGFyZW50ID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJEN1cnJlbnRSZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgRGF0YSAgID0+ICREYXRheyRGaWVsZH0tPlskSW5kZXhdLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJFZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICRDdXJyZW50UmVzdWx0LT57Q29udGVudH0gPSAkVmFsdWU7CgogICAgICAgICAgICAgICAgICAgIGlmICgga2V5cyAleyRDdXJyZW50UmVzdWx0fSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkUmVzdWx0LT57JEZpZWxkfSB9LCAkQ3VycmVudFJlc3VsdDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREYXRheyRGaWVsZH0tPlsxXS0+e0NvbnRlbnR9OwoKICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAhZGVmaW5lZCAkVmFsdWU7CgogICAgICAgICAgICAkUmVzdWx0LT57JEZpZWxkfSA9ICRWYWx1ZTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/System/DynamicField/Driver/ConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKdXNlIG1ybyAnYzMnOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAopOwoKc3ViIFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9ID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmLT5uZXh0OjptZXRob2QoJVBhcmFtKTsKfQoKc3ViIFZhbHVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9ID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmLT5uZXh0OjptZXRob2QoJVBhcmFtKTsKfQoKc3ViIFZhbHVlVmFsaWRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30gPSAkU2VsZi0+UG9zc2libGVWYWx1ZXNHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGYtPm5leHQ6Om1ldGhvZCglUGFyYW0pOwp9CgpzdWIgU2VhcmNoU1FMR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9ID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmLT5uZXh0OjptZXRob2QoJVBhcmFtKTsKfQoKc3ViIFNlYXJjaFNRTE9yZGVyRmllbGRHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30gPSAkU2VsZi0+UG9zc2libGVWYWx1ZXNHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGYtPm5leHQ6Om1ldGhvZCglUGFyYW0pOwp9CgpzdWIgRWRpdEZpZWxkUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIEluaXRpYWxpemUgc3RvcmFnZSBvZiBhZGRpdGlvbmFsIGR5bmFtaWMgZmllbGRzIGluIGZyb250ZW5kLCBpZiBjb25maWd1cmVkLgogICAgIyBPbmx5IGR5bmFtaWMgZmllbGRzIG9mIG9iamVjdCB0eXBlICdUaWNrZXQnIGFyZSBzdXBwb3J0ZWQgZm9yIHRoaXMuCiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57T2JqZWN0VHlwZX0gZXEgJ1RpY2tldCcgKSB7CiAgICAgICAgbXkgJEFkZGl0aW9uYWxERlN0b3JhZ2VDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntBZGRpdGlvbmFsREZTdG9yYWdlfTsKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkQWRkaXRpb25hbERGU3RvcmFnZUNvbmZpZykgKSB7CiAgICAgICAgICAgIG15IEBBZGRpdGlvbmFsREZTdG9yYWdlQ29uZmlnRm9yRnJvbnRlbmQgPSBncmVwIHsgJF8tPntUeXBlfSBuZSAnQmFja2VuZCcgfQogICAgICAgICAgICAgICAgQHskQWRkaXRpb25hbERGU3RvcmFnZUNvbmZpZ307CgogICAgICAgICAgICBpZiAoQEFkZGl0aW9uYWxERlN0b3JhZ2VDb25maWdGb3JGcm9udGVuZCkgewogICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE5hbWUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e05hbWV9OwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTT25Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICAgICAgICAgIENvZGUgPT4gIlpudW55LkR5bmFtaWNGaWVsZC5Db25maWdJdGVtLkluaXRBZGRpdGlvbmFsREZTdG9yYWdlKCckRHluYW1pY0ZpZWxkTmFtZScpOyIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBFZGl0RmllbGRWYWx1ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBFZGl0RmllbGRWYWx1ZVZhbGlkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9ID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmLT5uZXh0OjptZXRob2QoJVBhcmFtKTsKfQoKc3ViIEZpZWxkVmFsdWVWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBEaXNwbGF5VmFsdWVSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30gPSAkU2VsZi0+UG9zc2libGVWYWx1ZXNHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGYtPm5leHQ6Om1ldGhvZCglUGFyYW0pOwp9CgpzdWIgU2VhcmNoRmllbGRSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30gPSAkU2VsZi0+UG9zc2libGVWYWx1ZXNHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGYtPm5leHQ6Om1ldGhvZCglUGFyYW0pOwp9CgpzdWIgU2VhcmNoRmllbGRWYWx1ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBTZWFyY2hGaWVsZFBhcmFtZXRlckJ1aWxkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9ID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmLT5uZXh0OjptZXRob2QoJVBhcmFtKTsKfQoKc3ViIFN0YXRzRmllbGRQYXJhbWV0ZXJCdWlsZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBTdGF0c1NlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30gPSAkU2VsZi0+UG9zc2libGVWYWx1ZXNHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGYtPm5leHQ6Om1ldGhvZCglUGFyYW0pOwp9CgpzdWIgUmVhZGFibGVWYWx1ZVJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBUZW1wbGF0ZVZhbHVlVHlwZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBSYW5kb21WYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBPYmplY3RNYXRjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBIaXN0b3JpY2FsVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9ID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmLT5uZXh0OjptZXRob2QoJVBhcmFtKTsKfQoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntDb25maWd9LT57UG9zc2libGVWYWx1ZXN9ID0gJFNlbGYtPlBvc3NpYmxlVmFsdWVzR2V0KCVQYXJhbSk7CgogICAgcmV0dXJuICRTZWxmLT5uZXh0OjptZXRob2QoJVBhcmFtKTsKfQoKc3ViIEJ1aWxkU2VsZWN0aW9uRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e1Bvc3NpYmxlVmFsdWVzfSA9ICRTZWxmLT5Qb3NzaWJsZVZhbHVlc0dldCglUGFyYW0pOwoKICAgIHJldHVybiAkU2VsZi0+bmV4dDo6bWV0aG9kKCVQYXJhbSk7Cn0KCnN1YiBDb2x1bW5GaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e0NvbmZpZ30tPntQb3NzaWJsZVZhbHVlc30gPSAkU2VsZi0+UG9zc2libGVWYWx1ZXNHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJFNlbGYtPm5leHQ6Om1ldGhvZCglUGFyYW0pOwp9CgpzdWIgUG9zc2libGVWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgQWRkIGVtcHR5IHZhbHVlLCBub25lIG9mIHRoZSBjb25maWcgaXRlbSBmaWVsZHMgY2FuIGhhdmUgYSBkZWZhdWx0IG9yIHByZS1zZWxlY3RlZCB2YWx1ZQogICAgIyBiZWNhdXNlIHRoZSBzZWxlY3RhYmxlIHZhbHVlcyBtYXkgY2hhbmdlIGRlcGVuZGluZyBvbiBkZXBsb3ltZW50IHN0YXRlLgogICAgbXkgJVBvc3NpYmxlVmFsdWVzID0gKAogICAgICAgICcnID0+ICctJywKICAgICk7CgogICAgbXkgJENsYXNzID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntDb25maWd9LT57Q29uZmlnSXRlbUNsYXNzfTsKICAgIHJldHVybiBcJVBvc3NpYmxlVmFsdWVzIGlmICEkQ2xhc3M7CgogICAgIyBjaGVjayBhbGwgQ0kgY2xhc3NlcwogICAgbXkgJEhhc2hSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwogICAgbXkgJUNsYXNzZXMgPSByZXZlcnNlICV7ICRIYXNoUmVmIHx8IHt9IH07CiAgICByZXR1cm4gXCVQb3NzaWJsZVZhbHVlcyBpZiAhJENsYXNzZXN7JENsYXNzfTsKCiAgICBteSAkQ29uZmlnSXRlbUxpc3RSZWYgPSBbXTsKCiAgICAjIGxpbWl0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zIHRvIHRob3NlIHdoaWNoIGhhdmUgb25lIG9mIHRoZSBjb25maWd1cmVkCiAgICAjIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbFN0YXRlcyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57Q29uZmlnfS0+e0RlcGxTdGF0ZXN9IC8vIFtdOwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJERlcGxTdGF0ZXMpICkgewogICAgICAgIG15ICREZXBsU3RhdGVOYW1lQnlJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CiAgICAgICAgbXkgJURlcGxTdGF0ZUlEQnlOYW1lID0gcmV2ZXJzZSAleyREZXBsU3RhdGVOYW1lQnlJRH07CgogICAgICAgIG15ICVEZXBsU3RhdGVzICAgPSBtYXAgIHsgJF8gPT4gMSB9IEB7JERlcGxTdGF0ZXN9OwogICAgICAgIG15IEBEZXBsU3RhdGVJRHMgPSBncmVwIHsgZGVmaW5lZCAkXyB9CiAgICAgICAgICAgIG1hcCB7ICREZXBsU3RhdGVJREJ5TmFtZXskX30gfQogICAgICAgICAgICBrZXlzICVEZXBsU3RhdGVzOwoKICAgICAgICBteSAkQ29uZmlnSXRlbUlEcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ2xhc3Nlc3skQ2xhc3N9LCBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gXEBEZXBsU3RhdGVJRHMsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyRDb25maWdJdGVtSURzfSApIHsKICAgICAgICAgICAgbXkgJExhc3RWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAeyRDb25maWdJdGVtTGlzdFJlZn0sICRMYXN0VmVyc2lvbjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGdldCBhbGwgY29uZmlnIGl0ZW1zIG9mIHRoYXQgY2xhc3MKICAgICAgICAkQ29uZmlnSXRlbUxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVJlc3VsdExpc3QoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzZXN7JENsYXNzfSwKICAgICAgICAgICAgU3RhcnQgICA9PiAwLAogICAgICAgICAgICBMaW1pdCAgID0+IDFfMDAwXzAwMCwKICAgICAgICApOwogICAgfQoKICAgIENPTkZJR0lURU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW0gKCBAeyAkQ29uZmlnSXRlbUxpc3RSZWYgfHwge30gfSApIHsKICAgICAgICAkUG9zc2libGVWYWx1ZXN7ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSB9ID0gJENvbmZpZ0l0ZW0tPntOYW1lfTsKICAgIH0KCiAgICByZXR1cm4gXCVQb3NzaWJsZVZhbHVlczsKfQoKMTsK</File>
        <File Permission="660" Location="Kernel/System/DynamicField/Driver/ConfigItemDropdown.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtRHJvcGRvd247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtCiAgICBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OkRyb3Bkb3duCik7CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/DynamicField/Driver/ConfigItemMultiselect.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtTXVsdGlzZWxlY3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtCiAgICBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6Ok11bHRpc2VsZWN0Cik7CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ImportExport/ObjectBackend/ITSMConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsICAgICAgICAgICAgICAgICAgICBxdyhtaW4pOwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgcXcoVHJhbnNsYXRhYmxlKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbSAtIGltcG9ydC9leHBvcnQgYmFja2VuZCBmb3IgSVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGZ1bmN0aW9ucyB0byBpbXBvcnQgYW5kIGV4cG9ydCBJVFNNIGNvbmZpZyBpdGVtcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydDo6T2JqZWN0QmFja2VuZDo6SVRTTUNvbmZpZ0l0ZW0nKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgT2JqZWN0QXR0cmlidXRlc0dldCgpCgpnZXQgdGhlIG9iamVjdCBhdHRyaWJ1dGVzIG9mIGFuIG9iamVjdCBhcyBhIHJlZiB0byBhbiBhcnJheSBvZiBoYXNoIHJlZmVyZW5jZXMKCiAgICBteSAkQXR0cmlidXRlcyA9ICRPYmplY3RCYWNrZW5kLT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RBdHRyaWJ1dGVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgb2JqZWN0CiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKSB8fCB7fTsKCiAgICBteSAkQXR0cmlidXRlcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdDbGFzc0lEJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdDbGFzcycpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCcpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgVmFsdWVEZWZhdWx0ID0+ICcxMCcsCiAgICAgICAgICAgICAgICBSZXF1aXJlZCAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFJlZ2V4ICAgICAgICA9PiBxcnsgXEEgXGQrIFx6IH14bXMsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoICAgID0+IDUsCiAgICAgICAgICAgICAgICBEYXRhVHlwZSAgICAgPT4gJ0ludGVnZXJCaWdnZXJUaGFuWmVybycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzJywKICAgICAgICAgICAgTmFtZSAgPT4gVHJhbnNsYXRhYmxlKCdFbXB0eSBmaWVsZHMgaW5kaWNhdGUgdGhhdCB0aGUgY3VycmVudCB2YWx1ZXMgYXJlIGtlcHQnKSwKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ2hlY2tib3gnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICBdOwoKICAgIHJldHVybiAkQXR0cmlidXRlczsKfQoKPWhlYWQyIE1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkKCmdldCB0aGUgbWFwcGluZyBhdHRyaWJ1dGVzIG9mIGFuIG9iamVjdCBhcyBhcnJheS9oYXNoIHJlZmVyZW5jZQoKICAgIG15ICRBdHRyaWJ1dGVzID0gJE9iamVjdEJhY2tlbmQtPk1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVGVtcGxhdGVJRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IG9iamVjdCBkYXRhCiAgICBteSAkT2JqZWN0RGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnKS0+T2JqZWN0RGF0YUdldCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gW10gaWYgISRPYmplY3REYXRhOwogICAgcmV0dXJuIFtdIGlmIHJlZiAkT2JqZWN0RGF0YSBuZSAnSEFTSCc7CiAgICByZXR1cm4gW10gaWYgISRPYmplY3REYXRhLT57Q2xhc3NJRH07CgogICAgIyBnZXQgZGVmaW5pdGlvbgogICAgbXkgJFhNTERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRPYmplY3REYXRhLT57Q2xhc3NJRH0sCiAgICApOwoKICAgIHJldHVybiBbXSBpZiAhJFhNTERlZmluaXRpb247CiAgICByZXR1cm4gW10gaWYgcmVmICRYTUxEZWZpbml0aW9uIG5lICdIQVNIJzsKICAgIHJldHVybiBbXSBpZiAhJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKICAgIHJldHVybiBbXSBpZiByZWYgJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSBuZSAnQVJSQVknOwoKICAgIG15ICRFbGVtZW50TGlzdCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnTmFtZScpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdEZXBsb3ltZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0luY2lkZW50IFN0YXRlJyksCiAgICAgICAgfSwKICAgIF07CgogICAgIyBhZGQgeG1sIGVsZW1lbnRzCiAgICAkU2VsZi0+X01hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICAgICBFbGVtZW50TGlzdCAgID0+ICRFbGVtZW50TGlzdCwKICAgICAgICBDb3VudE1heExpbWl0ID0+ICRPYmplY3REYXRhLT57Q291bnRNYXh9IHx8IDEwLAogICAgKTsKCiAgICBteSAkQXR0cmlidXRlcyA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdLZXknLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0tleScpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJEVsZW1lbnRMaXN0LAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnSWRlbnRpZmllcicsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnSWRlbnRpZmllcicpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIF07CgogICAgcmV0dXJuICRBdHRyaWJ1dGVzOwp9Cgo9aGVhZDIgU2VhcmNoQXR0cmlidXRlc0dldCgpCgpnZXQgdGhlIHNlYXJjaCBvYmplY3QgYXR0cmlidXRlcyBvZiBhbiBvYmplY3QgYXMgYXJyYXkvaGFzaCByZWZlcmVuY2UKCiAgICBteSAkQXR0cmlidXRlTGlzdCA9ICRPYmplY3RCYWNrZW5kLT5TZWFyY2hBdHRyaWJ1dGVzR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoQXR0cmlidXRlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUZW1wbGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgb2JqZWN0IGRhdGEKICAgIG15ICRPYmplY3REYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5PYmplY3REYXRhR2V0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiBbXSBpZiAhJE9iamVjdERhdGE7CiAgICByZXR1cm4gW10gaWYgcmVmICRPYmplY3REYXRhIG5lICdIQVNIJzsKICAgIHJldHVybiBbXSBpZiAhJE9iamVjdERhdGEtPntDbGFzc0lEfTsKCiAgICAjIGdldCBkZWZpbml0aW9uCiAgICBteSAkWE1MRGVmaW5pdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJE9iamVjdERhdGEtPntDbGFzc0lEfSwKICAgICk7CgogICAgcmV0dXJuIFtdIGlmICEkWE1MRGVmaW5pdGlvbjsKICAgIHJldHVybiBbXSBpZiByZWYgJFhNTERlZmluaXRpb24gbmUgJ0hBU0gnOwogICAgcmV0dXJuIFtdIGlmICEkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwogICAgcmV0dXJuIFtdIGlmIHJlZiAkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9IG5lICdBUlJBWSc7CgogICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICkgfHwge307CgogICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgKSB8fCB7fTsKCiAgICBteSAkQXR0cmlidXRlTGlzdCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ051bWJlcicpLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDgwLAogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDI1NSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ05hbWUnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ05hbWUnKSwKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiA4MCwKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAyNTUsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICBOYW1lICA9PiBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKSwKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIE5hbWUgID0+IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKSwKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKCiAgICAjIGFkZCB4bWwgYXR0cmlidXRlcwogICAgJFNlbGYtPl9TZWFyY2hBdHRyaWJ1dGVzR2V0KAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICAgICBBdHRyaWJ1dGVMaXN0ID0+ICRBdHRyaWJ1dGVMaXN0LAogICAgKTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZUxpc3Q7Cn0KCj1oZWFkMiBFeHBvcnREYXRhR2V0KCkKCmdldCBleHBvcnQgZGF0YSBhcyBDPDJELWFycmF5LWhhc2g+IHJlZmVyZW5jZQoKICAgIG15ICRFeHBvcnREYXRhID0gJE9iamVjdEJhY2tlbmQtPkV4cG9ydERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnREYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFRlbXBsYXRlSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBvYmplY3QgZGF0YQogICAgbXkgJE9iamVjdERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBvYmplY3QgZGF0YQogICAgaWYgKCAhJE9iamVjdERhdGEgfHwgcmVmICRPYmplY3REYXRhIG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIG9iamVjdCBkYXRhIGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiBpZiAhJENsYXNzTGlzdCB8fCByZWYgJENsYXNzTGlzdCBuZSAnSEFTSCc7CgogICAgIyBjaGVjayB0aGUgY2xhc3MgaWQKICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIGNsYXNzIGlkIGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB0aGUgbWFwcGluZyBsaXN0CiAgICBteSAkTWFwcGluZ0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPk1hcHBpbmdMaXN0KAogICAgICAgIFRlbXBsYXRlSUQgPT4gJFBhcmFte1RlbXBsYXRlSUR9LAogICAgICAgIFVzZXJJRCAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgdGhlIG1hcHBpbmcgbGlzdAogICAgaWYgKCAhJE1hcHBpbmdMaXN0IHx8IHJlZiAkTWFwcGluZ0xpc3QgbmUgJ0FSUkFZJyB8fCAhQHskTWFwcGluZ0xpc3R9ICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHZhbGlkIG1hcHBpbmcgbGlzdCBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICRQYXJhbXtUZW1wbGF0ZUlEfSIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgdGhlIG1hcHBpbmcgb2JqZWN0IGxpc3QKICAgIG15IEBNYXBwaW5nT2JqZWN0TGlzdDsKICAgIGZvciBteSAkTWFwcGluZ0lEICggQHskTWFwcGluZ0xpc3R9ICkgewoKICAgICAgICAjIGdldCBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICAgICAgbXkgJE1hcHBpbmdPYmplY3REYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5NYXBwaW5nT2JqZWN0RGF0YUdldCgKICAgICAgICAgICAgTWFwcGluZ0lEID0+ICRNYXBwaW5nSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIG1hcHBpbmcgb2JqZWN0IGRhdGEKICAgICAgICBpZiAoICEkTWFwcGluZ09iamVjdERhdGEgfHwgcmVmICRNYXBwaW5nT2JqZWN0RGF0YSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gdmFsaWQgbWFwcGluZyBsaXN0IGZvdW5kIGZvciB0aGUgdGVtcGxhdGUgaWQgJFBhcmFte1RlbXBsYXRlSUR9IiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBATWFwcGluZ09iamVjdExpc3QsICRNYXBwaW5nT2JqZWN0RGF0YTsKICAgIH0KCiAgICAjIGdldCBzZWFyY2ggZGF0YQogICAgbXkgJFNlYXJjaERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPlNlYXJjaERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkU2VhcmNoRGF0YSB8fCByZWYgJFNlYXJjaERhdGEgbmUgJ0hBU0gnOwoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgY2hlY2sgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICBpZiAoICEkRGVwbFN0YXRlTGlzdCB8fCByZWYgJERlcGxTdGF0ZUxpc3QgbmUgJ0hBU0gnICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGdldCB0aGUgZ2VuZXJhbCBjYXRhbG9nIGxpc3QgSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgKTsKCiAgICAjIGNoZWNrIGluY2lkZW50IHN0YXRlIGxpc3QKICAgIGlmICggISRJbmNpU3RhdGVMaXN0IHx8IHJlZiAkSW5jaVN0YXRlTGlzdCBuZSAnSEFTSCcgKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBkZWZpbml0aW9uIG9mIHRoaXMgY2xhc3MKICAgIG15ICREZWZpbml0aW9uRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJE9iamVjdERhdGEtPntDbGFzc0lEfSwKICAgICAgICBVc2VySUQgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAlU2VhcmNoUGFyYW1zOwoKICAgICMgYWRkIG51bWJlciB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCAkU2VhcmNoRGF0YS0+e051bWJlcn0gKSB7CiAgICAgICAgJFNlYXJjaFBhcmFtc3tOdW1iZXJ9ID0gZGVsZXRlICRTZWFyY2hEYXRhLT57TnVtYmVyfTsKICAgIH0KCiAgICAjIGFkZCBuYW1lIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICBpZiAoICRTZWFyY2hEYXRhLT57TmFtZX0gKSB7CiAgICAgICAgJFNlYXJjaFBhcmFtc3tOYW1lfSA9IGRlbGV0ZSAkU2VhcmNoRGF0YS0+e05hbWV9OwogICAgfQoKICAgICMgYWRkIGRlcGxveW1lbnQgc3RhdGUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgIGlmICggJFNlYXJjaERhdGEtPntEZXBsU3RhdGVJRHN9ICkgewogICAgICAgIG15IEBEZXBsU3RhdGVJRHMgPSBzcGxpdCAnIyMjIyMnLCAkU2VhcmNoRGF0YS0+e0RlcGxTdGF0ZUlEc307CiAgICAgICAgJFNlYXJjaFBhcmFtc3tEZXBsU3RhdGVJRHN9ID0gXEBEZXBsU3RhdGVJRHM7CiAgICAgICAgZGVsZXRlICRTZWFyY2hEYXRhLT57RGVwbFN0YXRlSURzfTsKICAgIH0KCiAgICAjIGFkZCBpbmNpZGVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgaWYgKCAkU2VhcmNoRGF0YS0+e0luY2lTdGF0ZUlEc30gKSB7CiAgICAgICAgbXkgQEluY2lTdGF0ZUlEcyA9IHNwbGl0ICcjIyMjIycsICRTZWFyY2hEYXRhLT57SW5jaVN0YXRlSURzfTsKICAgICAgICAkU2VhcmNoUGFyYW1ze0luY2lTdGF0ZUlEc30gPSBcQEluY2lTdGF0ZUlEczsKICAgICAgICBkZWxldGUgJFNlYXJjaERhdGEtPntJbmNpU3RhdGVJRHN9OwogICAgfQoKICAgICMgYWRkIGFsbCBYTUwgZGF0YSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgbXkgQFNlYXJjaFBhcmFtc1doYXQ7CiAgICAkU2VsZi0+X0V4cG9ydFhNTFNlYXJjaERhdGFQcmVwYXJlKAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJERlZmluaXRpb25EYXRhLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgV2hhdCAgICAgICAgICA9PiBcQFNlYXJjaFBhcmFtc1doYXQsCiAgICAgICAgU2VhcmNoRGF0YSAgICA9PiAkU2VhcmNoRGF0YSwKICAgICk7CgogICAgIyBhZGQgWE1MIHNlYXJjaCBwYXJhbXMgdG8gdGhlIHNlYXJjaCBoYXNoCiAgICBpZiAoQFNlYXJjaFBhcmFtc1doYXQpIHsKICAgICAgICAkU2VhcmNoUGFyYW1ze1doYXR9ID0gXEBTZWFyY2hQYXJhbXNXaGF0OwogICAgfQoKICAgICMgc2VhcmNoIHRoZSBjb25maWcgaXRlbXMKICAgIG15ICRDb25maWdJdGVtTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoCiAgICAgICAgJVNlYXJjaFBhcmFtcywKICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9IF0sCiAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDAsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSBARXhwb3J0RGF0YTsKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUxpc3R9ICkgewoKICAgICAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgICAgICBteSAkVmVyc2lvbkRhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRWZXJzaW9uRGF0YTsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiByZWYgJFZlcnNpb25EYXRhIG5lICdIQVNIJzsKCiAgICAgICAgIyB0cmFuc2xhdGUgeG1sZGF0YSB0byBhIDJkIGhhc2gKICAgICAgICBteSAlWE1MRGF0YTJEOwogICAgICAgICRTZWxmLT5fRXhwb3J0WE1MRGF0YVByZXBhcmUoCiAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJERlZmluaXRpb25EYXRhLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4gJFZlcnNpb25EYXRhLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259LT5bMV0sCiAgICAgICAgICAgIFhNTERhdGEyRCAgICAgPT4gXCVYTUxEYXRhMkQsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgZGF0YSB0byB0aGUgZXhwb3J0IGRhdGEgYXJyYXkKICAgICAgICBteSBASXRlbTsKICAgICAgICBNQVBQSU5HT0JKRUNUOgogICAgICAgIGZvciBteSAkTWFwcGluZ09iamVjdCAoQE1hcHBpbmdPYmplY3RMaXN0KSB7CgogICAgICAgICAgICAjIGV4dHJhY3Qga2V5CiAgICAgICAgICAgIG15ICRLZXkgPSAkTWFwcGluZ09iamVjdC0+e0tleX07CgogICAgICAgICAgICAjIGhhbmRsZSBlbXB0eSBrZXkKICAgICAgICAgICAgaWYgKCAhJEtleSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQEl0ZW0sICcnOwogICAgICAgICAgICAgICAgbmV4dCBNQVBQSU5HT0JKRUNUOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGhhbmRsZSBjb25maWcgaXRlbSBudW1iZXIKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgcHVzaCBASXRlbSwgJFZlcnNpb25EYXRhLT57TnVtYmVyfTsKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgY3VycmVudCBjb25maWcgaXRlbSBuYW1lCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnTmFtZScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtLCAkVmVyc2lvbkRhdGEtPntOYW1lfTsKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgZGVwbG95bWVudCBzdGF0ZQogICAgICAgICAgICBpZiAoICRLZXkgZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVmVyc2lvbkRhdGEtPntEZXBsU3RhdGVJRH0gfHw9ICdEVU1NWSc7CiAgICAgICAgICAgICAgICBwdXNoIEBJdGVtLCAkRGVwbFN0YXRlTGlzdC0+eyAkVmVyc2lvbkRhdGEtPntEZXBsU3RhdGVJRH0gfTsKICAgICAgICAgICAgICAgIG5leHQgTUFQUElOR09CSkVDVDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBoYW5kbGUgaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57SW5jaVN0YXRlSUR9IHx8PSAnRFVNTVknOwogICAgICAgICAgICAgICAgcHVzaCBASXRlbSwgJEluY2lTdGF0ZUxpc3QtPnsgJFZlcnNpb25EYXRhLT57SW5jaVN0YXRlSUR9IH07CiAgICAgICAgICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1Q7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaGFuZGxlIGFsbCBYTUwgZGF0YSBlbGVtZW50cwogICAgICAgICAgICBwdXNoIEBJdGVtLCAkWE1MRGF0YTJEeyRLZXl9OwogICAgICAgIH0KCiAgICAgICAgcHVzaCBARXhwb3J0RGF0YSwgXEBJdGVtOwogICAgfQoKICAgIHJldHVybiBcQEV4cG9ydERhdGE7Cn0KCj1oZWFkMiBJbXBvcnREYXRhU2F2ZSgpCgppbXBvcnRzIGEgc2luZ2xlIGVudGl0eSBvZiB0aGUgaW1wb3J0IGRhdGEuIFRoZSBDPFRlbXBsYXRlSUQ+IHBvaW50cyB0byB0aGUgZGVmaW5pdGlvbgpvZiB0aGUgY3VycmVudCBpbXBvcnQuIEM8SW1wb3J0RGF0YVJvdz4gaG9sZHMgdGhlIGRhdGEuIEM8Q291bnRlcj4gaXMgb25seSB1c2VkIGluCmVycm9yIG1lc3NhZ2VzLCBmb3IgaW5kaWNhdGluZyB3aGljaCBpdGVtIHdhcyBub3QgaW1wb3J0ZWQgc3VjY2Vzc2Z1bGx5LgoKVGhlIGN1cnJlbnQgdmVyc2lvbiBvZiB0aGUgY29uZmlnIGl0ZW0gd2lsbCBuZXZlciBiZSBkZWxldGVkLiBXaGVuIHRoZXJlIGFyZSBubwpjaGFuZ2VzIGluIHRoZSBkYXRhLCB0aGUgaW1wb3J0IHdpbGwgYmUgc2tpcHBlZC4gV2hlbiB0aGVyZSBpcyBuZXcgb3IgY2hhbmdlZCBkYXRhLAp0aGVuIGEgbmV3IGNvbmZpZyBpdGVtIG9yIGEgbmV3IHZlcnNpb24gaXMgY3JlYXRlZC4KCkluIHRoZSBjYXNlIG9mIGNoYW5nZWQgZGF0YSwgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBjb25maWcgaXRlbSB3aWxsIGNvbnRhaW4gdGhlCmF0dHJpYnV0ZXMgb2YgdGhlIEM8SW1wb3J0RGF0YVJvdz4gcGx1cyB0aGUgb2xkIGF0dHJpYnV0ZXMgdGhhdCBhcmUKbm90IHBhcnQgb2YgdGhlIGltcG9ydCBkZWZpbml0aW9uLgpUaHVzIEltcG9ydERhdGFTYXZlKCkgZ3VhcmFudGVlcyB0byBub3Qgb3ZlcndyaXRlIHVuZGVjbGFyZWQgYXR0cmlidXRlcy4KClRoZSBiZWhhdmlvciB3aGVuIGltcG9ydGVkIGF0dHJpYnV0ZXMgYXJlIGVtcHR5IGRlcGVuZHMgb24gdGhlIHNldHRpbmcgaW4gdGhlIG9iamVjdCBkYXRhLgpXaGVuIEM8RW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcz4gaXMgbm90IHNldCwgdGhlbiBlbXB0eSB2YWx1ZXMgd2lsbCB3aXBlIG91dAp0aGUgb2xkIGRhdGEuIFRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IuIFdoZW4gQzxFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzPiBpcyBzZXQsCnRoZW4gZW1wdHkgdmFsdWVzIHdpbGwgbGVhdmUgdGhlIG9sZCB2YWx1ZXMuCgpUaGUgZGVjaXNpb24gd2hhdCBjb25zdGl0dXRlIGFuIGVtcHR5IHZhbHVlIGlzIGEgYml0IGhhaXJ5LgpIZXJlIGFyZSB0aGUgcnVsZXMuCkZpZWxkcyB0aGF0IGFyZSBub3QgZXZlbiBtZW50aW9uZWQgaW4gdGhlIEltcG9ydCBkZWZpbml0aW9uIGFyZSBlbXB0eS4gVGhlc2UgYXJlIHRoZSAnbm90IGRlZmluZWQnIGZpZWxkcy4KRW1wdHkgc3RyaW5ncyBhbmQgdW5kZWZpbmVkIHZhbHVlcyBjb25zdGl0dXRlIGVtcHR5IGZpZWxkcy4KRmllbGRzIHdpdGggd2l0aCBvbmx5IG9uZSBvciBtb3JlIHdoaXRlc3BhY2UgY2hhcmFjdGVycyBhcmUgbm90IGVtcHR5LgpGaWVsZHMgd2l0aCB0aGUgZGlnaXQgJzAnIGFyZSBub3QgZW1wdHkuCgogICAgbXkgKCAkQ29uZmlnSXRlbUlELCAkUmV0Q29kZSApID0gJE9iamVjdEJhY2tlbmQtPkltcG9ydERhdGFTYXZlKAogICAgICAgIFRlbXBsYXRlSUQgICAgPT4gMTIzLAogICAgICAgIEltcG9ydERhdGFSb3cgPT4gJEFycmF5UmVmLAogICAgICAgIENvdW50ZXIgICAgICAgPT4gMzY3LAogICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICk7CgpBbiBlbXB0eSBDPENvbmZpZ0l0ZW1JRD4gaW5kaWNhdGVzIGZhaWx1cmUuIE90aGVyd2lzZSBpdCBpbmRpY2F0ZXMgdGhlCmxvY2F0aW9uIG9mIHRoZSBpbXBvcnRlZCBkYXRhLgpDPFJldENvZGU+IGlzIGVpdGhlciAnQ3JlYXRlZCcsICdVcGRhdGVkJyBvciAnU2tpcHBlZCcuICdDcmVhdGVkJyBtZWFucyB0aGF0IGEgbmV3CmNvbmZpZyBpdGVtIGhhcyBiZWVuIGNyZWF0ZWQuICdVcGRhdGVkJyBtZWFucyB0aGF0IGEgbmV3IHZlcnNpb24gaGFzIGJlZW4gYWRkZWQgdG8KYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0uICdTa2lwcGVkJyBtZWFucyB0aGF0IG5vIG5ldyB2ZXJzaW9uIGhhcyBiZWVuIGNyZWF0ZWQsCmFzIHRoZSBuZXcgZGF0YSBpcyBpZGVudGljYWwgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGFuIGV4aXN0aW5nIGNvbmZpZyBpdGVtLgoKTm8gY29kZXMgaGF2ZSB5ZXQgYmVlbiBkZWZpbmVkIGZvciB0aGUgZmFpbHVyZSBjYXNlLgoKPWN1dAoKc3ViIEltcG9ydERhdGFTYXZlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFRlbXBsYXRlSUQgSW1wb3J0RGF0YVJvdyBDb3VudGVyIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpbXBvcnQgZGF0YSByb3cKICAgIGlmICggcmVmICRQYXJhbXtJbXBvcnREYXRhUm93fSBuZSAnQVJSQVknICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJJbXBvcnREYXRhUm93IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBvYmplY3QgZGF0YQogICAgbXkgJE9iamVjdERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPk9iamVjdERhdGFHZXQoCiAgICAgICAgVGVtcGxhdGVJRCA9PiAkUGFyYW17VGVtcGxhdGVJRH0sCiAgICAgICAgVXNlcklEICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjaGVjayBvYmplY3QgZGF0YQogICAgaWYgKCAhJE9iamVjdERhdGEgfHwgcmVmICRPYmplY3REYXRhIG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiTm8gb2JqZWN0IGRhdGEgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPSAkT2JqZWN0RGF0YS0+e0VtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXN9OwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBsaXN0CiAgICBpZiAoICEkQ2xhc3NMaXN0IHx8IHJlZiAkQ2xhc3NMaXN0IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiQ2FuJ3QgZ2V0IHRoZSBnZW5lcmFsIGNhdGFsb2cgbGlzdCBJVFNNOjpDb25maWdJdGVtOjpDbGFzcyIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayB0aGUgY2xhc3MgaWQKICAgIGlmICggISRPYmplY3REYXRhLT57Q2xhc3NJRH0gfHwgISRDbGFzc0xpc3QtPnsgJE9iamVjdERhdGEtPntDbGFzc0lEfSB9ICkgewoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiTm8gY2xhc3MgZm91bmQgZm9yIHRoZSB0ZW1wbGF0ZSBpZCAnJFBhcmFte1RlbXBsYXRlSUR9JyIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdGhlIG1hcHBpbmcgbGlzdAogICAgbXkgJE1hcHBpbmdMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpLT5NYXBwaW5nTGlzdCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRQYXJhbXtUZW1wbGF0ZUlEfSwKICAgICAgICBVc2VySUQgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGNoZWNrIHRoZSBtYXBwaW5nIGxpc3QKICAgIGlmICggISRNYXBwaW5nTGlzdCB8fCByZWYgJE1hcHBpbmdMaXN0IG5lICdBUlJBWScgfHwgIUB7JE1hcHBpbmdMaXN0fSApIHsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgIC4gIk5vIHZhbGlkIG1hcHBpbmcgbGlzdCBmb3VuZCBmb3IgdGhlIHRlbXBsYXRlIGlkICckUGFyYW17VGVtcGxhdGVJRH0nIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSB0aGUgbWFwcGluZyBvYmplY3QgbGlzdAogICAgbXkgQE1hcHBpbmdPYmplY3RMaXN0OwogICAgZm9yIG15ICRNYXBwaW5nSUQgKCBAeyRNYXBwaW5nTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IG1hcHBpbmcgb2JqZWN0IGRhdGEKICAgICAgICBteSAkTWFwcGluZ09iamVjdERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0JyktPk1hcHBpbmdPYmplY3REYXRhR2V0KAogICAgICAgICAgICBNYXBwaW5nSUQgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgVXNlcklEICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgIGlmICggISRNYXBwaW5nT2JqZWN0RGF0YSB8fCByZWYgJE1hcHBpbmdPYmplY3REYXRhIG5lICdIQVNIJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgLiAiTm8gbWFwcGluZyBvYmplY3QgZGF0YSBmb3VuZCBmb3IgdGhlIG1hcHBpbmcgaWQgJyRNYXBwaW5nSUQnIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcHVzaCBATWFwcGluZ09iamVjdExpc3QsICRNYXBwaW5nT2JqZWN0RGF0YTsKICAgIH0KCiAgICAjIGNoZWNrIGFuZCByZW1lbWJlciB0aGUgSWRlbnRpZmllcnMKICAgICMgdGhlIElkZW50aWZpZXJzIGlkZW50aWZ5IHRoZSBjb25maWcgaXRlbSB0aGF0IHNob3VsZCBiZSB1cGRhdGVkCiAgICBteSAlSWRlbnRpZmllcjsKICAgIG15ICRSb3dJbmRleCA9IDA7CiAgICBNQVBQSU5HT0JKRUNUREFUQToKICAgIGZvciBteSAkTWFwcGluZ09iamVjdERhdGEgKEBNYXBwaW5nT2JqZWN0TGlzdCkgewoKICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1REQVRBIGlmICEkTWFwcGluZ09iamVjdERhdGEtPntJZGVudGlmaWVyfTsKCiAgICAgICAgIyBjaGVjayBpZiBpZGVudGlmaWVyIGFscmVhZHkgZXhpc3RzCiAgICAgICAgaWYgKCAkSWRlbnRpZmllcnsgJE1hcHBpbmdPYmplY3REYXRhLT57S2V5fSB9ICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICInJE1hcHBpbmdPYmplY3REYXRhLT57S2V5fScgaGFzIGJlZW4gdXNlZCBtdWx0aXBsZSB0aW1lcyBhcyBhbiBpZGVudGlmaWVyIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgaWRlbnRpZmllciB2YWx1ZQogICAgICAgICRJZGVudGlmaWVyeyAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9IH0gPSAkUGFyYW17SW1wb3J0RGF0YVJvd30tPlskUm93SW5kZXhdOwoKICAgICAgICBuZXh0IE1BUFBJTkdPQkpFQ1REQVRBIGlmICRNYXBwaW5nT2JqZWN0RGF0YS0+e0tleX0gJiYgJFBhcmFte0ltcG9ydERhdGFSb3d9LT5bJFJvd0luZGV4XTsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgIC4gIklkZW50aWZpZXIgZmllbGQgaXMgZW1wdHkiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KICAgIGNvbnRpbnVlIHsKICAgICAgICAkUm93SW5kZXgrKzsKICAgIH0KCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIGNoZWNrIGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QgfHwgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJyApIHsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgIC4gIkNhbid0IGdldCB0aGUgZ2VuZXJhbCBjYXRhbG9nIGxpc3QgSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyByZXZlcnNlIHRoZSBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICVEZXBsU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskRGVwbFN0YXRlTGlzdH07CgogICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgKTsKCiAgICAjIGNoZWNrIGluY2lkZW50IHN0YXRlIGxpc3QKICAgIGlmICggISRJbmNpU3RhdGVMaXN0IHx8IHJlZiAkSW5jaVN0YXRlTGlzdCBuZSAnSEFTSCcgKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJDYW4ndCBnZXQgdGhlIGdlbmVyYWwgY2F0YWxvZyBsaXN0IElUU006OkNvcmU6OkluY2lkZW50U3RhdGUiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcmV2ZXJzZSB0aGUgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgbXkgJUluY2lTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRJbmNpU3RhdGVMaXN0fTsKCiAgICAjIGdldCBjdXJyZW50IGRlZmluaXRpb24gb2YgdGhpcyBjbGFzcwogICAgbXkgJERlZmluaXRpb25EYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgY2hlY2sgZGVmaW5pdGlvbiBkYXRhCiAgICBpZiAoICEkRGVmaW5pdGlvbkRhdGEgfHwgcmVmICREZWZpbml0aW9uRGF0YSBuZSAnSEFTSCcgKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAuICJDYW4ndCBnZXQgdGhlIGRlZmluaXRpb24gb2YgY2xhc3MgaWQgJE9iamVjdERhdGEtPntDbGFzc0lEfSIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyB0cnkgdG8gZ2V0IGNvbmZpZyBpdGVtIGlkcywgd2hlbiB0aGVyZSBhcmUgaWRlbnRpZmllcnMKICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICBpZiAoJUlkZW50aWZpZXIpIHsKCiAgICAgICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICAgICAgIyBhZGQgbnVtYmVyIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCAkSWRlbnRpZmllcntOdW1iZXJ9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze051bWJlcn0gPSBkZWxldGUgJElkZW50aWZpZXJ7TnVtYmVyfTsKICAgICAgICB9CgogICAgICAgICMgYWRkIG5hbWUgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgICAgICBpZiAoICRJZGVudGlmaWVye05hbWV9ICkgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze05hbWV9ID0gZGVsZXRlICRJZGVudGlmaWVye05hbWV9OwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgZGVwbG95bWVudCBzdGF0ZSB0byB0aGUgc2VhcmNoIHBhcmFtcwogICAgICAgIGlmICggJElkZW50aWZpZXJ7RGVwbFN0YXRlfSApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXsgJElkZW50aWZpZXJ7RGVwbFN0YXRlfSB9IHx8ICcnOwoKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUlEICkgewoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIlRoZSBkZXBsb3ltZW50IHN0YXRlICckSWRlbnRpZmllcntEZXBsU3RhdGV9JyBpcyBpbnZhbGlkIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSA9IFskRGVwbFN0YXRlSURdOwogICAgICAgICAgICBkZWxldGUgJElkZW50aWZpZXJ7RGVwbFN0YXRlfTsKICAgICAgICB9CgogICAgICAgICMgYWRkIGluY2lkZW50IHN0YXRlIHRvIHRoZSBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCAkSWRlbnRpZmllcntJbmNpU3RhdGV9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IGluY2lkZW50IHN0YXRlIGlkCiAgICAgICAgICAgIG15ICRJbmNpU3RhdGVJRCA9ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXsgJElkZW50aWZpZXJ7SW5jaVN0YXRlfSB9IHx8ICcnOwoKICAgICAgICAgICAgaWYgKCAhJEluY2lTdGF0ZUlEICkgewoKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIlRoZSBpbmNpZGVudCBzdGF0ZSAnJElkZW50aWZpZXJ7SW5jaVN0YXRlfScgaXMgaW52YWxpZCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0luY2lTdGF0ZUlEc30gPSBbJEluY2lTdGF0ZUlEXTsKICAgICAgICAgICAgZGVsZXRlICRJZGVudGlmaWVye0luY2lTdGF0ZX07CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBhbGwgWE1MIGRhdGEgdG8gdGhlIHNlYXJjaCBwYXJhbXMKICAgICAgICBteSBAU2VhcmNoUGFyYW1zV2hhdDsKICAgICAgICAkU2VsZi0+X0ltcG9ydFhNTFNlYXJjaERhdGFQcmVwYXJlKAogICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgICAgICBXaGF0ICAgICAgICAgID0+IFxAU2VhcmNoUGFyYW1zV2hhdCwKICAgICAgICAgICAgSWRlbnRpZmllciAgICA9PiBcJUlkZW50aWZpZXIsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgWE1MIHNlYXJjaCBwYXJhbXMgdG8gdGhlIHNlYXJjaCBoYXNoCiAgICAgICAgaWYgKEBTZWFyY2hQYXJhbXNXaGF0KSB7CiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7V2hhdH0gPSBcQFNlYXJjaFBhcmFtc1doYXQ7CiAgICAgICAgfQoKICAgICAgICAjIHNlYXJjaCBleGlzdGluZyBjb25maWcgaXRlbSB3aXRoIHRoZSBzYW1lIGlkZW50aWZpZXJzCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1MaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgKICAgICAgICAgICAgJVNlYXJjaFBhcmFtcywKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJE9iamVjdERhdGEtPntDbGFzc0lEfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMCwKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgICAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoIHNjYWxhciBAeyRDb25maWdJdGVtTGlzdH0gPiAxICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJJZGVudGlmaWVyIGZpZWxkcyBOT1QgdW5pcXVlISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbUxpc3QtPlswXTsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGRhdGEgb2YgdGhlIGNvbmZpZyBpdGVtCiAgICBteSAkVmVyc2lvbkRhdGEgPSB7fTsKICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CgogICAgICAgICMgZ2V0IGxhdGVzdCB2ZXJzaW9uCiAgICAgICAgJFZlcnNpb25EYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgcmVtb3ZlIGVtcHR5IHhtbCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAhJFZlcnNpb25EYXRhLT57WE1MRGF0YX0KICAgICAgICAgICAgfHwgcmVmICRWZXJzaW9uRGF0YS0+e1hNTERhdGF9IG5lICdBUlJBWScKICAgICAgICAgICAgfHwgIUB7ICRWZXJzaW9uRGF0YS0+e1hNTERhdGF9IH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgZGVsZXRlICRWZXJzaW9uRGF0YS0+e1hNTERhdGF9OwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIGlmIGN1cnJlbnQgZGVmaW5pdGlvbiBvZiB0aGlzIGNsYXNzIGhhcyByZXF1aXJlZCBhdHRyaWJ1dGUgd2hpY2ggZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0LgogICAgZm9yIG15ICREZWZpbml0aW9uUmVmICggQHsgJERlZmluaXRpb25EYXRhLT57RGVmaW5pdGlvblJlZn0gfSApIHsKICAgICAgICBteSAkS2V5ID0gJERlZmluaXRpb25SZWYtPntLZXl9OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgICREZWZpbml0aW9uUmVmLT57SW5wdXR9LT57UmVxdWlyZWR9CiAgICAgICAgICAgICYmICFzY2FsYXIoIGdyZXAgeyAkXy0+e0tleX0gPX4gL1xRJERlZmluaXRpb25SZWYtPntLZXl9XEUoOjooXGQrKSk/JC8gfSBATWFwcGluZ09iamVjdExpc3QgKQogICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAhZGVmaW5lZCAkRGVmaW5pdGlvblJlZi0+e0NvdW50TWlufQogICAgICAgICAgICAgICAgfHwgKCBkZWZpbmVkICREZWZpbml0aW9uUmVmLT57Q291bnRNaW59ICYmICREZWZpbml0aW9uUmVmLT57Q291bnRNaW59ID4gMCApCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJBdHRyaWJ1dGUgJyRLZXknIGlzIHJlcXVpcmVkLCBidXQgZG9lcyBub3QgZXhpc3QgaW4gbWFwcGluZyBsaXN0ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgdXAgZmllbGRzIGluIFZlcnNpb25EYXRhIGFuZCBpbiB0aGUgWE1MIGF0dHJpYnV0ZXMKICAgIG15ICVYTUxEYXRhMkQ7CiAgICAkUm93SW5kZXggPSAwOwogICAgZm9yIG15ICRNYXBwaW5nT2JqZWN0RGF0YSAoQE1hcHBpbmdPYmplY3RMaXN0KSB7CgogICAgICAgICMganVzdCBmb3IgY29udmVuaWVuY2UKICAgICAgICBteSAkS2V5ICAgPSAkTWFwcGluZ09iamVjdERhdGEtPntLZXl9OwogICAgICAgIG15ICRWYWx1ZSA9ICRQYXJhbXtJbXBvcnREYXRhUm93fS0+WyAkUm93SW5kZXgrKyBdOwoKICAgICAgICBpZiAoICRLZXkgZXEgJ051bWJlcicgKSB7CgogICAgICAgICAgICAjIGRvIG5vdGhpbmcKICAgICAgICAgICAgIyBJbXBvcnQgZG9lcyBub3Qgb3ZlcnJpZGUgdGhlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRLZXkgZXEgJ05hbWUnICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCAhJFZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbid0IGltcG9ydCBlbnRpdHkgJFBhcmFte0NvdW50ZXJ9OiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICJUaGUgbmFtZSAnJFZhbHVlJyBpcyBpbnZhbGlkISIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFZlcnNpb25EYXRhLT57JEtleX0gPSAkVmFsdWU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkS2V5IGVxICdEZXBsU3RhdGUnICkgewoKICAgICAgICAgICAgaWYgKCAkRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyAmJiAoICFkZWZpbmVkICRWYWx1ZSB8fCAkVmFsdWUgZXEgJycgKSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdGhpbmcsIGtlZXAgdGhlIG9sZCB2YWx1ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgICAgICBteSAkRGVwbFN0YXRlSUQgPSAkRGVwbFN0YXRlTGlzdFJldmVyc2V7JFZhbHVlfSB8fCAnJzsKICAgICAgICAgICAgICAgIGlmICggISREZXBsU3RhdGVJRCApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIGRlcGxveW1lbnQgc3RhdGUgJyRWYWx1ZScgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+e0RlcGxTdGF0ZUlEfSA9ICREZXBsU3RhdGVJRDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRLZXkgZXEgJ0luY2lTdGF0ZScgKSB7CgogICAgICAgICAgICBpZiAoICRFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzICYmICggIWRlZmluZWQgJFZhbHVlIHx8ICRWYWx1ZSBlcSAnJyApICkgewoKICAgICAgICAgICAgICAgICMgZG8gbm90aGluZywga2VlcCB0aGUgb2xkIHZhbHVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICAgICAgICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JFZhbHVlfSB8fCAnJzsKICAgICAgICAgICAgICAgIGlmICggISRJbmNpU3RhdGVJRCApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiVGhlIGluY2lkZW50IHN0YXRlICckVmFsdWUnIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkVmVyc2lvbkRhdGEtPntJbmNpU3RhdGVJRH0gPSAkSW5jaVN0YXRlSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIGhhbmRsZSB4bWwgZGF0YQogICAgICAgICAgICAkWE1MRGF0YTJEeyRLZXl9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCB1cCBlbXB0eSBjb250YWluZXIsIGluIGNhc2UgdGhlcmUgaXMgbm8gcHJldmlvdXMgZGF0YQogICAgJFZlcnNpb25EYXRhLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259LT5bMV0gfHw9IHt9OwoKICAgICMgRWRpdCBYTUxEYXRhUHJldiwgc28gdGhhdCB0aGUgdmFsdWVzIGluIFhNTERhdGEyRCB0YWtlIHByZWNlZGVuY2UuCiAgICBteSAkTWVyZ2VPayA9ICRTZWxmLT5fSW1wb3J0WE1MRGF0YU1lcmdlKAogICAgICAgIFhNTERlZmluaXRpb24gICAgICAgICAgICAgICAgPT4gJERlZmluaXRpb25EYXRhLT57RGVmaW5pdGlvblJlZn0sCiAgICAgICAgWE1MRGF0YVByZXYgICAgICAgICAgICAgICAgICA9PiAkVmVyc2lvbkRhdGEtPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICBYTUxEYXRhMkQgICAgICAgICAgICAgICAgICAgID0+IFwlWE1MRGF0YTJELAogICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMsCiAgICApOwoKICAgICMgYmFpbCBvdXQsIHdoZW4gdGhlIHdhcyBhIHByb2JsZW0gaW4gX0ltcG9ydFhNTERhdGFNZXJnZSgpCiAgICBpZiAoICEkTWVyZ2VPayApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDYW4ndCBpbXBvcnQgZW50aXR5ICRQYXJhbXtDb3VudGVyfTogIgogICAgICAgICAgICAgICAgLiAiQ291bGQgbm90IHByZXBhcmUgdGhlIGlucHV0ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFJldENvZGUgPSAkQ29uZmlnSXRlbUlEID8gVHJhbnNsYXRhYmxlKCdDaGFuZ2VkJykgOiBUcmFuc2xhdGFibGUoJ0NyZWF0ZWQnKTsKCiAgICAjIGNoZWNrIGlmIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgIGlmICgKICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCAkVmVyc2lvbkRhdGEtPntOYW1lfSApCiAgICAgICAgJiYgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdVbmlxdWVDSU5hbWU6OkVuYWJsZVVuaXF1ZW5lc3NDaGVjaycpCiAgICAgICAgKQogICAgewoKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2hlY2tpbmcgZm9yIGR1cGxpY2F0ZSBuYW1lcyAoQ2xhc3NJRDogJE9iamVjdERhdGEtPntDbGFzc0lEfSwgIgogICAgICAgICAgICAgICAgICAgIC4gIk5hbWU6ICRWZXJzaW9uRGF0YS0+e05hbWV9LCBDb25maWdJdGVtSUQ6ICIgLiAkQ29uZmlnSXRlbUlEIHx8ICdORVcnIC4gJyknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQgfHwgJ05FVycsCiAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkT2JqZWN0RGF0YS0+e0NsYXNzSUR9LAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb25EYXRhLT57TmFtZX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9wIHByb2Nlc3NpbmcgaWYgdGhlIG5hbWUgaXMgbm90IHVuaXF1ZQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAjIGJ1aWxkIGEgc3RyaW5nIG9mIGFsbCBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgIG15ICROYW1lRHVwbGljYXRlc1N0cmluZyA9IGpvaW4gJywgJywgQHskTmFtZUR1cGxpY2F0ZXN9OwoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiVGhlIG5hbWUgJFZlcnNpb25EYXRhLT57TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1JRChzKTogIgogICAgICAgICAgICAgICAgICAgIC4gJE5hbWVEdXBsaWNhdGVzU3RyaW5nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIHJldHVybiBjb2RlIHRvIGFsc28gaW5jbHVkZSB0aGUgZHVwbGljYXRlIG5hbWUKICAgICAgICAgICAgJFJldENvZGUgPSAiRHVwbGljYXRlTmFtZSAnJFZlcnNpb25EYXRhLT57TmFtZX0nIjsKCiAgICAgICAgICAgICMgcmV0dXJuIHVuZGVmIGZvciB0aGUgY29uZmlnIGl0ZW0gaWQgc28gaXQgd2lsbCBiZSBjb3VudGVkIGFzICdGYWlsZWQnCiAgICAgICAgICAgIHJldHVybiB1bmRlZiwgJFJldENvZGU7ICAgICMjIG5vIGNyaXRpYwogICAgICAgIH0KICAgIH0KCiAgICBteSAkTGF0ZXN0VmVyc2lvbklEID0gMDsKICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CgogICAgICAgICMgdGhlIHNwZWNpZmllZCBjb25maWcgaXRlbSBhbHJlYWR5IGV4aXN0cwogICAgICAgICMgZ2V0IGlkIG9mIHRoZSBsYXRlc3QgdmVyc2lvbiwgZm9yIGNoZWNraW5nIGxhdGVyIHdoZXRoZXIgYSB2ZXJzaW9uIHdhcyBjcmVhdGVkCiAgICAgICAgbXkgJFZlcnNpb25MaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25MaXN0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApIHx8IFtdOwogICAgICAgIGlmICggc2NhbGFyIEB7JFZlcnNpb25MaXN0fSApIHsKICAgICAgICAgICAgJExhdGVzdFZlcnNpb25JRCA9ICRWZXJzaW9uTGlzdC0+Wy0xXTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBubyBjb25maWcgaXRlbSB3YXMgZm91bmQsIHNvIGFkZCBuZXcgY29uZmlnIGl0ZW0KICAgICAgICAkQ29uZmlnSXRlbUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJE9iamVjdERhdGEtPntDbGFzc0lEfSwKICAgICAgICAgICAgVXNlcklEICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHRoZSBuZXcgY29uZmlnIGl0ZW0gaWQKICAgICAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewoKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgICAgICAgICAuICJFcnJvciB3aGVuIGFkZGluZyB0aGUgbmV3IGNvbmZpZyBpdGVtLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgbmV3IHZlcnNpb24KICAgIG15ICRWZXJzaW9uSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJFZlcnNpb25EYXRhLT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRWZXJzaW9uRGF0YS0+e0RlcGxTdGF0ZUlEfSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJFZlcnNpb25EYXRhLT57SW5jaVN0YXRlSUR9LAogICAgICAgIFhNTERhdGEgICAgICA9PiAkVmVyc2lvbkRhdGEtPntYTUxEYXRhfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgdGhlIGltcG9ydCB3YXMgc3VjY2Vzc2Z1bCwgd2hlbiB3ZSBnZXQgYSB2ZXJzaW9uIGlkCiAgICBpZiAoJFZlcnNpb25JRCkgewoKICAgICAgICAjIFdoZW4gVmVyc2lvbkFkZCgpIHJldHVybnMgdGhlIHByZXZpb3VzIGxhdGVzdCB2ZXJzaW9uIElELCB3ZSBrbm93IHRoYXQKICAgICAgICAjIG5vIG5ldyB2ZXJzaW9uIGhhcyBiZWVuIGFkZGVkLgogICAgICAgICMgVGhlIGltcG9ydCBvZiB0aGlzIGNvbmZpZyBpdGVtIGhhcyBiZWVuIHNraXBwZWQuCiAgICAgICAgaWYgKCAkTGF0ZXN0VmVyc2lvbklEICYmICRWZXJzaW9uSUQgPT0gJExhdGVzdFZlcnNpb25JRCApIHsKICAgICAgICAgICAgJFJldENvZGUgPSBUcmFuc2xhdGFibGUoJ1NraXBwZWQnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkQ29uZmlnSXRlbUlELCAkUmV0Q29kZTsKICAgIH0KCiAgICBpZiAoICRSZXRDb2RlIGVxICdDcmVhdGVkJyApIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIG5ldyBjb25maWcgaXRlbQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAiQ2FuJ3QgaW1wb3J0IGVudGl0eSAkUGFyYW17Q291bnRlcn06ICIKICAgICAgICAgICAgLiAiRXJyb3Igd2hlbiBhZGRpbmcgdGhlIG5ldyBjb25maWcgaXRlbSB2ZXJzaW9uLiIsCiAgICApOwoKICAgIHJldHVybjsKfQoKPWhlYWQxIElOVEVSTkFMIElOVEVSRkFDRQoKPWhlYWQyIF9NYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpCgpyZWN1cnNpb24gZnVuY3Rpb24gZm9yIE1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KCkuCkRlZmluaXRpb25zIGZvciBvYmplY3QgYXR0cmlidXRlcyBhcmUgcGFzc2VkIGluIEM8WE1MRGVmaW5pdGlvbj4uClRoZSBuZXcgb2JqZWN0IGF0dHJpYnV0ZXMgYXJlIGFwcGVuZGVkIHRvIEM8RWxlbWVudExpc3Q+LgpDPENvdW50TWF4TGltaXQ+IGxpbWl0cyB0aGUgbWF4IGxlbmd0aCBvZiBpbXBvcnRhYmxlIGFycmF5cy4KCiAgICAkT2JqZWN0QmFja2VuZC0+X01hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJEFycmF5UmVmLAogICAgICAgIEVsZW1lbnRMaXN0ICAgPT4gJEFycmF5UmVmLAogICAgICAgIENvdW50TWF4TGltaXQgPT4gMTAsCiAgICApOwoKPWN1dAoKc3ViIF9NYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0NvdW50TWF4TGltaXR9OwogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgISRQYXJhbXtFbGVtZW50TGlzdH07CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17RWxlbWVudExpc3R9IG5lICdBUlJBWSc7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICAjIGxpbWl0IHRoZSBsZW5ndGggb2YgaW1wb3J0YWJsZSBhcnJheXMsIGV2ZW4gaWYgbW9yZSBlbGVtZW50cyBjYW4gYmUgc2V0IHZpYSB0aGUgR1VJCiAgICAgICAgbXkgJENvdW50TWF4ID0gbWluKCAkSXRlbS0+e0NvdW50TWF4fSwgJFBhcmFte0NvdW50TWF4TGltaXR9ICk7CgogICAgICAgIENPVU5UOgogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uICRDb3VudE1heCApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGtleSBzdHJpbmcKICAgICAgICAgICAgbXkgJEtleSA9ICRJdGVtLT57S2V5fSAuICc6OicgLiAkQ291bnQ7CgogICAgICAgICAgICAjIGFkZCBwcmVmaXggdG8ga2V5CiAgICAgICAgICAgIGlmICggJFBhcmFte0tleVByZWZpeH0gKSB7CiAgICAgICAgICAgICAgICAkS2V5ID0gJFBhcmFte0tleVByZWZpeH0gLiAnOjonIC4gJEtleTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjcmVhdGUgdmFsdWUgc3RyaW5nCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRJdGVtLT57S2V5fTsKCiAgICAgICAgICAgICMgYWRkIGNvdW50IGlmIHJlcXVpcmVkCiAgICAgICAgICAgIGlmICggJENvdW50TWF4ID4gMSB8fCAkSXRlbS0+e1N1Yn0gKSB7CiAgICAgICAgICAgICAgICAkVmFsdWUgLj0gJzo6JyAuICRDb3VudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgcHJlZml4IHRvIGtleQogICAgICAgICAgICBpZiAoICRQYXJhbXtWYWx1ZVByZWZpeH0gKSB7CiAgICAgICAgICAgICAgICAkVmFsdWUgPSAkUGFyYW17VmFsdWVQcmVmaXh9IC4gJzo6JyAuICRWYWx1ZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgcm93CiAgICAgICAgICAgIG15ICVSb3cgPSAoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtFbGVtZW50TGlzdH0gfSwgXCVSb3c7CgogICAgICAgICAgICBuZXh0IENPVU5UIGlmICEkSXRlbS0+e1N1Yn07CgogICAgICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbgogICAgICAgICAgICAkU2VsZi0+X01hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICBFbGVtZW50TGlzdCAgID0+ICRQYXJhbXtFbGVtZW50TGlzdH0sCiAgICAgICAgICAgICAgICBLZXlQcmVmaXggICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICBWYWx1ZVByZWZpeCAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgIENvdW50TWF4TGltaXQgPT4gJFBhcmFte0NvdW50TWF4TGltaXR9IHx8ICcxMCcsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX1NlYXJjaEF0dHJpYnV0ZXNHZXQoKQoKcmVjdXJzaW9uIGZ1bmN0aW9uIGZvciBNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpCgogICAgJE9iamVjdEJhY2tlbmQtPl9TZWFyY2hBdHRyaWJ1dGVzR2V0KAogICAgICAgIFhNTERlZmluaXRpb24gPT4gJEFycmF5UmVmLAogICAgICAgIEF0dHJpYnV0ZUxpc3QgPT4gJEFycmF5UmVmLAogICAgKTsKCj1jdXQKCnN1YiBfU2VhcmNoQXR0cmlidXRlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufTsKICAgIHJldHVybiBpZiAhJFBhcmFte0F0dHJpYnV0ZUxpc3R9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte0F0dHJpYnV0ZUxpc3R9IG5lICdBUlJBWSc7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICAjIHNldCBwcmVmaXgKICAgICAgICBteSAkS2V5ICA9ICRJdGVtLT57S2V5fTsKICAgICAgICBteSAkTmFtZSA9ICRJdGVtLT57TmFtZX07CgogICAgICAgIGlmICggJFBhcmFte0tleVByZWZpeH0gKSB7CiAgICAgICAgICAgICRLZXkgPSAkUGFyYW17S2V5UHJlZml4fSAuICc6OicgLiAkS2V5OwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkUGFyYW17TmFtZVByZWZpeH0gKSB7CiAgICAgICAgICAgICROYW1lID0gJFBhcmFte05hbWVQcmVmaXh9IC4gJzo6JyAuICROYW1lOwogICAgICAgIH0KCiAgICAgICAgIyBhZGQgYXR0cmlidXRlLCBpZiBtYXJrZWQgYXMgc2VhcmNoYWJsZQogICAgICAgIGlmICggJEl0ZW0tPntTZWFyY2hhYmxlfSApIHsKCiAgICAgICAgICAgIGlmICggJEl0ZW0tPntJbnB1dH0tPntUeXBlfSBlcSAnVGV4dCcgfHwgJEl0ZW0tPntJbnB1dH0tPntUeXBlfSBlcSAnVGV4dEFyZWEnICkgewoKICAgICAgICAgICAgICAgIG15ICVSb3cgPSAoCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJEtleSwKICAgICAgICAgICAgICAgICAgICBOYW1lICA9PiAkTmFtZSwKICAgICAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJEl0ZW0tPntJbnB1dH0tPntJbnB1dH0tPntUcmFuc2xhdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgICAgICAgID0+ICRJdGVtLT57SW5wdXR9LT57SW5wdXR9LT57U2l6ZX0gfHwgNjAsCiAgICAgICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCAgID0+ICRJdGVtLT57SW5wdXR9LT57SW5wdXR9LT57TWF4TGVuZ3RofSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtBdHRyaWJ1dGVMaXN0fSB9LCBcJVJvdzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRJdGVtLT57SW5wdXR9LT57VHlwZX0gZXEgJ0dlbmVyYWxDYXRhbG9nJyApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgbGlzdAogICAgICAgICAgICAgICAgbXkgJEdlbmVyYWxDYXRhbG9nTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkSXRlbS0+e0lucHV0fS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgICkgfHwge307CgogICAgICAgICAgICAgICAgbXkgJVJvdyA9ICgKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkS2V5LAogICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICROYW1lLAogICAgICAgICAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICRJdGVtLT57SW5wdXR9LT57SW5wdXR9LT57VHJhbnNsYXRpb259LAogICAgICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgICA9PiA1LAogICAgICAgICAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte0F0dHJpYnV0ZUxpc3R9IH0sIFwlUm93OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBuZXh0IElURU0gaWYgISRJdGVtLT57U3VifTsKCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICRTZWxmLT5fU2VhcmNoQXR0cmlidXRlc0dldCgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgIEF0dHJpYnV0ZUxpc3QgPT4gJFBhcmFte0F0dHJpYnV0ZUxpc3R9LAogICAgICAgICAgICBLZXlQcmVmaXggICAgID0+ICRLZXksCiAgICAgICAgICAgIE5hbWVQcmVmaXggICAgPT4gJE5hbWUsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9FeHBvcnRYTUxTZWFyY2hEYXRhUHJlcGFyZSgpCgpyZWN1cnNpb24gZnVuY3Rpb24gdG8gcHJlcGFyZSB0aGUgZXhwb3J0IFhNTCBzZWFyY2ggcGFyYW1zCgogICAgJE9iamVjdEJhY2tlbmQtPl9FeHBvcnRYTUxTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRBcnJheVJlZiwKICAgICAgICBXaGF0ICAgICAgICAgID0+ICRBcnJheVJlZiwKICAgICAgICBTZWFyY2hEYXRhICAgID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBfRXhwb3J0WE1MU2VhcmNoRGF0YVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgISRQYXJhbXtXaGF0fTsKICAgIHJldHVybiBpZiAhJFBhcmFte1NlYXJjaERhdGF9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1doYXR9IG5lICdBUlJBWSc7CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtTZWFyY2hEYXRhfSBuZSAnSEFTSCc7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICAjIGNyZWF0ZSBrZXkKICAgICAgICBteSAkS2V5ID0gJFBhcmFte1ByZWZpeH0gPyAkUGFyYW17UHJlZml4fSAuICc6OicgLiAkSXRlbS0+e0tleX0gOiAkSXRlbS0+e0tleX07CgogICAgICAgICMgcHJlcGFyZSB2YWx1ZQogICAgICAgIG15ICRWYWx1ZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte1NlYXJjaERhdGF9LT57JEtleX0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRWYWx1ZXMpIHsKCiAgICAgICAgICAgICMgY3JlYXRlIHNlYXJjaCBrZXkKICAgICAgICAgICAgbXkgJFNlYXJjaEtleSA9ICRLZXk7CiAgICAgICAgICAgICRTZWFyY2hLZXkgPX4gc3sgOjogfXtcJ1x9WyVdXHtcJ314bXNnOwoKICAgICAgICAgICAgIyBjcmVhdGUgc2VhcmNoIGhhc2gKICAgICAgICAgICAgbXkgJFNlYXJjaEhhc2ggPSB7CiAgICAgICAgICAgICAgICAnWzFde1wnVmVyc2lvblwnfVsxXXtcJycgLiAkU2VhcmNoS2V5IC4gJ1wnfVslXXtcJ0NvbnRlbnRcJ30nID0+ICRWYWx1ZXMsCiAgICAgICAgICAgIH07CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgICAgICB9CgogICAgICAgIG5leHQgSVRFTSBpZiAhJEl0ZW0tPntTdWJ9OwoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbiwgaWYgIlN1YiIgd2FzIGZvdW5kCiAgICAgICAgJFNlbGYtPl9FeHBvcnRYTUxTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgIFdoYXQgICAgICAgICAgPT4gJFBhcmFte1doYXR9LAogICAgICAgICAgICBTZWFyY2hEYXRhICAgID0+ICRQYXJhbXtTZWFyY2hEYXRhfSwKICAgICAgICAgICAgUHJlZml4ICAgICAgICA9PiAkS2V5LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfRXhwb3J0WE1MRGF0YVByZXBhcmUoKQoKcmVjdXJzaW9uIGZ1bmN0aW9uIHRvIHByZXBhcmUgdGhlIGV4cG9ydCBYTUwgZGF0YQoKICAgICRPYmplY3RCYWNrZW5kLT5fRXhwb3J0WE1MRGF0YVByZXBhcmUoCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkQXJyYXlSZWYsCiAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkSGFzaFJlZiwKICAgICAgICBYTUxEYXRhMkQgICAgID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBfRXhwb3J0WE1MRGF0YVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEYXRhfTsKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERhdGEyRH07CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGF0YX0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGF0YTJEfSBuZSAnSEFTSCc7CgogICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAkUGFyYW17UHJlZml4fSAuPSAnOjonOwogICAgfQogICAgJFBhcmFte1ByZWZpeH0gfHw9ICcnOwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKICAgICAgICBDT1VOVEVSOgogICAgICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gJEl0ZW0tPntDb3VudE1heH0gKSB7CgogICAgICAgICAgICAjIHN0b3AgbG9vcCwgaWYgbm8gY29udGVudCB3YXMgZ2l2ZW4KICAgICAgICAgICAgbGFzdCBDT1VOVEVSIGlmICFkZWZpbmVkICRQYXJhbXtYTUxEYXRhfS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXS0+e0NvbnRlbnR9OwoKICAgICAgICAgICAgIyBjcmVhdGUga2V5CiAgICAgICAgICAgIG15ICRLZXkgPSAkUGFyYW17UHJlZml4fSAuICRJdGVtLT57S2V5fSAuICc6OicgLiAkQ291bnRlcjsKCiAgICAgICAgICAgICMgcHJlcGFyZSB2YWx1ZQogICAgICAgICAgICAkUGFyYW17WE1MRGF0YTJEfS0+eyRLZXl9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlhNTEV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICAgICAgICAgIEl0ZW0gID0+ICRJdGVtLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte1hNTERhdGF9LT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLT57Q29udGVudH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENPVU5URVIgaWYgISRJdGVtLT57U3VifTsKCiAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAgICAgJFNlbGYtPl9FeHBvcnRYTUxEYXRhUHJlcGFyZSgKICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0sCiAgICAgICAgICAgICAgICBYTUxEYXRhMkQgICAgID0+ICRQYXJhbXtYTUxEYXRhMkR9LAogICAgICAgICAgICAgICAgUHJlZml4ICAgICAgICA9PiAkS2V5LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9JbXBvcnRYTUxTZWFyY2hEYXRhUHJlcGFyZSgpCgpyZWN1cnNpb24gZnVuY3Rpb24gdG8gcHJlcGFyZSB0aGUgaW1wb3J0IFhNTCBzZWFyY2ggcGFyYW1zCgogICAgJE9iamVjdEJhY2tlbmQtPl9JbXBvcnRYTUxTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRBcnJheVJlZiwKICAgICAgICBXaGF0ICAgICAgICAgID0+ICRBcnJheVJlZiwKICAgICAgICBJZGVudGlmaWVyICAgID0+ICRIYXNoUmVmLAogICAgKTsKCj1jdXQKCnN1YiBfSW1wb3J0WE1MU2VhcmNoRGF0YVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgISRQYXJhbXtXaGF0fTsKICAgIHJldHVybiBpZiAhJFBhcmFte0lkZW50aWZpZXJ9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1doYXR9IG5lICdBUlJBWSc7CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtJZGVudGlmaWVyfSBuZSAnSEFTSCc7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtYTUxEZWZpbml0aW9ufSB9ICkgewoKICAgICAgICAjIGNyZWF0ZSBrZXkKICAgICAgICBteSAkS2V5ID0gJFBhcmFte1ByZWZpeH0gPyAkUGFyYW17UHJlZml4fSAuICc6OlxkKzo6JyAuICRJdGVtLT57S2V5fSA6ICRJdGVtLT57S2V5fTsKICAgICAgICAkS2V5IC49ICc6OlxkKyc7CgogICAgICAgIG15ICRJZGVudGlmaWVyS2V5OwogICAgICAgIElERU5USUZJRVJLRVk6CiAgICAgICAgZm9yIG15ICRJZGVudEtleSAoIHNvcnQga2V5cyAleyAkUGFyYW17SWRlbnRpZmllcn0gfSApIHsKCiAgICAgICAgICAgIG5leHQgSURFTlRJRklFUktFWSBpZiAkSWRlbnRLZXkgIX4gbXsgXEEgJEtleSBceiB9eG1zOwoKICAgICAgICAgICAgJElkZW50aWZpZXJLZXkgPSAkSWRlbnRLZXk7CiAgICAgICAgfQoKICAgICAgICBpZiAoJElkZW50aWZpZXJLZXkpIHsKCiAgICAgICAgICAgICMgcHJlcGFyZSB2YWx1ZQogICAgICAgICAgICBteSAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+WE1MSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgICAgICAgICAgSXRlbSAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17SWRlbnRpZmllcn0tPnskSWRlbnRpZmllcktleX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJFZhbHVlKSB7CgogICAgICAgICAgICAgICAgIyBwcmVwYXJlIGtleQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgICAgICAgICAgd2hpbGUgKCAkSWRlbnRpZmllcktleSA9fiBteyA6OiB9eG1zICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyICUgMiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJElkZW50aWZpZXJLZXkgPX4gc3sgOjogfXtdXHsnfXhtczsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRJZGVudGlmaWVyS2V5ID1+IHN7IDo6IH17J1x9W314bXM7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgY3JlYXRlIHNlYXJjaCBoYXNoCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoSGFzaCA9IHsKICAgICAgICAgICAgICAgICAgICAnWzFde1wnVmVyc2lvblwnfVsxXXtcJycgLiAkSWRlbnRpZmllcktleSAuICdde1wnQ29udGVudFwnfScgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbmV4dCBJVEVNIGlmICEkSXRlbS0+e1N1Yn07CgogICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAkU2VsZi0+X0ltcG9ydFhNTFNlYXJjaERhdGFQcmVwYXJlKAogICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgV2hhdCAgICAgICAgICA9PiAkUGFyYW17V2hhdH0sCiAgICAgICAgICAgIElkZW50aWZpZXIgICAgPT4gJFBhcmFte0lkZW50aWZpZXJ9LAogICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRLZXksCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9JbXBvcnRYTUxEYXRhTWVyZ2UoKQoKcmVjdXJzaXZlIGZ1bmN0aW9uIHRvIGlucGxhY2UgZWRpdCB0aGUgaW1wb3J0IFhNTCBkYXRhLgoKICAgIG15ICRNZXJnZU9rID0gJE9iamVjdEJhY2tlbmQtPl9JbXBvcnRYTUxEYXRhTWVyZ2UoCiAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkQXJyYXlSZWYsCiAgICAgICAgWE1MRGF0YVByZXYgICA9PiAkSGFzaFJlZiwKICAgICAgICBYTUxEYXRhMkQgICAgID0+ICRIYXNoUmVmLAogICAgKTsKClRoZSByZXR1cm4gdmFsdWUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIG1lcmdlIHdhcyBzdWNjZXNzZnVsLgpBIG1lcmdlIGZhaWxzIHdoZW4gZm9yIGV4YW1wbGUgYSBnZW5lcmFsIGNhdGFsb2cgaXRlbSBuYW1lIGNhbid0IGJlIG1hcHBlZCB0byBhbiBpZC4KCj1jdXQKCnN1YiBfSW1wb3J0WE1MRGF0YU1lcmdlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERlZmluaXRpb259OwogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGF0YTJEfTsKICAgIHJldHVybiBpZiAhJFBhcmFte1hNTERhdGFQcmV2fTsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWSc7ICAgICMgdGhlIGF0dHJpYnV0ZXMgb2YgdGhlIGNvbmZpZyBpdGVtIGNsYXNzCiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEYXRhMkR9IG5lICdIQVNIJzsgICAgICAgICAjIGhhc2ggd2l0aCB2YWx1ZXMgdGhhdCBzaG91bGQgYmUgaW1wb3J0ZWQKICAgIHJldHVybiBpZiByZWYgJFBhcmFte1hNTERhdGFQcmV2fSBuZSAnSEFTSCc7ICAgICAgICMgaGFzaCB3aXRoIGN1cnJlbnQgdmFsdWVzIG9mIHRoZSBjb25maWcgaXRlbQoKICAgIG15ICRYTUxEYXRhID0gJFBhcmFte1hNTERhdGFQcmV2fTsKCiAgICAjIGRlZmF1bHQgdmFsdWUgZm9yIHByZWZpeAogICAgJFBhcmFte1ByZWZpeH0gfHw9ICcnOwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKCiAgICAgICAgQ09VTlRFUjoKICAgICAgICBmb3IgbXkgJENvdW50ZXIgKCAxIC4uICRJdGVtLT57Q291bnRNYXh9ICkgewoKICAgICAgICAgICAgIyBjcmVhdGUgaW5wdXRrZXkKICAgICAgICAgICAgbXkgJEtleSA9ICRQYXJhbXtQcmVmaXh9IC4gJEl0ZW0tPntLZXl9IC4gJzo6JyAuICRDb3VudGVyOwoKICAgICAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIHdhcyBmb3VuZAogICAgICAgICAgICBpZiAoICRJdGVtLT57U3VifSApIHsKICAgICAgICAgICAgICAgICRYTUxEYXRhLT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdCiAgICAgICAgICAgICAgICAgICAgfHw9IHt9OyAgICAjIGVtcHR5IGNvbnRhaW5lciwgaW4gY2FzZSB0aGVyZSBpcyBubyBwcmV2aW91cyBkYXRhCiAgICAgICAgICAgICAgICBteSAkTWVyZ2VPayA9ICRTZWxmLT5fSW1wb3J0WE1MRGF0YU1lcmdlKAogICAgICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gICAgICAgICAgICAgICAgPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEyRCAgICAgICAgICAgICAgICAgICAgPT4gJFBhcmFte1hNTERhdGEyRH0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YVByZXYgICAgICAgICAgICAgICAgICA9PiAkWE1MRGF0YS0+eyAkSXRlbS0+e0tleX0gfS0+WyRDb3VudGVyXSwKICAgICAgICAgICAgICAgICAgICBQcmVmaXggICAgICAgICAgICAgICAgICAgICAgID0+ICRLZXkgLiAnOjonLAogICAgICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJFBhcmFte0VtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXN9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gaWYgISRNZXJnZU9rOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFdoZW4gdGhlIGRhdGEgcG9pbnQgaXMgbm90IHBhcnQgb2YgdGhlIGlucHV0IGRlZmluaXRpb24sCiAgICAgICAgICAgICMgdGhlbiBkbyBub3Qgb3ZlcndyaXRlIHRoZSBwcmV2aW91cyBzZXR0aW5nLgogICAgICAgICAgICAjIEZhbHNlIHZhbHVlcyBhcmUgT0suCiAgICAgICAgICAgIG5leHQgQ09VTlRFUiBpZiAhZXhpc3RzICRQYXJhbXtYTUxEYXRhMkR9LT57JEtleX07CgogICAgICAgICAgICBpZiAoICRQYXJhbXtFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzfSApIHsKCiAgICAgICAgICAgICAgICAjIGRvIG5vdCBvdmVycmlkZSBvbGQgdmFsdWUgd2l0aCBhbiBlbXB0eSBmaWVsZCBpcyBpbXBvcnRlZAogICAgICAgICAgICAgICAgbmV4dCBDT1VOVEVSIGlmICFkZWZpbmVkICRQYXJhbXtYTUxEYXRhMkR9LT57JEtleX07CiAgICAgICAgICAgICAgICBuZXh0IENPVU5URVIgaWYgJFBhcmFte1hNTERhdGEyRH0tPnskS2V5fSBlcSAnJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwcmVwYXJlIHZhbHVlCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5YTUxJbXBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRQYXJhbXtYTUxEYXRhMkR9LT57JEtleX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGxldCBtZXJnZSBmYWlsLCB3aGVuIGEgdmFsdWUgY2Fubm90IGJlIHByZXBhcmVkCiAgICAgICAgICAgIHJldHVybiBpZiAhZGVmaW5lZCAkVmFsdWU7CgogICAgICAgICAgICAjIHNhdmUgdGhlIHByZXBhcmVkIHZhbHVlCiAgICAgICAgICAgICRYTUxEYXRhLT57ICRJdGVtLT57S2V5fSB9LT5bJENvdW50ZXJdLT57Q29udGVudH0gPSAkVmFsdWU7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpFdmVudEhhbmRsZXI7CnVzZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb247CnVzZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okhpc3Rvcnk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6VmVyc2lvbjsKdXNlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgU3RvcmFibGU7Cgp1c2UgdmFycyBxdyhASVNBKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbSAtIGNvbmZpZyBpdGVtIGxpYgoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgY29uZmlnIGl0ZW0gZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgJFNlbGYtPntDYWNoZVR5cGV9ID0gJ0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCc7CiAgICAkU2VsZi0+e0NhY2hlVFRMfSAgPSA2MCAqIDYwICogMjQgKiAyMDsKCiAgICBASVNBID0gcXcoCiAgICAgICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpEZWZpbml0aW9uCiAgICAgICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpIaXN0b3J5CiAgICAgICAgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpOdW1iZXIKICAgICAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb24KICAgICAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb24KICAgICAgICBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTAogICAgICAgIEtlcm5lbDo6U3lzdGVtOjpFdmVudEhhbmRsZXIKICAgICk7CgogICAgIyBpbml0IG9mIGV2ZW50IGhhbmRsZXIKICAgICRTZWxmLT5FdmVudEhhbmRsZXJJbml0KAogICAgICAgIENvbmZpZyA9PiAnSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCcsCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1Db3VudCgpCgpjb3VudCBhbGwgcmVjb3JkcyBvZiBhIGNvbmZpZyBpdGVtIGNsYXNzCgogICAgbXkgJENvdW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Db3VudCgKICAgICAgICBDbGFzc0lEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ2xhc3NJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN0YXRlIGxpc3QKICAgIG15ICRTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBGdW5jdGlvbmFsaXR5ID0+IFsgJ3ByZXByb2R1Y3RpdmUnLCAncHJvZHVjdGl2ZScgXSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gMCBpZiAhJXskU3RhdGVMaXN0fTsKCiAgICAjIGNyZWF0ZSBzdGF0ZSBzdHJpbmcKICAgIG15ICREZXBsU3RhdGVTdHJpbmcgPSBqb2luIHF7LCB9LCBrZXlzICV7JFN0YXRlTGlzdH07CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiU0VMRUNUIENPVU5UKGlkKSBGUk9NIGNvbmZpZ2l0ZW0gV0hFUkUgY2xhc3NfaWQgPSA/IEFORCAiCiAgICAgICAgICAgIC4gImN1cl9kZXBsX3N0YXRlX2lkIElOICggJERlcGxTdGF0ZVN0cmluZyApIiwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRDb3VudCA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDb3VudCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRDb3VudDsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1SZXN1bHRMaXN0KCkKCnJldHVybiBhIGNvbmZpZyBpdGVtIGxpc3QgYXMgYXJyYXkgaGFzaCByZWZlcmVuY2UKCiAgICBteSAkQ29uZmlnSXRlbUxpc3RSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVJlc3VsdExpc3QoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICAgICAgU3RhcnQgICA9PiAxMDAsCiAgICAgICAgTGltaXQgICA9PiA1MCwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbVJlc3VsdExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NsYXNzSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDbGFzc0lEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgc3RhdGUgbGlzdAogICAgbXkgJFN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAncHJlcHJvZHVjdGl2ZScsICdwcm9kdWN0aXZlJyBdLAogICAgICAgIH0sCiAgICApOwoKICAgICMgY3JlYXRlIHN0YXRlIHN0cmluZwogICAgbXkgJERlcGxTdGF0ZVN0cmluZyA9IGpvaW4gcXssIH0sIGtleXMgJXskU3RhdGVMaXN0fTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtICIKICAgICAgICAgICAgLiAiV0hFUkUgY2xhc3NfaWQgPSA/IEFORCBjdXJfZGVwbF9zdGF0ZV9pZCBJTiAoICREZXBsU3RhdGVTdHJpbmcgKSAiCiAgICAgICAgICAgIC4gIk9SREVSIEJZIGNoYW5nZV90aW1lIERFU0MiLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgICAgIFN0YXJ0ID0+ICRQYXJhbXtTdGFydH0sCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAQ29uZmlnSXRlbUlETGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlETGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICAjIGdldCBsYXN0IHZlcnNpb25zIGRhdGEKICAgIG15IEBDb25maWdJdGVtTGlzdDsKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlETGlzdCkgewoKICAgICAgICAjIGdldCB2ZXJzaW9uIGRhdGEKICAgICAgICBteSAkTGFzdFZlcnNpb24gPSAkU2VsZi0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1MaXN0LCAkTGFzdFZlcnNpb247CiAgICB9CgogICAgcmV0dXJuIFxAQ29uZmlnSXRlbUxpc3Q7Cn0KCj1oZWFkMiBDb25maWdJdGVtR2V0KCkKCnJldHVybiBhIGNvbmZpZyBpdGVtIGFzIGhhc2ggcmVmZXJlbmNlCgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIENhY2hlICAgICAgICA9PiAwLCAgICAjIChvcHRpb25hbCkgZGVmYXVsdCAxICgwfDEpCiAgICApOwoKQSBoYXNocmVmIHdpdGggdGhlIGZvbGxvd2luZyBrZXlzIGlzIHJldHVybmVkOgoKICAgICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0KICAgICRDb25maWdJdGVte051bWJlcn0KICAgICRDb25maWdJdGVte0NsYXNzSUR9CiAgICAkQ29uZmlnSXRlbXtDbGFzc30KICAgICRDb25maWdJdGVte0xhc3RWZXJzaW9uSUR9CiAgICAkQ29uZmlnSXRlbXtDdXJEZXBsU3RhdGVJRH0KICAgICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0KICAgICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZVR5cGV9CiAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU3RhdGVJRH0KICAgICRDb25maWdJdGVte0N1ckluY2lTdGF0ZX0KICAgICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9CiAgICAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfQogICAgJENvbmZpZ0l0ZW17Q3JlYXRlQnl9CiAgICAkQ29uZmlnSXRlbXtDaGFuZ2VUaW1lfQogICAgJENvbmZpZ0l0ZW17Q2hhbmdlQnl9Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29uZmlnSXRlbUlEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBlbmFibGUgY2FjaGUgcGVyIGRlZmF1bHQKICAgIGlmICggIWRlZmluZWQgJFBhcmFte0NhY2hlfSApIHsKICAgICAgICAkUGFyYW17Q2FjaGV9ID0gMTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgbXkgJENhY2hlS2V5ICAgID0gJ0NvbmZpZ0l0ZW1HZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICBteSAkQ2FjaGUgICAgICAgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CiAgICByZXR1cm4gU3RvcmFibGU6OmRjbG9uZSgkQ2FjaGUpIGlmICRDYWNoZTsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQsIGNvbmZpZ2l0ZW1fbnVtYmVyLCBjbGFzc19pZCwgbGFzdF92ZXJzaW9uX2lkLCAnCiAgICAgICAgICAgIC4gJ2N1cl9kZXBsX3N0YXRlX2lkLCBjdXJfaW5jaV9zdGF0ZV9pZCwgJwogICAgICAgICAgICAuICdjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5ICcKICAgICAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVDb25maWdJdGVtOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9ICAgPSAkUm93WzBdOwogICAgICAgICRDb25maWdJdGVte051bWJlcn0gICAgICAgICA9ICRSb3dbMV07CiAgICAgICAgJENvbmZpZ0l0ZW17Q2xhc3NJRH0gICAgICAgID0gJFJvd1syXTsKICAgICAgICAkQ29uZmlnSXRlbXtMYXN0VmVyc2lvbklEfSAgPSAkUm93WzNdOwogICAgICAgICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZUlEfSA9ICRSb3dbNF07CiAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVN0YXRlSUR9ID0gJFJvd1s1XTsKICAgICAgICAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfSAgICAgPSAkUm93WzZdOwogICAgICAgICRDb25maWdJdGVte0NyZWF0ZUJ5fSAgICAgICA9ICRSb3dbN107CiAgICAgICAgJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX0gICAgID0gJFJvd1s4XTsKICAgICAgICAkQ29uZmlnSXRlbXtDaGFuZ2VCeX0gICAgICAgPSAkUm93WzldOwogICAgfQoKICAgICMgY2hlY2sgY29uZmlnIGl0ZW0KICAgIGlmICggISRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIENvbmZpZ0l0ZW1JRCAoJFBhcmFte0NvbmZpZ0l0ZW1JRH0pISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAkQ29uZmlnSXRlbXtDbGFzc30gPSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVte0NsYXNzSUR9IH07CgogICAgcmV0dXJuIFwlQ29uZmlnSXRlbSBpZiAhJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlSUR9IHx8ICEkQ29uZmlnSXRlbXtDdXJJbmNpU3RhdGVJRH07CgogICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBmdW5jdGlvbmFsaXR5CiAgICBteSAkRGVwbFN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZUlEfSwKICAgICk7CgogICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlfSAgICAgPSAkRGVwbFN0YXRlLT57TmFtZX07CiAgICAkQ29uZmlnSXRlbXtDdXJEZXBsU3RhdGVUeXBlfSA9ICREZXBsU3RhdGUtPntGdW5jdGlvbmFsaXR5fTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBmdW5jdGlvbmFsaXR5CiAgICBteSAkSW5jaVN0YXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZUlEfSwKICAgICk7CgogICAgJENvbmZpZ0l0ZW17Q3VySW5jaVN0YXRlfSAgICAgPSAkSW5jaVN0YXRlLT57TmFtZX07CiAgICAkQ29uZmlnSXRlbXtDdXJJbmNpU3RhdGVUeXBlfSA9ICRJbmNpU3RhdGUtPntGdW5jdGlvbmFsaXR5fTsKCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gU3RvcmFibGU6OmRjbG9uZSggXCVDb25maWdJdGVtICksCiAgICApOwoKICAgIHJldHVybiBcJUNvbmZpZ0l0ZW07Cn0KCj1oZWFkMiBDb25maWdJdGVtQWRkKCkKCmFkZCBhIG5ldyBjb25maWcgaXRlbQoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICBOdW1iZXIgID0+ICcxMTEnLCAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KENsYXNzSUQgVXNlcklEKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiBkZWZpbmVkICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiBpZiAhJENsYXNzTGlzdDsKICAgIHJldHVybiBpZiByZWYgJENsYXNzTGlzdCBuZSAnSEFTSCc7CgogICAgIyBjaGVjayB0aGUgY2xhc3MgaWQKICAgIGlmICggISRDbGFzc0xpc3QtPnsgJFBhcmFte0NsYXNzSUR9IH0gKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gdmFsaWQgY2xhc3MgaWQgZ2l2ZW4hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggJFBhcmFte051bWJlcn0gKSB7CgogICAgICAgICMgZmluZCBleGlzdGluZyBjb25maWcgaXRlbSBudW1iZXIKICAgICAgICBteSAkRXhpc3RzID0gJFNlbGYtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFBhcmFte051bWJlcn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvbmZpZyBpdGVtIG51bWJlciBhbHJlYWR5IGV4aXN0cyEnLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgY3JlYXRlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJFNlbGYtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yJyksCiAgICAgICAgICAgIENsYXNzSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBpbnNlcnQgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW0gJwogICAgICAgICAgICAuICcoY29uZmlnaXRlbV9udW1iZXIsIGNsYXNzX2lkLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5KSAnCiAgICAgICAgICAgIC4gJ1ZBTFVFUyAoPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TnVtYmVyfSwgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0gXSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIGZpbmQgaWQgb2YgbmV3IGl0ZW0KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSBXSEVSRSAnCiAgICAgICAgICAgIC4gJ2NvbmZpZ2l0ZW1fbnVtYmVyID0gPyBBTkQgY2xhc3NfaWQgPSA/IE9SREVSIEJZIGlkIERFU0MnLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtOdW1iZXJ9LCBcJFBhcmFte0NsYXNzSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbUNyZWF0ZQogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb25maWdJdGVtSUQgLiAnJSUnIC4gJFBhcmFte051bWJlcn0sCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAkQ29uZmlnSXRlbUlEOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbURlbGV0ZSgpCgpkZWxldGUgYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0KCiAgICBteSAkVHJ1ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1EZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ29uZmlnSXRlbUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyByZW1lbWJlciBjb25maWcgaXRlbSBkYXRhIGJlZm9yZSBkZWxldGUKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGxpbmtzIHRvIHRoaXMgY29uZmlnIGl0ZW0gZmlyc3QsIGJlZm9yZSBkZWxldGluZyB0aGUgdmVyc2lvbnMKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0RlbGV0ZUFsbCgKICAgICAgICBPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBLZXkgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIGRlbGV0ZSBleGlzdGluZyB2ZXJzaW9ucwogICAgJFNlbGYtPlZlcnNpb25EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBnZXQgYSBsaXN0IG9mIGFsbCBhdHRhY2htZW50cwogICAgbXkgQEV4aXN0aW5nQXR0YWNobWVudHMgPSAkU2VsZi0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgIyBkZWxldGUgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIEZJTEVOQU1FOgogICAgZm9yIG15ICRGaWxlbmFtZSAoQEV4aXN0aW5nQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyBkZWxldGUgdGhlIGF0dGFjaG1lbnQKICAgICAgICBteSAkRGVsZXRpb25TdWNjZXNzID0gJFNlbGYtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRGVsZXRpb25TdWNjZXNzICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5rbm93biBwcm9ibGVtIHdoZW4gZGVsZXRpbmcgYXR0YWNobWVudCAkRmlsZW5hbWUgb2YgQ29uZmlnSXRlbSAiCiAgICAgICAgICAgICAgICAgICAgLiAiJFBhcmFte0NvbmZpZ0l0ZW1JRH0uIFBsZWFzZSBjaGVjayB0aGUgVmlydHVhbEZTIGJhY2tlbmQgZm9yIHN0YWxlICIKICAgICAgICAgICAgICAgICAgICAuICJmaWxlcyEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbURlbGV0ZSBldmVudAogICAgIyB0aGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgZGVsZXRpbmcgdGhlIGNvbmZpZyBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLAogICAgIyBiZWNhdXNlIG9mIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBpbiB0aGUgY29uZmlnaXRlbV9oaXN0b3J5IHRhYmxlCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLT57TnVtYmVyfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDb25maWdJdGVtRGF0YS0+e0NsYXNzfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgY29uZmlnIGl0ZW0KICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW0gV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICApOwoKICAgICMgZGVsZXRlIHRoZSBjYWNoZQogICAgbXkgJENhY2hlS2V5ID0gJ0NvbmZpZ0l0ZW1HZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoKQoKYWRkcyBhbiBhdHRhY2htZW50IHRvIGEgY29uZmlnIGl0ZW0KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICBDb25maWdJdGVtSUQgICAgPT4gMSwKICAgICAgICBGaWxlbmFtZSAgICAgICAgPT4gJ2ZpbGVuYW1lJywKICAgICAgICBDb250ZW50ICAgICAgICAgPT4gJ2NvbnRlbnQnLAogICAgICAgIENvbnRlbnRUeXBlICAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgRmlsZW5hbWUgQ29udGVudCBDb250ZW50VHlwZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgd3JpdGUgdG8gdmlydHVhbCBmcwogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPldyaXRlKAogICAgICAgIEZpbGVuYW1lICAgID0+ICJDb25maWdJdGVtLyRQYXJhbXtDb25maWdJdGVtSUR9LyRQYXJhbXtGaWxlbmFtZX0iLAogICAgICAgIE1vZGUgICAgICAgID0+ICdiaW5hcnknLAogICAgICAgIENvbnRlbnQgICAgID0+IFwkUGFyYW17Q29udGVudH0sCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBDb250ZW50SUQgICAgPT4gJFBhcmFte0NvbnRlbnRJRH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlICA9PiAkUGFyYW17Q29udGVudFR5cGV9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICMgdHJpZ2dlciBBdHRhY2htZW50QWRkLUV2ZW50CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0F0dGFjaG1lbnRBZGRQb3N0JywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0F0dGFjaG1lbnRBZGQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGFkZCBhdHRhY2htZW50IGZvciBjb25maWcgaXRlbSAkUGFyYW17Q29uZmlnSXRlbUlEfSIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoKQoKRGVsZXRlIHRoZSBnaXZlbiBmaWxlIGZyb20gdGhlIHZpcnR1YWwgZmlsZXN5c3RlbS4KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLCAgICAgICAgICAgICAgICMgdXNlZCBpbiBldmVudCBoYW5kbGluZywgZS5nLiBmb3IgbG9nZ2luZyB0aGUgaGlzdG9yeQogICAgICAgIEZpbGVuYW1lICAgICA9PiAnUHJvamVjdHBsYW4ucGRmJywgIyBpZGVudGlmaWVzIHRoZSBhdHRhY2htZW50ICh0b2dldGhlciB3aXRoIHRoZSBDb25maWdJdGVtSUQpCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgRmlsZW5hbWUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCBwcmVmaXgKICAgIG15ICRGaWxlbmFtZSA9ICdDb25maWdJdGVtLycgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICcvJyAuICRQYXJhbXtGaWxlbmFtZX07CgogICAgIyBkZWxldGUgZmlsZQogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPkRlbGV0ZSgKICAgICAgICBGaWxlbmFtZSA9PiAkRmlsZW5hbWUsCiAgICApOwoKICAgICMgY2hlY2sgZm9yIGVycm9yCiAgICBpZiAoJFN1Y2Nlc3MpIHsKCiAgICAgICAgIyB0cmlnZ2VyIEF0dGFjaG1lbnREZWxldGVQb3N0LUV2ZW50CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0F0dGFjaG1lbnREZWxldGVQb3N0JywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0F0dGFjaG1lbnREZWxldGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2Fubm90IGRlbGV0ZSBhdHRhY2htZW50ICRGaWxlbmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBDb25maWdJdGVtQXR0YWNobWVudEdldCgpCgpUaGlzIG1ldGhvZCByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IG9uZSBzcGVjaWZpYyBhdHRhY2htZW50LgoKICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiA0LAogICAgICAgIEZpbGVuYW1lICAgICA9PiAndGVzdC50eHQnLAogICAgKTsKCnJldHVybnMKCiAgICB7CiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBBbGxQcmVmZXJlbmNlcyA9PiAndGVzdCcsCiAgICAgICAgfSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAndGVzdC50eHQnLAogICAgICAgIENvbnRlbnQgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgRmlsZXNpemUgICAgPT4gMTIzNDg0MDksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgfQoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BdHRhY2htZW50R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KENvbmZpZ0l0ZW1JRCBGaWxlbmFtZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbS8nIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gLiAnLycgLiAkUGFyYW17RmlsZW5hbWV9OwoKICAgICMgZmluZCBhbGwgYXR0YWNobWVudHMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgbXkgQEF0dGFjaG1lbnRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5GaW5kKAogICAgICAgIEZpbGVuYW1lICAgID0+ICRGaWxlbmFtZSwKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJldHVybiBlcnJvciBpZiBmaWxlIGRvZXMgbm90IGV4aXN0CiAgICBpZiAoICFAQXR0YWNobWVudHMgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkhIiwKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhIGZvciBhdHRhY2htZW50CiAgICBteSAlQXR0YWNobWVudERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyktPlJlYWQoCiAgICAgICAgRmlsZW5hbWUgPT4gJEZpbGVuYW1lLAogICAgICAgIE1vZGUgICAgID0+ICdiaW5hcnknLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudEluZm8gPSB7CiAgICAgICAgJUF0dGFjaG1lbnREYXRhLAogICAgICAgIEZpbGVuYW1lICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgQ29udGVudCAgICAgPT4gJHsgJEF0dGFjaG1lbnREYXRhe0NvbnRlbnR9IH0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJEF0dGFjaG1lbnREYXRhe1ByZWZlcmVuY2VzfS0+e0NvbnRlbnRUeXBlfSwKICAgICAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgRmlsZXNpemUgICAgPT4gJEF0dGFjaG1lbnREYXRhe1ByZWZlcmVuY2VzfS0+e0ZpbGVzaXplUmF3fSwKICAgIH07CgogICAgcmV0dXJuICRBdHRhY2htZW50SW5mbzsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgpCgpSZXR1cm5zIGFuIGFycmF5IHdpdGggYWxsIGF0dGFjaG1lbnRzIG9mIHRoZSBnaXZlbiBjb25maWcgaXRlbS4KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKcmV0dXJucwoKICAgIEBBdHRhY2htZW50cyA9ICgKICAgICAgICAnZmlsZW5hbWUudHh0JywKICAgICAgICAnb3RoZXJfZmlsZS5wZGYnLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICB9LAogICAgKTsKCiAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyByZW1vdmUgZXh0cmEgaW5mb3JtYXRpb24gZnJvbSBmaWxlbmFtZQogICAgICAgICRGaWxlbmFtZSA9fiBzeyBcQSBDb25maWdJdGVtIC8gXGQrIC8gfXt9eG1zOwogICAgfQoKICAgIHJldHVybiBAQXR0YWNobWVudHM7Cn0KCj1oZWFkMiBDb25maWdJdGVtQXR0YWNobWVudEV4aXN0cygpCgpDaGVja3MgaWYgYSBmaWxlIHdpdGggYSBnaXZlbiBmaWxlbmFtZSBleGlzdHMuCgogICAgbXkgJEV4aXN0cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEV4aXN0cygKICAgICAgICBGaWxlbmFtZSA9PiAndGVzdC50eHQnLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUF0dGFjaG1lbnRFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KEZpbGVuYW1lIENvbmZpZ0l0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5GaW5kKAogICAgICAgIEZpbGVuYW1lID0+ICdDb25maWdJdGVtLycgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICcvJyAuICRQYXJhbXtGaWxlbmFtZX0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCkKCnJldHVybiBhIGNvbmZpZyBpdGVtIGxpc3QgYXMgYW4gYXJyYXkgcmVmZXJlbmNlCgogICAgbXkgJENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKAogICAgICAgIE51bWJlciAgICAgICA9PiAnVGhlIENvbmZpZ0l0ZW0gTnVtYmVyJywgICMgKG9wdGlvbmFsKQogICAgICAgIE5hbWUgICAgICAgICA9PiAnVGhlIE5hbWUnLCAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIENsYXNzSURzICAgICA9PiBbOSwgOCwgNywgNl0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbMSwgMiwgMywgNF0sICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZWQgdGltZSBhZnRlciAuLi4KICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAwNi0wMS0wOSAwMDowMDowMScsICAjIChvcHRpb25hbCkKICAgICAgICAjIGNvbmZpZyBpdGVtcyB3aXRoIGNyZWF0ZWQgdGltZSBiZWZvcmUgdGhlbiAuLi4uCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMDYtMDEtMTkgMjM6NTk6NTknLCAgIyAob3B0aW9uYWwpCgogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGFmdGVyIC4uLgogICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICcyMDA2LTAxLTA5IDAwOjAwOjAxJywgICMgKG9wdGlvbmFsKQogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY2hhbmdlZCB0aW1lIGJlZm9yZSB0aGVuIC4uLi4KICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsICAjIChvcHRpb25hbCkKCiAgICAgICAgV2hhdCA9PiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgICAgICMgZWFjaCBhcnJheSBlbGVtZW50IGlzIGEgYW5kIGNvbmRpdGlvbgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAjIG9yIGNvbmRpdGlvbiBpbiBoYXNoCiAgICAgICAgICAgICAgICAiWyVdeydFbGVtZW50QSd9WyVdeydFbGVtZW50Qid9WyVdeydDb250ZW50J30iID0+ICclY29udGVudEElJywKICAgICAgICAgICAgICAgICJbJV17J0VsZW1lbnRBJ31bJV17J0VsZW1lbnRDJ31bJV17J0NvbnRlbnQnfSIgPT4gJyVjb250ZW50QSUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiWyVdeydFbGVtZW50QSd9WyVdeydFbGVtZW50Qid9WyVdeydDb250ZW50J30iID0+ICclY29udGVudEIlJywKICAgICAgICAgICAgICAgICJbJV17J0VsZW1lbnRBJ31bJV17J0VsZW1lbnRDJ31bJV17J0NvbnRlbnQnfSIgPT4gJyVjb250ZW50QiUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAjIHVzZSBhcnJheSByZWZlcmVuY2UgaWYgZGlmZmVyZW50IGNvbnRlbnQgd2l0aCBzYW1lIGtleSB3YXMgc2VhcmNoZWQKICAgICAgICAgICAgICAgICJbJV17J0VsZW1lbnRBJ31bJV17J0VsZW1lbnRCJ31bJV17J0NvbnRlbnQnfSIgPT4gWyclY29udGVudEMlJywgJyVjb250ZW50RCUnLCAnJWNvbnRlbnRFJSddLAogICAgICAgICAgICAgICAgIlslXXsnRWxlbWVudEEnfVslXXsnRWxlbWVudEMnfVslXXsnQ29udGVudCd9IiA9PiBbJyVjb250ZW50QyUnLCAnJWNvbnRlbnREJScsICclY29udGVudEUlJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKCiAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsICAjIChvcHRpb25hbCkgZGVmYXVsdCAwICgwfDEpCgogICAgICAgIE9yZGVyQnkgPT4gWyAnQ29uZmlnSXRlbUlEJywgJ051bWJlcicgXSwgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ0NvbmZpZ0l0ZW1JRCcgXQogICAgICAgICMgKENvbmZpZ0l0ZW1JRCwgTnVtYmVyLCBOYW1lLCBDbGFzc0lELCBEZXBsU3RhdGVJRCwgSW5jaVN0YXRlSUQsCiAgICAgICAgIyBDcmVhdGVUaW1lLCBDcmVhdGVCeSwgQ2hhbmdlVGltZSwgQ2hhbmdlQnkpCgogICAgICAgICMgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgT3JkZXJCeToKICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgIyBUaGUgcGFpcmluZyBpcyBtYWRlIGJ5IHRoZSBhcnJheSBpbmRpY2VzLgoKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJ0Rvd24nLCAnVXAnIF0sICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ0Rvd24nIF0KICAgICAgICAjIChEb3duIHwgVXApCgogICAgICAgIExpbWl0ICAgICAgICAgID0+IDEyMiwgICMgKG9wdGlvbmFsKQogICAgICAgIFVzaW5nV2lsZGNhcmRzID0+IDAsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDEKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBzZXQgbGltaXQKICAgIG15ICRMaW1pdCA9ICRQYXJhbXtMaW1pdH07CiAgICAkUGFyYW17TGltaXR9ID0gdW5kZWY7CgogICAgIyBjb25maWcgaXRlbSBzZWFyY2ggaXMgcmVxdWlyZWQgaWYgb25lIG9mIHRoZXNlIHBhcmFtcyBpcyBnaXZlbgogICAgbXkgQENvbmZpZ0l0ZW1TZWFyY2hQYXJhbXMgPSAoCiAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlJywKICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUnLAogICAgICAgICdDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgJ0NvbmZpZ0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlJywKICAgICk7CgogICAgIyBjaGVjaywgaWYgY29uZmlnIGl0ZW0gc2VhcmNoIGlzIHJlcXVpcmVkCiAgICBteSAlUmVxdWlyZWRTZWFyY2g7CiAgICBDT05GSUdJVEVNUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1QYXJhbSAoQENvbmZpZ0l0ZW1TZWFyY2hQYXJhbXMpIHsKICAgICAgICBuZXh0IENPTkZJR0lURU1QQVJBTSBpZiAhJFBhcmFteyRDb25maWdJdGVtUGFyYW19OwoKICAgICAgICAkUmVxdWlyZWRTZWFyY2h7Q29uZmlnSXRlbX0gPSAxOwogICAgICAgIGxhc3QgQ09ORklHSVRFTVBBUkFNOwogICAgfQoKICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICAjIG51bWJlciAwIGlzIGFsbG93ZWQgYnV0IG5vdCB0aGUgZW1wdHkgc3RyaW5nCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte051bWJlcn0gJiYgJFBhcmFte051bWJlcn0gbmUgJycgKSB7CiAgICAgICAgJFJlcXVpcmVkU2VhcmNoe0NvbmZpZ0l0ZW19ID0gMTsKICAgIH0KCiAgICAjIHZlcnNpb24gc2VhcmNoIGlzIHJlcXVpcmVkIGlmIE5hbWUsIFdoYXQgb3IgUHJldmlvdXNWZXJzaW9uU2VhcmNoIGlzIGdpdmVuCiAgICBpZiAoCiAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte05hbWV9ICkKICAgICAgICB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtXaGF0fSApCiAgICAgICAgfHwgJFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0KICAgICAgICApCiAgICB7CiAgICAgICAgJFJlcXVpcmVkU2VhcmNoe1ZlcnNpb259ID0gMTsKICAgIH0KCiAgICAjIHZlcnNpb24gc2VhcmNoIGlzIGFsc28gcmVxdWlyZWQgaWYgc29ydGluZyBieSBuYW1lIChmaXggZm9yIGJ1ZyAjNzA3MikKICAgIE9SREVSQlk6CiAgICBmb3IgbXkgJE9yZGVyQnkgKCBAeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKICAgICAgICBpZiAoICRPcmRlckJ5IGVxICdOYW1lJyApIHsKICAgICAgICAgICAgJFJlcXVpcmVkU2VhcmNoe1ZlcnNpb259ID0gMTsKICAgICAgICAgICAgbGFzdCBPUkRFUkJZOwogICAgICAgIH0KICAgIH0KCiAgICAjIHhtbCB2ZXJzaW9uIHNlYXJjaCBpcyByZXF1aXJlZCBpZiBXaGF0IGlzIGdpdmVuCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1doYXR9ICkgKSB7CiAgICAgICAgJFJlcXVpcmVkU2VhcmNoe1hNTFZlcnNpb259ID0gMTsKICAgIH0KCiAgICAjIHVzZSBjb25maWcgaXRlbSBzZWFyY2ggYXMgZmFsbGJhY2sKICAgIGlmICggISVSZXF1aXJlZFNlYXJjaCApIHsKICAgICAgICAkUmVxdWlyZWRTZWFyY2h7Q29uZmlnSXRlbX0gPSAxOwogICAgfQoKICAgICMgc3RhcnQgY29uZmlnIGl0ZW0gc2VhcmNoCiAgICBteSAlQ29uZmlnSXRlbUxpc3RzOwogICAgaWYgKCAkUmVxdWlyZWRTZWFyY2h7Q29uZmlnSXRlbX0gKSB7CgogICAgICAgICMgc2VhcmNoIGNvbmZpZyBpdGVtcwogICAgICAgICRDb25maWdJdGVtTGlzdHN7Q29uZmlnSXRlbX0gPSAkU2VsZi0+Q29uZmlnSXRlbVNlYXJjaCglUGFyYW0pOwoKICAgICAgICByZXR1cm4gICAgaWYgISRDb25maWdJdGVtTGlzdHN7Q29uZmlnSXRlbX07CiAgICAgICAgcmV0dXJuICAgIGlmIHJlZiAkQ29uZmlnSXRlbUxpc3Rze0NvbmZpZ0l0ZW19IG5lICdBUlJBWSc7CiAgICAgICAgcmV0dXJuIFtdIGlmICFAeyAkQ29uZmlnSXRlbUxpc3Rze0NvbmZpZ0l0ZW19IH07CiAgICB9CgogICAgIyBzdGFydCB2ZXJzaW9uIHNlYXJjaAogICAgaWYgKCAkUmVxdWlyZWRTZWFyY2h7VmVyc2lvbn0gKSB7CgogICAgICAgICMgc2VhcmNoIHZlcnNpb25zCiAgICAgICAgJENvbmZpZ0l0ZW1MaXN0c3tWZXJzaW9ufSA9ICRTZWxmLT5WZXJzaW9uU2VhcmNoKCVQYXJhbSk7CgogICAgICAgIHJldHVybiAgICBpZiAhJENvbmZpZ0l0ZW1MaXN0c3tWZXJzaW9ufTsKICAgICAgICByZXR1cm4gICAgaWYgcmVmICRDb25maWdJdGVtTGlzdHN7VmVyc2lvbn0gbmUgJ0FSUkFZJzsKICAgICAgICByZXR1cm4gW10gaWYgIUB7ICRDb25maWdJdGVtTGlzdHN7VmVyc2lvbn0gfTsKICAgIH0KCiAgICAjIHN0YXJ0IHhtbCB2ZXJzaW9uIHNlYXJjaAogICAgaWYgKCAkUmVxdWlyZWRTZWFyY2h7WE1MVmVyc2lvbn0gKSB7CgogICAgICAgICMgc2VhcmNoIHhtbCB2ZXJzaW9ucwogICAgICAgIG15ICRYTUxWZXJzaW9uTGlzdCA9ICRTZWxmLT5fWE1MVmVyc2lvblNlYXJjaCglUGFyYW0pOwoKICAgICAgICByZXR1cm4gICAgaWYgISRYTUxWZXJzaW9uTGlzdDsKICAgICAgICByZXR1cm4gICAgaWYgcmVmICRYTUxWZXJzaW9uTGlzdCBuZSAnSEFTSCc7CiAgICAgICAgcmV0dXJuIFtdIGlmICEleyRYTUxWZXJzaW9uTGlzdH07CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGlkcwogICAgICAgIG15ICVDb25maWdJdGVtTGlzdFRtcDsKICAgICAgICBWRVJTSU9OSUQ6CiAgICAgICAgZm9yIG15ICRWZXJzaW9uSUQgKCBzb3J0IGtleXMgJXskWE1MVmVyc2lvbkxpc3R9ICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJFNlbGYtPlZlcnNpb25Db25maWdJdGVtSURHZXQoCiAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJFZlcnNpb25JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVkVSU0lPTklEIGlmICEkQ29uZmlnSXRlbUlEOwoKICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0VG1weyRDb25maWdJdGVtSUR9ID0gMTsKICAgICAgICB9CgogICAgICAgICMgYWRkIGlkcyB0byBjb25maWcgaXRlbSBsaXN0CiAgICAgICAgJENvbmZpZ0l0ZW1MaXN0c3tYTUxWZXJzaW9ufSA9IFwlQ29uZmlnSXRlbUxpc3RUbXA7CiAgICB9CgogICAgIyBjcmVhdGUgdGhlIHJlc3VsdCBsaXN0CiAgICBteSBAUmVzdWx0TGlzdDsKICAgIGlmICggJFJlcXVpcmVkU2VhcmNoe0NvbmZpZ0l0ZW19ICYmICRSZXF1aXJlZFNlYXJjaHtWZXJzaW9ufSApIHsKCiAgICAgICAgIyBidWlsZCBhIGxvb2t1cCBoYXNoIG9mIGFsbCBmb3VuZCBjb25maWdpdGVtIGlkcyBpbiAkQ29uZmlnSXRlbUxpc3Rze0NvbmZpZ0l0ZW19CiAgICAgICAgbXkgJUNvbmZpZ0l0ZW1TZWVuID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRDb25maWdJdGVtTGlzdHN7Q29uZmlnSXRlbX0gfTsKCiAgICAgICAgIyBjaGVjayBhbGwgY29uZmlnIGl0ZW0gaWRzLCB3ZSBuZWVkIHRvIGtlZXAgdGhlIHNvcnRpbmcKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkQ29uZmlnSXRlbUxpc3Rze1ZlcnNpb259IH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkQ29uZmlnSXRlbVNlZW57JENvbmZpZ0l0ZW1JRH07CiAgICAgICAgICAgIHB1c2ggQFJlc3VsdExpc3QsICRDb25maWdJdGVtSUQ7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUmVxdWlyZWRTZWFyY2h7Q29uZmlnSXRlbX0gKSB7CiAgICAgICAgQFJlc3VsdExpc3QgPSBAeyAkQ29uZmlnSXRlbUxpc3Rze0NvbmZpZ0l0ZW19IH07CiAgICB9CiAgICBlbHNpZiAoICRSZXF1aXJlZFNlYXJjaHtWZXJzaW9ufSApIHsKICAgICAgICBAUmVzdWx0TGlzdCA9IEB7ICRDb25maWdJdGVtTGlzdHN7VmVyc2lvbn0gfTsKICAgIH0KCiAgICAjIGNvbnNpZGVyIHRoZSBYTUwgcmVzdWx0CiAgICBpZiAoICRSZXF1aXJlZFNlYXJjaHtYTUxWZXJzaW9ufSApIHsKICAgICAgICBAUmVzdWx0TGlzdCA9IGdyZXAgeyAkQ29uZmlnSXRlbUxpc3Rze1hNTFZlcnNpb259LT57JF99IH0gQFJlc3VsdExpc3Q7CiAgICB9CgogICAgIyBjb25zaWRlciBsaW1pdAogICAgaWYgKCAkTGltaXQgJiYgJExpbWl0IDwgc2NhbGFyIEBSZXN1bHRMaXN0ICkgewoKICAgICAgICAjIGV4dHJhY3QgdGhlIGxpbWl0ZWQgaWRzCiAgICAgICAgJExpbWl0LS07CiAgICAgICAgQFJlc3VsdExpc3QgPSBAUmVzdWx0TGlzdFsgMCAuLiAkTGltaXQgXTsKICAgIH0KCiAgICByZXR1cm4gXEBSZXN1bHRMaXN0Owp9Cgo9aGVhZDIgQ29uZmlnSXRlbVNlYXJjaCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBsaXN0IGFzIGFuIGFycmF5IHJlZmVyZW5jZQoKICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgTnVtYmVyICAgICAgID0+ICdUaGUgQ29uZmlnSXRlbSBOdW1iZXInLCAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2xhc3NJRHMgICAgID0+IFs5LCA4LCA3LCA2XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgRGVwbFN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSW5jaVN0YXRlSURzID0+IFsxLCAyLCAzLCA0XSwgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ3JlYXRlQnkgICAgID0+IFsxLCAyLCAzXSwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgQ2hhbmdlQnkgICAgID0+IFszLCAyLCAxXSwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY3JlYXRlZCB0aW1lIGFmdGVyIC4uLgogICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDA2LTAxLTA5IDAwOjAwOjAxJywgICMgKG9wdGlvbmFsKQogICAgICAgICMgY29uZmlnIGl0ZW1zIHdpdGggY3JlYXRlZCB0aW1lIGJlZm9yZSB0aGVuIC4uLi4KICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAwNi0wMS0xOSAyMzo1OTo1OScsICAjIChvcHRpb25hbCkKCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjaGFuZ2VkIHRpbWUgYWZ0ZXIgLi4uCiAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMDYtMDEtMDkgMDA6MDA6MDEnLCAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBjb25maWcgaXRlbXMgd2l0aCBjaGFuZ2VkIHRpbWUgYmVmb3JlIHRoZW4gLi4uLgogICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICcyMDA2LTAxLTE5IDIzOjU5OjU5JywgICMgKG9wdGlvbmFsKQoKICAgICAgICBPcmRlckJ5ID0+IFsgJ0NvbmZpZ0l0ZW1JRCcsICdOdW1iZXInIF0sICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdDb25maWdJdGVtSUQnIF0KICAgICAgICAjIChDb25maWdJdGVtSUQsIE51bWJlciwgQ2xhc3NJRCwgRGVwbFN0YXRlSUQsIEluY2lTdGF0ZUlELAogICAgICAgICMgQ3JlYXRlVGltZSwgQ3JlYXRlQnksIENoYW5nZVRpbWUsIENoYW5nZUJ5KQoKICAgICAgICAjIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gZm9yIE9yZGVyQnk6CiAgICAgICAgIyBUaGUgT3JkZXJCeURpcmVjdGlvbiBjYW4gYmUgc3BlY2lmaWVkIGZvciBlYWNoIE9yZGVyQnkgYXR0cmlidXRlLgogICAgICAgICMgVGhlIHBhaXJpbmcgaXMgbWFkZSBieSB0aGUgYXJyYXkgaW5kaWNlcy4KCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbICdEb3duJywgJ1VwJyBdLCAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdEb3duJyBdCiAgICAgICAgIyAoRG93biB8IFVwKQoKICAgICAgICBMaW1pdCAgICAgICAgICA9PiAxMjIsICAjIChvcHRpb25hbCkKICAgICAgICBVc2luZ1dpbGRjYXJkcyA9PiAwLCAgICAjIChvcHRpb25hbCkgZGVmYXVsdCAxCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1TZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHZlcmlmeSB0aGF0IGFsbCBwYXNzZWQgYXJyYXkgcGFyYW1ldGVycyBjb250YWluIGFuIGFycmF5cmVmCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKAogICAgICAgIHF3KAogICAgICAgIE9yZGVyQnkKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uCiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkUGFyYW17JEFyZ3VtZW50fSB8fD0gW107CgogICAgICAgICAgICBuZXh0IEFSR1VNRU5UOwogICAgICAgIH0KCiAgICAgICAgaWYgKCByZWYgJFBhcmFteyRBcmd1bWVudH0gbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRBcmd1bWVudCBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIG9yZGVyIHRhYmxlCiAgICBteSAlT3JkZXJCeVRhYmxlID0gKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAnaWQnLAogICAgICAgIE51bWJlciAgICAgICA9PiAnY29uZmlnaXRlbV9udW1iZXInLAogICAgICAgIENsYXNzSUQgICAgICA9PiAnY2xhc3NfaWQnLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAnY3VyX2RlcGxfc3RhdGVfaWQnLAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAnY3VyX2luY2lfc3RhdGVfaWQnLAogICAgICAgIENyZWF0ZVRpbWUgICA9PiAnY3JlYXRlX3RpbWUnLAogICAgICAgIENyZWF0ZUJ5ICAgICA9PiAnY3JlYXRlX2J5JywKICAgICAgICBDaGFuZ2VUaW1lICAgPT4gJ2NoYW5nZV90aW1lJywKICAgICAgICBDaGFuZ2VCeSAgICAgPT4gJ2NoYW5nZV9ieScsCiAgICApOwoKICAgICMgY2hlY2sgaWYgT3JkZXJCeSBjb250YWlucyBvbmx5IHVuaXF1ZSB2YWxpZCB2YWx1ZXMKICAgIG15ICVPcmRlckJ5U2VlbjsKICAgIE9SREVSQlk6CiAgICBmb3IgbXkgJE9yZGVyQnkgKCBAeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKCiAgICAgICAgbmV4dCBPUkRFUkJZIGlmICRPcmRlckJ5IGVxICdOYW1lJzsKCiAgICAgICAgaWYgKCAhJE9yZGVyQnkgfHwgISRPcmRlckJ5VGFibGV7JE9yZGVyQnl9IHx8ICRPcmRlckJ5U2VlbnskT3JkZXJCeX0gKSB7CgogICAgICAgICAgICAjIGZvdW5kIGFuIGVycm9yCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJPcmRlckJ5IGNvbnRhaW5zIGludmFsaWQgdmFsdWUgJyRPcmRlckJ5JyAiCiAgICAgICAgICAgICAgICAgICAgLiAnb3IgdGhlIHZhbHVlIGlzIHVzZWQgbW9yZSB0aGFuIG9uY2UhJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGUgdmFsdWUgdG8gY2hlY2sgaWYgaXQgYXBwZWFycyBtb3JlIHRoYW4gb25jZQogICAgICAgICRPcmRlckJ5U2VlbnskT3JkZXJCeX0gPSAxOwogICAgfQoKICAgICMgY2hlY2sgaWYgT3JkZXJCeURpcmVjdGlvbiBhcnJheSBjb250YWlucyBvbmx5ICdVcCcgb3IgJ0Rvd24nCiAgICBESVJFQ1RJT046CiAgICBmb3IgbXkgJERpcmVjdGlvbiAoIEB7ICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufSB9ICkgewoKICAgICAgICAjIG9ubHkgJ1VwJyBvciAnRG93bicgYWxsb3dlZAogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICREaXJlY3Rpb24gZXEgJ1VwJzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdEb3duJzsKCiAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeURpcmVjdGlvbiBjYW4gb25seSBjb250YWluICdVcCcgb3IgJ0Rvd24nISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZXMKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1VzaW5nV2lsZGNhcmRzfSApIHsKICAgICAgICAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ID0gMTsKICAgIH0KCiAgICAjIGdldCBsaWtlIGVzY2FwZSBzdHJpbmcgbmVlZGVkIGZvciBzb21lIGRhdGFiYXNlcyAoZS5nLiBvcmFjbGUpCiAgICBteSAkTGlrZUVzY2FwZVN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdMaWtlRXNjYXBlU3RyaW5nJyk7CgogICAgIyBhc3NlbWJsZSB0aGUgT1JERVIgQlkgY2xhdXNlCiAgICBteSBAU1FMT3JkZXJCeTsKICAgIG15ICRDb3VudCA9IDA7CiAgICBPUkRFUkJZOgogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIG5leHQgT1JERVJCWSBpZiAkT3JkZXJCeSBlcSAnTmFtZSc7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IG9yZGVyIGRpcmVjdGlvbgogICAgICAgIG15ICREaXJlY3Rpb24gPSAnREVTQyc7CgogICAgICAgICMgYWRkIHRoZSBnaXZlbiBvcmRlciBkaXJlY3Rpb24KICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBTUUwKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAiJE9yZGVyQnlUYWJsZXskT3JkZXJCeX0gJERpcmVjdGlvbiI7CgogICAgfQogICAgY29udGludWUgewogICAgICAgICRDb3VudCsrOwogICAgfQoKICAgICMgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBvcmRlcmluZyBpcyBub3QgZGV0ZXJtaW5lZAogICAgIyB3ZSBhZGQgYW4gYXNjZW5kaW5nIG9yZGVyaW5nIGJ5IGlkCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ0NvbmZpZ0l0ZW1JRCcgfSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgKSB7CiAgICAgICAgcHVzaCBAU1FMT3JkZXJCeSwgIiRPcmRlckJ5VGFibGV7Q29uZmlnSXRlbUlEfSBBU0MiOwogICAgfQoKICAgICMgYWRkIG51bWJlciB0byBzcWwgd2hlcmUgYXJyYXkKICAgIG15IEBTUUxXaGVyZTsKICAgIGlmICggZGVmaW5lZCAkUGFyYW17TnVtYmVyfSAmJiAkUGFyYW17TnVtYmVyfSBuZSAnJyAmJiByZWYgJFBhcmFte051bWJlcn0gbmUgJ0FSUkFZJyApIHsKCiAgICAgICAgIyBxdW90ZQogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCAkUGFyYW17TnVtYmVyfSApOwoKICAgICAgICBpZiAoICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gKSB7CgogICAgICAgICAgICAjIHByZXBhcmUgbGlrZSBzdHJpbmcKICAgICAgICAgICAgJFNlbGYtPl9QcmVwYXJlTGlrZVN0cmluZyggXCRQYXJhbXtOdW1iZXJ9ICk7CgogICAgICAgICAgICBwdXNoIEBTUUxXaGVyZSwKICAgICAgICAgICAgICAgICJMT1dFUihjb25maWdpdGVtX251bWJlcikgTElLRSBMT1dFUignJFBhcmFte051bWJlcn0nKSAkTGlrZUVzY2FwZVN0cmluZyI7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBwdXNoIEBTUUxXaGVyZSwgIkxPV0VSKGNvbmZpZ2l0ZW1fbnVtYmVyKSA9IExPV0VSKCckUGFyYW17TnVtYmVyfScpIjsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte051bWJlcn0gJiYgJFBhcmFte051bWJlcn0gbmUgJycgJiYgcmVmICRQYXJhbXtOdW1iZXJ9IGVxICdBUlJBWScgKSB7CgogICAgICAgICMgQ3JlYXRlIHN0cmluZy4KICAgICAgICBteSAkSW5TdHJpbmcgPSBqb2luIHF7LCB9LCBAeyAkUGFyYW17TnVtYmVyfSB9OwoKICAgICAgICBwdXNoIEBTUUxXaGVyZSwgIkxPV0VSKGNvbmZpZ2l0ZW1fbnVtYmVyKSBJTiAoJEluU3RyaW5nKSI7CiAgICB9CgogICAgIyBzZXQgYXJyYXkgcGFyYW1zCiAgICBteSAlQXJyYXlQYXJhbXMgPSAoCiAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiAnaWQnLAogICAgICAgIENsYXNzSURzICAgICAgPT4gJ2NsYXNzX2lkJywKICAgICAgICBEZXBsU3RhdGVJRHMgID0+ICdjdXJfZGVwbF9zdGF0ZV9pZCcsCiAgICAgICAgSW5jaVN0YXRlSURzICA9PiAnY3VyX2luY2lfc3RhdGVfaWQnLAogICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gJ2NyZWF0ZV9ieScsCiAgICAgICAgQ2hhbmdlQnkgICAgICA9PiAnY2hhbmdlX2J5JywKICAgICk7CgogICAgQVJSQVlQQVJBTToKICAgIGZvciBteSAkQXJyYXlQYXJhbSAoIHNvcnQga2V5cyAlQXJyYXlQYXJhbXMgKSB7CgogICAgICAgIG5leHQgQVJSQVlQQVJBTSBpZiAhJFBhcmFteyRBcnJheVBhcmFtfTsKCiAgICAgICAgaWYgKCByZWYgJFBhcmFteyRBcnJheVBhcmFtfSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEFycmF5UGFyYW0gbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgbmV4dCBBUlJBWVBBUkFNIGlmICFAeyAkUGFyYW17JEFycmF5UGFyYW19IH07CgogICAgICAgICMgcXVvdGUgYXMgaW50ZWdlcgogICAgICAgIGZvciBteSAkT25lUGFyYW0gKCBAeyAkUGFyYW17JEFycmF5UGFyYW19IH0gKSB7CiAgICAgICAgICAgICRPbmVQYXJhbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJE9uZVBhcmFtLCAnSW50ZWdlcicgKTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHN0cmluZwogICAgICAgIG15ICRJblN0cmluZyA9IGpvaW4gcXssIH0sIEB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfTsKCiAgICAgICAgbmV4dCBBUlJBWVBBUkFNIGlmICEkSW5TdHJpbmc7CgogICAgICAgIHB1c2ggQFNRTFdoZXJlLCAiJEFycmF5UGFyYW1zeyAkQXJyYXlQYXJhbSB9IElOICgkSW5TdHJpbmcpIjsKICAgIH0KCiAgICAjIHNldCB0aW1lIHBhcmFtcwogICAgbXkgJVRpbWVQYXJhbXMgPSAoCiAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJ2NyZWF0ZV90aW1lID49JywKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnY3JlYXRlX3RpbWUgPD0nLAogICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICdjaGFuZ2VfdGltZSA+PScsCiAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJ2NoYW5nZV90aW1lIDw9JywKICAgICk7CgogICAgVElNRVBBUkFNOgogICAgZm9yIG15ICRUaW1lUGFyYW0gKCBzb3J0IGtleXMgJVRpbWVQYXJhbXMgKSB7CgogICAgICAgIG5leHQgVElNRVBBUkFNIGlmICEkUGFyYW17JFRpbWVQYXJhbX07CgogICAgICAgIGlmICggJFBhcmFteyRUaW1lUGFyYW19ICF+IG17IFxBIFxkXGRcZFxkLVxkXGQtXGRcZCBccyBcZFxkOlxkXGQ6XGRcZCBceiB9eG1zICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBkYXRlIGZvcm1hdCBmb3VuZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHF1b3RlCiAgICAgICAgJFBhcmFteyRUaW1lUGFyYW19ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCAkUGFyYW17JFRpbWVQYXJhbX0gKTsKCiAgICAgICAgcHVzaCBAU1FMV2hlcmUsICIkVGltZVBhcmFtc3sgJFRpbWVQYXJhbSB9ICckUGFyYW17ICRUaW1lUGFyYW0gfSciOwogICAgfQoKICAgICMgY3JlYXRlIHdoZXJlIHN0cmluZwogICAgbXkgJFdoZXJlU3RyaW5nID0gQFNRTFdoZXJlID8gJyBXSEVSRSAnIC4gam9pbiBxeyBBTkQgfSwgQFNRTFdoZXJlIDogJyc7CgogICAgIyBzZXQgbGltaXQKICAgIGlmICggJFBhcmFte0xpbWl0fSApIHsKICAgICAgICAkUGFyYW17TGltaXR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCAkUGFyYW17TGltaXR9LCAnSW50ZWdlcicgKTsKICAgIH0KCiAgICBteSAkU1FMID0gIlNFTEVDVCBpZCBGUk9NIGNvbmZpZ2l0ZW0gJFdoZXJlU3RyaW5nICI7CgogICAgIyBhZGQgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgaWYgKEBTUUxPcmRlckJ5KSB7CiAgICAgICAgJFNRTCAuPSAnT1JERVIgQlkgJzsKICAgICAgICAkU1FMIC49IGpvaW4gJywgJywgQFNRTE9yZGVyQnk7CiAgICAgICAgJFNRTCAuPSAnICc7CiAgICB9CgogICAgIyBhc2sgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1MaXN0LCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDIgQ29uZmlnSXRlbUxvb2t1cCgpCgpUaGlzIG1ldGhvZCBkb2VzIGEgbG9va3VwIGZvciBhIGNvbmZpZy1pdGVtLiBJZiBhIGNvbmZpZy1pdGVtIGlkIGlzIGdpdmVuLAppdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIGNvbmZpZy1pdGVtLiBJZiBhIGNvbmZpZy1pdGVtIG51bWJlciBpcyBnaXZlbiwKdGhlIGFwcHJvcHJpYXRlIGlkIGlzIHJldHVybmVkLgoKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzNCwKICAgICk7CgogICAgbXkgJElEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAxMDAwMDAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgKCRLZXkpID0gZ3JlcCB7ICRQYXJhbXskX30gfSBxdyhDb25maWdJdGVtSUQgQ29uZmlnSXRlbU51bWJlcik7CgogICAgIyBjaGVjayBmb3IgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkS2V5ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQgb3IgQ29uZmlnSXRlbU51bWJlciEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgcmVzdWx0IGlzIGNhY2hlZCByZXR1cm4gdGhhdCByZXN1bHQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0NvbmZpZ0l0ZW1Mb29rdXB9LT57JEtleX0tPnsgJFBhcmFteyRLZXl9IH0KICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0NvbmZpZ0l0ZW1Mb29rdXB9LT57JEtleX0tPnsgJFBhcmFteyRLZXl9IH07CgogICAgIyBzZXQgdGhlIGFwcHJvcHJpYXRlIFNRTCBzdGF0ZW1lbnQKICAgIG15ICRTUUwgPSAnU0VMRUNUIGNvbmZpZ2l0ZW1fbnVtYmVyIEZST00gY29uZmlnaXRlbSBXSEVSRSBpZCA9ID8nOwoKICAgIGlmICggJEtleSBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgJFNRTCA9ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFIGNvbmZpZ2l0ZW1fbnVtYmVyID0gPyc7CiAgICB9CgogICAgIyBmZXRjaCB0aGUgcmVxdWVzdGVkIHZhbHVlCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFteyRLZXl9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJFZhbHVlOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmFsdWUgPSAkUm93WzBdOwogICAgfQoKICAgICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbUxvb2t1cH0tPnskS2V5fS0+eyAkUGFyYW17JEtleX0gfSA9ICRWYWx1ZTsKCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgVW5pcXVlTmFtZUNoZWNrKCkKClRoaXMgbWV0aG9kIGNoZWNrcyBhbGwgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMsIHdoZXRoZXIgdGhlIGdpdmVuIG5hbWUgZG9lcyBhbHJlYWR5IGV4aXN0CndpdGhpbiB0aGUgc2FtZSBjb25maWcgaXRlbSBjbGFzcyBvciBhbW9uZyBhbGwgY2xhc3NlcywgZGVwZW5kaW5nIG9uIHRoZSBTeXNDb25maWcgdmFsdWUgb2YKVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSAoQ2xhc3Mgb3IgR2xvYmFsKS4KClRoaXMgbWV0aG9kIHJlcXVpcmVzIDMgcGFyYW1ldGVyczogQ29uZmlnSXRlbUlELCBOYW1lIGFuZCBDbGFzcwoiQ29uZmlnSXRlbUlEIiAgaXMgdGhlIElEIG9mIHRoZSBDb25maWdJdGVtLCB3aGljaCBpcyB0byBiZSBjaGVja2VkIGZvciB1bmlxdWVuZXNzCiJOYW1lIiAgICAgICAgICBpcyB0aGUgY29uZmlnIGl0ZW0gbmFtZSB0byBiZSBjaGVja2VkIGZvciB1bmlxdWVuZXNzCiJDbGFzc0lEIiAgICAgICBpcyB0aGUgSUQgb2YgdGhlIGNvbmZpZyBpdGVtJ3MgY2xhc3MKCkFsbCBwYXJhbWV0ZXJzIGFyZSBtYW5kYXRvcnkuCgpteSAkRHVwbGljYXRlTmFtZXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+VW5pcXVlTmFtZUNoZWNrKAogICAgQ29uZmlnSXRlbUlEID0+ICc3MycKICAgIE5hbWUgICAgICAgICA9PiAnUEMjMDA1JywKICAgIENsYXNzSUQgICAgICA9PiAnMzInLAopOwoKVGhlIGdpdmVuIG5hbWUgaXMgbm90IHVuaXF1ZQpteSAkTmFtZUR1cGxpY2F0ZXMgPSBbIDUsIDM1LCA0OCwgXTsgICAgIyBJRHMgb2YgQ29uZmlnSXRlbXMgd2l0aCB0aGUgc2FtZSBuYW1lCgpUaGUgZ2l2ZW4gbmFtZSBpcyB1bmlxdWUKbXkgJE5hbWVEdXBsaWNhdGVzID0gW107Cgo9Y3V0CgpzdWIgVW5pcXVlTmFtZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBmb3IgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIE5hbWUgQ2xhc3NJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nIHBhcmFtZXRlciAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtSUQgcGFyYW0gZm9yIHZhbGlkIGZvcm1hdAogICAgaWYgKAogICAgICAgICFJc0ludGVnZXIoICRQYXJhbXtDb25maWdJdGVtSUR9ICkKICAgICAgICAmJiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKQogICAgICAgICkKICAgIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBDb25maWdJdGVtSUQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGFuIGludGVnZXIgb3IgJ05FVyciLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgTmFtZSBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17TmFtZX0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBOYW1lIHBhcmFtZXRlciBuZWVkcyB0byBiZSBhIHN0cmluZyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgQ2xhc3NJRCBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoICFJc0ludGVnZXIoICRQYXJhbXtDbGFzc0lEfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIENsYXNzSUQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGFuIGludGVnZXIiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBsaXN0IGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJENsYXNzTGlzdCkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVbmFibGUgdG8gcmV0cmlldmUgYSB2YWxpZCBjbGFzcyBsaXN0ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdGhlIGNsYXNzIG5hbWUgZnJvbSB0aGUgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzID0gJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfTsKCiAgICAjIGNoZWNrIGNsYXNzIGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkQ2xhc3MpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5hYmxlIHRvIGRldGVybWluZSBhIGNvbmZpZyBpdGVtIGNsYXNzIHVzaW5nIHRoZSBnaXZlbiBDbGFzc0lEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBlbHNpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUmVzb2x2ZWQgQ2xhc3NJRCAkUGFyYW17Q2xhc3NJRH0gdG8gY2xhc3MgJENsYXNzIiwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHRoZSB1bmlxdWVuZXNzIHNjb3BlIGZyb20gU3lzQ29uZmlnCiAgICBteSAkU2NvcGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnKTsKCiAgICAjIGNoZWNrIHNjb3BlIGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkU2NvcGUpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGNvbmZpZ3VyYXRpb24gb2YgVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkU2NvcGUgbmUgJ2dsb2JhbCcgJiYgJFNjb3BlIG5lICdjbGFzcycgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlIGlzICRTY29wZSwgYnV0IG11c3QgYmUgZWl0aGVyICIKICAgICAgICAgICAgICAgIC4gIidnbG9iYWwnIG9yICdjbGFzcychIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIHNjb3BlIGZvciBjaGVja2luZyB0aGUgdW5pcXVlbmVzcyBpcyAkU2NvcGUiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJVNlYXJjaENyaXRlcmlhOwoKICAgICMgYWRkIHRoZSBjb25maWcgaXRlbSBjbGFzcyB0byB0aGUgc2VhcmNoIGNyaXRlcmlhIGlmIHRoZSB1bmlxdWVuZXNzIHNjb3BlIGlzIG5vdCBnbG9iYWwKICAgIGlmICggJFNjb3BlIG5lICdnbG9iYWwnICkgewogICAgICAgICRTZWFyY2hDcml0ZXJpYXtDbGFzc0lEc30gPSBbICRQYXJhbXtDbGFzc0lEfSBdOwogICAgfQoKICAgICRTZWFyY2hDcml0ZXJpYXtOYW1lfSA9ICRQYXJhbXtOYW1lfTsKCiAgICAjIHNlYXJjaCBmb3IgYSBjb25maWcgaXRlbSBtYXRjaGluZyB0aGUgZ2l2ZW4gbmFtZQogICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCVTZWFyY2hDcml0ZXJpYSk7CgogICAgIyByZW1vdmUgdGhlIHByb3ZpZGVkIENvbmZpZ0l0ZW1JRCBmcm9tIHRoZSByZXN1bHRzLCBvdGhlcndpc2UgdGhlIGR1cGxpY2F0ZSBjaGVjayB3b3VsZCBmYWlsCiAgICAjIGJlY2F1c2UgdGhlIENvbmZpZ0l0ZW0gaXRzZWxmIGlzIGZvdW5kIGFzIGR1cGxpY2F0ZQogICAgbXkgQER1cGxpY2F0ZXMgPSBtYXAgeyRffSBncmVwIHsgJF8gbmUgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfSBAeyRDb25maWdJdGVtfTsKCiAgICAjIGlmIGEgY29uZmlnIGl0ZW0gd2FzIGZvdW5kLCB0aGUgZ2l2ZW4gbmFtZSBpcyBub3QgdW5pcXVlCiAgICAjIGlmIG5vIGNvbmZpZyBpdGVtIHdhcyBmb3VuZCwgdGhlIGdpdmVuIG5hbWUgaXMgdW5pcXVlCgogICAgIyByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIGZvciBkdXBsaWNhdGVzCiAgICByZXR1cm4gXEBEdXBsaWNhdGVzOwp9Cgo9aGVhZDIgQ3VySW5jaVN0YXRlUmVjYWxjKCkKCnJlY2FsY3VsYXRlcyB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtIGFuZCBhbGwgbGlua2VkIGNvbmZpZyBpdGVtcwoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1ckluY2lTdGF0ZVJlY2FsYygKICAgICAgICBDb25maWdJdGVtSUQgICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUgPT4gJE5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLCAgIyBvcHRpb25hbCwgaW5jaWRlbnQgc3RhdGVzIG9mIGFscmVhZHkgY2hlY2tlZCBDSXMKICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiAkU2Nhbm5lZENvbmZpZ0l0ZW1JRHMsICAgICAgICAjIG9wdGlvbmFsLCBJRHMgb2YgYWxyZWFkeSBjaGVja2VkIENJcwogICAgKTsKCj1jdXQKCnN1YiBDdXJJbmNpU3RhdGVSZWNhbGMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IGxpbmsgdHlwZXMgYW5kIGRpcmVjdGlvbnMgZnJvbSBjb25maWcKICAgIG15ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgogICAgIyB0byBzdG9yZSB0aGUgbmV3IGluY2lkZW50IHN0YXRlIGZvciBDSXMKICAgICMgY2FsY3VsYXRlZCBmcm9tIGFsbCBpbmNpZGVudCBsaW5rIHR5cGVzCiAgICAjIEluY29ycG9yYXRlIGRhdGEgZnJvbSBwcmV2aW91cyBydW4ocykgYW5kIHJlbWVtYmVyIGtub3duIGRhdGEuCiAgICAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9IC8vPSB7fTsKICAgIG15ICRLbm93bk5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlID0gU3RvcmFibGU6OmRjbG9uZSggJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSApOwoKICAgICMgdG8gc3RvcmUgdGhlIHJlbGF0aW9uIGJldHdlZW4gc2VydmljZXMgYW5kIGxpbmtlZCBDSXMKICAgIG15ICVTZXJ2aWNlQ0lSZWxhdGlvbjsKCiAgICAjIHJlbWVtYmVyIHRoZSBzY2FubmVkIGNvbmZpZyBpdGVtcwogICAgIyBJbmNvcnBvcmF0ZSBkYXRhIGZyb20gcHJldmlvdXMgcnVuKHMpIGFuZCByZW1lbWJlciBrbm93biBkYXRhLgogICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSAvLz0ge307CiAgICBteSAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcyA9IFN0b3JhYmxlOjpkY2xvbmUoICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30gKTsKCiAgICAjIGZpbmQgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIGFuIGluY2lkZW50IHN0YXRlCiAgICAkU2VsZi0+X0ZpbmRJbmNpQ29uZmlnSXRlbXMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uID0+ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLAogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzICAgICAgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICk7CgogICAgIyBjYWxjdWxhdGUgdGhlIG5ldyBDSSBpbmNpZGVudCBzdGF0ZSBmb3IgZWFjaCBjb25maWd1cmVkIGxpbmt0eXBlCiAgICBMSU5LVFlQRToKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXskSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbn0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBkaXJlY3Rpb24KICAgICAgICBteSAkTGlua0RpcmVjdGlvbiA9ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT57JExpbmtUeXBlfTsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSBhbGwgY29uZmlnIGl0ZW1zIHdpdGggYSB3YXJuaW5nIHN0YXRlCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30gfSApIHsKCiAgICAgICAgICAgICMgU2tpcCBjb25maWcgaXRlbXMga25vd24gZnJvbSBwcmV2aW91cyBleGVjdXRpb24ocykuCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRLbm93blNjYW5uZWRDb25maWdJdGVtSURzLT57JENvbmZpZ0l0ZW1JRH0tPntUeXBlfSApCiAgICAgICAgICAgICAgICAmJiAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9LT57VHlwZX0gZXEKICAgICAgICAgICAgICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30tPnskQ29uZmlnSXRlbUlEfS0+e1R5cGV9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGludmVzdGlnYXRlIG9ubHkgY29uZmlnIGl0ZW1zIHdpdGggYW4gaW5jaWRlbnQgc3RhdGUKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfS0+eyRDb25maWdJdGVtSUR9LT57VHlwZX0gbmUgJ2luY2lkZW50JzsKCiAgICAgICAgICAgICRTZWxmLT5fRmluZFdhcm5Db25maWdJdGVtcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgICA9PiAkTGlua0RpcmVjdGlvbiwKICAgICAgICAgICAgICAgIE51bWJlck9mTGlua1R5cGVzICAgID0+IHNjYWxhciBrZXlzICV7JEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb259LAogICAgICAgICAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9IH0gKSB7CgogICAgICAgICAgICAjIFNraXAgY29uZmlnIGl0ZW1zIGtub3duIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uKHMpLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9LT57VHlwZX0gKQogICAgICAgICAgICAgICAgJiYgJEtub3duU2Nhbm5lZENvbmZpZ0l0ZW1JRHMtPnskQ29uZmlnSXRlbUlEfS0+e1R5cGV9IGVxCiAgICAgICAgICAgICAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LT57JENvbmZpZ0l0ZW1JRH0tPntUeXBlfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBleHRyYWN0IGluY2lkZW50IHN0YXRlIHR5cGUKICAgICAgICAgICAgbXkgJEluY2lTdGF0ZVR5cGUgPSAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LT57JENvbmZpZ0l0ZW1JRH0tPntUeXBlfTsKCiAgICAgICAgICAgICMgZmluZCBhbGwgbGlua2VkIHNlcnZpY2VzIG9mIHRoaXMgQ0kKICAgICAgICAgICAgbXkgJUxpbmtlZFNlcnZpY2VJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICAgICAgICAgIE9iamVjdDEgICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgS2V5MSAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBPYmplY3QyICAgPT4gJ1NlcnZpY2UnLAogICAgICAgICAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgRGlyZWN0aW9uID0+ICRMaW5rRGlyZWN0aW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBTRVJWSUNFSUQ6CiAgICAgICAgICAgIGZvciBteSAkU2VydmljZUlEICggc29ydCBrZXlzICVMaW5rZWRTZXJ2aWNlSURzICkgewoKICAgICAgICAgICAgICAgICMgcmVtZW1iZXIgdGhlIENJcyB0aGF0IGFyZSBsaW5rZWQgd2l0aCB0aGlzIHNlcnZpY2UKICAgICAgICAgICAgICAgIHB1c2ggQHsgJFNlcnZpY2VDSVJlbGF0aW9ueyRTZXJ2aWNlSUR9IH0sICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRJbmNpU3RhdGVUeXBlIGVxICdpbmNpZGVudCc7CgogICAgICAgICAgICAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9LT57JENvbmZpZ0l0ZW1JRH0gPSAkSW5jaVN0YXRlVHlwZTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgdGhlIGluY2lkZW50IHN0YXRlIGxpc3Qgb2Ygd2FybmluZ3MKICAgIG15ICRXYXJuU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gJ3dhcm5pbmcnLAogICAgICAgIH0sCiAgICApOwoKICAgIGlmICggIWRlZmluZWQgJFdhcm5TdGF0ZUxpc3QgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlIFdhcm5pbmcgY2Fubm90IGJlIGludmFsaWQuIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICVSZXZlcnNlV2FyblN0YXRlTGlzdCA9IHJldmVyc2UgJXskV2FyblN0YXRlTGlzdH07CiAgICBteSBAU29ydGVkV2Fybkxpc3QgICAgICAgPSBzb3J0IGtleXMgJVJldmVyc2VXYXJuU3RhdGVMaXN0OwogICAgbXkgJFdhcm5pbmdTdGF0ZUlEICAgICAgID0gJFJldmVyc2VXYXJuU3RhdGVMaXN0e1dhcm5pbmd9IHx8ICRSZXZlcnNlV2FyblN0YXRlTGlzdHsgJFNvcnRlZFdhcm5MaXN0WzBdIH07CiAgICBteSAkQ2FjaGVPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICAjIHNldCB0aGUgbmV3IGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgZm9yIENJcwogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSB9ICkgewoKICAgICAgICAjIFNraXAgY29uZmlnIGl0ZW1zIGtub3duIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uKHMpLgogICAgICAgIGlmICgKICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJEtub3duTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUtPnskQ29uZmlnSXRlbUlEfSApCiAgICAgICAgICAgICYmICRLbm93bk5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLT57JENvbmZpZ0l0ZW1JRH0gZXEgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfS0+eyRDb25maWdJdGVtSUR9CiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgbmV3IGluY2lkZW50IHN0YXRlIHR5cGUgKGNhbiBvbmx5IGJlICdvcGVyYXRpb25hbCcgb3IgJ3dhcm5pbmcnKQogICAgICAgIG15ICRJbmNpU3RhdGVUeXBlID0gJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfS0+eyRDb25maWdJdGVtSUR9OwoKICAgICAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgICAgICBteSAkTGFzdFZlcnNpb24gPSAkU2VsZi0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgICAgICk7CgogICAgICAgIG15ICRDdXJJbmNpU3RhdGVJRDsKICAgICAgICBpZiAoICRJbmNpU3RhdGVUeXBlIGVxICd3YXJuaW5nJyApIHsKCiAgICAgICAgICAgICMgY2hlY2sgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgdHlwZSBpcyBpbiAnaW5jaWRlbnQnCiAgICAgICAgICAgICMgdGhlbiB3ZSBkbyBub3Qgd2FudCB0byBjaGFuZ2UgaXQgdG8gd2FybmluZwogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkTGFzdFZlcnNpb24tPntJbmNpU3RhdGVUeXBlfSBlcSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJFdhcm5pbmdTdGF0ZUlEOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRJbmNpU3RhdGVUeXBlIGVxICdvcGVyYXRpb25hbCcgKSB7CiAgICAgICAgICAgICRDdXJJbmNpU3RhdGVJRCA9ICRMYXN0VmVyc2lvbi0+e0luY2lTdGF0ZUlEfTsKICAgICAgICB9CgogICAgICAgICMgTm8gdXBkYXRlIG5lY2Vzc2FyeSBpZiBpbmNpZGVudCBzdGF0ZSBpZCBvZiB2ZXJzaW9uIGFuZCBjb25maWcgaXRlbSBtYXRjaC4KICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkTGFzdFZlcnNpb24tPntDdXJJbmNpU3RhdGVJRH0gZXEgJEN1ckluY2lTdGF0ZUlEOwoKICAgICAgICAjIHVwZGF0ZSBjdXJyZW50IGluY2lkZW50IHN0YXRlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgICAgICBTUUwgID0+ICdVUERBVEUgY29uZmlnaXRlbSBTRVQgY3VyX2luY2lfc3RhdGVfaWQgPSA/IFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJEN1ckluY2lTdGF0ZUlELCBcJENvbmZpZ0l0ZW1JRCBdLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRoZSBjYWNoZQogICAgICAgIG15ICRDYWNoZUtleSA9ICdDb25maWdJdGVtR2V0OjpDb25maWdJdGVtSUQ6OicgLiAkQ29uZmlnSXRlbUlEOwogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgYWZmZWN0ZWQgY2FjaGVzIGZvciBDb25maWdJdGVtSUQKICAgICAgICAkQ2FjaGVLZXkgPSAnVmVyc2lvbkdldDo6Q29uZmlnSXRlbUlEOjonIC4gJENvbmZpZ0l0ZW1JRCAuICc6OlhNTERhdGE6Oic7CiAgICAgICAgZm9yIG15ICRYTUxEYXRhIChxdygwIDEpKSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+ICRDYWNoZUtleSAuICRYTUxEYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgIEtleSAgPT4gJ1ZlcnNpb25OYW1lR2V0OjpDb25maWdJdGVtSUQ6OicgLiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIGFmZmVjdGVkIGNhY2hlcyBmb3IgbGFzdCB2ZXJzaW9uCiAgICAgICAgbXkgJFZlcnNpb25MaXN0ID0gJFNlbGYtPlZlcnNpb25MaXN0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkVmVyc2lvbkxpc3QtPlstMV07CiAgICAgICAgJENhY2hlS2V5ID0gJ1ZlcnNpb25HZXQ6OlZlcnNpb25JRDo6JyAuICRWZXJzaW9uSUQgLiAnOjpYTUxEYXRhOjonOwogICAgICAgIGZvciBteSAkWE1MRGF0YSAocXcoMCAxKSkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXkgLiAkWE1MRGF0YSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBLZXkgID0+ICdWZXJzaW9uTmFtZUdldDo6VmVyc2lvbklEOjonIC4gJFZlcnNpb25JRCwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZm9yIGVhY2ggc2VydmljZSAoaW5mbHVlbmNlZCBieSBsaW5rZWQgQ0lzKQogICAgU0VSVklDRUlEOgogICAgZm9yIG15ICRTZXJ2aWNlSUQgKCBzb3J0IGtleXMgJVNlcnZpY2VDSVJlbGF0aW9uICkgewoKICAgICAgICAjIHNldCBkZWZhdWx0IGluY2lkZW50IHN0YXRlIHR5cGUKICAgICAgICBteSAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMgPSAnb3BlcmF0aW9uYWwnOwoKICAgICAgICAjIGdldCB0aGUgdW5pcXVlIGNvbmZpZyBpdGVtIGlkcyB3aGljaCBhcmUgZGlyZWNseSBsaW5rZWQgdG8gdGhpcyBzZXJ2aWNlCiAgICAgICAgbXkgJVVuaXF1ZUNvbmZpZ0l0ZW1JRHMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFNlcnZpY2VDSVJlbGF0aW9ueyRTZXJ2aWNlSUR9IH07CgogICAgICAgICMgaW52ZXN0aWdhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgZWFjaCBjb25maWcgaXRlbQogICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlVW5pcXVlQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIENhY2hlICAgICAgICA9PiAwLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgJENvbmZpZ0l0ZW1EYXRhLT57Q3VyRGVwbFN0YXRlVHlwZX0gbmUgJ3Byb2R1Y3RpdmUnOwogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkQ29uZmlnSXRlbURhdGEtPntDdXJJbmNpU3RhdGVUeXBlfSBlcSAnb3BlcmF0aW9uYWwnOwoKICAgICAgICAgICAgIyBjaGVjayBpZiBzZXJ2aWNlIG11c3QgYmUgc2V0IHRvICd3YXJuaW5nJwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICd3YXJuaW5nJyApIHsKICAgICAgICAgICAgICAgICRDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcyA9ICd3YXJuaW5nJzsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgbXVzdCBiZSBzZXQgdG8gJ2luY2lkZW50JwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICdpbmNpZGVudCcgKSB7CiAgICAgICAgICAgICAgICAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMgPSAnaW5jaWRlbnQnOwogICAgICAgICAgICAgICAgbGFzdCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgdXBkYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2UKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcywKICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQxIElOVEVSTkFMIElOVEVSRkFDRQoKPWhlYWQyIF9GaW5kSW5jaUNvbmZpZ0l0ZW1zKCkKCmZpbmQgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIGFuIGluY2lkZW50IHN0YXRlCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPl9GaW5kSW5jaUNvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uID0+ICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLAogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzICAgICA9PiBcJVNjYW5uZWRDb25maWdJdGVtSURzLAogICAgKTsKCj1jdXQKCnN1YiBfRmluZEluY2lDb25maWdJdGVtcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gaWYgISRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgICMgaWdub3JlIGFscmVhZHkgc2Nhbm5lZCBpZHMgKGluZmluaXRlIGxvb3AgcHJvdGVjdGlvbikKICAgIHJldHVybiBpZiAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9LT57VHlwZX0gPSAnb3BlcmF0aW9uYWwnOwoKICAgICMgYWRkIG93biBjb25maWcgaXRlbSBpZCB0byBsaXN0IG9mIGxpbmtlZCBjb25maWcgaXRlbXMKICAgIG15ICVDb25maWdJdGVtSURzID0gKAogICAgICAgICRQYXJhbXtDb25maWdJdGVtSUR9ID0+IDEsCiAgICApOwoKICAgIExJTktUWVBFOgogICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyAkUGFyYW17SW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgIyBmaW5kIGFsbCBsaW5rZWQgY29uZmlnIGl0ZW1zIChjaGlsZHMpCiAgICAgICAgbXkgJUxpbmtlZENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBLZXkxICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFN0YXRlICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVHlwZSAgICA9PiAkTGlua1R5cGUsCgogICAgICAgICAgICAjIERpcmVjdGlvbiBtdXN0IEFMV0FZUyBiZSAnQm90aCcgaGVyZSBhcyB3ZSBuZWVkIHRvIGluY2x1ZGUKICAgICAgICAgICAgIyBhbGwgbGlua2VkIENJcyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGlzIG9uZSEKICAgICAgICAgICAgRGlyZWN0aW9uID0+ICdCb3RoJywKCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgcmVtZW1iZXIgdGhlIGNvbmZpZyBpdGVtIGlkcwogICAgICAgICVDb25maWdJdGVtSURzID0gKCAlQ29uZmlnSXRlbUlEcywgJUxpbmtlZENvbmZpZ0l0ZW1JRHMgKTsKICAgIH0KCiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDYWNoZSAgICAgICAgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIHNldCBpbmNpZGVudCBzdGF0ZQogICAgICAgIGlmICggJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfSBlcSAnaW5jaWRlbnQnICkgewogICAgICAgICAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LT57JENvbmZpZ0l0ZW1JRH0tPntUeXBlfSA9ICdpbmNpZGVudCc7CiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgIH0KCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24KICAgICAgICAkU2VsZi0+X0ZpbmRJbmNpQ29uZmlnSXRlbXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbiA9PiAkUGFyYW17SW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbn0sCiAgICAgICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzICAgICAgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0ZpbmRXYXJuQ29uZmlnSXRlbXMoKQoKZmluZCBhbGwgY29uZmlnIGl0ZW1zIHdpdGggYSB3YXJuaW5nCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPl9GaW5kV2FybkNvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTGlua1R5cGUgICAgICAgICAgICAgPT4gJExpbmtUeXBlLAogICAgICAgIERpcmVjdGlvbiAgICAgICAgICAgID0+ICRMaW5rRGlyZWN0aW9uLAogICAgICAgIE51bWJlck9mTGlua1R5cGVzICAgID0+IDIsCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFNjYW5uZWRDb25maWdJdGVtSURzLAogICAgKTsKCj1jdXQKCnN1YiBfRmluZFdhcm5Db25maWdJdGVtcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gaWYgISRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgIG15ICRJbmNpZGVudENvdW50ID0gMDsKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICV7ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30tPnskQ29uZmlnSXRlbUlEfS0+e1R5cGV9CiAgICAgICAgICAgICYmICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30tPnskQ29uZmlnSXRlbUlEfS0+e1R5cGV9IGVxICdpbmNpZGVudCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEluY2lkZW50Q291bnQrKzsKICAgICAgICB9CiAgICB9CgojIGlnbm9yZSBhbHJlYWR5IHNjYW5uZWQgaWRzIChpbmZpbml0ZSBsb29wIHByb3RlY3Rpb24pCiMgaXQgaXMgb2sgdGhhdCBhIGNvbmZpZyBpdGVtIGlzIGludmVzdGlnYXRlZCBhcyBtYW55IHRpbWVzIGFzIHRoZXJlIGFyZSBjb25maWd1cmVkIGxpbmsgdHlwZXMgKiBudW1iZXIgb2YgaW5jaWRlbnQgY29uZmlnIGl0ZWVtcwogICAgaWYgKAogICAgICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e0ZpbmRXYXJufQogICAgICAgICYmICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e0ZpbmRXYXJufQogICAgICAgID49ICggJFBhcmFte051bWJlck9mTGlua1R5cGVzfSAqICRJbmNpZGVudENvdW50ICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaW5jcmVhc2UgdGhlIHZpc2l0IGNvdW50ZXIKICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e0ZpbmRXYXJufSsrOwoKICAgICMgZmluZCBhbGwgbGlua2VkIGNvbmZpZyBpdGVtcwogICAgbXkgJUxpbmtlZENvbmZpZ0l0ZW1JRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICBPYmplY3QxICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBLZXkxICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgT2JqZWN0MiAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICAgID0+ICRQYXJhbXtMaW5rVHlwZX0sCiAgICAgICAgRGlyZWN0aW9uID0+ICRQYXJhbXtEaXJlY3Rpb259LAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlTGlua2VkQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24KICAgICAgICAkU2VsZi0+X0ZpbmRXYXJuQ29uZmlnSXRlbXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIExpbmtUeXBlICAgICAgICAgICAgID0+ICRQYXJhbXtMaW5rVHlwZX0sCiAgICAgICAgICAgIERpcmVjdGlvbiAgICAgICAgICAgID0+ICRQYXJhbXtEaXJlY3Rpb259LAogICAgICAgICAgICBOdW1iZXJPZkxpbmtUeXBlcyAgICA9PiAkUGFyYW17TnVtYmVyT2ZMaW5rVHlwZXN9LAogICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LAogICAgICAgICk7CgogICAgICAgIG5leHQgQ09ORklHSVRFTUlECiAgICAgICAgICAgIGlmICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30tPnskQ29uZmlnSXRlbUlEfS0+e1R5cGV9CiAgICAgICAgICAgICYmICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30tPnskQ29uZmlnSXRlbUlEfS0+e1R5cGV9IGVxICdpbmNpZGVudCc7CgogICAgICAgICMgc2V0IHdhcm5pbmcgc3RhdGUKICAgICAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9LT57JENvbmZpZ0l0ZW1JRH0tPntUeXBlfSA9ICd3YXJuaW5nJzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9QcmVwYXJlTGlrZVN0cmluZygpCgppbnRlcm5hbCBmdW5jdGlvbiB0byBwcmVwYXJlIGxpa2Ugc3RyaW5ncwoKICAgICRDb25maWdJdGVtT2JqZWN0LT5fUHJlcGFyZUxpa2VTdHJpbmcoICRTdHJpbmdSZWYgKTsKCj1jdXQKCnN1YiBfUHJlcGFyZUxpa2VTdHJpbmcgewogICAgbXkgKCAkU2VsZiwgJFZhbHVlICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRWYWx1ZTsKICAgIHJldHVybiBpZiByZWYgJFZhbHVlIG5lICdTQ0FMQVInOwoKICAgICMgUXVvdGUKICAgICR7JFZhbHVlfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJHskVmFsdWV9LCAnTGlrZScgKTsKCiAgICAjIHJlcGxhY2UgKiB3aXRoICUKICAgICR7JFZhbHVlfSA9fiBzeyBcKisgfXslfXhtc2c7CgogICAgcmV0dXJuOwp9CgoxOwoKPWhlYWQxIElUU00gQ29uZmlnIEl0ZW0gZXZlbnRzOgoKQ29uZmlnSXRlbUNyZWF0ZSwgVmVyc2lvbkNyZWF0ZSwgRGVwbG95bWVudFN0YXRlVXBkYXRlLCBJbmNpZGVudFN0YXRlVXBkYXRlLApDb25maWdJdGVtRGVsZXRlLCBMaW5rQWRkLCBMaW5rRGVsZXRlLCBEZWZpbml0aW9uVXBkYXRlLCBOYW1lVXBkYXRlLCBWYWx1ZVVwZGF0ZQpEZWZpbml0aW9uQ3JlYXRlLCBWZXJzaW9uRGVsZXRlCgo9Y3V0Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/CIAttachment.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpabnVueTo6UGVybDo6TGF5b3V0T2JqZWN0KQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNJQXR0YWNobWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnLAopOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q0lBdHRhY2htZW50IC0gQ0lBdHRhY2htZW50IGxpYgoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgQ0lBdHRhY2htZW50IGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKICAgIERvbid0IHVzZSB0aGUgY29uc3RydWN0b3IgZGlyZWN0bHksIHVzZSB0aGUgT2JqZWN0TWFuYWdlciBpbnN0ZWFkOgoKICAgIG15ICRDSUF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNJQXR0YWNobWVudCcpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnQ0lBdHRhY2htZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIENJQXR0YWNobWVudEFkZCgpCgphZGRzIGFuIGNvbmZpZyBpdGVtIGF0dGFjaG1lbnQgdG8gYSBjb25maWcgaXRlbQoKICAgIG15ICRTdWNjZXNzID0gJENJQXR0YWNobWVudE9iamVjdC0+Q0lBdHRhY2htZW50QWRkKAogICAgICAgIEF0dGFjaG1lbnRJRCAgICA9PiAxLAogICAgICAgIENvbmZpZ0l0ZW1GaWVsZCA9PiAnUGljdHVyZScsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+IDEyMwogICAgICAgIFZlcnNpb25JRCAgICAgICA9PiAxMjMsCiAgICAgICAgRmlsZW5hbWUgICAgICAgID0+ICdmaWxlbmFtZScsCiAgICAgICAgQ29udGVudCAgICAgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSAgICAgPT4gJ3RleHQvcGxhaW4nLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJFN1Y2Nlc3MgPSAxOwoKPWN1dAoKc3ViIENJQXR0YWNobWVudEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWaXJ0dWFsRlNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQXR0YWNobWVudElEIENvbmZpZ0l0ZW1GaWVsZCBDb25maWdJdGVtSUQgVmVyc2lvbklEIEZpbGVuYW1lIENvbnRlbnQgQ29udGVudFR5cGUpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRQYXJhbXtNb2RlfSB8fD0gJ2JpbmFyeSc7CgogICAgbXkgJFN1Y2Nlc3MgPSAkVmlydHVhbEZTT2JqZWN0LT5Xcml0ZSgKICAgICAgICBGaWxlbmFtZSAgICA9PiAiQ0lBdHRhY2htZW50LyRQYXJhbXtBdHRhY2htZW50SUR9IiwKICAgICAgICBNb2RlICAgICAgICA9PiAkUGFyYW17TW9kZX0sCiAgICAgICAgQ29udGVudCAgICAgPT4gXCRQYXJhbXtDb250ZW50fSwKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIENJQXR0YWNobWVudEF0dGFjaG1lbnRJRCAgICA9PiAkUGFyYW17QXR0YWNobWVudElEfSwKICAgICAgICAgICAgQ0lBdHRhY2htZW50RmlsZW5hbWUgICAgICAgID0+ICRQYXJhbXtGaWxlbmFtZX0sCiAgICAgICAgICAgIENJQXR0YWNobWVudENvbnRlbnRJRCAgICAgICA9PiAkUGFyYW17Q29udGVudElEfSwKICAgICAgICAgICAgQ0lBdHRhY2htZW50Q29udGVudFR5cGUgICAgID0+ICRQYXJhbXtDb250ZW50VHlwZX0sCiAgICAgICAgICAgIENJQXR0YWNobWVudENvbmZpZ0l0ZW1GaWVsZCA9PiAkUGFyYW17Q29uZmlnSXRlbUZpZWxkfSwKICAgICAgICAgICAgQ0lBdHRhY2htZW50Q29uZmlnSXRlbUlEICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBDSUF0dGFjaG1lbnRWZXJzaW9uSUQgICAgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgfSwKICAgICk7CiAgICByZXR1cm4gaWYgISRTdWNjZXNzOwoKICAgIHJldHVybiAkUGFyYW17RmlsZW5hbWV9Owp9Cgo9aGVhZDIgQ0lBdHRhY2htZW50R2V0KCkKClRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIENJQXR0YWNobWVudC4KCiAgICBteSAlQXR0YWNobWVudCA9ICRDSUF0dGFjaG1lbnRPYmplY3QtPkNJQXR0YWNobWVudEdldCgKICAgICAgICBBdHRhY2htZW50SUQgPT4gJzEyMycsCiAgICApOwoKUmV0dXJuczoKCiAgICBteSAlQXR0YWNobWVudCA9ICgKICAgICAgICBDb250ZW50ICAgICA9PiAnY29udGVudCcsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIEZpbGVuYW1lICAgID0+ICdibHViLnR4dCcsCiAgICAgICAgRmlsZXNpemVSYXcgPT4gJzEzJywKICAgICAgICBGaWxlc2l6ZSAgICA9PiAnMTMgQicsCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgKQoKPWN1dAoKc3ViIENJQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRWaXJ0dWFsRlNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyk7CiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJExheW91dE9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEF0dGFjaG1lbnRJRCkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBhcmFtZXRlciAnJE5lZWRlZCcgaXMgbmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgJFBhcmFte01vZGV9IHx8PSAnYmluYXJ5JzsKCiAgICBteSAlQXR0YWNobWVudERhdGEgPSAkVmlydHVhbEZTT2JqZWN0LT5SZWFkKAogICAgICAgIEZpbGVuYW1lICAgICAgICA9PiAiQ0lBdHRhY2htZW50LyRQYXJhbXtBdHRhY2htZW50SUR9IiwKICAgICAgICBNb2RlICAgICAgICAgICAgPT4gJFBhcmFte01vZGV9LAogICAgICAgIERpc2FibGVXYXJuaW5ncyA9PiAxLAogICAgKTsKICAgIGlmICggJEF0dGFjaG1lbnREYXRhe1ByZWZlcmVuY2VzfS0+e0ZpbGVzaXplUmF3fSApIHsKICAgICAgICAkQXR0YWNobWVudERhdGF7UHJlZmVyZW5jZXN9LT57RmlsZXNpemV9CiAgICAgICAgICAgID0gJExheW91dE9iamVjdC0+SHVtYW5SZWFkYWJsZURhdGFTaXplKCBTaXplID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntGaWxlc2l6ZVJhd30gKTsKICAgIH0KCiAgICByZXR1cm4gaWYgISVBdHRhY2htZW50RGF0YTsKICAgIHJldHVybiBpZiAhJEF0dGFjaG1lbnREYXRhe0NvbnRlbnR9OwoKICAgIG15ICVBdHRhY2htZW50ID0gKAogICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50fSB9LAogICAgICAgIEZpbGVuYW1lICAgID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntDSUF0dGFjaG1lbnRGaWxlbmFtZX0sCiAgICAgICAgQ29udGVudFR5cGUgPT4gJEF0dGFjaG1lbnREYXRhe1ByZWZlcmVuY2VzfS0+e0NJQXR0YWNobWVudENvbnRlbnRUeXBlfSwKICAgICAgICBGaWxlc2l6ZSAgICA9PiAkQXR0YWNobWVudERhdGF7UHJlZmVyZW5jZXN9LT57RmlsZXNpemV9LAogICAgICAgIEZpbGVzaXplUmF3ID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc30tPntGaWxlc2l6ZVJhd30sCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgKTsKCiAgICByZXR1cm4gJUF0dGFjaG1lbnQ7Cn0KCj1oZWFkMiBDSUF0dGFjaG1lbnRMaXN0KCkKClJldHVybnMgYW4gYXJyYXkgd2l0aCBhbGwgY29uZmlnIGl0ZW0gYXR0YWNobWVudHMgb2YgdGhlIGdpdmVuIGNvbmZpZyBpdGVtLgoKICAgIG15IEBDSUF0dGFjaG1lbnRJRHMgPSAkQ0lBdHRhY2htZW50T2JqZWN0LT5DSUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1GaWVsZCA9PiAnUGljdHVyZScsICAjIG9wdGlvbmFsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+IDEyMywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBWZXJzaW9uSUQgICAgICAgPT4gMTIzLCAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCnJldHVybnMKCiAgICBAQ0lBdHRhY2htZW50SURzID0gKAogICAgICAgICdmZXd6NTQ0dDQzMzRmMzRzZnJnJywKICAgICAgICAnZGZzZGZzOTRmMHc0ZjQ4ZjQzZicsCiAgICApOwoKPWN1dAoKc3ViIENJQXR0YWNobWVudExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTG9nT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJFZpcnR1YWxGU09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKTsKCiAgICBteSAlUHJlZmVyZW5jZXM7CiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtRmllbGR9ICkgewogICAgICAgICRQcmVmZXJlbmNlc3tDSUF0dGFjaG1lbnRDb25maWdJdGVtRmllbGR9ID0gJFBhcmFte0NvbmZpZ0l0ZW1GaWVsZH07CiAgICB9CiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRQcmVmZXJlbmNlc3tDSUF0dGFjaG1lbnRDb25maWdJdGVtSUR9ID0gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICB9CiAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewogICAgICAgICRQcmVmZXJlbmNlc3tDSUF0dGFjaG1lbnRWZXJzaW9uSUR9ID0gJFBhcmFte1ZlcnNpb25JRH07CiAgICB9CgogICAgaWYgKCAhJVByZWZlcmVuY2VzICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIllvdSBuZWVkIHRvIHNldCBDb25maWdJdGVtRmllbGQsIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRWaXJ0dWFsRlNPYmplY3QtPkZpbmQoCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJFBhcmFte0ZpbGVuYW1lfSB8fCAnJywKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgICVQcmVmZXJlbmNlcywKICAgICAgICB9LAogICAgKTsKCiAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKEBBdHRhY2htZW50cykgewogICAgICAgICRBdHRhY2htZW50ID1+IHN7Q0lBdHRhY2htZW50IFwvfXt9eG1zaTsKICAgIH0KCiAgICByZXR1cm4gQEF0dGFjaG1lbnRzOwp9Cgo9aGVhZDIgQ0lBdHRhY2htZW50RGVsZXRlKCkKCkRlbGV0ZSB0aGUgZ2l2ZW4gZmlsZSBmcm9tIHRoZSB2aXJ0dWFsIGZpbGVzeXN0ZW0uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ0lBdHRhY2htZW50T2JqZWN0LT5DSUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgQXR0YWNobWVudElEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgQ0lBdHRhY2htZW50RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRWaXJ0dWFsRlNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VmlydHVhbEZTJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhBdHRhY2htZW50SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlbGV0ZSBmaWxlCiAgICBteSAkU3VjY2VzcyA9ICRWaXJ0dWFsRlNPYmplY3QtPkRlbGV0ZSgKICAgICAgICBGaWxlbmFtZSA9PiAiQ0lBdHRhY2htZW50LyRQYXJhbXtBdHRhY2htZW50SUR9IiwKICAgICk7CgogICAgcmV0dXJuICRTdWNjZXNzOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/Definition.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkRlZmluaXRpb247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RGVmaW5pdGlvbiAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgZGVmaW5pdGlvbiBmdW5jdGlvbnMuCgo9aGVhZDIgRGVmaW5pdGlvbkxpc3QoKQoKcmV0dXJuIGEgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbiBsaXN0IGFzIGFycmF5LWhhc2ggcmVmZXJlbmNlCgogICAgbXkgJERlZmluaXRpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25MaXN0KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgKTsKCnJldHVybnMKCiAgICBteSAkRGVmaW5pdGlvbkxpc3RSZWYgPSBbCiAgICAgICAgICB7CiAgICAgICAgICAgICdWZXJzaW9uJyAgICAgID0+ICcxJywKICAgICAgICAgICAgJ0NyZWF0ZVRpbWUnICAgPT4gJzIwMTItMDYtMTIgMTQ6MDk6NDMnLAogICAgICAgICAgICAnRGVmaW5pdGlvbklEJyA9PiAnMScsCiAgICAgICAgICAgICdDcmVhdGVCeScgICAgID0+ICcxMjMnLAogICAgICAgICAgICAnRGVmaW5pdGlvbicgICA9PiAnLS0tCi0gS2V5OiBWZW5kb3IKICBOYW1lOiBWZW5kb3IKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgLSBUeXBlOiBUZXh0CiAgICBTaXplOiA1MAogICAgTWF4TGVuZ3RoOiA1MAoKLSBLZXk6IERlc2NyaXB0aW9uCiAgTmFtZTogRGVzY3JpcHRpb24KICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgLSBUeXBlOiBUZXh0QXJlYQoKLSBLZXk6IFR5cGUKICBOYW1lOiBUeXBlCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogIC0gVHlwZTogVGV4dEFyZWEKICAtIFR5cGU6IEdlbmVyYWxDYXRhbG9nXAogICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkNvbXB1dGVyOjpUeXBlCiAgICBUcmFuc2xhdGlvbjogMQojIC4uLiBldGMgLi4uCicsCiAgICAgICAgICB9LAogICAgXTsKCj1jdXQKCnN1YiBEZWZpbml0aW9uTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENsYXNzSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGFzayBkYXRhYmFzZQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSAnCiAgICAgICAgICAgIC4gJ0ZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uIFdIRVJFIGNsYXNzX2lkID0gPyBPUkRFUiBCWSB2ZXJzaW9uJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICBteSBARGVmaW5pdGlvbkxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0gPSAkUm93WzBdOwogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzFdIHx8ICItLS0gW10iOwogICAgICAgICREZWZpbml0aW9ue1ZlcnNpb259ICAgICAgPSAkUm93WzJdOwogICAgICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ICAgPSAkUm93WzNdOwogICAgICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgICAgPSAkUm93WzRdOwoKICAgICAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gY29kZSBpcyBub3QgYSBZQU1MIHN0cmluZy4KICAgICAgICBpZiAoIHN1YnN0ciggJERlZmluaXRpb257RGVmaW5pdGlvbn0sIDAsIDMgKSBuZSAnLS0tJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRGVmaW5pdGlvbklEOiAkRGVmaW5pdGlvbntEZWZpbml0aW9uSUR9IgogICAgICAgICAgICAgICAgICAgIC4gIiBDbGFzc0lEOiAkUGFyYW17Q2xhc3NJRH0iCiAgICAgICAgICAgICAgICAgICAgLiAiIGZvdW5kIGluIGxlZ2FjeSBQZXJsIGNvZGUgZm9ybWF0LCBjYW4gbm90IGNvbnRpbnVlIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ID0gIi0tLSBbXSI7CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBEZWZpbml0aW9uTGlzdCwgXCVEZWZpbml0aW9uOwogICAgfQoKICAgIHJldHVybiBcQERlZmluaXRpb25MaXN0Owp9Cgo9aGVhZDIgRGVmaW5pdGlvbkdldCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSBkZWZpbml0aW9uIGFzIGhhc2ggcmVmZXJlbmNlCgpSZXR1cm4KICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfQogICAgJERlZmluaXRpb24tPntDbGFzc0lEfQogICAgJERlZmluaXRpb24tPntDbGFzc30KICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0KICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0KICAgICREZWZpbml0aW9uLT57VmVyc2lvbn0KICAgICREZWZpbml0aW9uLT57Q3JlYXRlVGltZX0KICAgICREZWZpbml0aW9uLT57Q3JlYXRlQnl9CgogICAgbXkgJERlZmluaXRpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gMTIzLAogICAgKTsKCiAgICBvcgoKICAgIG15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0RlZmluaXRpb25JRH0gJiYgISRQYXJhbXtDbGFzc0lEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvbklEIG9yIENsYXNzSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtEZWZpbml0aW9uSUR9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0RlZmluaXRpb25HZXR9LT57ICRQYXJhbXtEZWZpbml0aW9uSUR9IH0KICAgICAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntEZWZpbml0aW9uR2V0fS0+eyAkUGFyYW17RGVmaW5pdGlvbklEfSB9OwoKICAgICAgICAjIGFzayBkYXRhYmFzZQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgY2xhc3NfaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17RGVmaW5pdGlvbklEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBhc2sgZGF0YWJhc2UKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICdTRUxFQ1QgaWQsIGNsYXNzX2lkLCBjb25maWdpdGVtX2RlZmluaXRpb24sIHZlcnNpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkgJwogICAgICAgICAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gJwogICAgICAgICAgICAgICAgLiAnV0hFUkUgY2xhc3NfaWQgPSA/IE9SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlRGVmaW5pdGlvbjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25JRH0gPSAkUm93WzBdOwogICAgICAgICREZWZpbml0aW9ue0NsYXNzSUR9ICAgICAgPSAkUm93WzFdOwogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb259ICAgPSAkUm93WzJdIHx8ICItLS0gW10iOwogICAgICAgICREZWZpbml0aW9ue1ZlcnNpb259ICAgICAgPSAkUm93WzNdOwogICAgICAgICREZWZpbml0aW9ue0NyZWF0ZVRpbWV9ICAgPSAkUm93WzRdOwogICAgICAgICREZWZpbml0aW9ue0NyZWF0ZUJ5fSAgICAgPSAkUm93WzVdOwoKICAgICAgICAjIENoZWNrIGlmIGRlZmluaXRpb24gY29kZSBpcyBub3QgYSBZQU1MIHN0cmluZy4KICAgICAgICBpZiAoIHN1YnN0ciggJERlZmluaXRpb257RGVmaW5pdGlvbn0sIDAsIDMgKSBuZSAnLS0tJyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRGVmaW5pdGlvbklEOiAkRGVmaW5pdGlvbntEZWZpbml0aW9uSUR9IgogICAgICAgICAgICAgICAgICAgIC4gIiBDbGFzc0lEOiAkRGVmaW5pdGlvbntDbGFzc0lEfSIKICAgICAgICAgICAgICAgICAgICAuICIgZm91bmQgaW4gbGVnYWN5IFBlcmwgY29kZSBmb3JtYXQsIGNhbiBub3QgY29udGludWUiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJERlZmluaXRpb257RGVmaW5pdGlvbn0gPSAiLS0tIFtdIjsKICAgICAgICB9CgogICAgICAgICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvbntEZWZpbml0aW9ufSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiB7fSBpZiAhJERlZmluaXRpb257RGVmaW5pdGlvbklEfTsKCiAgICAjIHByZXBhcmUgZGVmaW5pdGlvbgogICAgaWYgKCAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSAmJiByZWYgJERlZmluaXRpb257RGVmaW5pdGlvblJlZn0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAkU2VsZi0+X0RlZmluaXRpb25QcmVwYXJlKAogICAgICAgICAgICBEZWZpbml0aW9uUmVmID0+ICREZWZpbml0aW9ue0RlZmluaXRpb25SZWZ9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkRGVmaW5pdGlvbntEZWZpbml0aW9uUmVmfSA9ICcnOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBhZGQgY2xhc3MKICAgICREZWZpbml0aW9ue0NsYXNzfSA9ICRDbGFzc0xpc3QtPnsgJERlZmluaXRpb257Q2xhc3NJRH0gfTsKCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57RGVmaW5pdGlvbkdldH0tPnsgJERlZmluaXRpb257RGVmaW5pdGlvbklEfSB9ID0gXCVEZWZpbml0aW9uOwoKICAgIHJldHVybiBcJURlZmluaXRpb247Cn0KCj1oZWFkMiBEZWZpbml0aW9uQWRkKCkKCmFkZCBhIG5ldyBkZWZpbml0aW9uCgogICAgbXkgJERlZmluaXRpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gMTIzLAogICAgICAgIERlZmluaXRpb24gPT4gJ3RoZSBkZWZpbml0aW9uIGNvZGUnLAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIERlZmluaXRpb24gVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGRlZmluaXRpb24KICAgIG15ICRDaGVjayA9ICRTZWxmLT5EZWZpbml0aW9uQ2hlY2soCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJENoZWNrOwoKICAgICMgZ2V0IGxhc3QgZGVmaW5pdGlvbgogICAgbXkgJExhc3REZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICApOwoKICAgICMgc3RvcCBhZGQsIGlmIGRlZmluaXRpb24gd2FzIG5vdCBjaGFuZ2VkCiAgICBpZiAoICRMYXN0RGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0gJiYgJExhc3REZWZpbml0aW9uLT57RGVmaW5pdGlvbn0gZXEgJFBhcmFte0RlZmluaXRpb259ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgYWRkIG5ldyBkZWZpbml0aW9uISBUaGUgZGVmaW5pdGlvbiB3YXMgbm90IGNoYW5nZWQuIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHNldCB2ZXJzaW9uCiAgICBteSAkVmVyc2lvbiA9IDE7CiAgICBpZiAoICRMYXN0RGVmaW5pdGlvbi0+e1ZlcnNpb259ICkgewogICAgICAgICRWZXJzaW9uID0gJExhc3REZWZpbml0aW9uLT57VmVyc2lvbn07CiAgICAgICAgJFZlcnNpb24rKzsKICAgIH0KCiAgICAjIGluc2VydCBuZXcgZGVmaW5pdGlvbgogICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdJTlNFUlQgSU5UTyBjb25maWdpdGVtX2RlZmluaXRpb24gJwogICAgICAgICAgICAuICcoY2xhc3NfaWQsIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiwgdmVyc2lvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSkgVkFMVUVTICcKICAgICAgICAgICAgLiAnKD8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2xhc3NJRH0sIFwkUGFyYW17RGVmaW5pdGlvbn0sIFwkVmVyc2lvbiwgXCRQYXJhbXtVc2VySUR9IF0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJFN1Y2Nlc3M7CgogICAgIyBnZXQgaWQgb2YgbmV3IGRlZmluaXRpb24KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbV9kZWZpbml0aW9uIFdIRVJFICcKICAgICAgICAgICAgLiAnY2xhc3NfaWQgPSA/IEFORCB2ZXJzaW9uID0gPyAnCiAgICAgICAgICAgIC4gJ09SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NsYXNzSUR9LCBcJFZlcnNpb24gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICREZWZpbml0aW9uSUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICREZWZpbml0aW9uSUQgPSAkUm93WzBdOwogICAgfQoKICAgICMgdHJpZ2dlciBEZWZpbml0aW9uQ3JlYXRlIGV2ZW50CiAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdEZWZpbml0aW9uQ3JlYXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbW1lbnQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgcmV0dXJuICREZWZpbml0aW9uSUQ7Cn0KCj1oZWFkMiBEZWZpbml0aW9uQ2hlY2soKQoKY2hlY2sgdGhlIHN5bnRheCBvZiBhIG5ldyBkZWZpbml0aW9uCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkNoZWNrKAogICAgICAgIERlZmluaXRpb24gICAgICA9PiAndGhlIGRlZmluaXRpb24gY29kZScsCiAgICAgICAgQ2hlY2tTdWJFbGVtZW50ID0+IDEsICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCwgZGVmYXVsdCAwLCB0byBjaGVjayBzdWIgZWxlbWVudHMgcmVjdXJzaXZlbHkpCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25DaGVjayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvbn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb24hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGlmIGNoZWNrIHN1YiBlbGVtZW50cyBpcyBlbmFibGVkLCB3ZSBtdXN0IG5vdCBZQU1MIGxvYWQgaXQKICAgICMgYmVjYXVzZSB0aGlzIGhhcyBiZWVuIGRvbmUgaW4gYW4gZWFybGllciByZWN1cnNpb24gc3RlcCBhbHJlYWR5CiAgICBteSAkRGVmaW5pdGlvbjsKICAgIGlmICggJFBhcmFte0NoZWNrU3ViRWxlbWVudH0gKSB7CiAgICAgICAgJERlZmluaXRpb24gPSAkUGFyYW17RGVmaW5pdGlvbn07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBpZiAoIHN1YnN0ciggJFBhcmFte0RlZmluaXRpb259LCAwLCAzICkgbmUgJy0tLScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEZWZpbml0aW9uIG11c3QgYmUgYSBZQU1MIHN0cmluZyIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+TG9hZCgKICAgICAgICAgICAgRGF0YSA9PiAkUGFyYW17RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIGRlZmluaXRpb24gZXhpc3RzIGF0IGFsbAogICAgaWYgKCAhJERlZmluaXRpb24gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIERlZmluaXRpb24hIFlvdSBoYXZlIGFuIHN5bnRheCBlcnJvciBpbiB0aGUgZGVmaW5pdGlvbi4nLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZGVmaW5pdGlvbiBtdXN0IGJlIGFuIGFycmF5CiAgICBpZiAoIHJlZiAkRGVmaW5pdGlvbiBuZSAnQVJSQVknICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnSW52YWxpZCBEZWZpbml0aW9uISBEZWZpbml0aW9uIGlzIG5vdCBhbiBhcnJheSByZWZlcmVuY2UuJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGVhY2ggZGVmaW5pdGlvbiBhdHRyaWJ1dGUKICAgIGZvciBteSAkQXR0cmlidXRlICggQHskRGVmaW5pdGlvbn0gKSB7CgogICAgICAgICMgZWFjaCBkZWZpbml0aW9uIGF0dHJpYnV0ZSBtdXN0IGJlIGEgaGFzaCByZWZlcmVuY2Ugd2l0aCBkYXRhCiAgICAgICAgaWYgKCAhJEF0dHJpYnV0ZSB8fCByZWYgJEF0dHJpYnV0ZSBuZSAnSEFTSCcgfHwgISV7JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIERlZmluaXRpb24hIEF0IGxlYXN0IG9uZSBkZWZpbml0aW9uIGF0dHJpYnV0ZSBpcyBub3QgYSBoYXNoIHJlZmVyZW5jZS4nLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHRoZSBrZXkgY29udGFpbnMgbm8gc3BhY2VzCiAgICAgICAgaWYgKCAkQXR0cmlidXRlLT57S2V5fSAmJiAkQXR0cmlidXRlLT57S2V5fSA9fiBteyBccyB9eG1zICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBEZWZpbml0aW9uISBLZXkgJyRBdHRyaWJ1dGUtPntLZXl9JyBtdXN0IG5vdCBjb250YWluIHdoaXRlc3BhY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB0aGUga2V5IGNvbnRhaW5zIG5vbi1hc2NpaSBjaGFyYWN0ZXJzCiAgICAgICAgaWYgKCAkQXR0cmlidXRlLT57S2V5fSAmJiAkQXR0cmlidXRlLT57S2V5fSA9fiBteyAoW15ceHswMH0tXHh7N2Z9XSkgfXhtcyApIHsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIERlZmluaXRpb24hIEtleSAnJEF0dHJpYnV0ZS0+e0tleX0nIG11c3Qgbm90IGNvbnRhaW4gbm9uIEFTQ0lJIGNoYXJhY3RlcnMgJyQxJyEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHJlY3Vyc2lvbiBjaGVjayBmb3IgU3ViLUVsZW1lbnRzCiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQXR0cmlidXRlfSApIHsKCiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRBdHRyaWJ1dGUtPnskS2V5fTsKCiAgICAgICAgICAgIGlmICggJEtleSBlcSAnU3ViJyAmJiByZWYgJFZhbHVlIGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgc3ViIGFycmF5CiAgICAgICAgICAgICAgICBteSAkQ2hlY2sgPSAkU2VsZi0+RGVmaW5pdGlvbkNoZWNrKAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb24gICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgQ2hlY2tTdWJFbGVtZW50ID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggISRDaGVjayApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIFN1Yi1EZWZpbml0aW9uIG9mIGVsZW1lbnQgd2l0aCB0aGUga2V5ICckQXR0cmlidXRlLT57S2V5fScuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIERlZmluaXRpb25BdHRyaWJ1dGVJbmZvKCkKClJldHVybiBhdHRyaWJ1dGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGVmaW5pdGlvbiBmb3IgYSBnaXZlbiBhdHRyaWJ1dGUgcGF0aCBuYW1lCgogICAgbXkgJEF0dHJpYnV0ZUluZm8gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkF0dHJpYnV0ZUluZm8oCiAgICAgICAgQXR0cmlidXRlUGF0aCA9PiAnSGFyZERpc2s6OkNhcGFjaXR5JywKICAgICAgICBEZWZpbml0aW9uICAgID0+ICcKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgIyAuLi4KCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdIYXJkRGlzaycsCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnSGFyZCBEaXNrJywKICAgICAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICBTaXplID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTAwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgICAgICAgICAgICAgU3ViID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDYXBhY2l0eScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDYXBhY2l0eScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAoKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIF07CiAgICAgICAgJywKICAgICk7CgogICAgUmV0dXJuczoKCiAgICAgICAgbXkgJEF0dHJpYnV0ZUluZm8gPSAgewogICAgICAgICAgICBDb3VudERlZmF1bHQgPT4gMSwKICAgICAgICAgICAgQ291bnRNYXggICAgID0+IDEsCiAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTAKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ0NhcGFjaXR5JywKICAgICAgICAgICAgQ291bnRNaW4gPT4gMSwKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ0NhcGFjaXR5JwogICAgICAgIH07Cgo9Y3V0CgpzdWIgRGVmaW5pdGlvbkF0dHJpYnV0ZUluZm8gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoRGVmaW5pdGlvbiBBdHRyaWJ1dGVQYXRoKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkU3VidHJlZSA9ICRQYXJhbXtEZWZpbml0aW9ufTsKICAgIG15ICRJbmZvOwoKICAgIFBBUlQ6CiAgICBmb3IgbXkgJFBhcnQgKCBzcGxpdCAvOjovLCAkUGFyYW17QXR0cmlidXRlUGF0aH0gKSB7CiAgICAgICAgbXkgKCRGb3VuZCkgPSBncmVwIHsgJF8tPntLZXl9IGVxICRQYXJ0IH0gQHskU3VidHJlZX07CgogICAgICAgIGxhc3QgUEFSVCBpZiAhJEZvdW5kOwoKICAgICAgICAkU3VidHJlZSA9ICRGb3VuZC0+e1N1Yn07CiAgICAgICAgJEluZm8gICAgPSAkRm91bmQ7CiAgICB9CgogICAgcmV0dXJuICRJbmZvOwp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9aGVhZDIgX0RlZmluaXRpb25QcmVwYXJlKCkKClByZXBhcmUgdGhlIHN5bnRheCBvZiBhIG5ldyBkZWZpbml0aW9uCgogICAgbXkgJFRydWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+X0RlZmluaXRpb25QcmVwYXJlKAogICAgICAgIERlZmluaXRpb25SZWYgPT4gJEFycmF5UmVmLAogICAgKTsKCj1jdXQKCnN1YiBfRGVmaW5pdGlvblByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGRlZmluaXRpb24KICAgIGlmICggISRQYXJhbXtEZWZpbml0aW9uUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvblJlZiEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZvciBteSAkSXRlbSAoIEB7ICRQYXJhbXtEZWZpbml0aW9uUmVmfSB9ICkgewoKICAgICAgICAjIHNldCBDb3VudE1pbgogICAgICAgIGlmICggIWRlZmluZWQgJEl0ZW0tPntDb3VudE1pbn0gKSB7CiAgICAgICAgICAgICRJdGVtLT57Q291bnRNaW59ID0gMTsKICAgICAgICB9CgogICAgICAgICMgc2V0IENvdW50TWF4CiAgICAgICAgJEl0ZW0tPntDb3VudE1heH0gfHw9IDE7CgogICAgICAgICMgc2V0IENvdW50TWluCiAgICAgICAgaWYgKCAkSXRlbS0+e0NvdW50TWlufSA+ICRJdGVtLT57Q291bnRNYXh9ICkgewogICAgICAgICAgICAkSXRlbS0+e0NvdW50TWlufSA9ICRJdGVtLT57Q291bnRNYXh9OwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgQ291bnREZWZhdWx0CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkSXRlbS0+e0NvdW50RGVmYXVsdH0gKSB7CiAgICAgICAgICAgICRJdGVtLT57Q291bnREZWZhdWx0fSA9IDE7CiAgICAgICAgfQogICAgICAgIGlmICggJEl0ZW0tPntDb3VudERlZmF1bHR9IDwgJEl0ZW0tPntDb3VudE1pbn0gKSB7CiAgICAgICAgICAgICRJdGVtLT57Q291bnREZWZhdWx0fSA9ICRJdGVtLT57Q291bnRNaW59OwogICAgICAgIH0KICAgICAgICBpZiAoICRJdGVtLT57Q291bnREZWZhdWx0fSA+ICRJdGVtLT57Q291bnRNYXh9ICkgewogICAgICAgICAgICAkSXRlbS0+e0NvdW50RGVmYXVsdH0gPSAkSXRlbS0+e0NvdW50TWF4fTsKICAgICAgICB9CgogICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiBpcyBkZWZpbmVkLgogICAgICAgIGlmICggJEl0ZW0tPntTdWJ9ICYmIHJlZiAkSXRlbS0+e1N1Yn0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNlbGYtPl9EZWZpbml0aW9uUHJlcGFyZSgKICAgICAgICAgICAgICAgIERlZmluaXRpb25SZWYgPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgZGVsZXRlICRJdGVtLT57U3VifTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9ZW5kIEludGVybmFsOgoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/Event/CIAttachment.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpabnVueTo6UGVybDo6UGFyYW1PYmplY3QpCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNJQXR0YWNobWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q0lBdHRhY2htZW50JywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNJQXR0YWNobWVudCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyggRGF0YSBFdmVudCBDb25maWcgVXNlcklEICkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBDb25maWdJdGVtSUQgKSkgewoKICAgICAgICBuZXh0IE5FRURFRCBpZiAkUGFyYW17RGF0YX0tPnskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIERhdGEhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICRTZWxmLT5WZXJzaW9uQ3JlYXRlKCVQYXJhbSk7CiAgICAkU2VsZi0+VmVyc2lvbkRlbGV0ZSglUGFyYW0pOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgVmVyc2lvbkNyZWF0ZSgpCgpUaGlzIGZ1bmN0aW9uIHdpbGwgc2F2ZSB0aGUgYXR0YWNobWVudHMgdG8gdGhlIGZpbGUgc3lzdGVtIGlmIHRoZSBjb25maWcgaXRlbSBpcyBjcmVhdGVkLgoKICAgIG15ICRTdWNjZXNzID0gJEV2ZW50T2JqZWN0LT5WZXJzaW9uQ3JlYXRlKCVQYXJhbSk7CgpSZXR1cm5zOgoKICAgIG15ICRTdWNjZXNzID0gMTsKCj1jdXQKCnN1YiBWZXJzaW9uQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENJQXR0YWNobWVudE9iamVjdCAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q0lBdHRhY2htZW50Jyk7CiAgICBteSAkTGF5b3V0Q0lBdHRhY2htZW50T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXRDSUF0dGFjaG1lbnQnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkUGFyYW1PYmplY3QgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIHJldHVybiBpZiAkUGFyYW17RXZlbnR9IG5lICdWZXJzaW9uQ3JlYXRlJzsKCiAgICBteSBAUGFyYW1OYW1lcyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW1OYW1lcygpOwoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9OwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbXtEYXRhfS0+e0NvbW1lbnR9OwoKICAgIFBBUkFNOgogICAgZm9yIG15ICRQYXJhbU5hbWUgKEBQYXJhbU5hbWVzKSB7CgogICAgICAgICMgb25seSBjaGVjayBwYXJhbXMgb2YgdGhlIENJQXR0YWNobWVudCBiYWNrZW5kCiAgICAgICAgbmV4dCBQQVJBTSBpZiAkUGFyYW1OYW1lICF+IG17OjpDSUF0dGFjaG1lbnRcen14bXNpOwoKICAgICAgICAjIHJlbW92ZSBzdWZmaXgKICAgICAgICAkUGFyYW1OYW1lID1+IHN7OjpDSUF0dGFjaG1lbnRcen17fXhtc2k7CgogICAgICAgICMgZ2V0IGZpZWxkIGJhc2Uga2V5CiAgICAgICAgbXkgJEF0dGFjaG1lbnRLZXkgPSAkTGF5b3V0Q0lBdHRhY2htZW50T2JqZWN0LT5BdHRhY2htZW50S2V5R2V0KAogICAgICAgICAgICBLZXkgPT4gJFBhcmFtTmFtZSwKICAgICAgICApOwogICAgICAgIG5leHQgUEFSQU0gaWYgIWRlZmluZWQgJEF0dGFjaG1lbnRLZXk7CgogICAgICAgICMgZ2V0IGF0dGFjaG1lbnQgaW5kZXggb2YgdGhlIHRlbXAgY2FjaGUKICAgICAgICBteSAkQXR0YWNobWVudEluZGV4ID0gJExheW91dENJQXR0YWNobWVudE9iamVjdC0+QXR0YWNobWVudEluZGV4R2V0KAogICAgICAgICAgICBLZXkgPT4gJFBhcmFtTmFtZSwKICAgICAgICApOwogICAgICAgIG5leHQgUEFSQU0gaWYgIWRlZmluZWQgJEF0dGFjaG1lbnRJbmRleDsKCiAgICAgICAgIyBnZXQgZm9ybSBpZAogICAgICAgIG15ICRGb3JtSUQgPSAkTGF5b3V0Q0lBdHRhY2htZW50T2JqZWN0LT5Gb3JtSURHZXQoCiAgICAgICAgICAgIEF0dGFjaG1lbnRLZXkgPT4gJEF0dGFjaG1lbnRLZXksCiAgICAgICAgKTsKICAgICAgICBuZXh0IFBBUkFNIGlmICFkZWZpbmVkICRGb3JtSUQ7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgdmFsdWUgb2YgdGhlIGF0dGFjaG1lbnQKICAgICAgICBteSAkQXR0YWNobWVudElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJFBhcmFtTmFtZSApOwogICAgICAgIG5leHQgUEFSQU0gaWYgIWRlZmluZWQgJEF0dGFjaG1lbnRJRDsKCiAgICAgICAgIyBnZXQgYXR0YWNobWVudCBiYXNlZCBvbiB0aGUgY2FjaGVkIGRhdGEKICAgICAgICBteSAlQXR0YWNobWVudCA9ICRMYXlvdXRDSUF0dGFjaG1lbnRPYmplY3QtPkF0dGFjaG1lbnRDYWNoZUdldCgKICAgICAgICAgICAgSW5kZXggID0+ICRBdHRhY2htZW50SW5kZXgsCiAgICAgICAgICAgIEZvcm1JRCA9PiAkRm9ybUlELAogICAgICAgICk7CiAgICAgICAgbmV4dCBQQVJBTSBpZiAhJUF0dGFjaG1lbnQ7CgogICAgICAgICMgc2F2ZSBkYXRhIHRvIGZpbGUgc3lzdGVtCiAgICAgICAgbXkgJENvbnRlbnRJRCA9ICRDSUF0dGFjaG1lbnRPYmplY3QtPkNJQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgQXR0YWNobWVudElEICAgID0+ICRBdHRhY2htZW50SUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1GaWVsZCA9PiAkQXR0YWNobWVudEtleSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFZlcnNpb25JRCAgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICBGaWxlbmFtZSAgICAgICAgPT4gJEF0dGFjaG1lbnR7RmlsZW5hbWV9LAogICAgICAgICAgICBDb250ZW50ICAgICAgICAgPT4gJEF0dGFjaG1lbnR7Q29udGVudH0sCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICA9PiAkQXR0YWNobWVudHtDb250ZW50VHlwZX0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENvbnRlbnRJRCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGYWlsZWQgdG8gd3JpdGUgYXR0YWNobWVudCBmb3IgJyRQYXJhbU5hbWUnIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFZlcnNpb25EZWxldGUoKQoKVGhpcyBmdW5jdGlvbiB3aWxsIHNhdmUgdGhlIGF0dGFjaG1lbnRzIHRvIHRoZSBmaWxlIHN5c3RlbSBpZiB0aGUgY29uZmlnIGl0ZW0gaXMgY3JlYXRlZC4KCiAgICBteSAkU3VjY2VzcyA9ICRFdmVudE9iamVjdC0+VmVyc2lvbkRlbGV0ZSglUGFyYW0pOwoKUmV0dXJuczoKCiAgICBteSAkU3VjY2VzcyA9IDE7Cgo9Y3V0CgpzdWIgVmVyc2lvbkRlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDSUF0dGFjaG1lbnRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNJQXR0YWNobWVudCcpOwoKICAgIHJldHVybiBpZiAkUGFyYW17RXZlbnR9IG5lICdWZXJzaW9uRGVsZXRlJzsKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJFBhcmFte0RhdGF9LT57Q29uZmlnSXRlbUlEfTsKICAgIG15ICRWZXJzaW9uSUQgICAgPSAkUGFyYW17RGF0YX0tPntDb21tZW50fTsKCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ0lBdHRhY2htZW50T2JqZWN0LT5DSUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFZlcnNpb25JRCAgICA9PiAkVmVyc2lvbklELAogICAgKTsKCiAgICBmb3IgbXkgJEF0dGFjaG1lbnRJRCAoQEF0dGFjaG1lbnRzKSB7CiAgICAgICAgJENJQXR0YWNobWVudE9iamVjdC0+Q0lBdHRhY2htZW50RGVsZXRlKAogICAgICAgICAgICBBdHRhY2htZW50SUQgPT4gJEF0dGFjaG1lbnRJRCwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/Event/DoHistory.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpEb0hpc3Rvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkRvSGlzdG9yeSAtIEV2ZW50IGhhbmRsZXIgdGhhdCBkb2VzIHRoZSBoaXN0b3J5Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkRG9IaXN0b3J5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6RG9IaXN0b3J5Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFJ1bigpCgpUaGlzIG1ldGhvZCBoYW5kbGVzIHRoZSBldmVudC4KCiAgICAkRG9IaXN0b3J5T2JqZWN0LT5SdW4oCiAgICAgICAgRXZlbnQgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICduZXcgdmFsdWU6IDEnLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYXMgRGVmaW5pdGlvbkNyZWF0ZSBkb2VzIG5vdCBiZWxvbmcgdG8gYW4gaXRlbSwgd2UgZG9uJ3QgY3JlYXRlCiAgICAjIGEgaGlzdG9yeSBlbnRyeQogICAgaWYgKCAkUGFyYW17RXZlbnR9ICYmICRQYXJhbXtFdmVudH0gZXEgJ0RlZmluaXRpb25DcmVhdGUnICkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoRGF0YSBFdmVudCBVc2VySUQpKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZHVlIHRvIGNvbnNpc3RlbmN5IHdpdGggdGlja2V0IGhpc3RvcnksIHdlIG5lZWQgSGlzdG9yeVR5cGUKICAgICRQYXJhbXtIaXN0b3J5VHlwZX0gPSAkUGFyYW17RXZlbnR9OwoKICAgICMgZGlzcGF0Y2ggdGFibGUgZm9yIGFsbCBldmVudHMKICAgIG15ICVEaXNwYXRjaGVyID0gKAogICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIENvbmZpZ0l0ZW1EZWxldGUgICAgICA9PiBcJl9Db25maWdJdGVtRGVsZXRlLAogICAgICAgIExpbmtBZGQgICAgICAgICAgICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIExpbmtEZWxldGUgICAgICAgICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIE5hbWVVcGRhdGUgICAgICAgICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIEluY2lkZW50U3RhdGVVcGRhdGUgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIERlcGxveW1lbnRTdGF0ZVVwZGF0ZSA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIERlZmluaXRpb25VcGRhdGUgICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIFZlcnNpb25DcmVhdGUgICAgICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIFZhbHVlVXBkYXRlICAgICAgICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIERlZmluaXRpb25DcmVhdGUgICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIFZlcnNpb25EZWxldGUgICAgICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIEF0dGFjaG1lbnRBZGRQb3N0ICAgICA9PiBcJl9IaXN0b3J5QWRkLAogICAgICAgIEF0dGFjaG1lbnREZWxldGVQb3N0ICA9PiBcJl9IaXN0b3J5QWRkLAogICAgKTsKCiAgICAjIGVycm9yIGhhbmRsaW5nCiAgICBpZiAoICFleGlzdHMgJERpc3BhdGNoZXJ7ICRQYXJhbXtFdmVudH0gfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ25vbiBleGlzdGFudCBoaXN0b3J5IHR5cGU6ICcgLiAkUGFyYW17RXZlbnR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNhbGwgY2FsbGJhY2sKICAgIG15ICRTdWIgPSAkRGlzcGF0Y2hlcnsgJFBhcmFte0V2ZW50fSB9OwogICAgJFNlbGYtPiRTdWIoCiAgICAgICAgJVBhcmFtLAogICAgICAgICV7ICRQYXJhbXtEYXRhfSB9LAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQxIElOVEVSTkFMIElOVEVSRkFDRQoKPWhlYWQyIF9Db25maWdJdGVtRGVsZXRlKCkKCmhpc3RvcnkncyBldmVudCBoYW5kbGVyIGZvciBDb25maWdJdGVtRGVsZXRlCgo9Y3V0CgpzdWIgX0NvbmZpZ0l0ZW1EZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRlbGV0ZSBoaXN0b3J5CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+SGlzdG9yeURlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0hpc3RvcnlBZGQoKQoKaGlzdG9yeSdzIGRlZmF1bHQgZXZlbnQgaGFuZGxlci4KCj1jdXQKCnN1YiBfSGlzdG9yeUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWRkIGhpc3RvcnkgZW50cnkKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5IaXN0b3J5QWRkKAogICAgICAgICVQYXJhbSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/History.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Okhpc3Rvcnk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpIaXN0b3J5IC0gbW9kdWxlIGZvciBJVFNNQ29uZmlnSXRlbS5wbSB3aXRoIGhpc3RvcnkgZnVuY3Rpb25zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgaGlzdG9yeSBmdW5jdGlvbnMuCgo9aGVhZDIgSGlzdG9yeUdldCgpCgpSZXR1cm5zIGFuIGFycmF5IHJlZmVyZW5jZSB3aXRoIGFsbCBoaXN0b3J5IGVudHJpZXMgZm9yIHRoZSBnaXZlbiBjb25maWcgaXRlbS4KRWFjaCBhcnJheSBlbGVtZW50IGlzIGEgaGFzaCByZWZlcmVuY2UgcmVwcmVzZW50aW5nIG9uZSBoaXN0b3J5IGVudHJ5LgoKVGhlc2UgaGFzaCByZWZlcmVuY2VzIGNvbnRhaW4gaW5mb3JtYXRpb24gYWJvdXQ6CgogICAgJEluZm97SGlzdG9yeUVudHJ5SUR9CiAgICAkSW5mb3tDb25maWdJdGVtSUR9CiAgICAkSW5mb3tIaXN0b3J5VHlwZX0KICAgICRJbmZve0hpc3RvcnlUeXBlSUR9CiAgICAkSW5mb3tDb21tZW50fQogICAgJEluZm97Q3JlYXRlZEJ5fQogICAgJEluZm97Q3JlYXRlVGltZX0KICAgICRJbmZve1VzZXJJRH0KICAgICRJbmZve1VzZXJMb2dpbn0KICAgICRJbmZve1VzZXJMYXN0bmFtZX0KICAgICRJbmZve1VzZXJGaXJzdG5hbWV9CiAgICAkSW5mb3tVc2VyRnVsbG5hbWV9CgogICAgbXkgJEluZm8gPSAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzNCwKICAgICk7Cgo9Y3V0CgpzdWIgSGlzdG9yeUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgY2FjaGVkIHJlc3VsdCBleGlzdHMsIHJldHVybiB0aGF0IHJlc3VsdAogICAgcmV0dXJuICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9uc30tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57Q0lWZXJzaW9uc30tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfTsKCiAgICAjIGZldGNoIHNvbWUgZGF0YSBmcm9tIGhpc3RvcnkgZm9yIGdpdmVuIGNvbmZpZyBpdGVtCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGNoLmlkLCBjaC5jb25maWdpdGVtX2lkLCBjaC5jb250ZW50LCBjaC50eXBlX2lkLCAnCiAgICAgICAgICAgIC4gJ2NoLmNyZWF0ZV9ieSwgY2guY3JlYXRlX3RpbWUsIGNodC5uYW1lICcKICAgICAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtX2hpc3RvcnkgY2gsIGNvbmZpZ2l0ZW1faGlzdG9yeV90eXBlIGNodCAnCiAgICAgICAgICAgIC4gJ1dIRVJFIGNoLnR5cGVfaWQgPSBjaHQuaWQgQU5EIGNoLmNvbmZpZ2l0ZW1faWQgPSA/ICcKICAgICAgICAgICAgLiAnT1JERVIgQlkgY2guaWQnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgIyBzYXZlIGRhdGEgZnJvbSBoaXN0b3J5IGluIGFycmF5CiAgICBteSBARW50cmllczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJVRtcCA9ICgKICAgICAgICAgICAgSGlzdG9yeUVudHJ5SUQgPT4gJFJvd1swXSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ29tbWVudCAgICAgICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCAgPT4gJFJvd1szXSwKICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgPT4gJFJvd1s0XSwKICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgPT4gJFJvd1s1XSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJFJvd1s2XSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBFbnRyaWVzLCBcJVRtcDsKICAgIH0KCiAgICAjIGdldCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHVzZXIgd2hvIGNyZWF0ZWQgaGlzdG9yeSBlbnRyaWVzCiAgICBmb3IgbXkgJEVudHJ5IChARW50cmllcykgewoKICAgICAgICAjIGdldCB1c2VyIGluZm9ybWF0aW9uCiAgICAgICAgbXkgJVVzZXJJbmZvID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkRW50cnktPntDcmVhdGVCeX0sCiAgICAgICAgICAgIENhY2hlZCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgc2F2ZSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBoaXN0b3J5IGVudHJ5CiAgICAgICAgJEVudHJ5LT57VXNlcklEfSAgICAgICAgPSAkVXNlckluZm97VXNlcklEfTsKICAgICAgICAkRW50cnktPntVc2VyTG9naW59ICAgICA9ICRVc2VySW5mb3tVc2VyTG9naW59OwogICAgICAgICRFbnRyeS0+e1VzZXJGaXJzdG5hbWV9ID0gJFVzZXJJbmZve1VzZXJGaXJzdG5hbWV9OwogICAgICAgICRFbnRyeS0+e1VzZXJMYXN0bmFtZX0gID0gJFVzZXJJbmZve1VzZXJMYXN0bmFtZX07CiAgICAgICAgJEVudHJ5LT57VXNlckZ1bGxuYW1lfSAgPSAkVXNlckluZm97VXNlckZ1bGxuYW1lfTsKICAgIH0KCiAgICAjIHNhdmUgcmVzdWx0IGluIGNhY2hlCiAgICAkU2VsZi0+e0NhY2hlfS0+e0NJVmVyc2lvbnN9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH0gPSBcQEVudHJpZXM7CgogICAgcmV0dXJuIFxARW50cmllczsKfQoKPWhlYWQyIEhpc3RvcnlFbnRyeUdldCgpCgpSZXR1cm5zIGEgaGFzaCByZWZlcmVuY2Ugd2l0aCBpbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBoaXN0b3J5IGVudHJ5LgpUaGUgaGFzaCByZWZlcmVuY2UgY29udGFpbiBpbmZvcm1hdGlvbiBhYm91dDoKCiAgICAkSW5mb3tIaXN0b3J5RW50cnlJRH0KICAgICRJbmZve0NvbmZpZ0l0ZW1JRH0KICAgICRJbmZve0hpc3RvcnlUeXBlfQogICAgJEluZm97SGlzdG9yeVR5cGVJRH0KICAgICRJbmZve0NvbW1lbnR9CiAgICAkSW5mb3tDcmVhdGVCeX0KICAgICRJbmZve0NyZWF0ZVRpbWV9CiAgICAkSW5mb3tVc2VySUR9CiAgICAkSW5mb3tVc2VyTG9naW59CiAgICAkSW5mb3tVc2VyTGFzdG5hbWV9CiAgICAkSW5mb3tVc2VyRmlyc3RuYW1lfQogICAgJEluZm97VXNlckZ1bGxuYW1lfQoKICAgIG15ICRJbmZvID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlFbnRyeUdldCgKICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAxMjM0LAogICAgKTsKCj1jdXQKCnN1YiBIaXN0b3J5RW50cnlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KEhpc3RvcnlFbnRyeUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgY2FjaGVkIHJlc3VsdCBleGlzdHMsIHJldHVybiB0aGF0IHJlc3VsdAogICAgaWYgKCAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0gKSB7CiAgICAgICAgbXkgKCRDb25maWdJdGVtSUQpID0ga2V5cyAleyAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyAkUGFyYW17SGlzdG9yeUVudHJ5SUR9IH0gfTsKICAgICAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30tPnsgJFBhcmFte0hpc3RvcnlFbnRyeUlEfSB9LT57JENvbmZpZ0l0ZW1JRH07CiAgICB9CgogICAgIyBmZXRjaCBhIHNpbmdsZSBlbnRyeSBmcm9tIGhpc3RvcnkKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgY2guaWQsIGNoLmNvbmZpZ2l0ZW1faWQsIGNoLmNvbnRlbnQsIGNoLnR5cGVfaWQsICcKICAgICAgICAgICAgLiAnY2guY3JlYXRlX2J5LCBjaC5jcmVhdGVfdGltZSwgY2h0Lm5hbWUgJwogICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBjaCwgY29uZmlnaXRlbV9oaXN0b3J5X3R5cGUgY2h0ICcKICAgICAgICAgICAgLiAnV0hFUkUgY2gudHlwZV9pZCA9IGNodC5pZCBBTkQgY2guaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17SGlzdG9yeUVudHJ5SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJUVudHJ5OwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgJUVudHJ5ID0gKAogICAgICAgICAgICBIaXN0b3J5RW50cnlJRCA9PiAkUm93WzBdLAogICAgICAgICAgICBDb25maWdJdGVtSUQgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDb21tZW50ICAgICAgICA9PiAkUm93WzJdLAogICAgICAgICAgICBIaXN0b3J5VHlwZUlEICA9PiAkUm93WzNdLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAkUm93WzRdLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICA9PiAkUm93WzVdLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAkUm93WzZdLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgdXNlciBkYXRhIGZvciB0aGlzIGVudHJ5CiAgICBteSAlVXNlckluZm8gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICBVc2VySUQgPT4gJEVudHJ5e0NyZWF0ZUJ5fSwKICAgICAgICBDYWNoZWQgPT4gMSwKICAgICk7CgogICAgJEVudHJ5e1VzZXJJRH0gICAgICAgID0gJFVzZXJJbmZve1VzZXJJRH07CiAgICAkRW50cnl7VXNlckxvZ2lufSAgICAgPSAkVXNlckluZm97VXNlckxvZ2lufTsKICAgICRFbnRyeXtVc2VyRmlyc3RuYW1lfSA9ICRVc2VySW5mb3tVc2VyRmlyc3RuYW1lfTsKICAgICRFbnRyeXtVc2VyTGFzdG5hbWV9ICA9ICRVc2VySW5mb3tVc2VyTGFzdG5hbWV9OwogICAgJEVudHJ5e1VzZXJGdWxsbmFtZX0gID0gJFVzZXJJbmZve1VzZXJGdWxsbmFtZX07CgogICAgJFNlbGYtPntDYWNoZX0tPntWZXJzaW9uc30tPnsgJFBhcmFte0hpc3RvcnlFbnRyeUlEfSB9LT57ICRFbnRyeXtDb25maWdJdGVtSUR9IH0gPSBcJUVudHJ5OwoKICAgIHJldHVybiBcJUVudHJ5Owp9Cgo9aGVhZDIgSGlzdG9yeUFkZCgpCgpBZGRzIGEgc2luZ2xlIGhpc3RvcnkgZW50cnkgdG8gdGhlIGhpc3RvcnkuCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAxMjM0LAogICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05ld0NvbmZpZ0l0ZW0nLCAjIGVpdGhlciBIaXN0b3J5VHlwZSBvciBIaXN0b3J5VHlwZUlEIGlzIG5lZWRlZAogICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgQ29tbWVudCAgICAgICA9PiAnQW55IHVzZWZ1bCBpbmZvcm1hdGlvbicsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCBVc2VySUQgQ29tbWVudCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICEoICRQYXJhbXtIaXN0b3J5VHlwZX0gfHwgJFBhcmFte0hpc3RvcnlUeXBlSUR9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEhpc3RvcnlUeXBlIG9yIEhpc3RvcnlUeXBlSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBoaXN0b3J5IHR5cGUgaWQgZnJvbSBoaXN0b3J5IHR5cGUgaWYgaGlzdG9yeSB0eXBlIGlzIGdpdmVuLgogICAgaWYgKCAkUGFyYW17SGlzdG9yeVR5cGV9ICkgewogICAgICAgIG15ICRJZCA9ICRTZWxmLT5IaXN0b3J5VHlwZUxvb2t1cCggSGlzdG9yeVR5cGUgPT4gJFBhcmFte0hpc3RvcnlUeXBlfSApOwoKICAgICAgICBpZiAoICEkSWQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIGhpc3RvcnkgdHlwZSBnaXZlbiEnLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17SGlzdG9yeVR5cGVJRH0gPSAkSWQ7CiAgICB9CgogICAgIyBpZiBoaXN0b3J5IHR5cGUgaXMgZ2l2ZW4KICAgIGVsc2lmICggJFBhcmFte0hpc3RvcnlUeXBlSUR9ICkgewogICAgICAgIG15ICROYW1lID0gJFNlbGYtPkhpc3RvcnlUeXBlTG9va3VwKCBIaXN0b3J5VHlwZUlEID0+ICRQYXJhbXtIaXN0b3J5VHlwZUlEfSApOwoKICAgICAgICBpZiAoICEkTmFtZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0ludmFsaWQgaGlzdG9yeSB0eXBlIGlkIGdpdmVuIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBnaXZlbiBjb25maWcgaXRlbSBpZCBwb2ludHMgdG8gYW4gZXhpc3RpbmcgY29uZmlnIGl0ZW0gbnVtYmVyCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewoKICAgICAgICBteSAkTnVtYmVyID0gJFNlbGYtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkTnVtYmVyICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnSW52YWxpZCBjb25maWcgaXRlbSBpZCBnaXZlbiEnLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIGNhY2hlZCByZXN1bHRzCiAgICBkZWxldGUgJFNlbGYtPntDYWNoZX0tPntDSVZlcnNpb25zfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwoKICAgICMgc2hvcnRlbiB0aGUgY29tbWVudCBpZiBpdCBpcyBiaWdnZXIgdGhhbiBtYXggbGVuZ3RoCiAgICBpZiAoIGxlbmd0aCggJFBhcmFte0NvbW1lbnR9ICkgPiAyNTUgKSB7CgogICAgICAgIG15ICggJEZpZWxkLCAkT2xkLCAkTmV3ICkgPSBzcGxpdCAnJSUnLCAkUGFyYW17Q29tbWVudH0sIDM7CgogICAgICAgIG15ICRMZW5ndGggPSBpbnQoICggMjU1IC0gbGVuZ3RoKCRGaWVsZCkgLSA0ICkgLyAyICk7CgogICAgICAgIGlmICggbGVuZ3RoKCRPbGQpID4gJExlbmd0aCApIHsKICAgICAgICAgICAgbXkgJEluZGV4ID0gaW50KCAkTGVuZ3RoIC8gMiApOwogICAgICAgICAgICAkT2xkID0gc3Vic3RyKCAkT2xkLCAwLCAkSW5kZXggLSAyICkgLiAnLi4uJyAuIHN1YnN0ciggJE9sZCwgbGVuZ3RoKCRPbGQpIC0gJEluZGV4ICsgMiApOwogICAgICAgIH0KICAgICAgICBpZiAoIGxlbmd0aCgkTmV3KSA+ICRMZW5ndGggKSB7CiAgICAgICAgICAgIG15ICRJbmRleCA9IGludCggJExlbmd0aCAvIDIgKTsKICAgICAgICAgICAgJE5ldyA9IHN1YnN0ciggJE5ldywgMCwgJEluZGV4IC0gMiApIC4gJy4uLicgLiBzdWJzdHIoICROZXcsIGxlbmd0aCgkTmV3KSAtICRJbmRleCArIDIgKTsKICAgICAgICB9CiAgICAgICAgbXkgJE5ld0NvbW1lbnQgPSAkRmllbGQgLiAnJSUnIC4gJE9sZCAuICclJScgLiAkTmV3OwoKICAgICAgICAkUGFyYW17Q29tbWVudH0gPSAkTmV3Q29tbWVudDsKICAgIH0KCiAgICAjIGluc2VydCBoaXN0b3J5IGVudHJ5CiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV9oaXN0b3J5ICggY29uZmlnaXRlbV9pZCwgY29udGVudCwgY3JlYXRlX2J5LCAnCiAgICAgICAgICAgIC4gJ2NyZWF0ZV90aW1lLCB0eXBlX2lkICkgVkFMVUVTICggPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8gKScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtDb21tZW50fSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBcJFBhcmFte0hpc3RvcnlUeXBlSUR9LAogICAgICAgIF0sCiAgICApOwp9Cgo9aGVhZDIgSGlzdG9yeURlbGV0ZSgpCgpEZWxldGVzIGNvbXBsZXRlIGhpc3RvcnkgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+SGlzdG9yeURlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBIaXN0b3J5RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgY2FjaGVkIHJlc3VsdHMKICAgIGRlbGV0ZSAkU2VsZi0+e0NhY2hlfS0+e0NJVmVyc2lvbn0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfTsKICAgIGZvciBteSAkVmVyc2lvbk5yICggc29ydCBrZXlzICV7ICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9IH0gKSB7CiAgICAgICAgbXkgKCRDYWNoZUNvbmZpZ0l0ZW0pID0ga2V5cyAleyAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25zfS0+eyRWZXJzaW9uTnJ9IH07CiAgICAgICAgZGVsZXRlICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbnN9LT57JFZlcnNpb25Ocn0gaWYgJENhY2hlQ29uZmlnSXRlbSBlcSAkUGFyYW17Q29uZmlnSXRlbUlEfTsKICAgIH0KCiAgICAjIGRlbGV0ZSBoaXN0b3J5IGZvciBnaXZlbiBjb25maWcgaXRlbQogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2hpc3RvcnkgV0hFUkUgY29uZmlnaXRlbV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICk7Cn0KCj1oZWFkMiBIaXN0b3J5RW50cnlEZWxldGUoKQoKRGVsZXRlcyBhIHNpbmdsZSBoaXN0b3J5IGVudHJ5LgoKICAgICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5RW50cnlEZWxldGUoCiAgICAgICAgSGlzdG9yeUVudHJ5SUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBIaXN0b3J5RW50cnlEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KEhpc3RvcnlFbnRyeUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIHNpbmdsZSBlbnRyeQogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2hpc3RvcnkgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtIaXN0b3J5RW50cnlJRH0gXSwKICAgICk7Cn0KCj1oZWFkMiBIaXN0b3J5VHlwZUxvb2t1cCgpCgpUaGlzIG1ldGhvZCBkb2VzIGEgbG9va3VwIGZvciBhIGhpc3RvcnkgdHlwZS4gSWYgYSBoaXN0b3J5IHR5cGUgaWQgaXMgZ2l2ZW4sCml0IHJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGhpc3RvcnkgdHlwZS4gSWYgYSBoaXN0b3J5IHR5cGUgaXMgZ2l2ZW4sIHRoZSBhcHByb3ByaWF0ZQppZCBpcyByZXR1cm5lZC4KCiAgICBteSAkTmFtZSA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5VHlwZUxvb2t1cCgKICAgICAgICBIaXN0b3J5VHlwZUlEID0+IDEyMzQsCiAgICApOwoKICAgIG15ICRJZCA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5VHlwZUxvb2t1cCgKICAgICAgICBIaXN0b3J5VHlwZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICApOwoKPWN1dAoKc3ViIEhpc3RvcnlUeXBlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgKCRLZXkpID0gZ3JlcCB7ICRQYXJhbXskX30gfSBxdyhIaXN0b3J5VHlwZUlEIEhpc3RvcnlUeXBlKTsKCiAgICAjIGNoZWNrIGZvciBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRLZXkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEhpc3RvcnlUeXBlSUQgb3IgSGlzdG9yeVR5cGUhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGlmIHJlc3VsdCBpcyBjYWNoZWQgcmV0dXJuIHRoYXQgcmVzdWx0CiAgICByZXR1cm4gJFNlbGYtPntDYWNoZX0tPntIaXN0b3J5VHlwZUxvb2t1cH0tPnsgJFBhcmFteyRLZXl9IH0KICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e0hpc3RvcnlUeXBlTG9va3VwfS0+eyAkUGFyYW17JEtleX0gfTsKCiAgICAjIHNldCB0aGUgYXBwcm9wcmlhdGUgU1FMIHN0YXRlbWVudAogICAgbXkgJFNRTCA9ICdTRUxFQ1QgbmFtZSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeV90eXBlIFdIRVJFIGlkID0gPyc7CgogICAgaWYgKCAkS2V5IGVxICdIaXN0b3J5VHlwZScgKSB7CiAgICAgICAgJFNRTCA9ICdTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtX2hpc3RvcnlfdHlwZSBXSEVSRSBuYW1lID0gPyc7CiAgICB9CgogICAgIyBmZXRjaCB0aGUgcmVxdWVzdGVkIHZhbHVlCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFteyRLZXl9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJFZhbHVlOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmFsdWUgPSAkUm93WzBdOwogICAgfQoKICAgICMgc2F2ZSB2YWx1ZSBpbiBjYWNoZQogICAgJFNlbGYtPntDYWNoZX0tPntIaXN0b3J5VHlwZUxvb2t1cH0tPnsgJFBhcmFteyRLZXl9IH0gPSAkVmFsdWU7CgogICAgcmV0dXJuICRWYWx1ZTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/Number.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlciAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBjb25maWcgaXRlbSBudW1iZXIgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBDb25maWdJdGVtTnVtYmVyTG9va3VwKCkKCnJldHVybiBjb25maWcgaXRlbSBpZCBvciBjb25maWcgaXRlbSBudW1iZXIKCiAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKICAgIG9yCgogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJzEyMzQ1NDMyMScsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1OdW1iZXJMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gJiYgISRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgQ29uZmlnSXRlbUlEIG9yIENvbmZpZ0l0ZW1OdW1iZXIhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0NvbmZpZ0l0ZW1OdW1iZXJMb29rdXB9LT57SUR9LT57ICRQYXJhbXtDb25maWdJdGVtSUR9IH0KICAgICAgICAgICAgaWYgJFNlbGYtPntDYWNoZX0tPntDb25maWdJdGVtTnVtYmVyTG9va3VwfS0+e0lEfS0+eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9OwoKICAgICAgICAjIGFzayBkYXRhYmFzZQogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgICA9PiAnU0VMRUNUIGNvbmZpZ2l0ZW1fbnVtYmVyIEZST00gY29uZmlnaXRlbSBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgICAgICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntJRH0tPnsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfSA9ICRDb25maWdJdGVtTnVtYmVyOwoKICAgICAgICByZXR1cm4gJENvbmZpZ0l0ZW1OdW1iZXI7CiAgICB9CgogICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e0NvbmZpZ0l0ZW1OdW1iZXJMb29rdXB9LT57TnVtYmVyfS0+eyAkUGFyYW17Q29uZmlnSXRlbU51bWJlcn0gfQogICAgICAgIGlmICRTZWxmLT57Q2FjaGV9LT57Q29uZmlnSXRlbU51bWJlckxvb2t1cH0tPntOdW1iZXJ9LT57ICRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSB9OwoKICAgICMgYXNrIGRhdGFiYXNlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSBXSEVSRSBjb25maWdpdGVtX251bWJlciA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDb25maWdJdGVtTnVtYmVyfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJENvbmZpZ0l0ZW1JRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyBjYWNoZSB0aGUgcmVzdWx0CiAgICAkU2VsZi0+e0NhY2hlfS0+e0NvbmZpZ0l0ZW1OdW1iZXJMb29rdXB9LT57TnVtYmVyfS0+eyAkUGFyYW17Q29uZmlnSXRlbU51bWJlcn0gfSA9ICRDb25maWdJdGVtSUQ7CgogICAgcmV0dXJuICRDb25maWdJdGVtSUQ7Cn0KCj1oZWFkMiBDb25maWdJdGVtTnVtYmVyQ3JlYXRlKCkKCmNyZWF0ZSBhIG5ldyBjb25maWcgaXRlbSBudW1iZXIKCiAgICBteSAkTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgVHlwZSAgICA9PiAnQXV0b0luY3JlbWVudCcsCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVHlwZSBDbGFzc0lEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJFBhcmFte1R5cGV9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIGNvbmZpZyBpdGVtIG51bWJlciBnZW5lcmF0b3IgYmFja2VuZCBtb2R1bGUgJFBhcmFte1R5cGV9ISAkQCIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZUJhc2VDbGFzcyggJFBhcmFte1R5cGV9ICk7CgogICAgIyBjcmVhdGUgbnVtYmVyCiAgICBteSAkTnVtYmVyID0gJFNlbGYtPl9Db25maWdJdGVtTnVtYmVyQ3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICROdW1iZXI7Cn0KCj1oZWFkMiBDdXJyZW50Q291bnRlckdldCgpCgpyZXR1cm4gdGhlIGN1cnJlbnQgY291bnRlciBvZiBhIGNsYXNzCgogICAgbXkgJENvdW50ZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q3VycmVudENvdW50ZXJHZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAxMjMsCiAgICAgICAgVHlwZSAgICA9PiAnQXV0b0luY3JlbWVudCcsCiAgICApOwoKPWN1dAoKc3ViIEN1cnJlbnRDb3VudGVyR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KENsYXNzSUQgVHlwZSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBhc2sgdGhlIGRhdGFiYXNlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJ1NFTEVDVCBjb3VudGVyIEZST00gY29uZmlnaXRlbV9jb3VudGVyIFdIRVJFICcKICAgICAgICAgICAgLiAnY2xhc3NfaWQgPSA/IEFORCBjb3VudGVyX3R5cGUgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q2xhc3NJRH0sIFwkUGFyYW17VHlwZX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICROdW1iZXI7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICROdW1iZXIgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkTnVtYmVyOwp9Cgo9aGVhZDIgQ3VycmVudENvdW50ZXJTZXQoKQoKc2V0IHRoZSBjdXJyZW50IGNvdW50ZXIgb2YgYSBjbGFzcwoKICAgIG15ICRUcnVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1cnJlbnRDb3VudGVyU2V0KAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgICAgIFR5cGUgICAgPT4gJ0F1dG9JbmNyZW1lbnQnLAogICAgICAgIENvdW50ZXIgPT4gJzEyJywKICAgICk7Cgo9Y3V0CgpzdWIgQ3VycmVudENvdW50ZXJTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2xhc3NJRCBUeXBlIENvdW50ZXIpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIG9sZCBjb3VudGVyCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9jb3VudGVyIFdIRVJFIGNsYXNzX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q2xhc3NJRH0gXSwKICAgICk7CgogICAgIyBzZXQgbmV3IGNvdW50ZXIKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW1fY291bnRlciAnCiAgICAgICAgICAgIC4gJyhjbGFzc19pZCwgY291bnRlcl90eXBlLCBjb3VudGVyKSBWQUxVRVMgKD8sID8sID8pJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtUeXBlfSwgXCRQYXJhbXtDb3VudGVyfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/Number/AutoIncrement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok51bWJlcjo6QXV0b0luY3JlbWVudCAtIGNvbmZpZyBpdGVtIG51bWJlciBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgYXV0byBpbmNyZW1lbnQgY29uZmlnIGl0ZW0gbnVtYmVyIGZ1bmN0aW9ucwoKPWhlYWQyIF9Db25maWdJdGVtTnVtYmVyQ3JlYXRlKCkKCmNyZWF0ZSBhIG5ldyBjb25maWcgaXRlbSBudW1iZXIKCiAgICBteSAkTnVtYmVyID0gJEJhY2tlbmRPYmplY3QtPl9Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgIENsYXNzSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBfQ29uZmlnSXRlbU51bWJlckNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17Q2xhc3NJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENsYXNzSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBzeXN0ZW0gaWQKICAgIG15ICRTeXN0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3lzdGVtSUQnKTsKCiAgICAjIGdldCBjdXJyZW50IGNvdW50ZXIKICAgIG15ICRDdXJyZW50Q291bnRlciA9ICRTZWxmLT5DdXJyZW50Q291bnRlckdldCgKICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICBUeXBlICAgID0+ICdBdXRvSW5jcmVtZW50JywKICAgICkgfHwgMDsKCiAgICBDSVBIRVI6CiAgICBmb3IgbXkgJENpcGhlciAoIDEgLi4gMV8wMDBfMDAwXzAwMCApIHsKCiAgICAgICAgIyBjcmVhdGUgbmV3IG51bWJlcgogICAgICAgIG15ICROdW1iZXIgPSAkU3lzdGVtSUQgLiAkUGFyYW17Q2xhc3NJRH0gLiBzcHJpbnRmKCAiJTA2ZCIsICggJEN1cnJlbnRDb3VudGVyICsgJENpcGhlciApICk7CgogICAgICAgICMgZmluZCBleGlzdGluZyBudW1iZXIKICAgICAgICBteSAkRHVwbGljYXRlID0gJFNlbGYtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJE51bWJlciwKICAgICAgICApOwoKICAgICAgICBuZXh0IENJUEhFUiBpZiAkRHVwbGljYXRlOwoKICAgICAgICAjIHNldCBjb3VudGVyCiAgICAgICAgJFNlbGYtPkN1cnJlbnRDb3VudGVyU2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgVHlwZSAgICA9PiAnQXV0b0luY3JlbWVudCcsCiAgICAgICAgICAgIENvdW50ZXIgPT4gKCAkQ3VycmVudENvdW50ZXIgKyAkQ2lwaGVyICksCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICROdW1iZXI7CiAgICB9CgogICAgcmV0dXJuOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/Permission.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uIC0gbW9kdWxlIGZvciBJVFNNQ29uZmlnSXRlbS5wbSB3aXRoIFBlcm1pc3Npb24gZnVuY3Rpb25zCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBQZXJtaXNzaW9uIGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgUGVybWlzc2lvbigpCgpyZXR1cm5zIHdoZXRoZXIgdGhlIHVzZXIgaGFzIHBlcm1pc3Npb25zIG9yIG5vdAoKICAgIG15ICRBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UGVybWlzc2lvbigKICAgICAgICBUeXBlICAgICA9PiAncm8nLAogICAgICAgIFNjb3BlICAgID0+ICdDbGFzcycsICMgQ2xhc3MgfHwgSXRlbQogICAgICAgIENsYXNzSUQgID0+IDEyMywgICAgICMgaWYgU2NvcGUgaXMgJ0NsYXNzJwogICAgICAgIEl0ZW1JRCAgID0+IDEyMywgICAgICMgaWYgU2NvcGUgaXMgJ0l0ZW0nCiAgICAgICAgVXNlcklEICAgPT4gMTIzLAogICAgKTsKCm9yIHdpdGhvdXQgbG9nZ2luZywgZm9yIGV4YW1wbGUgZm9yIHRvIGNoZWNrIGlmIGEgbGluay9hY3Rpb24gc2hvdWxkIGJlIHNob3duCgogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICAgID0+ICdybycsCiAgICAgICAgU2NvcGUgICAgPT4gJ0NsYXNzJywgIyBDbGFzcyB8fCBJdGVtCiAgICAgICAgQ2xhc3NJRCAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnQ2xhc3MnCiAgICAgICAgSXRlbUlEICAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnSXRlbScKICAgICAgICBMb2dObyAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVHlwZSBTY29wZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBmb3IgZXhpc3RlbmNlIG9mIEl0ZW1JRCBvciBDbGFzc0lEIGRlcGVuZGVudAogICAgIyBvbiB0aGUgU2NvcGUKICAgIGlmICgKICAgICAgICAoICRQYXJhbXtTY29wZX0gZXEgJ0NsYXNzJyAmJiAhJFBhcmFte0NsYXNzSUR9ICkKICAgICAgICB8fCAoICRQYXJhbXtTY29wZX0gZXEgJ0l0ZW0nICYmICEkUGFyYW17SXRlbUlEfSApCiAgICAgICAgKQogICAgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBDbGFzc0lEIGlmIFNjb3BlIGlzICdDbGFzcycgb3IgSXRlbUlEIGlmIFNjb3BlIGlzICdJdGVtJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgcnVuIGFsbCBJVFNNQ29uZmlnSXRlbSBQZXJtaXNzaW9uIG1vZHVsZXMKICAgIGlmICgKICAgICAgICByZWYgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCAnSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OicgLiAkUGFyYW17U2NvcGV9ICkgZXEgJ0hBU0gnCiAgICAgICAgKQogICAgewogICAgICAgIG15ICVNb2R1bGVzID0gJXsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCAnSVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OicgLiAkUGFyYW17U2NvcGV9ICkKICAgICAgICB9OwogICAgICAgIE1PRFVMRToKICAgICAgICBmb3IgbXkgJE1vZHVsZSAoIHNvcnQga2V5cyAlTW9kdWxlcyApIHsKCiAgICAgICAgICAgICMgbG9hZCBtb2R1bGUKICAgICAgICAgICAgbmV4dCBNT0RVTEUKICAgICAgICAgICAgICAgIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkTW9kdWxlc3skTW9kdWxlfS0+e01vZHVsZX0gKTsKCiAgICAgICAgICAgICMgY3JlYXRlIG9iamVjdAogICAgICAgICAgICBteSAkTW9kdWxlT2JqZWN0ID0gJE1vZHVsZXN7JE1vZHVsZX0tPntNb2R1bGV9LT5uZXcoKTsKCiAgICAgICAgICAgICMgZXhlY3V0ZSBSdW4oKQogICAgICAgICAgICBteSAkQWNjZXNzT2sgPSAkTW9kdWxlT2JqZWN0LT5SdW4oJVBhcmFtKTsKCiAgICAgICAgICAgICMgY2hlY2sgZ3JhbnRlZCBvcHRpb24gKHNob3VsZCBJIHNheSBvaykKICAgICAgICAgICAgaWYgKCAkQWNjZXNzT2sgJiYgJE1vZHVsZXN7JE1vZHVsZX0tPntHcmFudGVkfSApIHsKCiAgICAgICAgICAgICAgICAjIGFjY2VzcyBvawogICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmV0dXJuIGJlY2F1c2UgYWNjZXNzIGlzIGZhbHNlIGJ1dCBpdCdzIHJlcXVpcmVkCiAgICAgICAgICAgIGlmICggISRBY2Nlc3NPayAmJiAkTW9kdWxlc3skTW9kdWxlfS0+e1JlcXVpcmVkfSApIHsKICAgICAgICAgICAgICAgIGlmICggISRQYXJhbXtMb2dOb30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiUGVybWlzc2lvbiBkZW5pZWQgYmVjYXVzZSBtb2R1bGUgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiKCRNb2R1bGVzeyRNb2R1bGV9LT57TW9kdWxlfSkgaXMgcmVxdWlyZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiKFVzZXJJRDogJFBhcmFte1VzZXJJRH0gJyRQYXJhbXtUeXBlfScgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAib24gJFBhcmFte1Njb3BlfTogIiAuICRQYXJhbXsgJFBhcmFte1Njb3BlfSAuICdJRCcgfSAuICIpISIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFjY2VzcyBub3Qgb2sKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGRvbid0IGdyYW50IGFjY2VzcwogICAgaWYgKCAhJFBhcmFte0xvZ05vfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQZXJtaXNzaW9uIGRlbmllZCAoVXNlcklEOiAkUGFyYW17VXNlcklEfSAnJFBhcmFte1R5cGV9JyAiCiAgICAgICAgICAgICAgICAuICJvbiAkUGFyYW17U2NvcGV9OiAiIC4gJFBhcmFteyAkUGFyYW17U2NvcGV9IC4gJ0lEJyB9IC4gIikhIiwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/Permission/ClassGroupCheck.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OkNsYXNzR3JvdXBDaGVjazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246OkNsYXNzR3JvdXBDaGVjayAtIGNoZWNrIGlmIGEgdXNlciBiZWxvbmdzIHRvIGEgZ3JvdXAKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDaGVja09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6Q2xhc3NHcm91cENoZWNrJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFJ1bigpCgp0aGlzIG1ldGhvZCBkb2VzIHRoZSBjaGVjayBpZiB0aGUgdXNlIGJlbG9uZ3MgdG8gYSBnaXZlbiBncm91cAoKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ2hlY2tPYmplY3QtPlJ1bigKICAgICAgICBVc2VySUQgID0+IDEyMywKICAgICAgICBUeXBlICAgID0+ICdybycsCiAgICAgICAgQ2xhc3NJRCA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M6OkNvbXB1dGVyJywKICAgICk7Cgo9Y3V0CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhVc2VySUQgVHlwZSBDbGFzc0lEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IENsYXNzIGRhdGEKICAgIG15ICRDbGFzc0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGdldCB1c2VyIGdyb3VwcwogICAgbXkgQEdyb3VwSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTWVtYmVyTGlzdCgKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICBSZXN1bHQgPT4gJ0lEJywKICAgICAgICBDYWNoZWQgPT4gMSwKICAgICk7CgogICAgIyBsb29raW5nIGZvciBncm91cCBpZCwgcmV0dXJuIGFjY2VzcyBpZiB1c2VyIGlzIGluIGdyb3VwCiAgICBmb3IgbXkgJEdyb3VwSUQgKEBHcm91cElEcykgewogICAgICAgIHJldHVybiAxIGlmICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufSAmJiAkR3JvdXBJRCBlcSAkQ2xhc3NJdGVtLT57UGVybWlzc2lvbn07CiAgICB9CgogICAgIyByZXR1cm4gbm8gYWNjZXNzCiAgICByZXR1cm47Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgU29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/Permission/ItemClassGroupCheck.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246Okl0ZW1DbGFzc0dyb3VwQ2hlY2s7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246Okl0ZW1DbGFzc0dyb3VwQ2hlY2sgLSBjaGVjayBpZiBhIHVzZXIgY2FuIGFjY2VzcyBhbiBpdGVtCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBjb25maWcgaXRlbSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQ2hlY2tPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb246Okl0ZW1DbGFzc0dyb3VwQ2hlY2snKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUnVuKCkKCnRoaXMgbWV0aG9kIGRvZXMgdGhlIGNoZWNrIGlmIHRoZSB1c2VyIGNhbiBhY2Nlc3MgYW4gaXRlbQoKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ2hlY2tPYmplY3QtPlJ1bigKICAgICAgICBVc2VySUQgPT4gMTIzLAogICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgIEl0ZW1JRCA9PiAzNDUsCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXNlcklEIFR5cGUgSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgIG15ICRDb25maWdJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtJdGVtSUR9LAogICAgKTsKCiAgICAjIGdldCBDbGFzcyBkYXRhCiAgICBteSAkQ2xhc3NJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgZ2V0IHVzZXIgZ3JvdXBzCiAgICBteSBAR3JvdXBJRHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICBUeXBlICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgIFJlc3VsdCA9PiAnSUQnLAogICAgICAgIENhY2hlZCA9PiAxLAogICAgKTsKCiAgICAjIGxvb2tpbmcgZm9yIGdyb3VwIGlkLCByZXR1cm4gYWNjZXNzIGlmIHVzZXIgaXMgaW4gZ3JvdXAKICAgIGZvciBteSAkR3JvdXBJRCAoQEdyb3VwSURzKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJENsYXNzSXRlbS0+e1Blcm1pc3Npb259ICYmICRHcm91cElEIGVxICRDbGFzc0l0ZW0tPntQZXJtaXNzaW9ufTsKICAgIH0KCiAgICAjIHJldHVybiBubyBhY2Nlc3MKICAgIHJldHVybjsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBTb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/Version.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlZlcnNpb247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgU3RvcmFibGU7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpWZXJzaW9uIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIHZlcnNpb24gZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBWZXJzaW9uWm9vbUxpc3QoKQoKcmV0dXJuIGEgY29uZmlnIGl0ZW0gdmVyc2lvbiBsaXN0IGFzIGFycmF5LWhhc2ggcmVmZXJlbmNlCgogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25ab29tTGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uWm9vbUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgIyBnZXQgdmVyc2lvbiB6b29tIGxpc3QKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBuYW1lLCBkZXBsX3N0YXRlX2lkLCBpbmNpX3N0YXRlX2lkLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5ICcKICAgICAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gV0hFUkUgY29uZmlnaXRlbV9pZCA9ID8gT1JERVIgQlkgaWQnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAVmVyc2lvbkxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG15ICVWZXJzaW9uOwogICAgICAgICRWZXJzaW9ue1ZlcnNpb25JRH0gICA9ICRSb3dbMF07CiAgICAgICAgJFZlcnNpb257TmFtZX0gICAgICAgID0gJFJvd1sxXTsKICAgICAgICAkVmVyc2lvbntEZXBsU3RhdGVJRH0gPSAkUm93WzJdOwogICAgICAgICRWZXJzaW9ue0luY2lTdGF0ZUlEfSA9ICRSb3dbM107CiAgICAgICAgJFZlcnNpb257Q3JlYXRlVGltZX0gID0gJFJvd1s0XTsKICAgICAgICAkVmVyc2lvbntDcmVhdGVCeX0gICAgPSAkUm93WzVdOwoKICAgICAgICBwdXNoIEBWZXJzaW9uTGlzdCwgXCVWZXJzaW9uOwogICAgfQoKICAgIGZvciBteSAkVmVyc2lvbiAoQFZlcnNpb25MaXN0KSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgZnVuY3Rpb25hbGl0eQogICAgICAgIG15ICREZXBsU3RhdGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRWZXJzaW9uLT57RGVwbFN0YXRlSUR9LAogICAgICAgICk7CgogICAgICAgICRWZXJzaW9uLT57RGVwbFN0YXRlfSAgICAgPSAkRGVwbFN0YXRlLT57TmFtZX07CiAgICAgICAgJFZlcnNpb24tPntEZXBsU3RhdGVUeXBlfSA9ICREZXBsU3RhdGUtPntGdW5jdGlvbmFsaXR5fTsKCiAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgZnVuY3Rpb25hbGl0eQogICAgICAgIG15ICRJbmNpU3RhdGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRWZXJzaW9uLT57SW5jaVN0YXRlSUR9LAogICAgICAgICk7CgogICAgICAgICRWZXJzaW9uLT57SW5jaVN0YXRlfSAgICAgPSAkSW5jaVN0YXRlLT57TmFtZX07CiAgICAgICAgJFZlcnNpb24tPntJbmNpU3RhdGVUeXBlfSA9ICRJbmNpU3RhdGUtPntGdW5jdGlvbmFsaXR5fTsKCiAgICAgICAgIyBhZGQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgICRWZXJzaW9uLT57Q2xhc3NJRH0gICAgICAgICAgPSAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9OwogICAgICAgICRWZXJzaW9uLT57Q2xhc3N9ICAgICAgICAgICAgPSAkQ29uZmlnSXRlbS0+e0NsYXNzfTsKICAgICAgICAkVmVyc2lvbi0+e051bWJlcn0gICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwogICAgICAgICRWZXJzaW9uLT57Q3VyRGVwbFN0YXRlSUR9ICAgPSAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZUlEfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckRlcGxTdGF0ZX0gICAgID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9OwogICAgICAgICRWZXJzaW9uLT57Q3VyRGVwbFN0YXRlVHlwZX0gPSAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZVR5cGV9OwogICAgICAgICRWZXJzaW9uLT57Q3VySW5jaVN0YXRlSUR9ICAgPSAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZUlEfTsKICAgICAgICAkVmVyc2lvbi0+e0N1ckluY2lTdGF0ZX0gICAgID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGV9OwogICAgICAgICRWZXJzaW9uLT57Q3VySW5jaVN0YXRlVHlwZX0gPSAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9OwogICAgfQoKICAgIHJldHVybiBcQFZlcnNpb25MaXN0Owp9Cgo9aGVhZDIgVmVyc2lvbkxpc3RBbGwoKQoKUmV0dXJucyBhIHR3by1kaW1lbnNpb25hbCBoYXNoIHJlZmVyZW5jZSB3aXRoIHRoZSBjb25maWcgaXRlbSBpZHMgYXMga2V5cyBvZiB0aGUgZmlyc3QgbGV2ZWwKYW5kIHRoZSBjb3JyZXNwb25kaW5nIHZlcnNpb24gaWRzIGFzIGtleXMgb2YgdGhlIHNlY29uZCBsZXZlbCwKdGhlbiBmb2xsb3dlZCBieSB0aGUgdmVyc2lvbiBkYXRhIGFzIGhhc2ggcmVmZXJlbmNlLgoKICAgIG15ICRWZXJzaW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTGlzdEFsbCgKICAgICAgICBDb25maWdJdGVtSURzID0+IFsgMSwgMiwgMywgNCwgLi4uXSwgICAgIyBvcHRpb25hbAoKICAgICAgICBPbGRlckRhdGUgICAgID0+ICcyMDE0LTEyLTIyIDIzOjU5OjU5JywgIyBvcHRpb25hbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZpbmRzIHZlcnNpb25zIG9sZGVyIHRoYW4gdGhlIGdpdmVuIGRhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBGb3JtYXQgTVVTVCBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFlZWVktTU0tREQgSEg6TU06U1MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmaWxsIG1pc3NpbmcgdmFsdWVzIHdpdGggMCBmaXJzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEV4YW1wbGU6IDIwMTQtMDQtMDEgMDc6MDM6MDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvdGhlcndpc2UgaXQgd29uJ3QgYmUgdGFrZW4gYXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB2YWxpZCBzZWFyY2ggcGFyYW1ldGVyCgogICAgICAgIExpbWl0ICAgICAgICAgPT4gMTAwMDAwMCwgICAgICAgICAgICAgICAjIG9wdGlvbmFsCiAgICApOwoKUmV0dXJuczoKCiRWZXJzaW9uTGlzdFJlZiA9IHsKCiAgICAjIENvbmZpZ0l0ZW1JRAogICAgMSA9PiB7CgogICAgICAgICMgVmVyc2lvbklECiAgICAgICAgMTAwID0+IHsKICAgICAgICAgICAgVmVyc2lvbklEICAgID0+IDEwMCwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ29uZmlnSXRlbTEnLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gNSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+IDMsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAyLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgPT4gJzIwMTYtMDMtMjIgMTc6NTg6MDAnLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgPT4gMSwKICAgICAgICB9LAoKICAgICAgICAjIFZlcnNpb25JRAogICAgICAgIDEwMSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAxMDEsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0yJywKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDUsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAzLAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gMiwKICAgICAgICAgICAgQ3JlYXRlVGltZSAgID0+ICcyMDE2LTAzLTIyIDE3OjU4OjAwJywKICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+IDEsCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBDb25maWdJdGVtSUQKICAgIDIgPT4gewoKICAgICAgICAjIFZlcnNpb25JRAogICAgICAgIDE1MCA9PiB7CiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAxNTAsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAyLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW0xJywKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDUsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAzLAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gMiwKICAgICAgICAgICAgQ3JlYXRlVGltZSAgID0+ICcyMDE2LTAzLTIyIDE3OjU4OjAwJywKICAgICAgICAgICAgQ3JlYXRlQnkgICAgID0+IDEsCiAgICAgICAgfSwKCiAgICAgICAgIyBWZXJzaW9uSUQKICAgICAgICAxNTEgPT4gewogICAgICAgICAgICBWZXJzaW9uSUQgICAgPT4gMTUxLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gMiwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDb25maWdJdGVtMScsCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiA1LAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gMywKICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+IDIsCiAgICAgICAgICAgIENyZWF0ZVRpbWUgICA9PiAnMjAxNi0wMy0yMiAxNzo1ODowMCcsCiAgICAgICAgICAgIENyZWF0ZUJ5ICAgICA9PiAxLAogICAgICAgIH0sCiAgICB9LAp9OwoKPWN1dAoKc3ViIFZlcnNpb25MaXN0QWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBidWlsZCBzcWwKICAgIG15ICRTUUwgPSAnU0VMRUNUIGlkLCBjb25maWdpdGVtX2lkLCBuYW1lLCBkZWZpbml0aW9uX2lkLAogICAgICAgIGRlcGxfc3RhdGVfaWQsIGluY2lfc3RhdGVfaWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnkKICAgICAgICBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSAxPTEnOwoKICAgICMgaWYgd2UgZ290IENvbmZpZ0l0ZW1JRHMgbWFrZSBzdXJlIHdlIGp1c3QgaGF2ZSBudW1lcmljIGlkcywKICAgICMgZXh0cmFjdCB0aG9zZSBhbmQgdXNlIGl0IGZvciB0aGUgcXVlcnkKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEcyA9IGdyZXAgeyAkXyA9fiAvXlxkKyQvIH0gQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH07CiAgICAgICAgJFNRTCAuPSAnIEFORCBjb25maWdpdGVtX2lkIElOICgnIC4gam9pbiAnLCAnLCBAQ29uZmlnSXRlbUlEcyAuICcpJzsKICAgIH0KCiAgICBteSBAQmluZFBhcmFtZXRlcjsKICAgIGlmICggJFBhcmFte09sZGVyRGF0ZX0gJiYgJFBhcmFte09sZGVyRGF0ZX0gPX4gL15cZHs0fVwtXGR7Mn1cLVxkezJ9XCBcZHsyfVw6XGR7Mn06XGR7Mn0kLyApIHsKICAgICAgICAkU1FMIC49ICcgQU5EIGNyZWF0ZV90aW1lIDwgPyc7CiAgICAgICAgcHVzaCBAQmluZFBhcmFtZXRlciwgXCRQYXJhbXtPbGRlckRhdGV9OwogICAgfQoKICAgICMgc2V0IGxpbWl0CiAgICBpZiAoICRQYXJhbXtMaW1pdH0gKSB7CiAgICAgICAgJFBhcmFte0xpbWl0fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJFBhcmFte0xpbWl0fSwgJ0ludGVnZXInICk7CiAgICB9CgogICAgaWYgKEBCaW5kUGFyYW1ldGVyKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIEJpbmQgID0+IFxAQmluZFBhcmFtZXRlciwKICAgICAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlUmVzdWx0czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlc3VsdHN7ICRSb3dbMV0gfS0+eyAkUm93WzBdIH0gPSB7CiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkUm93WzBdLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFJvd1sxXSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRSb3dbMl0gfHwgJycsCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkUm93WzNdIHx8ICcnLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFJvd1s0XSB8fCAnJywKICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRSb3dbNV0gfHwgJycsCiAgICAgICAgICAgIENyZWF0ZVRpbWUgICA9PiAkUm93WzZdIHx8ICcnLAogICAgICAgICAgICBDcmVhdGVCeSAgICAgPT4gJFJvd1s3XSB8fCAnJywKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiBcJVJlc3VsdHM7Cn0KCj1oZWFkMiBWZXJzaW9uTGlzdCgpCgpyZXR1cm4gYSBjb25maWcgaXRlbSB2ZXJzaW9uIGxpc3QgYXMgYXJyYXkgcmVmZXJlbmNlCgogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25MaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgPT4gJ1NFTEVDVCBpZCBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBjb25maWdpdGVtX2lkID0gPyBPUkRFUiBCWSBpZCcsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBWZXJzaW9uTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAVmVyc2lvbkxpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxAVmVyc2lvbkxpc3Q7Cn0KCj1oZWFkMiBWZXJzaW9uR2V0KCkKCnJldHVybnMgYSB2ZXJzaW9uIG9mIGEgY29uZmlnIGl0ZW0gYXMgaGFzaCByZWZlcmVuY2UuClRoZSByZXR1cm5lZCBoYXNoIGNvbnRhaW5zIGZvbGxvd2luZyBhdHRyaWJ1dGVzLgoKICAgICRWZXJzaW9ue1ZlcnNpb25JRH0KICAgICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0KICAgICRWZXJzaW9ue051bWJlcn0KICAgICRWZXJzaW9ue0NsYXNzSUR9CiAgICAkVmVyc2lvbntDbGFzc30KICAgICRWZXJzaW9ue0xhc3RWZXJzaW9uSUR9CiAgICAkVmVyc2lvbntOYW1lfQogICAgJFZlcnNpb257RGVmaW5pdGlvbklEfQogICAgJFZlcnNpb257RGVwbFN0YXRlSUR9CiAgICAkVmVyc2lvbntEZXBsU3RhdGV9CiAgICAkVmVyc2lvbntEZXBsU3RhdGVUeXBlfQogICAgJFZlcnNpb257Q3VyRGVwbFN0YXRlSUR9CiAgICAkVmVyc2lvbntDdXJEZXBsU3RhdGV9CiAgICAkVmVyc2lvbntDdXJEZXBsU3RhdGVUeXBlfQogICAgJFZlcnNpb257SW5jaVN0YXRlSUR9CiAgICAkVmVyc2lvbntJbmNpU3RhdGV9CiAgICAkVmVyc2lvbntJbmNpU3RhdGVUeXBlfQogICAgJFZlcnNpb257Q3VySW5jaVN0YXRlSUR9CiAgICAkVmVyc2lvbntDdXJJbmNpU3RhdGV9CiAgICAkVmVyc2lvbntDdXJJbmNpU3RhdGVUeXBlfQogICAgJFZlcnNpb257WE1MRGVmaW5pdGlvbn0KICAgICRWZXJzaW9ue1hNTERhdGF9CiAgICAkVmVyc2lvbntDcmVhdGVUaW1lfQogICAgJFZlcnNpb257Q3JlYXRlQnl9CgogICAgbXkgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBWZXJzaW9uSUQgID0+IDEyMywKICAgICAgICBYTUxEYXRhR2V0ID0+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDEgKDB8MSkKICAgICk7CgogICAgb3IKCiAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKV2hlbiB0aGUgZGF0YSBmcm9tIHRoZSBYTUwgc3RvcmFnZSBpcyBub3QgbmVlZGVkIHRoZW4gZmV0Y2hpbmcgdGhlIFhNTCBkYXRhIGNhbiBiZQpleHBsaWNpdGx5IHR1cm5lZCBvZmYgYnkgcGFzc2luZyBYTUxEYXRhR2V0ID0+IDAuCgogICAgbXkgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICYmICEkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVmVyc2lvbklEIG9yIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1hNTERhdGFHZXR9ICkgewogICAgICAgICRQYXJhbXtYTUxEYXRhR2V0fSA9IDE7CiAgICB9CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbkdldDo6VmVyc2lvbklEOjonIC4gJFBhcmFte1ZlcnNpb25JRH0gLiAnOjpYTUxEYXRhOjonIC4gJFBhcmFte1hNTERhdGFHZXR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gU3RvcmFibGU6OmRjbG9uZSgkQ2FjaGUpIGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgY29uZmlnaXRlbV9pZCwgbmFtZSwgZGVmaW5pdGlvbl9pZCwgJwogICAgICAgICAgICAgICAgLiAnZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17VmVyc2lvbklEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbkdldDo6Q29uZmlnSXRlbUlEOjonIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gLiAnOjpYTUxEYXRhOjonIC4gJFBhcmFte1hNTERhdGFHZXR9OwogICAgICAgIG15ICRDYWNoZSAgICA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXksCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gU3RvcmFibGU6OmRjbG9uZSgkQ2FjaGUpIGlmICRDYWNoZTsKCiAgICAgICAgIyBnZXQgdmVyc2lvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJ1NFTEVDVCBpZCwgY29uZmlnaXRlbV9pZCwgbmFtZSwgZGVmaW5pdGlvbl9pZCwgJwogICAgICAgICAgICAgICAgLiAnZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSAnCiAgICAgICAgICAgICAgICAuICdGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiAnCiAgICAgICAgICAgICAgICAuICdXSEVSRSBjb25maWdpdGVtX2lkID0gPyBPUkRFUiBCWSBpZCBERVNDJywKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVZlcnNpb247CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRWZXJzaW9ue1ZlcnNpb25JRH0gICAgPSAkUm93WzBdOwogICAgICAgICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0gPSAkUm93WzFdOwogICAgICAgICRWZXJzaW9ue05hbWV9ICAgICAgICAgPSAkUm93WzJdOwogICAgICAgICRWZXJzaW9ue0RlZmluaXRpb25JRH0gPSAkUm93WzNdOwogICAgICAgICRWZXJzaW9ue0RlcGxTdGF0ZUlEfSAgPSAkUm93WzRdOwogICAgICAgICRWZXJzaW9ue0luY2lTdGF0ZUlEfSAgPSAkUm93WzVdOwogICAgICAgICRWZXJzaW9ue0NyZWF0ZVRpbWV9ICAgPSAkUm93WzZdOwogICAgICAgICRWZXJzaW9ue0NyZWF0ZUJ5fSAgICAgPSAkUm93WzddOwogICAgfQoKICAgICMgY2hlY2sgdmVyc2lvbgogICAgaWYgKCAhJFZlcnNpb257VmVyc2lvbklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05vIHN1Y2ggY29uZmlnIGl0ZW0gdmVyc2lvbiEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgZnVuY3Rpb25hbGl0eQogICAgbXkgJERlcGxTdGF0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbntEZXBsU3RhdGVJRH0sCiAgICApOwoKICAgICRWZXJzaW9ue0RlcGxTdGF0ZX0gICAgID0gJERlcGxTdGF0ZS0+e05hbWV9OwogICAgJFZlcnNpb257RGVwbFN0YXRlVHlwZX0gPSAkRGVwbFN0YXRlLT57RnVuY3Rpb25hbGl0eX07CgogICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgZnVuY3Rpb25hbGl0eQogICAgbXkgJEluY2lTdGF0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtR2V0KAogICAgICAgIEl0ZW1JRCA9PiAkVmVyc2lvbntJbmNpU3RhdGVJRH0sCiAgICApOwoKICAgICRWZXJzaW9ue0luY2lTdGF0ZX0gICAgID0gJEluY2lTdGF0ZS0+e05hbWV9OwogICAgJFZlcnNpb257SW5jaVN0YXRlVHlwZX0gPSAkSW5jaVN0YXRlLT57RnVuY3Rpb25hbGl0eX07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgQ2FjaGUgICAgICAgID0+IDAsCiAgICApOwoKICAgICMgY2hlY2sgY29uZmlnIGl0ZW0gZGF0YQogICAgaWYgKCAhJENvbmZpZ0l0ZW0gfHwgcmVmICRDb25maWdJdGVtIG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGdldCBjb25maWcgaXRlbSAkVmVyc2lvbntDb25maWdJdGVtSUR9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgJFZlcnNpb257Q2xhc3NJRH0gICAgICAgICAgPSAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9OwogICAgJFZlcnNpb257Q2xhc3N9ICAgICAgICAgICAgPSAkQ29uZmlnSXRlbS0+e0NsYXNzfTsKICAgICRWZXJzaW9ue0xhc3RWZXJzaW9uSUR9ICAgID0gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKICAgICRWZXJzaW9ue051bWJlcn0gICAgICAgICAgID0gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwogICAgJFZlcnNpb257Q3VyRGVwbFN0YXRlSUR9ICAgPSAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZUlEfTsKICAgICRWZXJzaW9ue0N1ckRlcGxTdGF0ZX0gICAgID0gJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9OwogICAgJFZlcnNpb257Q3VyRGVwbFN0YXRlVHlwZX0gPSAkQ29uZmlnSXRlbS0+e0N1ckRlcGxTdGF0ZVR5cGV9OwogICAgJFZlcnNpb257Q3VySW5jaVN0YXRlSUR9ICAgPSAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZUlEfTsKICAgICRWZXJzaW9ue0N1ckluY2lTdGF0ZX0gICAgID0gJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGV9OwogICAgJFZlcnNpb257Q3VySW5jaVN0YXRlVHlwZX0gPSAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9OwoKICAgICMgc2V0IGNhY2hlIGZvciBWZXJzaW9uSUQgd2l0aG91dCB4bWwgZGF0YSAoYWx3YXlzKQogICAgbXkgJENhY2hlS2V5ID0gJ1ZlcnNpb25HZXQ6OlZlcnNpb25JRDo6JyAuICRWZXJzaW9ue1ZlcnNpb25JRH0gLiAnOjpYTUxEYXRhOjowJzsKICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgVmFsdWUgPT4gU3RvcmFibGU6OmRjbG9uZSggXCVWZXJzaW9uICksCiAgICApOwoKICAgICMgc2V0IGNhY2hlIGZvciBDb25maWdJdGVtSUQgd2l0aG91dCB4bWwgZGF0YSAob25seSBpZiBjYWxsZWQgd2l0aCBDb25maWdJdGVtSUQpCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRDYWNoZUtleSA9ICdWZXJzaW9uR2V0OjpDb25maWdJdGVtSUQ6OicgLiAkVmVyc2lvbntDb25maWdJdGVtSUR9IC4gJzo6WE1MRGF0YTo6MCc7CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICAgICAgVmFsdWUgPT4gU3RvcmFibGU6OmRjbG9uZSggXCVWZXJzaW9uICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGRvbmUgaWYgd2UgZG9uJ3QgbmVlZCB4bWwgZGF0YQogICAgcmV0dXJuIFwlVmVyc2lvbiBpZiAhJFBhcmFte1hNTERhdGFHZXR9OwoKICAgICMgZ2V0IHhtbCBkZWZpbml0aW9uCiAgICBteSAkRGVmaW5pdGlvbiA9ICRTZWxmLT5EZWZpbml0aW9uR2V0KAogICAgICAgIERlZmluaXRpb25JRCA9PiAkVmVyc2lvbntEZWZpbml0aW9uSUR9LAogICAgKTsKICAgICRWZXJzaW9ue1hNTERlZmluaXRpb259ID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICAjIGdldCB4bWwgZGF0YQogICAgJFZlcnNpb257WE1MRGF0YX0gPSAkU2VsZi0+X1hNTFZlcnNpb25HZXQoCiAgICAgICAgQ2xhc3NJRCAgID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9ue1ZlcnNpb25JRH0sCiAgICApOwoKICAgICMgc2V0IGNhY2hlIGZvciBWZXJzaW9uSUQgKGFsd2F5cykKICAgICRDYWNoZUtleSA9ICdWZXJzaW9uR2V0OjpWZXJzaW9uSUQ6OicgLiAkVmVyc2lvbntWZXJzaW9uSUR9IC4gJzo6WE1MRGF0YTo6MSc7CiAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDYWNoZVRUTH0sCiAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgIFZhbHVlID0+IFN0b3JhYmxlOjpkY2xvbmUoIFwlVmVyc2lvbiApLAogICAgKTsKCiAgICAjIHNldCBjYWNoZSBmb3IgQ29uZmlnSXRlbUlEIChvbmx5IGlmIGNhbGxlZCB3aXRoIENvbmZpZ0l0ZW1JRCkKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJENhY2hlS2V5ID0gJ1ZlcnNpb25HZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRWZXJzaW9ue0NvbmZpZ0l0ZW1JRH0gLiAnOjpYTUxEYXRhOjoxJzsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NhY2hlVFRMfSwKICAgICAgICAgICAgS2V5ICAgPT4gJENhY2hlS2V5LAogICAgICAgICAgICBWYWx1ZSA9PiBTdG9yYWJsZTo6ZGNsb25lKCBcJVZlcnNpb24gKSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiBcJVZlcnNpb247Cn0KCj1oZWFkMiBWZXJzaW9uTmFtZUdldCgpCgpyZXR1cm5zIHRoZSBuYW1lIG9mIGEgdmVyc2lvbiBvZiBhIGNvbmZpZyBpdGVtLgoKICAgIG15ICRWZXJzaW9uTmFtZSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTmFtZUdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgKTsKCiAgICBvcgoKICAgIG15ICRWZXJzaW9uTmFtZSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uTmFtZUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBWZXJzaW9uTmFtZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VmVyc2lvbklEfSAmJiAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFZlcnNpb25JRCBvciBDb25maWdJdGVtSUQhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKCiAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9ICkgewoKICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgICAgIG15ICRDYWNoZUtleSA9ICdWZXJzaW9uTmFtZUdldDo6VmVyc2lvbklEOjonIC4gJFBhcmFte1ZlcnNpb25JRH07CiAgICAgICAgbXkgJENhY2hlICAgID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkeyRDYWNoZX0gaWYgJENhY2hlOwoKICAgICAgICAjIGdldCB2ZXJzaW9uCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBuYW1lICcKICAgICAgICAgICAgICAgIC4gJ0ZST00gY29uZmlnaXRlbV92ZXJzaW9uIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtWZXJzaW9uSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZAogICAgICAgIG15ICRDYWNoZUtleSA9ICdWZXJzaW9uTmFtZUdldDo6Q29uZmlnSXRlbUlEOjonIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAgICAgbXkgJENhY2hlICAgID0gJENhY2hlT2JqZWN0LT5HZXQoCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkeyRDYWNoZX0gaWYgJENhY2hlOwoKICAgICAgICAjIGdldCB2ZXJzaW9uCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBuYW1lICcKICAgICAgICAgICAgICAgIC4gJ0ZST00gY29uZmlnaXRlbV92ZXJzaW9uICcKICAgICAgICAgICAgICAgIC4gJ1dIRVJFIGNvbmZpZ2l0ZW1faWQgPSA/IE9SREVSIEJZIGlkIERFU0MnLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlVmVyc2lvbjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFZlcnNpb257VmVyc2lvbklEfSA9ICRSb3dbMF07CiAgICAgICAgJFZlcnNpb257TmFtZX0gICAgICA9ICRSb3dbMV07CiAgICB9CgogICAgIyBjaGVjayB2ZXJzaW9uCiAgICBpZiAoICEkVmVyc2lvbntWZXJzaW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gc3VjaCBjb25maWcgaXRlbSB2ZXJzaW9uIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgY2FjaGUgZm9yIFZlcnNpb25JRCAoYWx3YXlzKQogICAgbXkgJENhY2hlS2V5ID0gJ1ZlcnNpb25OYW1lR2V0OjpWZXJzaW9uSUQ6OicgLiAkVmVyc2lvbntWZXJzaW9uSUR9OwogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBcJFZlcnNpb257TmFtZX0sCiAgICApOwoKICAgICMgc2V0IGNhY2hlIGZvciBDb25maWdJdGVtSUQgKG9ubHkgaWYgY2FsbGVkIHdpdGggQ29uZmlnSXRlbUlEKQogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAkQ2FjaGVLZXkgPSAnVmVyc2lvbk5hbWVHZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXksCiAgICAgICAgICAgIFZhbHVlID0+IFwkVmVyc2lvbntOYW1lfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkVmVyc2lvbntOYW1lfTsKfQoKPWhlYWQyIFZlcnNpb25Db25maWdJdGVtSURHZXQoKQoKcmV0dXJuIHRoZSBjb25maWcgaXRlbSBpZCBvZiBhIHZlcnNpb24KCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25Db25maWdJdGVtSURHZXQoCiAgICAgICAgVmVyc2lvbklEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkNvbmZpZ0l0ZW1JREdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VmVyc2lvbklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVmVyc2lvbklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjaGVjayBpZiByZXN1bHQgaXMgYWxyZWFkeSBjYWNoZWQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25Db25maWdJdGVtSURHZXR9LT57ICRQYXJhbXtWZXJzaW9uSUR9IH0KICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfS0+e1ZlcnNpb25Db25maWdJdGVtSURHZXR9LT57ICRQYXJhbXtWZXJzaW9uSUR9IH07CgogICAgIyBnZXQgY29uZmlnIGl0ZW0gaWQKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICdTRUxFQ1QgY29uZmlnaXRlbV9pZCBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtWZXJzaW9uSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ29uZmlnSXRlbUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ29uZmlnSXRlbUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIGNhY2hlIHRoZSByZXN1bHQKICAgICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnsgJFBhcmFte1ZlcnNpb25JRH0gfSA9ICRDb25maWdJdGVtSUQ7CgogICAgcmV0dXJuICRDb25maWdJdGVtSUQ7Cn0KCj1oZWFkMiBWZXJzaW9uQWRkKCkKCmFkZCBhIG5ldyB2ZXJzaW9uCgogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdUaGUgTmFtZScsCiAgICAgICAgRGVmaW5pdGlvbklEID0+IDEyMTIsCiAgICAgICAgRGVwbFN0YXRlSUQgID0+IDgsCiAgICAgICAgSW5jaVN0YXRlSUQgID0+IDQsCiAgICAgICAgWE1MRGF0YSAgICAgID0+ICRBcnJheUhhc2hSZWYsICAjIChvcHRpb25hbCkKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoQ29uZmlnSXRlbUlEIE5hbWUgRGVmaW5pdGlvbklEIERlcGxTdGF0ZUlEIEluY2lTdGF0ZUlEIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBdHRyaWJ1dGUhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkREJPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdAogICAgbXkgJERlcGxTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgIHJldHVybiBpZiAhJERlcGxTdGF0ZUxpc3Q7CiAgICByZXR1cm4gaWYgcmVmICREZXBsU3RhdGVMaXN0IG5lICdIQVNIJzsKCiAgICAjIGNoZWNrIHRoZSBkZXBsb3ltZW50IHN0YXRlIGlkCiAgICBpZiAoICEkRGVwbFN0YXRlTGlzdC0+eyAkUGFyYW17RGVwbFN0YXRlSUR9IH0gKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gdmFsaWQgZGVwbG95bWVudCBzdGF0ZSBpZCBnaXZlbiEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CgogICAgcmV0dXJuIGlmICEkSW5jaVN0YXRlTGlzdDsKICAgIHJldHVybiBpZiByZWYgJEluY2lTdGF0ZUxpc3QgbmUgJ0hBU0gnOwoKICAgICMgY2hlY2sgdGhlIGluY2lkZW50IHN0YXRlIGlkCiAgICBpZiAoICEkSW5jaVN0YXRlTGlzdC0+eyAkUGFyYW17SW5jaVN0YXRlSUR9IH0gKSB7CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gdmFsaWQgaW5jaWRlbnQgc3RhdGUgaWQgZ2l2ZW4hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBWZXJzaW9uTGlzdAogICAgbXkgJFZlcnNpb25MaXN0ID0gJFNlbGYtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgbXkgJENvbmZpZ0l0ZW1JbmZvID0ge307CgogICAgaWYgKCBAeyRWZXJzaW9uTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IG9sZCB2ZXJzaW9uIGluZm8gZm9yIGNvbXBhcmlzb25zIHdpdGggY3VycmVudCB2ZXJzaW9uCiAgICAgICAgIyB0aGlzIGlzIG5lZWRlZCB0byB0cmlnZ2VyIHNvbWUgZXZlbnRzCiAgICAgICAgJENvbmZpZ0l0ZW1JbmZvID0gJFNlbGYtPlZlcnNpb25HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgWE1MRGF0YUdldCAgID0+IDAsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbQogICAgICAgICRDb25maWdJdGVtSW5mbyA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRDb25maWdJdGVtSW5mbzsKICAgIHJldHVybiBpZiByZWYgJENvbmZpZ0l0ZW1JbmZvIG5lICdIQVNIJzsKCiAgICAjIGNoZWNrLCB3aGV0aGVyIHRoZSBmZWF0dXJlIHRvIGNoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIGlzIGVuYWJsZWQKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdVbmlxdWVDSU5hbWU6OkVuYWJsZVVuaXF1ZW5lc3NDaGVjaycpICkgewoKICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkQ29uZmlnSXRlbUluZm8tPntDbGFzc0lEfSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICApOwoKICAgICAgICAjIHN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgbmFtZSBpcyBub3QgdW5pcXVlCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJE5hbWVEdXBsaWNhdGVzKSApIHsKCiAgICAgICAgICAgICMgYnVpbGQgYSBzdHJpbmcgb2YgYWxsIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSBqb2luICcsICcsIEB7JE5hbWVEdXBsaWNhdGVzfTsKCiAgICAgICAgICAgICMgd3JpdGUgYW4gZXJyb3IgbG9nIG1lc3NhZ2UgY29udGFpbmluZyBhbGwgdGhlIGR1cGxpY2F0ZSBJRHMKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBuYW1lICRQYXJhbXtOYW1lfSBpcyBhbHJlYWR5IGluIHVzZSAoQ29uZmlnSXRlbUlEczogJER1cGxpY2F0ZXMpISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEV2ZW50cyA9ICRTZWxmLT5fR2V0RXZlbnRzKAogICAgICAgIFBhcmFtICAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgQ29uZmlnSXRlbUluZm8gPT4gJENvbmZpZ0l0ZW1JbmZvLAogICAgKTsKCiAgICBteSAkUmV0dXJuVmVyc2lvbklEID0gc2NhbGFyIEB7JFZlcnNpb25MaXN0fSA/ICRWZXJzaW9uTGlzdC0+Wy0xXSA6IDA7CiAgICByZXR1cm4gJFJldHVyblZlcnNpb25JRCBpZiAhKCAkRXZlbnRzICYmIGtleXMgJXskRXZlbnRzfSApOwoKICAgICMgU3BlY2lhbCBjYXNlIHRoYXQgb25seSBYTUwgYXR0cmlidXRlcyBoYXZlIGJlZW4gY2hhbmdlZCB0aGF0IHNob3VsZCBub3QgY3JlYXRlIGEgbmV3IHZlcnNpb24KICAgIGlmICggJEV2ZW50cy0+e1VwZGF0ZUxhc3RWZXJzaW9ufSAmJiAkRXZlbnRzLT57VXBkYXRlWE1MRGF0YX0gJiYgcmVmICRFdmVudHMtPntVcGRhdGVYTUxEYXRhfSBlcSAnQVJSQVknICkgewoKICAgICAgICBteSAlVmFsdWVIYXNoMkQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WE1MJyktPlhNTEhhc2gyRCgKICAgICAgICAgICAgWE1MSGFzaCA9PiAkRXZlbnRzLT57VXBkYXRlWE1MRGF0YX0sCiAgICAgICAgKTsKCiAgICAgICAgVVBEQVRFVkFMVUU6CiAgICAgICAgZm9yIG15ICRVcGRhdGVWYWx1ZSAoIHNvcnQga2V5cyAleyAkRXZlbnRzLT57VmFsdWVVcGRhdGV9IH0gKSB7CgogICAgICAgICAgICBteSAkQ29udGVudFN0cmluZyA9ICRVcGRhdGVWYWx1ZSAuICd7XCdDb250ZW50XCd9JzsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIGtleSBleGlzdHMuCiAgICAgICAgICAgIG5leHQgVVBEQVRFVkFMVUUgaWYgIWV4aXN0cyAkVmFsdWVIYXNoMkR7JENvbnRlbnRTdHJpbmd9OwoKICAgICAgICAgICAgbXkgJFR5cGUgPSAnSVRTTTo6Q29uZmlnSXRlbTo6JyAuICRDb25maWdJdGVtSW5mby0+e0NsYXNzSUR9OwoKICAgICAgICAgICAgIyBEZWxldGUgb2xkIGVudHJpZXMgZnJvbSB0aGUgZGF0YWJhc2UuCiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICAgICAgREVMRVRFIEZST00geG1sX3N0b3JhZ2UKICAgICAgICAgICAgICAgICAgICBXSEVSRSB4bWxfdHlwZSA9ID8KICAgICAgICAgICAgICAgICAgICBBTkQgeG1sX2tleSA9ID8KICAgICAgICAgICAgICAgICAgICBBTkQgeG1sX2NvbnRlbnRfa2V5ID0gPwogICAgICAgICAgICAgICAgJywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgICAgIFwkVHlwZSwKICAgICAgICAgICAgICAgICAgICBcJFJldHVyblZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICBcJENvbnRlbnRTdHJpbmcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBBZGQgdXBkYXRlZCBlbnRyeSB0byB0aGUgZGF0YWJhc2UuCiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICAgICAgSU5TRVJUIElOVE8geG1sX3N0b3JhZ2UKICAgICAgICAgICAgICAgICAgICAoeG1sX3R5cGUsIHhtbF9rZXksIHhtbF9jb250ZW50X2tleSwgeG1sX2NvbnRlbnRfdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/LCA/LCA/KQogICAgICAgICAgICAgICAgJywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgICAgIFwkVHlwZSwKICAgICAgICAgICAgICAgICAgICBcJFJldHVyblZlcnNpb25JRCwKICAgICAgICAgICAgICAgICAgICBcJENvbnRlbnRTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgXCRWYWx1ZUhhc2gyRHskQ29udGVudFN0cmluZ30sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBEZWxldGUgY2FjaGUuCiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAnWE1MJywKICAgICAgICAgICAgICAgIEtleSAgPT4gIiRUeXBlLSRSZXR1cm5WZXJzaW9uSUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgYWZmZWN0ZWQgY2FjaGVzCiAgICAgICAgbXkgJENhY2hlS2V5ID0gJ1ZlcnNpb25HZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gJzo6WE1MRGF0YTo6JzsKICAgICAgICBmb3IgbXkgJFhNTERhdGEgKHF3KDAgMSkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgICAgIEtleSAgPT4gJENhY2hlS2V5IC4gJFhNTERhdGEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGRlbGV0ZSBhZmZlY3RlZCBjYWNoZXMKICAgICAgICAkQ2FjaGVLZXkgPSAnVmVyc2lvbkdldDo6VmVyc2lvbklEOjonIC4gJFJldHVyblZlcnNpb25JRCAuICc6OlhNTERhdGE6Oic7CiAgICAgICAgZm9yIG15ICRYTUxEYXRhIChxdygwIDEpKSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICBLZXkgID0+ICRDYWNoZUtleSAuICRYTUxEYXRhLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyB1cGRhdGUgY2hhbmdlX3RpbWUgYW5kIGNoYW5nZV9ieSBvZiB0aGUgY29uZmlnIGl0ZW0KICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgY29uZmlnaXRlbQogICAgICAgICAgICAgICAgU0VUIGNoYW5nZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAsCiAgICAgICAgICAgICAgICBjaGFuZ2VfYnkgPSA/CiAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFwkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgXSwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSBjb25maWcgaXRlbSBjYWNoZQogICAgICAgICRDYWNoZUtleSA9ICdDb25maWdJdGVtR2V0OjpDb25maWdJdGVtSUQ6OicgLiAkUGFyYW17Q29uZmlnSXRlbUlEfTsKICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgIEtleSAgPT4gJENhY2hlS2V5LAogICAgICAgICk7CgogICAgICAgICMgVHJpZ2dlciBWYWx1ZVVwZGF0ZSBldmVudC4KICAgICAgICAkU2VsZi0+X0V2ZW50SGFuZGxlckZvckNoYW5nZWRYTUxWYWx1ZXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgVXBkYXRlVmFsdWVzID0+ICRFdmVudHMtPntWYWx1ZVVwZGF0ZX0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJFJldHVyblZlcnNpb25JRDsKICAgIH0KCiAgICAjIGluc2VydCBuZXcgdmVyc2lvbgogICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnSU5TRVJUIElOVE8gY29uZmlnaXRlbV92ZXJzaW9uICcKICAgICAgICAgICAgLiAnKGNvbmZpZ2l0ZW1faWQsIG5hbWUsIGRlZmluaXRpb25faWQsICcKICAgICAgICAgICAgLiAnZGVwbF9zdGF0ZV9pZCwgaW5jaV9zdGF0ZV9pZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSkgVkFMVUVTICcKICAgICAgICAgICAgLiAnKD8sID8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgXCRQYXJhbXtEZWZpbml0aW9uSUR9LAogICAgICAgICAgICBcJFBhcmFte0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgXCRQYXJhbXtJbmNpU3RhdGVJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRTdWNjZXNzOwoKICAgICMgZGVsZXRlIGFmZmVjdGVkIGNhY2hlcwogICAgbXkgJENhY2hlS2V5ID0gJ1ZlcnNpb25HZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gJzo6WE1MRGF0YTo6JzsKICAgIGZvciBteSAkWE1MRGF0YSAocXcoMCAxKSkgewogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXkgLiAkWE1MRGF0YSwKICAgICAgICApOwogICAgfQogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAnVmVyc2lvbk5hbWVHZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKCiAgICAjIGdldCBpZCBvZiBuZXcgdmVyc2lvbgogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkLCBjcmVhdGVfdGltZSBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSAnCiAgICAgICAgICAgIC4gJ2NvbmZpZ2l0ZW1faWQgPSA/IE9SREVSIEJZIGlkIERFU0MnLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtDb25maWdJdGVtSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkVmVyc2lvbklEOwogICAgbXkgJENyZWF0ZVRpbWU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmVyc2lvbklEICA9ICRSb3dbMF07CiAgICAgICAgJENyZWF0ZVRpbWUgPSAkUm93WzFdOwogICAgfQoKICAgICMgY2hlY2sgdmVyc2lvbiBpZAogICAgaWYgKCAhJFZlcnNpb25JRCApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGdldCB0aGUgbmV3IHZlcnNpb24gaWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGFkZCB4bWwgZGF0YQogICAgaWYgKCAkUGFyYW17WE1MRGF0YX0gJiYgcmVmICRQYXJhbXtYTUxEYXRhfSBlcSAnQVJSQVknICkgewogICAgICAgICRTZWxmLT5fWE1MVmVyc2lvbkFkZCgKICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRDb25maWdJdGVtSW5mby0+e0NsYXNzSUR9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICBYTUxEYXRhICAgICAgPT4gJFBhcmFte1hNTERhdGF9LAogICAgICAgICk7CiAgICB9CgogICAgIyB1cGRhdGUgbGFzdF92ZXJzaW9uX2lkLCBjdXJfZGVwbF9zdGF0ZV9pZCwgY3VyX2luY2lfc3RhdGVfaWQsIGNoYW5nZV90aW1lIGFuZCBjaGFuZ2VfYnkKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgY29uZmlnaXRlbSBTRVQgbGFzdF92ZXJzaW9uX2lkID0gPywgJwogICAgICAgICAgICAuICdjdXJfZGVwbF9zdGF0ZV9pZCA9ID8sIGN1cl9pbmNpX3N0YXRlX2lkID0gPywgJwogICAgICAgICAgICAuICdjaGFuZ2VfdGltZSA9ID8sIGNoYW5nZV9ieSA9ID8gJwogICAgICAgICAgICAuICdXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFZlcnNpb25JRCwKICAgICAgICAgICAgXCRQYXJhbXtEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgIFwkUGFyYW17SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBcJENyZWF0ZVRpbWUsCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtIGNhY2hlCiAgICAkQ2FjaGVLZXkgPSAnQ29uZmlnSXRlbUdldDo6Q29uZmlnSXRlbUlEOjonIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH07CiAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgIyB0cmlnZ2VyIFZlcnNpb25DcmVhdGUgZXZlbnQKICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgRXZlbnQgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBjb21wYXJlIGN1cnJlbnQgYW5kIG9sZCB2YWx1ZXMKICAgIGlmICggJEV2ZW50cy0+e1ZhbHVlVXBkYXRlfSApIHsKICAgICAgICAkU2VsZi0+X0V2ZW50SGFuZGxlckZvckNoYW5nZWRYTUxWYWx1ZXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgVXBkYXRlVmFsdWVzID0+ICRFdmVudHMtPntWYWx1ZVVwZGF0ZX0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgdHJpZ2dlciBkZWZpbml0aW9uIHVwZGF0ZSBldmVudAogICAgaWYgKCAkRXZlbnRzLT57RGVmaW5pdGlvblVwZGF0ZX0gKSB7CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0RlZmluaXRpb25VcGRhdGUnLAogICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJEV2ZW50cy0+e0RlZmluaXRpb25VcGRhdGV9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIG9sZCBhbmQgbmV3IG5hbWUKICAgIGlmICggJEV2ZW50cy0+e05hbWVVcGRhdGV9ICkgewogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdOYW1lVXBkYXRlJywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRFdmVudHMtPntOYW1lVXBkYXRlfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyB0cmlnZ2VyIGluY2lkZW50IHN0YXRlIHVwZGF0ZSBldmVudAogICAgaWYgKCAkRXZlbnRzLT57SW5jaWRlbnRTdGF0ZVVwZGF0ZX0gKSB7CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0luY2lkZW50U3RhdGVVcGRhdGUnLAogICAgICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJEV2ZW50cy0+e0luY2lkZW50U3RhdGVVcGRhdGV9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHRyaWdnZXIgZGVwbG95bWVudCBzdGF0ZSB1cGRhdGUgZXZlbnQKICAgIGlmICggJEV2ZW50cy0+e0RlcGxveW1lbnRTdGF0ZVVwZGF0ZX0gKSB7CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkRXZlbnRzLT57RGVwbG95bWVudFN0YXRlVXBkYXRlfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyByZWNhbGN1bGF0ZSB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBhbGwgbGlua2VkIGNvbmZpZyBpdGVtcwogICAgJFNlbGYtPkN1ckluY2lTdGF0ZVJlY2FsYygKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgIHJldHVybiAkVmVyc2lvbklEOwp9Cgo9aGVhZDIgVmVyc2lvbkRlbGV0ZSgpCgpkZWxldGUgYW4gZXhpc3RpbmcgdmVyc2lvbiBvciB2ZXJzaW9ucwoKICAgIG15ICRUcnVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25EZWxldGUoCiAgICAgICAgVmVyc2lvbklEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICBteSAkVHJ1ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAzMjEsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIG15ICRUcnVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25EZWxldGUoCiAgICAgICAgVmVyc2lvbklEcyA9PiBbIDEsIDIsIDMsIDQgXSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFZlcnNpb25EZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggISRQYXJhbXtWZXJzaW9uSUR9ICYmICEkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17VmVyc2lvbklEc30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVmVyc2lvbklELCBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEcyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRWZXJzaW9uTGlzdCA9IFtdOwogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKICAgICAgICBwdXNoIEB7JFZlcnNpb25MaXN0fSwgJFBhcmFte1ZlcnNpb25JRH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtWZXJzaW9uSURzfSApIHsKICAgICAgICBwdXNoIEB7JFZlcnNpb25MaXN0fSwgQHsgJFBhcmFte1ZlcnNpb25JRHN9IH07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgICAgICAkVmVyc2lvbkxpc3QgPSAkU2VsZi0+VmVyc2lvbkxpc3QoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxIGlmICFzY2FsYXIgQHskVmVyc2lvbkxpc3R9OwoKICAgICMgZ2V0IGNvbmZpZyBpdGVtIGlkIGZvciB2ZXJzaW9uIChuZWVkZWQgZm9yIGV2ZW50IGhhbmRsaW5nKQogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgIG15ICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgdG8gc3RvcmUgdW5pcXVlIGNvbmZpZyBpdGVtIGlkcyBpZiB0aGVyZSBhcmUgdmVyc2lvbnMgZnJvbSBkaWZmZXJlbnQgY29uZmlnIGl0ZW1zCiAgICBteSAlQ29uZmlnSXRlbUlEczsKCiAgICBteSAkU3VjY2VzczsKICAgIGZvciBteSAkVmVyc2lvbklEICggQHskVmVyc2lvbkxpc3R9ICkgewoKICAgICAgICAjIGdldCBjb25maWdpdGVtIGlkIGlmIG5lY2Nlc3NhcnkKICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9uSUR9IHx8ICRQYXJhbXtWZXJzaW9uSURzfSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRTZWxmLT5WZXJzaW9uQ29uZmlnSXRlbUlER2V0KAogICAgICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHRoZSB1bmlxdWUgY29uZmlnIGl0ZW0gaWRzCiAgICAgICAgJENvbmZpZ0l0ZW1JRHN7JENvbmZpZ0l0ZW1JRH0gPSAxOwoKICAgICAgICAjIGRlbGV0ZSB0aGUgeG1sIHZlcnNpb24gZGF0YQogICAgICAgICRTZWxmLT5fWE1MVmVyc2lvbkRlbGV0ZSgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB2ZXJzaW9uCiAgICAgICAgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fdmVyc2lvbiBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRWZXJzaW9uSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIHRyaWdnZXIgVmVyc2lvbkRlbGV0ZSBldmVudCB3aGVuIGRlbGV0aW9uIHdhcyBzdWNjZXNzZnVsCiAgICAgICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgICAgICAgICAgRXZlbnQgPT4gJ1ZlcnNpb25EZWxldGUnLAogICAgICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGVsZXRlIGFmZmVjdGVkIGNhY2hlcwogICAgICAgICAgICBteSAkQ2FjaGVLZXkgPSAnVmVyc2lvbkdldDo6VmVyc2lvbklEOjonIC4gJFZlcnNpb25JRCAuICc6OlhNTERhdGE6Oic7CiAgICAgICAgICAgIGZvciBteSAkWE1MRGF0YSAocXcoMCAxKSkgewogICAgICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkU2VsZi0+e0NhY2hlVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXkgLiAkWE1MRGF0YSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgICAgIEtleSAgPT4gJ1ZlcnNpb25OYW1lR2V0OjpWZXJzaW9uSUQ6OicgLiAkVmVyc2lvbklELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZGVsZXRlICRTZWxmLT57Q2FjaGV9LT57VmVyc2lvbkNvbmZpZ0l0ZW1JREdldH0tPnskVmVyc2lvbklEfTsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJUNvbmZpZ0l0ZW1JRHMgKSB7CgogICAgICAgICMgZGVsZXRlIGFmZmVjdGVkIGNhY2hlcyBmb3IgQ29uZmlnSXRlbUlEIChtb3N0IHJlY2VudCB2ZXJzaW9uIG1pZ2h0IGhhdmUgYmVlbiByZW1vdmVkKQogICAgICAgIG15ICRDYWNoZUtleSA9ICdWZXJzaW9uR2V0OjpDb25maWdJdGVtSUQ6OicgLiAkQ29uZmlnSXRlbUlEIC4gJzo6WE1MRGF0YTo6JzsKICAgICAgICBmb3IgbXkgJFhNTERhdGEgKHF3KDAgMSkpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgICAgIEtleSAgPT4gJENhY2hlS2V5IC4gJFhNTERhdGEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRDYWNoZU9iamVjdC0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiAnVmVyc2lvbk5hbWVHZXQ6OkNvbmZpZ0l0ZW1JRDo6JyAuICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gJFN1Y2Nlc3M7Cn0KCj1oZWFkMiBWZXJzaW9uU2VhcmNoKCkKCnJldHVybiBhIGNvbmZpZyBpdGVtIGxpc3QgYXMgYW4gYXJyYXkgcmVmZXJlbmNlCgogICAgbXkgJENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvblNlYXJjaCgKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RoZSBOYW1lJywgICAgICAjIChvcHRpb25hbCkKICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyA5LCA4LCA3LCA2IF0sICAjIChvcHRpb25hbCkKICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAzMjEsIDEyMyBdLCAgICAjIChvcHRpb25hbCkKICAgICAgICBJbmNpU3RhdGVJRHMgPT4gWyAzMjEsIDEyMyBdLCAgICAjIChvcHRpb25hbCkKCiAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsICAjIChvcHRpb25hbCkgZGVmYXVsdCAwICgwfDEpCgogICAgICAgIE9yZGVyQnkgPT4gWyAnQ29uZmlnSXRlbUlEJywgJ051bWJlcicgXSwgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ0NvbmZpZ0l0ZW1JRCcgXQogICAgICAgICMgKENvbmZpZ0l0ZW1JRCwgTmFtZSwgTnVtYmVyLCBDbGFzc0lELCBEZXBsU3RhdGVJRCwgSW5jaVN0YXRlSUQKICAgICAgICAjIENyZWF0ZVRpbWUsIENyZWF0ZUJ5LCBDaGFuZ2VUaW1lLCBDaGFuZ2VCeSkKCiAgICAgICAgIyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBPcmRlckJ5OgogICAgICAgICMgVGhlIE9yZGVyQnlEaXJlY3Rpb24gY2FuIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBPcmRlckJ5IGF0dHJpYnV0ZS4KICAgICAgICAjIFRoZSBwYWlyaW5nIGlzIG1hZGUgYnkgdGhlIGFycmF5IGluZGljZXMuCgogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAnVXAnLCAnRG93bicgXSwgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICMgZGVmYXVsdDogWyAnVXAnIF0KICAgICAgICAjIChEb3duIHwgVXApCgogICAgICAgIExpbWl0ICAgICAgICAgID0+IDEyMiwgICMgKG9wdGlvbmFsKQogICAgICAgIFVzaW5nV2lsZGNhcmRzID0+IDAsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDEKICAgICk7Cgo9Y3V0CgpzdWIgVmVyc2lvblNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGRlZmF1bHQgdmFsdWVzCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtVc2luZ1dpbGRjYXJkc30gKSB7CiAgICAgICAgJFBhcmFte1VzaW5nV2lsZGNhcmRzfSA9IDE7CiAgICB9CgogICAgIyB2ZXJpZnkgdGhhdCBhbGwgcGFzc2VkIGFycmF5IHBhcmFtZXRlcnMgY29udGFpbiBhbiBhcnJheXJlZgogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50ICgKICAgICAgICBxdygKICAgICAgICBPcmRlckJ5CiAgICAgICAgT3JkZXJCeURpcmVjdGlvbgogICAgICAgICkKICAgICAgICApCiAgICB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gfHw9IFtdOwoKICAgICAgICAgICAgbmV4dCBBUkdVTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IG9yZGVyIGFuZCBvcmRlciBkaXJlY3Rpb24KICAgIGlmICggIUB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewogICAgICAgICRQYXJhbXtPcmRlckJ5fSA9IFsnQ29uZmlnSXRlbUlEJ107CiAgICB9CiAgICBpZiAoICFAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gPSBbJ1VwJ107CiAgICB9CgogICAgIyBkZWZpbmUgb3JkZXIgdGFibGUKICAgIG15ICVPcmRlckJ5VGFibGUgPSAoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICd2ci5jb25maWdpdGVtX2lkJywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ3ZyLm5hbWUnLAogICAgICAgIE51bWJlciAgICAgICA9PiAnY2kuY29uZmlnaXRlbV9udW1iZXInLAogICAgICAgIENsYXNzSUQgICAgICA9PiAnY2kuY2xhc3NfaWQnLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAndnIuZGVwbF9zdGF0ZV9pZCcsCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICd2ci5pbmNpX3N0YXRlX2lkJywKICAgICAgICBDcmVhdGVUaW1lICAgPT4gJ2NpLmNyZWF0ZV90aW1lJywKICAgICAgICBDcmVhdGVCeSAgICAgPT4gJ2NpLmNyZWF0ZV9ieScsCgogICAgICAgICMgdGhlIGNoYW5nZSB0aW1lIG9mIHRoZSBDSSBpcyB0aGUgc2FtZSBhcyB0aGUgY3JlYXRlIHRpbWUgb2YgdGhlIHZlcnNpb24hCiAgICAgICAgQ2hhbmdlVGltZSA9PiAndnIuY3JlYXRlX3RpbWUnLAoKICAgICAgICBDaGFuZ2VCeSA9PiAnY2kuY2hhbmdlX2J5JywKICAgICk7CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICggISRPcmRlckJ5IHx8ICEkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ICkgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdGhlIHZhbHVlIHRvIGNoZWNrIGlmIGl0IGFwcGVhcnMgbW9yZSB0aGFuIG9uY2UKICAgICAgICAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ID0gMTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnlEaXJlY3Rpb24gYXJyYXkgY29udGFpbnMgb25seSAnVXAnIG9yICdEb3duJwogICAgRElSRUNUSU9OOgogICAgZm9yIG15ICREaXJlY3Rpb24gKCBAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgIyBvbmx5ICdVcCcgb3IgJ0Rvd24nIGFsbG93ZWQKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdVcCc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnRG93bic7CgogICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnlEaXJlY3Rpb24gY2FuIG9ubHkgY29udGFpbiAnVXAnIG9yICdEb3duJyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNzZW1ibGUgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgbXkgQFNRTE9yZGVyQnk7CiAgICBteSAkQ291bnQgPSAwOwogICAgbXkgQE9yZGVyQnlTZWxlY3RDb2x1bW5zOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IG9yZGVyIGRpcmVjdGlvbgogICAgICAgIG15ICREaXJlY3Rpb24gPSAnREVTQyc7CgogICAgICAgICMgYWRkIHRoZSBnaXZlbiBvcmRlciBkaXJlY3Rpb24KICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBTUUwKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAgICAgICAgICAgIiRPcmRlckJ5VGFibGV7JE9yZGVyQnl9ICREaXJlY3Rpb24iOwogICAgICAgIHB1c2ggQE9yZGVyQnlTZWxlY3RDb2x1bW5zLCAkT3JkZXJCeVRhYmxleyRPcmRlckJ5fTsKCiAgICB9CiAgICBjb250aW51ZSB7CiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgIyBnZXQgbGlrZSBlc2NhcGUgc3RyaW5nIG5lZWRlZCBmb3Igc29tZSBkYXRhYmFzZXMgKGUuZy4gb3JhY2xlKQogICAgbXkgJExpa2VFc2NhcGVTdHJpbmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+R2V0RGF0YWJhc2VGdW5jdGlvbignTGlrZUVzY2FwZVN0cmluZycpOwoKICAgICMgYWRkIG5hbWUgdG8gc3FsIHdoZXJlIGFycmF5CiAgICBteSBAU1FMV2hlcmU7CiAgICBpZiAoIGRlZmluZWQgJFBhcmFte05hbWV9ICYmICRQYXJhbXtOYW1lfSBuZSAnJyApIHsKCiAgICAgICAgIyBkdXBsaWNhdGUgdGhlIG5hbWUKICAgICAgICBteSAkTmFtZSA9ICRQYXJhbXtOYW1lfTsKCiAgICAgICAgIyBxdW90ZQogICAgICAgICROYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCROYW1lKTsKCiAgICAgICAgaWYgKCAkUGFyYW17VXNpbmdXaWxkY2FyZHN9ICkgewoKICAgICAgICAgICAgIyBwcmVwYXJlIGxpa2Ugc3RyaW5nCiAgICAgICAgICAgICRTZWxmLT5fUHJlcGFyZUxpa2VTdHJpbmcoIFwkTmFtZSApOwoKICAgICAgICAgICAgcHVzaCBAU1FMV2hlcmUsICJMT1dFUih2ci5uYW1lKSBMSUtFIExPV0VSKCckTmFtZScpICRMaWtlRXNjYXBlU3RyaW5nIjsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHB1c2ggQFNRTFdoZXJlLCAiTE9XRVIodnIubmFtZSkgPSBMT1dFUignJE5hbWUnKSI7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGFycmF5IHBhcmFtcwogICAgbXkgJUFycmF5UGFyYW1zID0gKAogICAgICAgIENsYXNzSURzICAgICA9PiAnY2kuaWQgPSB2ci5jb25maWdpdGVtX2lkIEFORCBjaS5jbGFzc19pZCcsCiAgICAgICAgRGVwbFN0YXRlSURzID0+ICd2ci5kZXBsX3N0YXRlX2lkJywKICAgICAgICBJbmNpU3RhdGVJRHMgPT4gJ3ZyLmluY2lfc3RhdGVfaWQnLAogICAgKTsKCiAgICBBUlJBWVBBUkFNOgogICAgZm9yIG15ICRBcnJheVBhcmFtICggc29ydCBrZXlzICVBcnJheVBhcmFtcyApIHsKCiAgICAgICAgbmV4dCBBUlJBWVBBUkFNIGlmICEkUGFyYW17JEFycmF5UGFyYW19OwoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFycmF5UGFyYW19IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJyYXlQYXJhbSBtdXN0IGJlIGFuIGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBuZXh0IEFSUkFZUEFSQU0gaWYgIUB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfTsKCiAgICAgICAgIyBxdW90ZSBhcyBpbnRlZ2VyCiAgICAgICAgZm9yIG15ICRPbmVQYXJhbSAoIEB7ICRQYXJhbXskQXJyYXlQYXJhbX0gfSApIHsKICAgICAgICAgICAgJE9uZVBhcmFtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCAkT25lUGFyYW0sICdJbnRlZ2VyJyApOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgc3RyaW5nCiAgICAgICAgbXkgJEluU3RyaW5nID0gam9pbiBxeywgfSwgQHsgJFBhcmFteyRBcnJheVBhcmFtfSB9OwoKICAgICAgICBwdXNoIEBTUUxXaGVyZSwgIiRBcnJheVBhcmFtc3sgJEFycmF5UGFyYW0gfSBJTiAoJEluU3RyaW5nKSI7CiAgICB9CgogICAgIyBhZGQgcHJldmlvdXMgdmVyc2lvbiBwYXJhbQogICAgaWYgKCAhJFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0gKSB7CiAgICAgICAgcHVzaCBAU1FMV2hlcmUsICdjaS5sYXN0X3ZlcnNpb25faWQgPSB2ci5pZCc7CiAgICB9CgogICAgIyBjcmVhdGUgd2hlcmUgc3RyaW5nCiAgICBteSAkV2hlcmVTdHJpbmcgPSBAU1FMV2hlcmUgPyAnIFdIRVJFICcgLiBqb2luIHF7IEFORCB9LCBAU1FMV2hlcmUgOiAnJzsKCiAgICAjIHNldCBsaW1pdCwgcXVvdGUgYXMgaW50ZWdlcgogICAgaWYgKCAkUGFyYW17TGltaXR9ICkgewogICAgICAgICRQYXJhbXtMaW1pdH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICRQYXJhbXtMaW1pdH0sICdJbnRlZ2VyJyApOwogICAgfQoKICAgICMgYWRkIHRoZSBvcmRlciBieSBjb2x1bW5zIGFsc28gdG8gdGhlIHNlbGVjdGVkIGNvbHVtbnMKICAgIG15ICRPcmRlckJ5U2VsZWN0U3RyaW5nID0gJyc7CiAgICBpZiAoQE9yZGVyQnlTZWxlY3RDb2x1bW5zKSB7CiAgICAgICAgJE9yZGVyQnlTZWxlY3RTdHJpbmcgPSBqb2luICcsICcsIEBPcmRlckJ5U2VsZWN0Q29sdW1uczsKICAgICAgICAkT3JkZXJCeVNlbGVjdFN0cmluZyA9ICcsICcgLiAkT3JkZXJCeVNlbGVjdFN0cmluZzsKICAgIH0KCiAgICAjIGJ1aWxkIFNRTAogICAgbXkgJFNRTCA9ICJTRUxFQ1QgRElTVElOQ1QgdnIuY29uZmlnaXRlbV9pZCAkT3JkZXJCeVNlbGVjdFN0cmluZyAiCiAgICAgICAgLiAnRlJPTSBjb25maWdpdGVtIGNpLCBjb25maWdpdGVtX3ZlcnNpb24gdnIgJwogICAgICAgIC4gJFdoZXJlU3RyaW5nOwoKICAgICMgYWRkIHRoZSBPUkRFUiBCWSBjbGF1c2UKICAgIGlmIChAU1FMT3JkZXJCeSkgewogICAgICAgICRTUUwgLj0gJyBPUkRFUiBCWSAnOwogICAgICAgICRTUUwgLj0gam9pbiAnLCAnLCBAU1FMT3JkZXJCeTsKICAgICAgICAkU1FMIC49ICcgJzsKICAgIH0KCiAgICAjIGFzayB0aGUgZGF0YWJhc2UKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gJFBhcmFte0xpbWl0fSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBAQ29uZmlnSXRlbUxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1MaXN0LCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBcQENvbmZpZ0l0ZW1MaXN0Owp9Cgo9aGVhZDEgSU5URVJOQUwgSU5URVJGQUNFCgo9aGVhZDIgX0dldEV2ZW50cygpCgpUaGlzIG1ldGhvZCBjaGVja3Mgd2hhdCB2YWx1ZXMgd2VyZSBjaGFuZ2VkIGFuZCB3aGF0IGV2ZW50cyBoYXZlIHRvIGJlIHRyaWdnZXJlZC4KSXQgcmV0dXJucyBhIGhhc2ggcmVmZXJlbmNlIHdpdGggYWxsIGV2ZW50IG5hbWVzIGFzIGtleXMgdGhhdCBzaG91bGQgYmUgdHJpZ2dlcmVkLgoKICAgIG15ICRFdmVudHMgPSAkQ0lPYmplY3QtPl9HZXRFdmVudHMoCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBEZXBsU3RhdGVJRCA9PiAxMjMsCiAgICAgICAgfSwKICAgICAgICBDb25maWdJdGVtSW5mbyA9PiB7CiAgICAgICAgICAgIERlcGxTdGF0ZUlEID0+IDIzNCwKICAgICAgICB9LAogICAgKTsKCiAgICBwcmludCBrZXlzICV7JEV2ZW50c307ICMgcHJpbnRzICJEZXBsb3ltZW50U3RhdGVVcGRhdGUiCgo9Y3V0CgpzdWIgX0dldEV2ZW50cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUluZm8gUGFyYW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEV2ZW50cyA9IHt9OwoKICAgICMgY2hlY2sgb2xkIGFuZCBuZXcgbmFtZQogICAgbXkgJE9sZE5hbWUgPSAkUGFyYW17Q29uZmlnSXRlbUluZm99LT57TmFtZX0gfHwgJyc7CiAgICBteSAkTmV3TmFtZSA9ICRQYXJhbXtQYXJhbX0tPntOYW1lfSAgICAgICAgICB8fCAnJzsKCiAgICBpZiAoICRPbGROYW1lIG5lICROZXdOYW1lICkgewogICAgICAgICRFdmVudHMtPntOYW1lVXBkYXRlfSA9ICROZXdOYW1lIC4gJyUlJyAuICRPbGROYW1lOwogICAgfQoKICAgICMgaWYgZGVwbF9zdGF0ZSBpcyB1cGRhdGVkCiAgICBteSAkTGFzdERlcGxTdGF0ZUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JbmZvfS0+e0RlcGxTdGF0ZUlEfSB8fCAnJzsKICAgIG15ICRDdXJEZXBsU3RhdGVJRCAgPSAkUGFyYW17UGFyYW19LT57RGVwbFN0YXRlSUR9ICAgICAgICAgIHx8ICcnOwoKICAgIGlmICggJExhc3REZXBsU3RhdGVJRCBuZSAkQ3VyRGVwbFN0YXRlSUQgKSB7CiAgICAgICAgJEV2ZW50cy0+e0RlcGxveW1lbnRTdGF0ZVVwZGF0ZX0gPSAkQ3VyRGVwbFN0YXRlSUQgLiAnJSUnIC4gJExhc3REZXBsU3RhdGVJRDsKICAgIH0KCiAgICAjIGlmIGluY2lzdGF0ZSBpcyB1cGRhdGVkCiAgICBteSAkTGFzdEluY2lTdGF0ZUlEID0gJFBhcmFte0NvbmZpZ0l0ZW1JbmZvfS0+e0luY2lTdGF0ZUlEfSB8fCAnJzsKICAgIG15ICRDdXJJbmNpU3RhdGVJRCAgPSAkUGFyYW17UGFyYW19LT57SW5jaVN0YXRlSUR9ICAgICAgICAgIHx8ICcnOwoKICAgIGlmICggJExhc3RJbmNpU3RhdGVJRCBuZSAkQ3VySW5jaVN0YXRlSUQgKSB7CiAgICAgICAgJEV2ZW50cy0+e0luY2lkZW50U3RhdGVVcGRhdGV9ID0gJEN1ckluY2lTdGF0ZUlEIC4gJyUlJyAuICRMYXN0SW5jaVN0YXRlSUQ7CiAgICB9CgogICAgIyBjaGVjayBvbGQgYW5kIG5ldyBkZWZpbml0aW9uX2lkCiAgICBteSAkT2xkRGVmaW5pdGlvbklEID0gJFBhcmFte0NvbmZpZ0l0ZW1JbmZvfS0+e0RlZmluaXRpb25JRH0gfHwgJyc7CiAgICBteSAkTmV3RGVmaW5pdGlvbklEID0gJFBhcmFte1BhcmFtfS0+e0RlZmluaXRpb25JRH0gICAgICAgICAgfHwgJyc7CgogICAgaWYgKCAkT2xkRGVmaW5pdGlvbklEIG5lICROZXdEZWZpbml0aW9uSUQgKSB7CiAgICAgICAgJEV2ZW50cy0+e0RlZmluaXRpb25VcGRhdGV9ID0gJE5ld0RlZmluaXRpb25JRDsKICAgIH0KCiAgICAjIHN0b3JlIGlmIGFueXRoaW5nIGxpa2UgTmFtZSwgRGVwbG95bWVudFN0YXRlLCBJbmNpZGVudFN0YXRlLCBEZWZpbml0aW9uIGhhcyBiZWVuIGNoYW5nZWQuCiAgICBteSAkTm90aGluZ0Vsc2VDaGFuZ2VkOwogICAgaWYgKCAhJXskRXZlbnRzfSApIHsKICAgICAgICAkTm90aGluZ0Vsc2VDaGFuZ2VkID0gMTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjaGFuZ2VzIGluIFhNTCBkYXRhCiAgICBpZiAoICRQYXJhbXtQYXJhbX0tPntYTUxEYXRhfSAmJiByZWYgJFBhcmFte1BhcmFtfS0+e1hNTERhdGF9IGVxICdBUlJBWScgKSB7CiAgICAgICAgbXkgJVVwZGF0ZVZhbHVlcyA9ICRTZWxmLT5fRmluZENoYW5nZWRYTUxWYWx1ZXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICA9PiAkUGFyYW17UGFyYW19LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgTmV3WE1MRGF0YSAgICAgICAgID0+ICRQYXJhbXtQYXJhbX0tPntYTUxEYXRhfSwKICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICAgID0+ICROZXdEZWZpbml0aW9uSUQsCiAgICAgICAgICAgIE5vdGhpbmdFbHNlQ2hhbmdlZCA9PiAkTm90aGluZ0Vsc2VDaGFuZ2VkLAogICAgICAgICk7CgogICAgICAgIGlmICglVXBkYXRlVmFsdWVzKSB7CgogICAgICAgICAgICAjIGlmIG9ubHkgYXR0cmlidXRlcyBoYXZlIGNoYW5nZWQgdGhhdCBzaG91bGQgbm90IGNyZWF0ZSBhIG5ldyB2ZXJzaW9uCiAgICAgICAgICAgIGlmICggJFVwZGF0ZVZhbHVlc3tVcGRhdGVMYXN0VmVyc2lvbn0gJiYgJE5vdGhpbmdFbHNlQ2hhbmdlZCApIHsKCiAgICAgICAgICAgICAgICAkRXZlbnRzLT57VXBkYXRlTGFzdFZlcnNpb259ID0gMTsKCiAgICAgICAgICAgICAgICAjIENsb25lIHRoZSBkYXRhIHN0cnVjdHVyZSwgc28gd2UgY2FuIGRlbGV0ZSB0aGUgb3JpZ2lhbC4KICAgICAgICAgICAgICAgICRFdmVudHMtPntVcGRhdGVYTUxEYXRhfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdG9yYWJsZScpLT5DbG9uZSgKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRVcGRhdGVWYWx1ZXN7VXBkYXRlWE1MRGF0YX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBkZWxldGUgdGhlIGZsYWcgYW5kIGRhdGEgYWdhaW4sIHRvIG5vdCBjYXVzZSBhbnkgcHJvYmxlbXMgbGF0ZXIKICAgICAgICAgICAgICAgICMgICB3aGVuIHByb2Nlc3NpbmcgdGhlIHZhbHVlcy4KICAgICAgICAgICAgICAgIGRlbGV0ZSAkVXBkYXRlVmFsdWVze1VwZGF0ZUxhc3RWZXJzaW9ufTsKICAgICAgICAgICAgICAgIGRlbGV0ZSAkVXBkYXRlVmFsdWVze1VwZGF0ZVhNTERhdGF9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRXZlbnRzLT57VmFsdWVVcGRhdGV9ID0gXCVVcGRhdGVWYWx1ZXM7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkRXZlbnRzOwp9Cgo9aGVhZDIgX0V2ZW50SGFuZGxlckZvckNoYW5nZWRYTUxWYWx1ZXMoKQoKVGhpcyBtZXRob2QgY2FsbHMgdGhlIGV2ZW50IGhhbmRsZXIgZm9yIGVhY2ggY2hhbmdlZCB2YWx1ZSBvZiB0aGUgY29uZmlnIGl0ZW0uClRoZSBjaGFuZ2VkIHZhbHVlcyBhcmUgcGFzc2VkIGluIEM8VXBkYXRlVmFsdWVzPiBhcyBhbiBoYXNocmVmIHdpdGggdGFnLWtleXMgYXMga2V5cy4KUGxlYXNlIG5vdGUgdGhhdCB0aGlzIG9ubHkgaGFuZGxlcyB2YWx1ZXMgaW5zaWRlIHRoZSBYTUwgc3RydWN0dXJlLCBub3QgZ2VuZXJhbAphdHRyaWJ1dGVzIGxpa2UgQzxDdXJJbmNpU3RhdGU+LgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9FdmVudEhhbmRsZXJGb3JDaGFuZ2VkWE1MVmFsdWVzKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgVXBkYXRlVmFsdWVzID0+CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIlsxXXsnVmVyc2lvbid9WzFdeydWZW5kb3InfVsxXSIgPT4gJ09sZFZlbmRvciUlTmV3VmVuZG9yJywKICAgICAgICAgICAgICAgIlsxXXsnVmVyc2lvbid9WzFdeydUeXBlJ31bMV0iICAgPT4gJzEyNyUlMTI4JywKICAgICAgICAgICAgfQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBfRXZlbnRIYW5kbGVyRm9yQ2hhbmdlZFhNTFZhbHVlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVXBkYXRlVmFsdWVzIENvbmZpZ0l0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyB0cmlnZ2VyIFZhbHVlVXBkYXRlIGV2ZW50IGZvciBlYWNoIGNoYW5nZWQgdmFsdWUKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRQYXJhbXtVcGRhdGVWYWx1ZXN9IH0gKSB7CiAgICAgICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICAgICAgRXZlbnQgPT4gJ1ZhbHVlVXBkYXRlJywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRLZXkgLiAnJSUnIC4gJFBhcmFte1VwZGF0ZVZhbHVlc30tPnskS2V5fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfRmluZENoYW5nZWRYTUxWYWx1ZXMoKQoKY29tcGFyZXMgdGhlIG5ldyB4bWwgZGF0YSBDPE5ld1hNTERhdGE+IHdpdGggdGhlIHhtbCBkYXRhIG9mIHRoZSBsYXRlc3QgdmVyc2lvbgpvZiB0aGUgY29uZmlnIGl0ZW0gQzxDb25maWdJdGVtSUQ+LiBOb3RlIHRoYXQgdGhlIG5ldyBYTUwgZGF0YSBkb2VzIG5vdCBjb250YWluIHRhZyBrZXlzLgpBbGwgdmFsdWVzIG9mIHRoZSB0d28gZGF0YSBzZXRzIGFyZSBjb21wYXJlZC4KV2hlbiBhIGNoYW5nZWQgdmFsdWUgaXMgZW5jb3VudGVyZWQsIHRoZSB0YWcga2V5IGFuZCB0aGUgb2xkIGFuZCB0aGUgbmV3IHZhbHVlIGFyZSBzdG9yZWQgaW4gYSBoYXNoLgpUaGUgaGFzaCB3aXRoIHRoZSB1cGRhdGVkIHZhbHVlcyBpcyByZXR1cm5lZC4KCiAgICBteSAlVXBkYXRlVmFsdWVzID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9GaW5kQ2hhbmdlZFhNTFZhbHVlcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIE5ld1hNTERhdGEgICA9PgogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnVmVyc2lvbicgPT4KICAgICAgICAgICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ093bmVyJyA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgPT4gJycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgKTsKClRoZSByZXR1cm5lZCBoYXNoIGxvb2tzIGxpa2U6CgogICAgJVVwZGF0ZVZhbHVlcyA9ICgKICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnVmVuZG9yJ31bMV0iID0+ICdPbGRWZW5kb3IlJU5ld1ZlbmRvcicsCiAgICAgICAiWzFdeydWZXJzaW9uJ31bMV17J1R5cGUnfVsxXSIgICA9PiAnMTI3JSUxMjgnLAogICAgKTsKClRoZSBrZXkgaXMgYSB0YWcga2V5LiBUaGUgdmFsdWVzIGNvbnRhaW5zIHRoZSBvbGQgYW5kIHRoZSBuZXcgWE1MIHZhbHVlLgoKPWN1dAoKc3ViIF9GaW5kQ2hhbmdlZFhNTFZhbHVlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgZm9yIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCBOZXdYTUxEYXRhIERlZmluaXRpb25JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBhIGxpc3Qgd2l0aCBhbGwgdmVyc2lvbm51bWJlcnMgdGhhdCBleGlzdCBmb3IgdGhlCiAgICAjIGdpdmVuIGNvbmZpZyBpdGVtCiAgICBteSAkVmVyc2lvbkxpc3QgPSAkU2VsZi0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKCiAgICAjIHNraXAgdGhlIGNoZWNrIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHZlcnNpb24gb2YgdGhlIGl0ZW0KICAgIHJldHVybiBpZiAhQHskVmVyc2lvbkxpc3R9OwoKICAgICMgZ2V0IG9sZCB2ZXJzaW9uCiAgICBteSAkT2xkVmVyc2lvbiA9ICRTZWxmLT5WZXJzaW9uR2V0KAogICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbkxpc3QtPlstMV0sCiAgICApOwoKICAgICMgVGhlIHNob3J0IG5hbWVzIGZvciBuZXcgYW5kIG9sZCB4bWwgZGF0YSBhcmUgdXNlZCBpbiB0aGUgJ2V2YWwnIGJlbG93LAogICAgIyAgICBhbmQgd2UgZG8gbm90IHdhbnQgdG8gbW9kaWZ5IHRoZSBvcmlnaW5hbCBwYXJhbWV0ZXIgZGF0YSBOZXdYTUxEYXRhCiAgICAjICAgIGR1ZSB0byBzaWRlIGVmZmVjdHMgb2YgUGVybHMgYXV0b3ZpdmlmaWNhdGlvbiBmZWF0dXJlIHVzZWQgbGF0ZXIgaGVyZQogICAgIyAgICBpbiBhbm90aGVyIGV2YWwgc3RhdGVtZW50LgogICAgbXkgJE5ld1hNTERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkUGFyYW17TmV3WE1MRGF0YX0gKTsKICAgIG15ICRPbGRYTUxEYXRhID0gJE9sZFZlcnNpb24tPntYTUxEYXRhfTsKCiAgICAjIGdldCB4bWwgZGVmaW5pdGlvbgogICAgbXkgJERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgICMgZ2V0IGFsbCB0YWdrZXlzIGluIG5ldyBhbmQgb2xkIFhNTCBkYXRhCiAgICAjIHVzZSBhIHNpZGUgZWZmZWN0IG9mIFhNTEhhc2gyRCgpLCB3aGljaCBhZGRzIHRoZSB0YWcga2V5cyB0byB0aGUgcGFzc2VkIGluIGRhdGEgc3RydWN0dXJlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WE1MJyktPlhNTEhhc2gyRCggWE1MSGFzaCA9PiAkTmV3WE1MRGF0YSApOwogICAgbXkgQFRhZ0tleXMgPSAkU2VsZi0+X0dyYWJUYWdLZXlzKCBEYXRhID0+IFsgJE9sZFhNTERhdGEsICROZXdYTUxEYXRhIF0gKTsKCiAgICAjIGdldCBhbiB1bmlxdWUgbGlzdCBvZiBhbGwgdGFnIGtleXMKICAgIG15ICVVbmlxdWVUYWdLZXlzID0gbWFwIHsgJF8gPT4gMSB9IEBUYWdLZXlzOwoKICAgIG15ICVVcGRhdGVWYWx1ZXM7CiAgICBteSAlU3VwcHJlc3NWZXJzaW9uQWRkOwoKICAgIGZvciBteSAkVGFnS2V5ICggc29ydCBrZXlzICVVbmlxdWVUYWdLZXlzICkgewogICAgICAgIG15ICROZXdDb250ZW50ID0gZXZhbCAnJE5ld1hNTERhdGEtPicgLiAkVGFnS2V5IC4gJy0+e0NvbnRlbnR9JyB8fCAnJzsgICAgIyMgbm8gY3JpdGljCiAgICAgICAgbXkgJE9sZENvbnRlbnQgPSBldmFsICckT2xkWE1MRGF0YS0+JyAuICRUYWdLZXkgLiAnLT57Q29udGVudH0nIHx8ICcnOyAgICAjIyBubyBjcml0aWMKCiAgICAgICAgaWYgKCAkTmV3Q29udGVudCBuZSAkT2xkQ29udGVudCApIHsKCiAgICAgICAgICAgICMgZXh0cmFjdCBhdHRyaWJ1dGUgcGF0aCBuYW1lCiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVQYXRoID0gJFRhZ0tleTsKICAgICAgICAgICAgJEF0dHJpYnV0ZVBhdGggPX4gc3sgXEEgXFsuKj9cXSBceydWZXJzaW9uJ1x9IFxbLio/XF0gXHsnIH17fXhtczsKICAgICAgICAgICAgJEF0dHJpYnV0ZVBhdGggPX4gc3sgJ1x9IFxbLio/XF0gXHsnIH17Ojp9eG1zZzsKICAgICAgICAgICAgJEF0dHJpYnV0ZVBhdGggPX4gc3sgJ1x9IFxbLio/XF0gXHogfXt9eG1zOwoKICAgICAgICAgICAgIyBnZXQgZGVmaW5pdGlvbiBpbmZvIGFib3V0IGF0dHJpYnV0ZQogICAgICAgICAgICBteSAkQXR0cmlidXRlSW5mbyA9ICRTZWxmLT5EZWZpbml0aW9uQXR0cmlidXRlSW5mbygKICAgICAgICAgICAgICAgIERlZmluaXRpb24gICAgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVBhdGggPT4gJEF0dHJpYnV0ZVBhdGgsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHRoaXMgYXR0cmlidXRlIHNob3VsZCBiZSBzdXBwcmVzc2VkIGFuZCBub3RoaW5nIGVsc2Ugb2YKICAgICAgICAgICAgIyAgICBOYW1lLCBEZXBsb3ltZW50U3RhdGUsIEluY2lkZW50U3RhdGUsIERlZmluaXRpb24gaGFzIGJlZW4gY2hhbmdlZC4KICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlSW5mby0+e1N1cHByZXNzVmVyc2lvbkFkZH0gJiYgJFBhcmFte05vdGhpbmdFbHNlQ2hhbmdlZH0gKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkQXR0cmlidXRlSW5mby0+e1N1cHByZXNzVmVyc2lvbkFkZH0gZXEgJ1VwZGF0ZUxhc3RWZXJzaW9uJyApIHsKICAgICAgICAgICAgICAgICAgICAkU3VwcHJlc3NWZXJzaW9uQWRke1VwZGF0ZUxhc3RWZXJzaW9ufS0+eyRUYWdLZXl9ID0gam9pbiAnJSUnLCAkT2xkQ29udGVudCwgJE5ld0NvbnRlbnQ7CgogICAgICAgICAgICAgICAgICAgICMgQnVpbGQgYSBuZXcgZGF0YSBzdHJ1Y3RpcmUgb25seSB3aXRoIHRoZSB1cGRhdGUgdmFsdWVzLgogICAgICAgICAgICAgICAgICAgIGV2YWwgJyRTdXBwcmVzc1ZlcnNpb25BZGR7VXBkYXRlWE1MRGF0YX0tPicgLiAkVGFnS2V5IC4gJy0+e0NvbnRlbnR9ID0gJE5ld0NvbnRlbnQnOyAgICAjIyBubyBjcml0aWMKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZUluZm8tPntTdXBwcmVzc1ZlcnNpb25BZGR9IGVxICdJZ25vcmUnICkgewogICAgICAgICAgICAgICAgICAgICRTdXBwcmVzc1ZlcnNpb25BZGR7SWdub3JlfS0+eyRUYWdLZXl9ID0gam9pbiAnJSUnLCAkT2xkQ29udGVudCwgJE5ld0NvbnRlbnQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hhbmdlIHdhcyBmb3VuZAogICAgICAgICAgICAkVXBkYXRlVmFsdWVzeyRUYWdLZXl9ID0gam9pbiAnJSUnLCAkT2xkQ29udGVudCwgJE5ld0NvbnRlbnQ7CiAgICAgICAgfQogICAgfQoKICAgICMgY291bnQgaG93IG1hbnkgb2YgZWFjaCBTdXBwcmVzc1ZlcnNpb25BZGQgdHlwZXMgd2UgaGF2ZS4KICAgIG15ICRVcGRhdGVWYWx1ZXNDb3VudCAgICAgID0gc2NhbGFyIGtleXMgJVVwZGF0ZVZhbHVlczsKICAgIG15ICRJZ25vcmVDb3VudCAgICAgICAgICAgID0gc2NhbGFyIGtleXMgJXsgJFN1cHByZXNzVmVyc2lvbkFkZHtJZ25vcmV9IH07CiAgICBteSAkVXBkYXRlTGFzdFZlcnNpb25Db3VudCA9IHNjYWxhciBrZXlzICV7ICRTdXBwcmVzc1ZlcnNpb25BZGR7VXBkYXRlTGFzdFZlcnNpb259IH07CgogICAgaWYgKCVVcGRhdGVWYWx1ZXMpIHsKCiAgICAgICAgIyBVcGRhdGUgdmFsdWVzIGNvbnRhaW5zIG9ubHkgdmFsdWVzIHRoYXQgc2hvdWxkIGJlIGlnbm9yZWQuCiAgICAgICAgaWYgKCAkVXBkYXRlVmFsdWVzQ291bnQgPT0gJElnbm9yZUNvdW50ICkgewogICAgICAgICAgICAlVXBkYXRlVmFsdWVzID0gKCk7CiAgICAgICAgfQoKICAgICAgICAjIFVwZGF0ZSB2YWx1ZXMgY29udGFpbnMgb25seSB2YWx1ZXMgdGhhdCBzaG91bGQgdXBkYXRlIHRoZSBsYXN0IHZlcnNpb24gb3Igc2hvdWxkIGJlIGlnbm9yZWQsCiAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAoICRVcGRhdGVWYWx1ZXNDb3VudCA9PSAkVXBkYXRlTGFzdFZlcnNpb25Db3VudCApCiAgICAgICAgICAgIHx8ICggJFVwZGF0ZVZhbHVlc0NvdW50ID09ICggJFVwZGF0ZUxhc3RWZXJzaW9uQ291bnQgKyAkSWdub3JlQ291bnQgKSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICVVcGRhdGVWYWx1ZXMgICAgICAgICAgICAgICAgICAgID0gJXsgJFN1cHByZXNzVmVyc2lvbkFkZHtVcGRhdGVMYXN0VmVyc2lvbn0gfTsKICAgICAgICAgICAgJFVwZGF0ZVZhbHVlc3tVcGRhdGVYTUxEYXRhfSAgICAgPSAkU3VwcHJlc3NWZXJzaW9uQWRke1VwZGF0ZVhNTERhdGF9OwogICAgICAgICAgICAkVXBkYXRlVmFsdWVze1VwZGF0ZUxhc3RWZXJzaW9ufSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAlVXBkYXRlVmFsdWVzOwp9Cgo9aGVhZDIgX0dyYWJUYWdLZXlzKCkKCnJlY3Vyc2l2ZWx5IHNjYW5zIGEgcGVybCBkYXRhIHN0cnVjdHVyZSBmb3IgdGhlIGhhc2gga2V5ICdUYWdLZXknIGFuZCByZXR1cm5zIGEKbGlzdCBvZiBhbGwgdGhlIHZhbHVlcyBmb3IgdGhhdCBrZXkuCgogICAgbXkgQFRhZ0tleXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+X0dyYWJUYWdLZXlzKAogICAgICAgIERhdGEgPT4gJFhNTEhhc2hSZWZlcmVueiwKICAgICk7Cgo9Y3V0CgpzdWIgX0dyYWJUYWdLZXlzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICgpIGlmICEkUGFyYW17RGF0YX07CgogICAgbXkgQFRhZ0tleXM7CiAgICBpZiAoIHJlZiAkUGFyYW17RGF0YX0gZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgRUxFTToKICAgICAgICBmb3IgbXkgJEVsZW0gKCBAeyAkUGFyYW17RGF0YX0gfSApIHsKCiAgICAgICAgICAgIG5leHQgRUxFTSBpZiAhJEVsZW07CiAgICAgICAgICAgIG5leHQgRUxFTSBpZiAhcmVmICRFbGVtOwoKICAgICAgICAgICAgcHVzaCBAVGFnS2V5cywgJFNlbGYtPl9HcmFiVGFnS2V5cyggRGF0YSA9PiAkRWxlbSApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggcmVmICRQYXJhbXtEYXRhfSBlcSAnSEFTSCcgKSB7CgogICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRQYXJhbXtEYXRhfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAkS2V5IGVxICdUYWdLZXknICkgewogICAgICAgICAgICAgICAgcHVzaCBAVGFnS2V5cywgJFBhcmFte0RhdGF9LT57JEtleX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCByZWYgJFBhcmFte0RhdGF9LT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBUYWdLZXlzLCAkU2VsZi0+X0dyYWJUYWdLZXlzKCBEYXRhID0+ICRQYXJhbXtEYXRhfS0+eyRLZXl9ICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIEBUYWdLZXlzOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTCAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCB4bWwgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBYTUxWYWx1ZUxvb2t1cCgpCgpsb29rdXAgYSB4bWwgdmFsdWUKCiAgICBteSAkVmFsdWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+WE1MVmFsdWVMb29rdXAoCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICAgICAgVmFsdWUgPT4gNSwKICAgICk7Cgo9Y3V0CgpzdWIgWE1MVmFsdWVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0l0ZW19IHx8ICggJFBhcmFte0l0ZW19ICYmIHJlZiAkUGFyYW17SXRlbX0gbmUgJ0hBU0gnICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6JyAuICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9CiAgICApOwoKICAgIHJldHVybiAnJyBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBsb29rdXAgaXRlbSB2YWx1ZQogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKCVQYXJhbSk7CgogICAgcmV0dXJuICRWYWx1ZTsKfQoKPWhlYWQyIFhNTFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0dHJpYnV0ZSBhcnJheSBmb3IgdGhlIHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRWYWx1ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5YTUxTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBYTUxTdGF0c0F0dHJpYnV0ZUNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6JyAuICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9CiAgICApOwoKICAgIHJldHVybiBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBjcmVhdGUgc3RhdHMgYXR0cmlidXRlIGFycmF5CiAgICBteSAkQXR0cmlidXRlID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRBdHRyaWJ1dGU7Cn0KCj1oZWFkMiBYTUxFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB4bWwgc2VhcmNoIGRhdGEgZm9yIGV4cG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5YTUxFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgSXRlbSAgPT4gJEl0ZW1SZWYsCiAgICAgICAgVmFsdWUgPT4gNSwKICAgICk7Cgo9Y3V0CgpzdWIgWE1MRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtJdGVtfSB8fCAoICRQYXJhbXtJdGVtfSAmJiByZWYgJFBhcmFte0l0ZW19IG5lICdIQVNIJyApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBJdGVtIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OicgLiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfQogICAgKTsKCiAgICByZXR1cm4gaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgcHJlcGFyZSB2YWx1ZQogICAgbXkgJEFycmF5ID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSglUGFyYW0pOwoKICAgIHJldHVybiAkQXJyYXk7Cn0KCj1oZWFkMiBYTUxFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB4bWwgZGF0YSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPlhNTEV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBJdGVtICA9PiAkSXRlbVJlZiwKICAgICAgICBWYWx1ZSA9PiA1LAogICAgKTsKCj1jdXQKCnN1YiBYTUxFeHBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0l0ZW19IHx8ICggJFBhcmFte0l0ZW19ICYmIHJlZiAkUGFyYW17SXRlbX0gbmUgJ0hBU0gnICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6JyAuICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9CiAgICApOwoKICAgIHJldHVybiBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBwcmVwYXJlIHZhbHVlCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVwYXJlKCVQYXJhbSk7CgogICAgcmV0dXJuICRWYWx1ZTsKfQoKPWhlYWQyIFhNTEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHhtbCBzZWFyY2ggZGF0YSBmb3IgaW1wb3J0CgogICAgbXkgJEFycmF5UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlhNTEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBJdGVtICA9PiAkSXRlbVJlZiwKICAgICAgICBWYWx1ZSA9PiA1LAogICAgKTsKCj1jdXQKCnN1YiBYTUxJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0l0ZW19IHx8ICggJFBhcmFte0l0ZW19ICYmIHJlZiAkUGFyYW17SXRlbX0gbmUgJ0hBU0gnICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6JyAuICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9CiAgICApOwoKICAgIHJldHVybiBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBwcmVwYXJlIHZhbHVlCiAgICBteSAkQXJyYXkgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCVQYXJhbSk7CgogICAgcmV0dXJuICRBcnJheTsKfQoKPWhlYWQyIFhNTEltcG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHhtbCBkYXRhIGZvciBpbXBvcnQKCiAgICBteSAkVmFsdWUgPSAkQ29uZmlnSXRlbU9iamVjdC0+WE1MSW1wb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgICAgIFZhbHVlID0+IDUsCiAgICApOwoKPWN1dAoKc3ViIFhNTEltcG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gfHwgcmVmICRQYXJhbXtJdGVtfSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6JyAuICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9CiAgICApOwoKICAgIHJldHVybiBpZiAhJEJhY2tlbmRPYmplY3Q7CgogICAgIyBwcmVwYXJlIHZhbHVlCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0VmFsdWVQcmVwYXJlKCVQYXJhbSk7CgogICAgcmV0dXJuICRWYWx1ZTsKfQoKPWhlYWQyIF9YTUxWZXJzaW9uU2VhcmNoKCkKClNlYXJjaCB4bWwgZGF0YSBvZiBhIHZlcnNpb24gYW5kIHJldHVybiBhIGhhc2ggcmVmZXJlbmNlLgpUaGUgQzxXaGF0PiBwYXJhbWV0ZXIgaXMgYSBiaXQgbGlrZSB0aGUgcGFyYW1ldGVyIHVzZWQgaW4gTDxTUUw6OkFic3RyYWN0Pi4KVGhlIHJldHVybmVkIGhhc2ggcmVmZXJlbmNlIGhhcyBDPFZlcnNpb25JRD5zIGFzIGtleXMgYW5kIEM8MT4gYXMgdmFsdWUuCgogICAgbXkgJFZlcnNpb25JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+X1hNTFZlcnNpb25TZWFyY2goCiAgICAgICAgQ2xhc3NJRHMgPT4gWzEsIDIsIDNdLCAgIyAob3B0aW9uYWwpCgogICAgICAgIFdoYXQgPT4gWwogICAgICAgICAgICAjIGVhY2ggYXJyYXkgZWxlbWVudCBpcyBhIGFuZCBjb25kaXRpb24KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyBvciBjb25kaXRpb24gaW4gaGFzaAogICAgICAgICAgICAgICAgIlslXXsnVmVyc2lvbid9WyVdeydDb25maWdJdGVtQXR0ckInfVslXXsnQ29udGVudCd9IiA9PiAnJWNvbnRlbnRBJScsCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQyd9WyVdeydDb250ZW50J30iID0+ICclY29udGVudEElJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIlslXXsnVmVyc2lvbid9WyVdeydDb25maWdJdGVtQXR0ckInfVslXXsnQ29udGVudCd9IiA9PiAnJWNvbnRlbnRCJScsCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQyd9WyVdeydDb250ZW50J30iID0+ICclY29udGVudEIlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyB1c2UgYXJyYXkgcmVmZXJlbmNlIGlmIGRpZmZlcmVudCBjb250ZW50IHdpdGggc2FtZSBrZXkgd2FzIHNlYXJjaGVkCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQid9WyVdeydDb250ZW50J30iID0+IFsKICAgICAgICAgICAgICAgICAgICAnJWNvbnRlbnRDJScsCiAgICAgICAgICAgICAgICAgICAgJyVjb250ZW50RCUnLAogICAgICAgICAgICAgICAgICAgICclY29udGVudEUlJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQyd9WyVdeydDb250ZW50J30iID0+IFsKICAgICAgICAgICAgICAgICAgICAnJWNvbnRlbnRDJScsCiAgICAgICAgICAgICAgICAgICAgJyVjb250ZW50RCUnLAogICAgICAgICAgICAgICAgICAgICclY29udGVudEUlJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICMgdXNlIGhhc2ggcmVmZXJlbmNlIGZvciBzcGVjaWZ5aW5nIGNvbXBhcmlzb24gb3BzLCBhcGFydCBmcm9tIHRoZSBkZWZhdWx0ICdMSUtFJwogICAgICAgICAgICAgICAgIlslXXsnVmVyc2lvbid9WyVdeydDb25maWdJdGVtQXR0ckInfVslXXsnQ29udGVudCd9IiA9PiB7ICc8JyAgICAgICAgPT4gJ2FscGhhYmV0aWNhbGx5X2xvd2VyX29yX2VxdWFsJyB9LAogICAgICAgICAgICAgICAgIlslXXsnVmVyc2lvbid9WyVdeydDb25maWdJdGVtQXR0ckInfVslXXsnQ29udGVudCd9IiA9PiB7ICc8PScgICAgICAgPT4gJ2FscGhhYmV0aWNhbGx5X2xlc3Nfb3JfZXF1YWwnIH0sCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQid9WyVdeydDb250ZW50J30iID0+IHsgJz0nICAgICAgICA9PiAnZXhhY3RfbWF0Y2gnIH0sCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQid9WyVdeydDb250ZW50J30iID0+IHsgJz49JyAgICAgICA9PiAnYWxwaGFiZXRpY2FsbHlfbGFyZ2VyX29yX2VxdWFsJyB9LAogICAgICAgICAgICAgICAgIlslXXsnVmVyc2lvbid9WyVdeydDb25maWdJdGVtQXR0ckInfVslXXsnQ29udGVudCd9IiA9PiB7ICc+JyAgICAgICAgPT4gJ2FscGhhYmV0aWNhbGx5X2xhcmdlcicgfSwKICAgICAgICAgICAgICAgICJbJV17J1ZlcnNpb24nfVslXXsnQ29uZmlnSXRlbUF0dHJCJ31bJV17J0NvbnRlbnQnfSIgPT4geyAnLWJldHdlZW4nID0+IFsgJ2xvd2VyX2JvdW5kJywgJ3VwcGVyX2JvdW5kJyBdIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKCiAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsICAjIChvcHRpb25hbCkgZGVmYXVsdCAwICgwfDEpCiAgICApOwoKPWN1dAoKc3ViIF9YTUxWZXJzaW9uU2VhcmNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtXaGF0fSB8fCByZWYgJFBhcmFte1doYXR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFdoYXQgYXMgYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAhJFBhcmFte0NsYXNzSURzfSB8fCByZWYgJFBhcmFte0NsYXNzSURzfSBuZSAnQVJSQVknIHx8ICFAeyAkUGFyYW17Q2xhc3NJRHN9IH0gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgIEB7ICRQYXJhbXtDbGFzc0lEc30gfSA9IGtleXMgJXskQ2xhc3NMaXN0fTsKICAgIH0KCiAgICAjIHNlYXJjaCBpbiBhY3RpdmUgdmVyc2lvbnMKICAgIG15ICVWZXJzaW9uSURzOwogICAgZm9yIG15ICRDbGFzc0lEICggQHsgJFBhcmFte0NsYXNzSURzfSB9ICkgewoKICAgICAgICAjIHN0YXJ0IHhtbCBzZWFyY2gKICAgICAgICBteSBAS2V5cyA9ICRTZWxmLT5fWE1MSGFzaFNlYXJjaCgKICAgICAgICAgICAgVHlwZSA9PiAiSVRTTTo6Q29uZmlnSXRlbTo6JENsYXNzSUQiLAogICAgICAgICAgICBXaGF0ID0+ICRQYXJhbXtXaGF0fSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCBhbGwgaWRzIHRvIHZlcnNpb24gaWQgaGFzaAogICAgICAgIGZvciBteSAkVmVyc2lvbklEIChAS2V5cykgewogICAgICAgICAgICAkVmVyc2lvbklEc3skVmVyc2lvbklEfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJVZlcnNpb25JRHMgaWYgISRQYXJhbXtQcmV2aW91c1ZlcnNpb25TZWFyY2h9OwoKICAgICMgc2VhcmNoIGFsc28gaW4gb2xkIHZlcnNpb25zIChhcmNoaXYpCiAgICBmb3IgbXkgJENsYXNzSUQgKCBAeyAkUGFyYW17Q2xhc3NJRHN9IH0gKSB7CgogICAgICAgICMgc3RhcnQgeG1sIHNlYXJjaAogICAgICAgIG15IEBLZXlzID0gJFNlbGYtPl9YTUxIYXNoU2VhcmNoKAogICAgICAgICAgICBUeXBlID0+ICJJVFNNOjpDb25maWdJdGVtOjpBcmNoaXY6OiRDbGFzc0lEIiwKICAgICAgICAgICAgV2hhdCA9PiAkUGFyYW17V2hhdH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgYWxsIGlkcyB0byB2ZXJzaW9uIGlkIGhhc2gKICAgICAgICBmb3IgbXkgJFZlcnNpb25JRCAoQEtleXMpIHsKICAgICAgICAgICAgJFZlcnNpb25JRHN7JFZlcnNpb25JRH0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gXCVWZXJzaW9uSURzOwp9Cgo9aGVhZDIgX1hNTFZlcnNpb25HZXQoKQoKZ2V0IHRoZSB4bWwgZGF0YSBvZiBhIHZlcnNpb24KCiAgICBteSAkQXJyYXlSZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+X1hNTFZlcnNpb25HZXQoCiAgICAgICAgQ2xhc3NJRCAgID0+IDEsCiAgICAgICAgVmVyc2lvbklEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgX1hNTFZlcnNpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoQ2xhc3NJRCBWZXJzaW9uSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZlcnNpb24KICAgIG15IEBYTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WE1MJyktPlhNTEhhc2hHZXQoCiAgICAgICAgVHlwZSA9PiAiSVRTTTo6Q29uZmlnSXRlbTo6JFBhcmFte0NsYXNzSUR9IiwKICAgICAgICBLZXkgID0+ICRQYXJhbXtWZXJzaW9uSUR9LAogICAgKTsKCiAgICByZXR1cm4gXEBYTUwgaWYgQFhNTDsKCiAgICAjIGdldCB2ZXJzaW9uIGZyb20gYXJjaGl2CiAgICBAWE1MID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpLT5YTUxIYXNoR2V0KAogICAgICAgIFR5cGUgPT4gIklUU006OkNvbmZpZ0l0ZW06OkFyY2hpdjo6JFBhcmFte0NsYXNzSUR9IiwKICAgICAgICBLZXkgID0+ICRQYXJhbXtWZXJzaW9uSUR9LAogICAgKTsKCiAgICByZXR1cm4gXEBYTUw7Cn0KCj1oZWFkMiBfWE1MVmVyc2lvbkFkZCgpCgphZGQgdGhlIHhtbCBkYXRhIG9mIGEgbmV3IHZlcnNpb24gYW5kIG1vdmUgb2xkIHhtbCB2ZXJzaW9ucyBpbiBhcmNoaXZlIGNsYXNzCgogICAgbXkgJFhNTElEID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9YTUxWZXJzaW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgICA9PiAxLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAyMjIsCiAgICAgICAgVmVyc2lvbklEICAgID0+IDEyMywKICAgICAgICBYTUxEYXRhICAgICAgPT4gJEFycmF5UmVmLAogICAgKTsKCj1jdXQKCnN1YiBfWE1MVmVyc2lvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIENvbmZpZ0l0ZW1JRCBWZXJzaW9uSUQgWE1MRGF0YSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgeG1sIHZlcnNpb24KICAgIG15ICRYTUxJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpYTUwnKS0+WE1MSGFzaEFkZCgKICAgICAgICBUeXBlICAgID0+ICJJVFNNOjpDb25maWdJdGVtOjokUGFyYW17Q2xhc3NJRH0iLAogICAgICAgIEtleSAgICAgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICAgICAgWE1MSGFzaCA9PiAkUGFyYW17WE1MRGF0YX0sCiAgICApOwoKICAgICMgZ2V0IGxhc3QgdmVyc2lvbnMKICAgIG15ICRPbGRWZXJzaW9uSURzID0gJFNlbGYtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgIyBGaW5kIFZlcnNpb24gdG8gbW92ZQogICAgbXkgJE1vdmVWZXJzaW9uOwogICAgT0xEVkVSU0lPTklEOgogICAgZm9yIG15ICRPbGRWZXJzaW9uSUQgKCBAeyRPbGRWZXJzaW9uSURzfSApIHsKICAgICAgICBsYXN0IE9MRFZFUlNJT05JRCBpZiAkT2xkVmVyc2lvbklEIGVxICRQYXJhbXtWZXJzaW9uSUR9OwoKICAgICAgICAkTW92ZVZlcnNpb24gPSAkT2xkVmVyc2lvbklEOwogICAgfQoKICAgIHJldHVybiAkWE1MSUQgaWYgISRNb3ZlVmVyc2lvbjsKCiAgICAjIG1vdmUgb2xkIHZlcnNpb24gaW4gYXJjaGl2CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WE1MJyktPlhNTEhhc2hNb3ZlKAogICAgICAgIE9sZFR5cGUgPT4gIklUU006OkNvbmZpZ0l0ZW06OiRQYXJhbXtDbGFzc0lEfSIsCiAgICAgICAgT2xkS2V5ICA9PiAkTW92ZVZlcnNpb24sCiAgICAgICAgTmV3VHlwZSA9PiAiSVRTTTo6Q29uZmlnSXRlbTo6QXJjaGl2OjokUGFyYW17Q2xhc3NJRH0iLAogICAgICAgIE5ld0tleSAgPT4gJE1vdmVWZXJzaW9uLAogICAgKTsKCiAgICByZXR1cm4gJFhNTElEOwp9Cgo9aGVhZDIgX1hNTFZlcnNpb25EZWxldGUoKQoKZGVsZXRlIHRoZSB4bWwgZGF0YSBvZiBhIHZlcnNpb24KCiAgICBteSAkVHJ1ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5fWE1MVmVyc2lvbkRlbGV0ZSgKICAgICAgICBWZXJzaW9uSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBfWE1MVmVyc2lvbkRlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhWZXJzaW9uSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHZlcnNpb24gZGF0YQogICAgbXkgJFZlcnNpb24gPSAkU2VsZi0+VmVyc2lvbkdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gJFBhcmFte1ZlcnNpb25JRH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJFZlcnNpb247CgogICAgIyBkZWxldGUgeG1sIGRhdGEgZnJvbSBhIHZlcnNpb24KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpYTUwnKS0+WE1MSGFzaERlbGV0ZSgKICAgICAgICBUeXBlID0+ICJJVFNNOjpDb25maWdJdGVtOjokVmVyc2lvbi0+e0NsYXNzSUR9IiwKICAgICAgICBLZXkgID0+ICRQYXJhbXtWZXJzaW9uSUR9LAogICAgKTsKCiAgICAjIGRlbGV0ZSB4bWwgZGF0YSBmcm9tIGFyY2hpdgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpLT5YTUxIYXNoRGVsZXRlKAogICAgICAgIFR5cGUgPT4gIklUU006OkNvbmZpZ0l0ZW06OkFyY2hpdjo6JFZlcnNpb24tPntDbGFzc0lEfSIsCiAgICAgICAgS2V5ICA9PiAkUGFyYW17VmVyc2lvbklEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfWE1MSGFzaFNlYXJjaCgpCgpTZWFyY2ggYSB4bWwgaGFzaCBmcm9tIGRhdGFiYXNlLgpUaGlzIG1ldGhvZCBpcyBiYXNlZCBvbiBLZXJuZWw6OlN5c3RlbTo6WE1MSGFzaFNlYXJjaCwgYnV0IGhhcyBzdXBwb3J0IGZvciBzb21lIGV4dHJhIGZlYXR1cmVzLgpBIHNwZWNpZmljIG9wZXJhdG9yIGNhbiBiZSBzcGVjaWZpZWQgaW4gYSBoYXNoLgpUaGUgc3ludGF4IGlzIGJhc2VkIG9uIEw8U1FMOjpBYnN0cmFjdD4uCgogICAgbXkgQEtleXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+X1hNTEhhc2hTZWFyY2goCiAgICAgICAgVHlwZSA9PiAnU29tZVR5cGUnLAogICAgICAgIFdoYXQgPT4gWwogICAgICAgICAgICAjIGVhY2ggYXJyYXkgZWxlbWVudCBpcyBhIGFuZCBjb25kaXRpb24KICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyBvciBjb25kaXRpb24gaW4gaGFzaAogICAgICAgICAgICAgICAgIlslXXsnVmVyc2lvbid9WyVdeydDb25maWdJdGVtQXR0ckInfVslXXsnQ29udGVudCd9IiA9PiAnJWNvbnRlbnRBJScsCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQyd9WyVdeydDb250ZW50J30iID0+ICclY29udGVudEElJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIlslXXsnVmVyc2lvbid9WyVdeydDb25maWdJdGVtQXR0ckInfVslXXsnQ29udGVudCd9IiA9PiAnJWNvbnRlbnRCJScsCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQyd9WyVdeydDb250ZW50J30iID0+ICclY29udGVudEIlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIyB1c2UgYXJyYXkgcmVmZXJlbmNlIGlmIGRpZmZlcmVudCBjb250ZW50IHdpdGggc2FtZSBrZXkgd2FzIHNlYXJjaGVkCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQid9WyVdeydDb250ZW50J30iID0+IFsnJWNvbnRlbnRDJScsICclY29udGVudEQlJywgJyVjb250ZW50RSUnXSwKICAgICAgICAgICAgICAgICJbJV17J1ZlcnNpb24nfVslXXsnQ29uZmlnSXRlbUF0dHJDJ31bJV17J0NvbnRlbnQnfSIgPT4gWyclY29udGVudEMlJywgJyVjb250ZW50RCUnLCAnJWNvbnRlbnRFJSddLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAjIHVzZSBoYXNoIHJlZmVyZW5jZSBmb3Igc3BlY2lmeWluZyBjb21wYXJpc29uIG9wcywgYXBhcnQgZnJvbSB0aGUgZGVmYXVsdCAnTElLRScKICAgICAgICAgICAgICAgICJbJV17J1ZlcnNpb24nfVslXXsnQ29uZmlnSXRlbUF0dHJCJ31bJV17J0NvbnRlbnQnfSIgPT4geyAnPCcgICAgICAgICA9PiAnYWxwaGFiZXRpY2FsbHlfbG93ZXJfb3JfZXF1YWwnIH0sCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQid9WyVdeydDb250ZW50J30iID0+IHsgJzw9JyAgICAgICAgPT4gJ2FscGhhYmV0aWNhbGx5X2xlc3Nfb3JfZXF1YWwnIH0sCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQid9WyVdeydDb250ZW50J30iID0+IHsgJz0nICAgICAgICAgPT4gJ2V4YWN0X21hdGNoJyB9LAogICAgICAgICAgICAgICAgIlslXXsnVmVyc2lvbid9WyVdeydDb25maWdJdGVtQXR0ckInfVslXXsnQ29udGVudCd9IiA9PiB7ICchPScgICAgICAgID0+ICdleGFjdF9tYXRjaCcgfSwKICAgICAgICAgICAgICAgICJbJV17J1ZlcnNpb24nfVslXXsnQ29uZmlnSXRlbUF0dHJCJ31bJV17J0NvbnRlbnQnfSIgPT4geyAnPj0nICAgICAgICA9PiAnYWxwaGFiZXRpY2FsbHlfbGFyZ2VyX29yX2VxdWFsJyB9LAogICAgICAgICAgICAgICAgIlslXXsnVmVyc2lvbid9WyVdeydDb25maWdJdGVtQXR0ckInfVslXXsnQ29udGVudCd9IiA9PiB7ICc+JyAgICAgICAgID0+ICdhbHBoYWJldGljYWxseV9sYXJnZXInIH0sCiAgICAgICAgICAgICAgICAiWyVdeydWZXJzaW9uJ31bJV17J0NvbmZpZ0l0ZW1BdHRyQid9WyVdeydDb250ZW50J30iID0+IHsgJy1iZXR3ZWVuJyAgPT4gWyAnbG93ZXJfYm91bmQnLCAndXBwZXJfYm91bmQnIF0gfSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgKTsKCj1jdXQKCnN1YiBfWE1MSGFzaFNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VHlwZX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFR5cGUhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBsaWtlIGVzY2FwZSBzdHJpbmcgbmVlZGVkIGZvciBzb21lIGRhdGFiYXNlcyAoZS5nLiBvcmFjbGUpCiAgICBteSAkTGlrZUVzY2FwZVN0cmluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5HZXREYXRhYmFzZUZ1bmN0aW9uKCdMaWtlRXNjYXBlU3RyaW5nJyk7CgogICAgIyBnZXQgYWxsIGVudHJpZXMgaWYgd2UgaGF2ZSBubyByZXN0cmljdGlvbgogICAgaWYgKCAhJFBhcmFte1doYXR9IHx8IHJlZiAkUGFyYW17V2hhdH0gbmUgJ0FSUkFZJyApIHsKICAgICAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICdTRUxFQ1QgRElTVElOQ1QoeG1sX2tleSkgRlJPTSB4bWxfc3RvcmFnZSBXSEVSRSB4bWxfdHlwZSA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtUeXBlfSBdLAogICAgICAgICk7CgogICAgICAgIG15IEBLZXlzOwogICAgICAgIHdoaWxlICggbXkgQERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICBwdXNoIEBLZXlzLCAkRGF0YVswXTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBAS2V5czsKICAgIH0KCiAgICAjIG90aGVyd2lzZSBvbmx5IGdldCBlbnRyaWVzIHJlc3RyaWN0ZWQgYnkgJ1doYXQnIHBhcmFtZXRlcgoKICAgIG15ICVPcElzU3VwcG9ydGVkID0gbWFwIHsgJF8gPT4gMSB9ICggJzwnLCAnPD0nLCAnPScsICchPScsICc+PScsICc+JywgJy1iZXR3ZWVuJyApOwoKICAgICMgdGhlIGFycmF5IGVsZW1lbnRzIGFyZSAnYW5kJyBjb21iaW5lZAogICAgbXkgJEludGVyc2VjdCA9IDA7CiAgICBteSAlSGFzaDsKICAgIGZvciBteSAkQW5kICggQHsgJFBhcmFte1doYXR9IH0gKSB7CgogICAgICAgICMgdGhlIGtleS92YWx1ZSBwYWlycyBhcmUgJ29yJyBjb21iaW5lZAogICAgICAgIG15IEBPckNvbmRpdGlvbnM7CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQW5kfSApIHsKICAgICAgICAgICAgbXkgJFZhbHVlID0gJEFuZC0+eyRLZXl9OwoKICAgICAgICAgICAgJFNlbGYtPl9QcmVwYXJlTGlrZVN0cmluZyggXCRLZXkgKTsKCiAgICAgICAgICAgIGlmICggJFZhbHVlICYmIHJlZiAkVmFsdWUgZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICAgICAjIHdoZW4gYW4gYXJyYXkgb2YgcG9zc2libGUgdmFsdWVzIGlzIGdpdmVuLAogICAgICAgICAgICAgICAgIyB3ZSB1c2UgJ0xJS0UnLWNvbmRpdGlvbnMgYW5kIGNvbWJpbmUgdGhlbSB3aXRoICdPUicKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIEB7JFZhbHVlfSApIHsKCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPl9QcmVwYXJlTGlrZVN0cmluZyggXCRFbGVtZW50ICk7CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQE9yQ29uZGl0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgIiAoeG1sX2NvbnRlbnRfa2V5IExJS0UgJyRLZXknICRMaWtlRXNjYXBlU3RyaW5nICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiQU5EIHhtbF9jb250ZW50X3ZhbHVlIExJS0UgJyRFbGVtZW50JyAkTGlrZUVzY2FwZVN0cmluZykiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFZhbHVlICYmIHJlZiAkVmFsdWUgZXEgJ0hBU0gnICkgewoKICAgICAgICAgICAgICAgICMgYSBoYXNocmVmIGluZGljYXRlcyBhIHNwZWNpZmljIGNvbXBhcmlzb24gb3AKICAgICAgICAgICAgICAgICMgY3VycmVudGx5IG9ubHkgYSBzaW5nbGUgb3AsIHdpdGggYSBzaW5nbGUgdmFsdWUsIGlzIHN1cHBvcnRlZAoKICAgICAgICAgICAgICAgICMgVW5kZXIgT3JhY2xlIHRoZSBhdHRyaWJ1dGUgJ3htbF9jb250ZW50X3ZhbHVlJyBpcyBhIENMT0IsCiAgICAgICAgICAgICAgICAjIGEgQ2hhcmFjdGVyIExvY2F0b3IgT2JqZWN0LiBXaGlsZSBzZWxlY3Rpb24gd2l0aCBMSUtFIGlzIHBvc3NpYmxlLAogICAgICAgICAgICAgICAgIyB0aGUgYWxwaGFiZXRpY2FsIGNvbXBhcmlzb24gb3BzIGFyZSBub3Qgc3VwcG9ydGVkLgogICAgICAgICAgICAgICAgIyBTZWUgaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vZG9jcy9jZC9CMTIwMzdfMDEvYXBwZGV2LjEwMS9iMTA3OTYvXAogICAgICAgICAgICAgICAgIyBhZGxvYl9zcS5odG0jMTAwNjIxNQogICAgICAgICAgICAgICAgIyBBcyBhIHdvcmthcm91bmQgd2UgY2FzdCB0aGUgQ0xPQiB0byBhIFZBUkNIQVIyIHdpdGggVE9fQ0hBUigpLgogICAgICAgICAgICAgICAgbXkgJFhNTENvbnRlbnRWYWx1ZUNvbHVtbiA9ICd4bWxfY29udGVudF92YWx1ZSc7CiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkdldERhdGFiYXNlRnVuY3Rpb24oJ1R5cGUnKSBlcQogICAgICAgICAgICAgICAgICAgICdvcmFjbGUnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRYTUxDb250ZW50VmFsdWVDb2x1bW4gPSAnVE9fQ0hBUih4bWxfY29udGVudF92YWx1ZSknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICgkT3ApID0ga2V5cyAleyRWYWx1ZX07CiAgICAgICAgICAgICAgICBteSAkRWxlbWVudCA9ICRWYWx1ZS0+eyRPcH07CiAgICAgICAgICAgICAgICBpZiAoICRPcCAmJiAkT3AgZXEgJy1iZXR3ZWVuJyAmJiByZWYgJEVsZW1lbnQgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkTG93ZXJCb3VuZCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdW90ZSggJEVsZW1lbnQtPlswXSApOwogICAgICAgICAgICAgICAgICAgIG15ICRVcHBlckJvdW5kID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1b3RlKCAkRWxlbWVudC0+WzFdICk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAT3JDb25kaXRpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAiICggeG1sX2NvbnRlbnRfa2V5IExJS0UgJyRLZXknICRMaWtlRXNjYXBlU3RyaW5nICIKICAgICAgICAgICAgICAgICAgICAgICAgLiAiQU5EICRYTUxDb250ZW50VmFsdWVDb2x1bW4gPj0gJyRMb3dlckJvdW5kJyAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIkFORCAkWE1MQ29udGVudFZhbHVlQ29sdW1uIDw9ICckVXBwZXJCb3VuZCcgKSI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRPcCAmJiAkT3BJc1N1cHBvcnRlZHskT3B9ICYmICFyZWYgJEVsZW1lbnQgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoJEVsZW1lbnQpIC8vICcnOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQE9yQ29uZGl0aW9ucywKICAgICAgICAgICAgICAgICAgICAgICAgIiAoIHhtbF9jb250ZW50X2tleSBMSUtFICckS2V5JyAkTGlrZUVzY2FwZVN0cmluZyAiCiAgICAgICAgICAgICAgICAgICAgICAgIC4gIkFORCAkWE1MQ29udGVudFZhbHVlQ29sdW1uICRPcCAnJEVsZW1lbnQnICkiOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdHb3QgdW5leHBlY3RlZCBkYXRhIGluIHNlYXJjaCEnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAT3JDb25kaXRpb25zLCAnKCAxID0gMSApJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIHdoZW4gYSBzaW5nbGUgIHBvc3NpYmxlIHZhbHVlIGlzIGdpdmVuLAogICAgICAgICAgICAgICAgIyB3ZSB1c2UgYSAnTElLRSctY29uZGl0aW9uCiAgICAgICAgICAgICAgICAkU2VsZi0+X1ByZXBhcmVMaWtlU3RyaW5nKCBcJFZhbHVlICk7CgogICAgICAgICAgICAgICAgcHVzaCBAT3JDb25kaXRpb25zLAogICAgICAgICAgICAgICAgICAgICIgKHhtbF9jb250ZW50X2tleSBMSUtFICckS2V5JyAkTGlrZUVzY2FwZVN0cmluZyAiCiAgICAgICAgICAgICAgICAgICAgLiAiQU5EIHhtbF9jb250ZW50X3ZhbHVlIExJS0UgJyRWYWx1ZScgJExpa2VFc2NhcGVTdHJpbmcpIjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhc3NlbWJsZSB0aGUgU1FMCiAgICAgICAgbXkgJFNRTCA9ICdTRUxFQ1QgRElTVElOQ1QoeG1sX2tleSkgRlJPTSB4bWxfc3RvcmFnZSBXSEVSRSB4bWxfdHlwZSA9ID8gJzsKICAgICAgICBpZiAoQE9yQ29uZGl0aW9ucykgewogICAgICAgICAgICAkU1FMIC49ICdBTkQgKCAnIC4gam9pbiggJyBPUiAnLCBAT3JDb25kaXRpb25zICkgLiAnICknOwogICAgICAgIH0KCiAgICAgICAgIyBleGVjdXRlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gJFNRTCwKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17VHlwZX0gXSwKICAgICAgICApOwoKICAgICAgICAjIGludGVyc2VjdGlvbiBiZXR3ZWVuIHRoZSBjdXJyZW50IGtleSBzZXQsIGFuZCB0aGUga2V5cyBmcm9tIHRoZSBsYXN0ICdTRUxFQ1QnCiAgICAgICAgIyBvbmx5IHRoZSBrZXlzIHdoaWNoIGFyZSBpbiBhbGwgcmVzdWx0cyBzdXJ2aXZlCiAgICAgICAgbXkgJUhhc2hOZXc7CiAgICAgICAgd2hpbGUgKCBteSBARGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgIGlmICggISRJbnRlcnNlY3QgfHwgJEhhc2h7ICREYXRhWzBdIH0gKSB7CiAgICAgICAgICAgICAgICAkSGFzaE5ld3sgJERhdGFbMF0gfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJUhhc2ggPSAlSGFzaE5ldzsKCiAgICAgICAgIyByZW1lbWJlciB0byBsYXRlciBpbnRlcnNlY3QgcmVzdWx0cwogICAgICAgICsrJEludGVyc2VjdDsKICAgIH0KCiAgICBteSBAS2V5cyA9IGtleXMgJUhhc2g7CgogICAgcmV0dXJuIEBLZXlzOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/BaseSelectable.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpabnVueTo6Q29kZVN0eWxlOjpHdWFyZENsYXVzZSkKCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkJhc2VTZWxlY3RhYmxlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkJhc2VTZWxlY3RhYmxlIC0gQmFzZSBiYWNrZW5kIG1vZHVsZSBmb3Igc2VsZWN0LWFibGUgdmFsdWVzCgo9aGVhZDEgU1lOT1BTSVMKCkJhc2UgYmFja2VuZCBtb2R1bGUgZm9yIHNlbGVjdC1hYmxlIHZhbHVlcwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6QmFzZVNlbGVjdGFibGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSB4bWwgZGF0YSBvZiBhIHZlcnNpb24KCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVMb29rdXAoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAnJzsKfQoKPWhlYWQyIFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0dHJpYnV0ZSBhcnJheSBmb3IgdGhlIHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRBdHRyaWJ1dGUgPSAkQmFja2VuZE9iamVjdC0+U3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgS2V5ICA9PiAnS2V5OjpTdWJrZXknLAogICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRzQXR0cmlidXRlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgTmFtZSBJdGVtKSkgewogICAgICAgIG5leHQgQVJHVU1FTlQgaWYgJFBhcmFteyRBcmd1bWVudH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgYXR0cmlidXRlCiAgICBteSAkQXR0cmlidXRlID0gWwogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAxLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAgICAgIH0sCiAgICBdOwoKICAgIHJldHVybiAkQXR0cmlidXRlOwp9Cgo9aGVhZDIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEV4cG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBJbXBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/CI.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpabnVueTo6Q29kZVN0eWxlOjpHdWFyZENsYXVzZSkKCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkNJOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkNJIC0geG1sIGJhY2tlbmQgbW9kdWxlIGZvciBDSSBvYmplY3RzCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCB4bWwgZnVuY3Rpb25zIG9mIENJIG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkNJJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgeG1sIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVlID0+IDEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJVFNNQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICBteSAkQ0lWZXJzaW9uRGF0YSA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMCwKICAgICk7CiAgICBteSAkQ0lOYW1lID0gJFBhcmFte1ZhbHVlfTsKCiAgICAjaWYgKCAkQ0lWZXJzaW9uRGF0YSAmJiAoIHJlZigkQ0lWZXJzaW9uRGF0YSkgZXEgJ0hBU0gnICkgJiYgJENJVmVyc2lvbkRhdGEtPntOYW1lfSkKICAgIHJldHVybiAkQ0lOYW1lIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQ0lWZXJzaW9uRGF0YSk7CiAgICByZXR1cm4gJENJTmFtZSBpZiAhJENJVmVyc2lvbkRhdGEtPntOYW1lfTsKCiAgICAkQ0lOYW1lID0gJENJVmVyc2lvbkRhdGEtPntOYW1lfSAuICIgKCIgLiAkQ0lWZXJzaW9uRGF0YS0+e051bWJlcn0gLiAiKSI7CgogICAgcmV0dXJuICRDSU5hbWU7Cn0KCj1oZWFkMiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpCgpjcmVhdGUgYSBhdHRyaWJ1dGUgYXJyYXkgZm9yIHRoZSBzdGF0cyBmcmFtZXdvcmsKCiAgICBteSAkQXR0cmlidXRlID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKAogICAgICAgIEtleSAgPT4gJ0tleTo6U3Via2V5JywKICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIFBBUkFNOgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IE5hbWUgSXRlbSkpIHsKICAgICAgICBuZXh0IFBBUkFNIGlmICRQYXJhbXskQXJndW1lbnR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBjcmVhdGUgYXJydGlidXRlCiAgICBteSAkQXR0cmlidXRlID0gWwogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ0lucHV0RmllbGQnLAogICAgICAgIH0sCiAgICBdOwoKICAgIHJldHVybiAkQXR0cmlidXRlOwp9Cgo9aGVhZDIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICByZXR1cm4gICAgaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICAjIGxvb2t1cCBDSSBudW1iZXIKICAgIG15ICRDSSA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte1ZhbHVlfSwKICAgICk7CgogICAgI2lmICggJENJICYmIHJlZiAkQ0kgZXEgJ0hBU0gnICYmICRDSS0+e051bWJlcn0gKSB7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCRDSSkgJiYgJENJLT57TnVtYmVyfSApIHsKICAgICAgICByZXR1cm4gJENJLT57TnVtYmVyfTsKICAgIH0KCiAgICByZXR1cm4gJyc7Cn0KCj1oZWFkMiBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJVFNNQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgcmV0dXJuICAgIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgbXkgJFNlYXJjaEF0dHIgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDSUF0dHJpYnV0ZUtleX0gfHwgJyc7CgogICAgaWYgKCRTZWFyY2hBdHRyKSB7CgogICAgICAgIG15ICRWZXJzaW9uRGF0YSA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgKTsKCiAgICAgICAgI2lmICggJFZlcnNpb25EYXRhICYmIHJlZiAkVmVyc2lvbkRhdGEgZXEgJ0hBU0gnICkgewogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFZlcnNpb25EYXRhKSApIHsKCiAgICAgICAgICAgICMgZ2V0IENvbmZpZ0l0ZW0gY2xhc3MgSUQKICAgICAgICAgICAgbXkgJENJQ2xhc3NJRCA9ICIiOwoKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtJdGVtfSApCiAgICAgICAgICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0l0ZW19LT57SW5wdXR9ICkKICAgICAgICAgICAgICAgICYmICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NOYW1lfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbXkgJEl0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q0lDbGFzc05hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGlmICggJEl0ZW1EYXRhUmVmICYmIHJlZigkSXRlbURhdGFSZWYpIGVxICdIQVNIJyAmJiAkSXRlbURhdGFSZWYtPntJdGVtSUR9ICkgewogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkSXRlbURhdGFSZWYpICYmICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENJQ2xhc3NJRCA9ICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH0gfHwgJyc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJFhNTERlZmluaXRpb24gPQogICAgICAgICAgICAgICAgICAgICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDSUNsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSAkQXJyUmVmID0gJFNlbGYtPntDSUFDVXRpbHNPYmplY3R9LT5HZXRBdHRyaWJ1dGVWYWx1ZXNCeUtleSgKICAgICAgICAgICAgICAgICAgICBLZXlOYW1lICAgICAgID0+ICRTZWFyY2hBdHRyLAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgPT4gJFZlcnNpb25EYXRhLT57WE1MRGF0YX0tPlsxXS0+e1ZlcnNpb259LT5bMV0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRBcnJSZWYgJiYgJEFyclJlZi0+WzBdICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkQXJyUmVmLT5bMF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb29rdXAgQ0kgbnVtYmVyIGZvciBnaXZlbiBDSSBJRAogICAgbXkgJENJID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKCiAgICAjaWYgKCAkQ0kgJiYgcmVmICRDSSBlcSAnSEFTSCcgJiYgJENJLT57TnVtYmVyfSApIHsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJENJKSAmJiAkQ0ktPntOdW1iZXJ9ICkgewogICAgICAgIHJldHVybiAkQ0ktPntOdW1iZXJ9OwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKPWhlYWQyIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJVFNNQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIHJldHVybiAgICBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgICMgY2hlY2sgaWYgQ0kgbnVtYmVyIHdhcyBnaXZlbgogICAgbXkgJENJSUQgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKICAgIHJldHVybiAkQ0lJRCBpZiAkQ0lJRDsKCiAgICAjIGNoZWNrIGlmIGdpdmVuIHZhbHVlIGlzIGEgdmFsaWQgQ0kgSUQKICAgIGlmICggJFBhcmFte1ZhbHVlfSAhfiAvXEQvICkgewogICAgICAgIG15ICRDSU51bWJlciA9ICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSBpZiAkQ0lOdW1iZXI7CiAgICB9CgogICAgcmV0dXJuICcnOwp9Cgo9aGVhZDIgSW1wb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIHJldHVybiAgICBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgIG15ICRTZWFyY2hBdHRyID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q0lBdHRyaWJ1dGVLZXl9IHx8ICcnOwoKICAgICMgbWFrZSBDSS1OdW1iZXIgb3V0IG9mIGdpdmVuIHZhbHVlCiAgICBpZiAoJFNlYXJjaEF0dHIpIHsKCiAgICAgICAgIyBnZXQgQ29uZmlnSXRlbSBjbGFzcyBJRAogICAgICAgIG15ICRDSUNsYXNzSUQgPSAiIjsKCiAgICAgICAgaWYgKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0l0ZW19ICkKICAgICAgICAgICAgJiYgSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtJdGVtfS0+e0lucHV0fSApCiAgICAgICAgICAgICYmICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NOYW1lfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgbXkgJEl0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NJQ2xhc3NOYW1lfSB8fCAnJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKSAmJiAkSXRlbURhdGFSZWYtPntJdGVtSUR9ICkgewogICAgICAgICAgICAgICAgJENJQ2xhc3NJRCA9ICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH0gfHwgJyc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcHJlcGFyZSBzZWFyY2ggcGFyYW1zCiAgICAgICAgICAgIG15ICVTZWFyY2hQYXJhbXMgPSAoKTsKICAgICAgICAgICAgbXkgJVNlYXJjaERhdGEgICA9ICgpOwoKICAgICAgICAgICAgJFNlYXJjaERhdGF7JFNlYXJjaEF0dHJ9ID0gJFBhcmFte1ZhbHVlfTsKCiAgICAgICAgICAgIG15ICRYTUxEZWZpbml0aW9uID0KICAgICAgICAgICAgICAgICRJVFNNQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENJQ2xhc3NJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAU2VhcmNoUGFyYW1zV2hhdDsKICAgICAgICAgICAgJFNlbGYtPl9YTUxTZWFyY2hEYXRhUHJlcGFyZSgKICAgICAgICAgICAgICAgIFhNTERlZmluaXRpb24gPT4gJFhNTERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfSwKICAgICAgICAgICAgICAgIFdoYXQgICAgICAgICAgPT4gXEBTZWFyY2hQYXJhbXNXaGF0LAogICAgICAgICAgICAgICAgU2VhcmNoRGF0YSAgICA9PiBcJVNlYXJjaERhdGEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoQFNlYXJjaFBhcmFtc1doYXQpIHsKICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7V2hhdH0gPSBcQFNlYXJjaFBhcmFtc1doYXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VhcmNoIHRoZSBjb25maWcgaXRlbXMKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRHMgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgKICAgICAgICAgICAgICAgICVTZWFyY2hQYXJhbXMsCiAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyRDSUNsYXNzSURdLAogICAgICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdldCBhbmQgcmV0dXJuIENvZmlnSXRlbSBJRAogICAgICAgICAgICBteSAkQ0lJRCA9ICIiOwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtSURzICYmIHJlZigkQ29uZmlnSXRlbUlEcykgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICRDSUlEID0gJENvbmZpZ0l0ZW1JRHMtPlswXSB8fCAnJzsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gJENJSUQ7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDSUlEID0gJElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFBhcmFte1ZhbHVlfSwKICAgICk7CiAgICByZXR1cm4gJENJSUQgaWYgJENJSUQ7CgogICAgIyBtYWtlIENJLU51bWJlciBvdXQgb2YgZ2l2ZW4gTmFtZS4uLgogICAgbXkgJENJQ2xhc3NJRCA9ICIiOwoKICAgIGlmICgKICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0l0ZW19ICkKICAgICAgICAmJiAkUGFyYW17SXRlbX0tPntJbnB1dH0KICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0l0ZW19LT57SW5wdXR9ICkKICAgICAgICAmJiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDSUNsYXNzTmFtZX0KICAgICAgICApCiAgICB7CgogICAgICAgIG15ICRSZWZDbGFzc05hbWUgPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDSUNsYXNzTmFtZX07CiAgICAgICAgbXkgJEl0ZW1EYXRhUmVmICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q0lDbGFzc05hbWV9IHx8ICcnLAogICAgICAgICk7CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEl0ZW1EYXRhUmVmKSAmJiAkSXRlbURhdGFSZWYtPntJdGVtSUR9ICkgewogICAgICAgICAgICAkQ0lDbGFzc0lEID0gJEl0ZW1EYXRhUmVmLT57SXRlbUlEfSB8fCAnJzsKICAgICAgICB9CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRHMgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgKICAgICAgICAgICAgTmFtZSAgICAgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyRDSUNsYXNzSURdLAogICAgICAgICk7CiAgICAgICAgbXkgJENJSUQgPSAiIjsKICAgICAgICBpZiAoICRDb25maWdJdGVtSURzICYmIHJlZigkQ29uZmlnSXRlbUlEcykgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJENJSUQgPSAkQ29uZmlnSXRlbUlEcy0+WzBdIHx8ICcnOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJENJSUQgaWYgJENJSUQ7CiAgICB9CgogICAgIyBjaGVjayBpZiBnaXZlbiB2YWx1ZSBpcyBhIHZhbGlkIENJIElECiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gIX4gL1xELyApIHsKICAgICAgICBteSAkQ0lOdW1iZXIgPSAkSVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17VmFsdWV9LAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRQYXJhbXtWYWx1ZX0gaWYgJENJTnVtYmVyOwogICAgfQoKICAgIHJldHVybiAnJzsKfQoKc3ViIF9YTUxTZWFyY2hEYXRhUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufSB8fCByZWYgJFBhcmFte1hNTERlZmluaXRpb259IG5lICdBUlJBWSc7CiAgICByZXR1cm4gaWYgISRQYXJhbXtXaGF0fSAgICAgICAgICB8fCByZWYgJFBhcmFte1doYXR9IG5lICdBUlJBWSc7CiAgICByZXR1cm4gaWYgISRQYXJhbXtTZWFyY2hEYXRhfSAgICB8fCByZWYgJFBhcmFte1NlYXJjaERhdGF9IG5lICdIQVNIJzsKCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtICggQHsgJFBhcmFte1hNTERlZmluaXRpb259IH0gKSB7CgogICAgICAgICMgY3JlYXRlIGtleQogICAgICAgIG15ICRLZXkgPQogICAgICAgICAgICAkUGFyYW17UHJlZml4fSA/ICRQYXJhbXtQcmVmaXh9IC4gJzo6JyAuICRJdGVtLT57S2V5fSA6ICRJdGVtLT57S2V5fTsKCiAgICAgICAgaWYgKCAkUGFyYW17U2VhcmNoRGF0YX0tPnskS2V5fSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIHNlYXJjaCBrZXkKICAgICAgICAgICAgbXkgJFNlYXJjaEtleSA9ICRLZXk7CiAgICAgICAgICAgICRTZWFyY2hLZXkgPX4gc3sgOjogfXtcJ1x9WyVdXHtcJ314bXNnOwoKICAgICAgICAgICAgIyBjcmVhdGUgc2VhcmNoIGhhc2gKICAgICAgICAgICAgbXkgJFNlYXJjaEhhc2ggPQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ1sxXXtcJ1ZlcnNpb25cJ31bMV17XCcnCiAgICAgICAgICAgICAgICAgICAgLiAkU2VhcmNoS2V5CiAgICAgICAgICAgICAgICAgICAgLiAnXCd9WyVde1wnQ29udGVudFwnfScgPT4gJFBhcmFte1NlYXJjaERhdGF9LT57JEtleX0sCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtXaGF0fSB9LCAkU2VhcmNoSGFzaDsKICAgICAgICB9CiAgICAgICAgbmV4dCBJVEVNIGlmICEkSXRlbS0+e1N1Yn07CgogICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAkU2VsZi0+X1hNTFNlYXJjaERhdGFQcmVwYXJlKAogICAgICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRJdGVtLT57U3VifSwKICAgICAgICAgICAgV2hhdCAgICAgICAgICA9PiAkUGFyYW17V2hhdH0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgICAgPT4gJFBhcmFte1NlYXJjaERhdGF9LAogICAgICAgICAgICBQcmVmaXggICAgICAgID0+ICRLZXksCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/CIAttachment.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkNJQXR0YWNobWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAopOwoKdXNlIHBhcmVudCAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkJhc2VTZWxlY3RhYmxlJzsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6Q0lBdHRhY2htZW50IC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCB4bWwgZnVuY3Rpb25zIG9mIGF0dGFjaG1lbnQgb2JqZWN0cwoKPWhlYWQyIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgeG1sIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgICAgIFZhbHVlID0+IDEuMS4xLjEsCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/CISimple.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkNJU2ltcGxlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXM7Cgp1c2UgcGFyZW50IHF3KCBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6Q0kgKTsKCjE7Cg==</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/Customer.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6Q3VzdG9tZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6Q3VzdG9tZXIgLSB4bWwgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIHhtbCBmdW5jdGlvbnMgb2YgY3VzdG9tZXIgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkWE1MVHlwZUN1c3RvbWVyQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpDdXN0b21lcicpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBWYWx1ZUxvb2t1cCgpCgpnZXQgdGhlIHhtbCBkYXRhIG9mIGEgdmVyc2lvbgoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxvb2t1cCgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgIG15ICVDdXN0b21lclNlYXJjaExpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyU2VhcmNoKAogICAgICAgIFNlYXJjaCA9PiAkUGFyYW17VmFsdWV9LAogICAgKTsKCiAgICByZXR1cm4gJEN1c3RvbWVyU2VhcmNoTGlzdHsgJFBhcmFte1ZhbHVlfSB9IHx8ICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpCgpjcmVhdGUgYSBhdHRyaWJ1dGUgYXJyYXkgZm9yIHRoZSBzdGF0cyBmcmFtZXdvcmsKCiAgICBteSAkQXR0cmlidXRlID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKAogICAgICAgIEtleSA9PiAnS2V5OjpTdWJrZXknLAogICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRzQXR0cmlidXRlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEtleSBOYW1lIEl0ZW0pKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY3JlYXRlIGF0dHJpYnV0ZQogICAgbXkgJEF0dHJpYnV0ZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgXTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZTsKfQoKPWhlYWQyIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgSW1wb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/CustomerCompany.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6Q3VzdG9tZXJDb21wYW55OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkN1c3RvbWVyQ29tcGFueSAtIHhtbCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgeG1sIGZ1bmN0aW9ucyBvZiBjdXN0b21lciBjb21wYW55IG9iamVjdHMKCj1oZWFkMiBuZXcoKQoKY3JlYXRlIGFuIG9iamVjdAoKICAgIHVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKICAgIGxvY2FsICRLZXJuZWw6Ok9NID0gS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXItPm5ldygpOwogICAgbXkgJFhNTFR5cGVDdXN0b21lckNvbXBhbnlCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkN1c3RvbWVyQ29tcGFueScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBWYWx1ZUxvb2t1cCgpCgpnZXQgdGhlIHhtbCBkYXRhIG9mIGEgdmVyc2lvbgoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxvb2t1cCgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgIG15ICVDdXN0b21lckNvbXBhbnkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55JyktPkN1c3RvbWVyQ29tcGFueUdldCgKICAgICAgICBDdXN0b21lcklEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwoKICAgIHJldHVybiAkQ3VzdG9tZXJDb21wYW55e0N1c3RvbWVyQ29tcGFueU5hbWV9IHx8ICcnOwp9Cgo9aGVhZDIgU3RhdHNBdHRyaWJ1dGVDcmVhdGUoKQoKY3JlYXRlIGEgYXR0cmlidXRlIGFycmF5IGZvciB0aGUgc3RhdHMgZnJhbWV3b3JrCgogICAgbXkgJEF0dHJpYnV0ZSA9ICRCYWNrZW5kT2JqZWN0LT5TdGF0c0F0dHJpYnV0ZUNyZWF0ZSgKICAgICAgICBLZXkgPT4gJ0tleTo6U3Via2V5JywKICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgTmFtZSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhdHRyaWJ1dGUKICAgIG15ICRBdHRyaWJ1dGUgPSBbCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAxLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDEsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnSW5wdXRGaWVsZCcsCiAgICAgICAgfSwKICAgIF07CgogICAgcmV0dXJuICRBdHRyaWJ1dGU7Cn0KCj1oZWFkMiBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5FeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRXhwb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5FeHBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBpbXBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEltcG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBpbXBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/Date.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6RGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpEYXRlIC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCB4bWwgZnVuY3Rpb25zIG9mIGRhdGUgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkWE1MVHlwZURhdGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkRhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSBkYXRlIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAzLTI2JywgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9IHx8ICcnOwp9Cgo9aGVhZDIgU3RhdHNBdHRyaWJ1dGVDcmVhdGUoKQoKY3JlYXRlIGEgYXR0cmlidXRlIGFycmF5IGZvciB0aGUgc3RhdHMgZnJhbWV3b3JrCgogICAgbXkgJEF0dHJpYnV0ZSA9ICRCYWNrZW5kT2JqZWN0LT5TdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpOwoKPWN1dAoKc3ViIFN0YXRzQXR0cmlidXRlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBOYW1lIEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGF0dHJpYnV0ZQogICAgbXkgJEF0dHJpYnV0ZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBUaW1lUGVyaW9kRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdUaW1lJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJFBhcmFte0tleX0gLiAnTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAkUGFyYW17S2V5fSAuICdPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICBdOwoKICAgIHJldHVybiAkQXR0cmlidXRlOwp9Cgo9aGVhZDIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEV4cG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBJbXBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/DateTime.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6RGF0ZVRpbWU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6RGF0ZVRpbWUgLSB4bWwgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIHhtbCBmdW5jdGlvbnMgb2YgZGF0ZSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRYTUxUeXBlRGF0ZVRpbWVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkRhdGVUaW1lJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgZGF0ZSB0aW1lIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVlID0+ICcyMDA3LTAzLTI2IDIyOjAxJywgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9IHx8ICcnOwp9Cgo9aGVhZDIgU3RhdHNBdHRyaWJ1dGVDcmVhdGUoKQoKY3JlYXRlIGEgYXR0cmlidXRlIGFycmF5IGZvciB0aGUgc3RhdHMgZnJhbWV3b3JrCgogICAgbXkgJEF0dHJpYnV0ZSA9ICRCYWNrZW5kT2JqZWN0LT5TdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpOwoKPWN1dAoKc3ViIFN0YXRzQXR0cmlidXRlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBOYW1lIEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGF0dHJpYnV0ZQogICAgbXkgJEF0dHJpYnV0ZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBUaW1lUGVyaW9kRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXRMb25nJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICRQYXJhbXtLZXl9IC4gJ05ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJFBhcmFte0tleX0gLiAnT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZTsKfQoKPWhlYWQyIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgSW1wb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/Dummy.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6RHVtbXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgpOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpEdW1teSAtIHhtbCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgeG1sIGZ1bmN0aW9ucyBvZiBkdW1teSBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRYTUxUeXBlRHVtbXlCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkR1bW15Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgZHVtbXkgZGF0YSBvZiBhIHZlcnNpb24KCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVMb29rdXAoKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIHJldHVybiAnJzsKfQoKPWhlYWQyIFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0dHJpYnV0ZSBhcnJheSBmb3IgdGhlIHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRBdHRyaWJ1dGUgPSAkQmFja2VuZE9iamVjdC0+U3RhdHNBdHRyaWJ1dGVDcmVhdGUoKTsKCj1jdXQKCnN1YiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIHJldHVybjsKfQoKPWhlYWQyIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgSW1wb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/GeneralCatalog.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6R2VuZXJhbENhdGFsb2c7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpHZW5lcmFsQ2F0YWxvZyAtIHhtbCBiYWNrZW5kIG1vZHVsZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgeG1sIGZ1bmN0aW9ucyBvZiBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkWE1MVHlwZUdlbmVyYWxDYXRhbG9nQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpHZW5lcmFsQ2F0YWxvZycpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBWYWx1ZUxvb2t1cCgpCgpnZXQgdGhlIHhtbCBkYXRhIG9mIGEgdmVyc2lvbgoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxvb2t1cCgKICAgICAgICBJdGVtICA9PiAkSXRlbVJlZiwKICAgICAgICBWYWx1ZSA9PiAxMSwgICAgICAgICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gaWYgISRQYXJhbXtWYWx1ZX07CgogICAgIyBnZXQgaXRlbSBsaXN0CiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q2xhc3N9IHx8ICcnLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRJdGVtTGlzdDsKICAgIHJldHVybiBpZiByZWYgJEl0ZW1MaXN0IG5lICdIQVNIJzsKCiAgICBteSAkVmFsdWUgPSAkSXRlbUxpc3QtPnsgJFBhcmFte1ZhbHVlfSB9OwoKICAgIHJldHVybiAkVmFsdWU7Cn0KCj1oZWFkMiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpCgpjcmVhdGUgYSBhdHRyaWJ1dGUgYXJyYXkgZm9yIHRoZSBzdGF0cyBmcmFtZXdvcmsKCiAgICBteSAkQXR0cmlidXRlID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKAogICAgICAgIEtleSAgPT4gJ0tleTo6U3Via2V5JywKICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgTmFtZSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBpdGVtIGxpc3QKICAgIG15ICRJdGVtTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDbGFzc30gfHwgJycsCiAgICApOwoKICAgICMgY3JlYXRlIGF0dHJpYnV0ZQogICAgbXkgJEF0dHJpYnV0ZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiAkSXRlbUxpc3QgfHwge30sCiAgICAgICAgfSwKICAgIF07CgogICAgcmV0dXJuICRBdHRyaWJ1dGU7Cn0KCj1oZWFkMiBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5FeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKCiAgICBteSBAVmFsdWVzID0gc3BsaXQgJyMjIyMjJywgJFBhcmFte1ZhbHVlfTsKICAgIEBWYWx1ZXMgPSBncmVwIHskX30gQFZhbHVlczsKCiAgICByZXR1cm4gXEBWYWx1ZXM7Cn0KCj1oZWFkMiBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwoKICAgICMgZ2V0IGl0ZW0gbGlzdAogICAgbXkgJEl0ZW1MaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e0NsYXNzfSB8fCAnJywKICAgICk7CgogICAgcmV0dXJuICRJdGVtTGlzdC0+eyAkUGFyYW17VmFsdWV9IH0gfHwgJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CgogICAgIyBnZXQgaXRlbSBsaXN0CiAgICBteSAkSXRlbUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57Q2xhc3N9IHx8ICcnLAogICAgKTsKCiAgICAjIHJldmVyc2UgdGhlIGxpc3QKICAgIG15ICVOYW1lMklEID0gcmV2ZXJzZSAleyRJdGVtTGlzdH07CgogICAgbXkgJEdlbmVyYWxDYXRhbG9nSUQgPSAkTmFtZTJJRHsgJFBhcmFte1ZhbHVlfSB9OwoKICAgIGlmICggISRHZW5lcmFsQ2F0YWxvZ0lEICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiR2VuZXJhbCBjYXRhbG9nIGxvb2t1cCBvZickUGFyYW17VmFsdWV9JyBmYWlsZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJEdlbmVyYWxDYXRhbG9nSUQ7Cgp9Cgo9aGVhZDIgSW1wb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwoKICAgICMgSnVzdCByZXR1cm4gZW1wdHkgdmFsdWUgaWYgaXRlbSBpcyBub3QgcmVxdWlyZWQuCiAgICBpZiAoICRQYXJhbXtWYWx1ZX0gZXEgJycgJiYgISRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1JlcXVpcmVkfSApIHsKICAgICAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKICAgIH0KCiAgICAjIGdldCBpdGVtIGxpc3QKICAgIG15ICRJdGVtTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntDbGFzc30gfHwgJycsCiAgICApOwoKICAgICMgcmV2ZXJzZSB0aGUgbGlzdAogICAgbXkgJU5hbWUySUQgPSByZXZlcnNlICV7JEl0ZW1MaXN0fTsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dJRCA9ICROYW1lMklEeyAkUGFyYW17VmFsdWV9IH07CgogICAgaWYgKCAhJEdlbmVyYWxDYXRhbG9nSUQgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJHZW5lcmFsIGNhdGFsb2cgbG9va3VwIG9mICckUGFyYW17VmFsdWV9JyBmYWlsZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gJEdlbmVyYWxDYXRhbG9nSUQ7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/Integer.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6SW50ZWdlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpJbnRlZ2VyIC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCB4bWwgZnVuY3Rpb25zIG9mIGludGVnZXIgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkWE1MVHlwZUludGVnZXJCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkludGVnZXInKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSBpbnRlZ2VyIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVlID0+IDExLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpCgpjcmVhdGUgYSBhdHRyaWJ1dGUgYXJyYXkgZm9yIHRoZSBzdGF0cyBmcmFtZXdvcmsKCiAgICBteSAkQXR0cmlidXRlID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKCk7Cgo9Y3V0CgpzdWIgU3RhdHNBdHRyaWJ1dGVDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoS2V5IE5hbWUgSXRlbSkpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZhbHVlTWluID0gJFBhcmFte0l0ZW19LT57SW5wdXR9LT57VmFsdWVNaW59IHx8IDE7CiAgICBteSAkVmFsdWVNYXggPSAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntWYWx1ZU1heH0gfHwgMTsKCiAgICBteSAlVmFsdWVzID0gbWFwIHsgJF8gPT4gJF8gfSAoICRWYWx1ZU1pbiAuLiAkVmFsdWVNYXggKTsKCiAgICAjIGNyZWF0ZSBhdHRyaWJ1dGUKICAgIG15ICRBdHRyaWJ1dGUgPSBbCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAxLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDEsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnTXVsdGlTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVWYWx1ZXMsCiAgICAgICAgICAgIFNvcnQgICAgICAgICAgICAgPT4gJ051bWVyaWNLZXknLAogICAgICAgIH0sCiAgICBdOwoKICAgIHJldHVybiAkQXR0cmlidXRlOwp9Cgo9aGVhZDIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEV4cG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBleHBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+RXhwb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgRXhwb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBJbXBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgaW1wb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkltcG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEltcG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/Priority.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlByaW9yaXR5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OlByaW9yaXR5JywKKTsKCnVzZSBwYXJlbnQgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpCYXNlU2VsZWN0YWJsZSc7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlByaW9yaXR5IC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKClhNTCBmdW5jdGlvbnMgZm9yIHByaW9yaXR5IG9iamVjdHMKCj1oZWFkMiBWYWx1ZUxvb2t1cCgpCgpnZXQgdGhlIHhtbCBkYXRhIG9mIGEgdmVyc2lvbgoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxvb2t1cCgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgIG15ICRQcmlvcml0eU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQcmlvcml0eScpOwogICAgbXkgJFByaW9yaXR5TmFtZSAgID0gJFByaW9yaXR5T2JqZWN0LT5Qcmlvcml0eUxvb2t1cCggUHJpb3JpdHlJRCA9PiAkUGFyYW17VmFsdWV9ICk7CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSBpZiAhZGVmaW5lZCAkUHJpb3JpdHlOYW1lOwoKICAgIHJldHVybiAkUHJpb3JpdHlOYW1lOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/Queue.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlF1ZXVlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJywKKTsKCnVzZSBwYXJlbnQgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpCYXNlU2VsZWN0YWJsZSc7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlF1ZXVlIC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKClhNTCBmdW5jdGlvbnMgZm9yIHF1ZXVlIG9iamVjdHMKCj1oZWFkMiBWYWx1ZUxvb2t1cCgpCgpnZXQgdGhlIHhtbCBkYXRhIG9mIGEgdmVyc2lvbgoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxvb2t1cCgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgIG15ICRRdWV1ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpOwogICAgbXkgJFF1ZXVlTmFtZSAgID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUxvb2t1cCggUXVldWVJRCA9PiAkUGFyYW17VmFsdWV9ICk7CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSBpZiAhZGVmaW5lZCAkUXVldWVOYW1lOwoKICAgIHJldHVybiAkUXVldWVOYW1lOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/Service.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlNlcnZpY2U7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCik7Cgp1c2UgcGFyZW50ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6QmFzZVNlbGVjdGFibGUnOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpTZXJ2aWNlIC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKClhNTCBmdW5jdGlvbnMgZm9yIHNlcnZpY2Ugb2JqZWN0cwoKPWhlYWQyIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgeG1sIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgVmFsdWVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwogICAgbXkgJFNlcnZpY2VOYW1lICAgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUxvb2t1cCggU2VydmljZUlEID0+ICRQYXJhbXtWYWx1ZX0gKTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9IGlmICFkZWZpbmVkICRTZXJ2aWNlTmFtZTsKCiAgICByZXR1cm4gJFNlcnZpY2VOYW1lOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/SLA.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlNMQTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTTEEnLAopOwoKdXNlIHBhcmVudCAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OkJhc2VTZWxlY3RhYmxlJzsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6U0xBIC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKClhNTCBmdW5jdGlvbnMgZm9yIFNMQSBvYmplY3RzCgo9aGVhZDIgVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSB4bWwgZGF0YSBvZiBhIHZlcnNpb24KCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVMb29rdXAoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICBteSAkU0xBT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNMQScpOwogICAgbXkgJFNMQU5hbWUgICA9ICRTTEFPYmplY3QtPlNMQUxvb2t1cCggU0xBSUQgPT4gJFBhcmFte1ZhbHVlfSApOwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX0gaWYgIWRlZmluZWQgJFNMQU5hbWU7CgogICAgcmV0dXJuICRTTEFOYW1lOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/State.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlN0YXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRlJywKKTsKCnVzZSBwYXJlbnQgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpCYXNlU2VsZWN0YWJsZSc7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlN0YXRlIC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKClhNTCBmdW5jdGlvbnMgZm9yIFN0YXRlIG9iamVjdHMKCj1oZWFkMiBWYWx1ZUxvb2t1cCgpCgpnZXQgdGhlIHhtbCBkYXRhIG9mIGEgdmVyc2lvbgoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5WYWx1ZUxvb2t1cCgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICcnIGlmICEkUGFyYW17VmFsdWV9OwoKICAgIG15ICRTdGF0ZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0ZScpOwogICAgbXkgJFN0YXRlTmFtZSAgID0gJFN0YXRlT2JqZWN0LT5TdGF0ZUxvb2t1cCggU3RhdGVJRCA9PiAkUGFyYW17VmFsdWV9ICk7CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfSBpZiAhZGVmaW5lZCAkU3RhdGVOYW1lOwoKICAgIHJldHVybiAkU3RhdGVOYW1lOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/Text.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6VGV4dDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpUZXh0IC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCB4bWwgZnVuY3Rpb25zIG9mIHRleHQgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkWE1MVHlwZVRleHRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlRleHQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSB0ZXh0IGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVlID0+IDExLCAgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlTG9va3VwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSgpCgpjcmVhdGUgYSBhdHRyaWJ1dGUgYXJyYXkgZm9yIHRoZSBzdGF0cyBmcmFtZXdvcmsKCiAgICBteSAkQXR0cmlidXRlID0gJEJhY2tlbmRPYmplY3QtPlN0YXRzQXR0cmlidXRlQ3JlYXRlKAogICAgICAgIEtleSAgPT4gJ0tleTo6U3Via2V5JywKICAgICAgICBOYW1lID0+ICdOYW1lJywKICAgICAgICBJdGVtID0+ICRJdGVtUmVmLAogICAgKTsKCj1jdXQKCnN1YiBTdGF0c0F0dHJpYnV0ZUNyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgTmFtZSBJdGVtKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNyZWF0ZSBhdHRyaWJ1dGUKICAgIG15ICRBdHRyaWJ1dGUgPSBbCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRQYXJhbXtOYW1lfSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAxLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDEsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnSW5wdXRGaWVsZCcsCiAgICAgICAgfSwKICAgIF07CgogICAgcmV0dXJuICRBdHRyaWJ1dGU7Cn0KCj1oZWFkMiBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5FeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgRXhwb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGV4cG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5FeHBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBFeHBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgc2VhcmNoIHZhbHVlIGZvciBpbXBvcnQKCiAgICBteSAkQXJyYXlSZWYgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0U2VhcmNoVmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIEltcG9ydFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHZhbHVlIGZvciBpbXBvcnQKCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+SW1wb3J0VmFsdWVQcmVwYXJlKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgSW1wb3J0VmFsdWVQcmVwYXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIGlmICFkZWZpbmVkICRQYXJhbXtWYWx1ZX07CiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/TextArea.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6VGV4dEFyZWE7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6VGV4dEFyZWEgLSB4bWwgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIHhtbCBmdW5jdGlvbnMgb2YgdGV4dGFyZWEgb2JqZWN0cwoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkWE1MVHlwZVRleHRBcmVhQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpUZXh0QXJlYScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBWYWx1ZUxvb2t1cCgpCgpnZXQgdGhlIHRleHQgZGF0YSBvZiBhIHZlcnNpb24KCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVMb29rdXAoCiAgICAgICAgVmFsdWUgPT4gMTEsICAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgVmFsdWVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKPWhlYWQyIFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0dHJpYnV0ZSBhcnJheSBmb3IgdGhlIHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRBdHRyaWJ1dGUgPSAkQmFja2VuZE9iamVjdC0+U3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgS2V5ICA9PiAnS2V5OjpTdWJrZXknLAogICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRzQXR0cmlidXRlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBOYW1lIEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGF0dHJpYnV0ZQogICAgbXkgJEF0dHJpYnV0ZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgXTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZTsKfQoKPWhlYWQyIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgSW1wb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/TextLink.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlRleHRMaW5rOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyggS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlRleHQgKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKCk7CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/Type.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlR5cGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6VHlwZScsCik7Cgp1c2UgcGFyZW50ICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlhNTDo6VHlwZTo6QmFzZVNlbGVjdGFibGUnOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6WE1MOjpUeXBlOjpUeXBlIC0geG1sIGJhY2tlbmQgbW9kdWxlCgo9aGVhZDEgU1lOT1BTSVMKClhNTCBmdW5jdGlvbnMgZm9yIHR5cGUgb2JqZWN0cwoKPWhlYWQyIFZhbHVlTG9va3VwKCkKCmdldCB0aGUgeG1sIGRhdGEgb2YgYSB2ZXJzaW9uCgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPlZhbHVlTG9va3VwKAogICAgICAgIFZhbHVlID0+IDExLCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgVmFsdWVMb29rdXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJycgaWYgISRQYXJhbXtWYWx1ZX07CgogICAgbXkgJFR5cGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwogICAgbXkgJFR5cGVOYW1lICAgPSAkVHlwZU9iamVjdC0+VHlwZUxvb2t1cCggVHlwZUlEID0+ICRQYXJhbXtWYWx1ZX0gKTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9IGlmICFkZWZpbmVkICRUeXBlTmFtZTsKCiAgICByZXR1cm4gJFR5cGVOYW1lOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItem/XML/Type/User.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlVzZXI7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlVzZXIgLSB4bWwgYmFja2VuZCBtb2R1bGUKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIHhtbCBmdW5jdGlvbnMgb2YgdXNlciBvYmplY3RzCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICBteSAkWE1MVHlwZVVzZXJCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpYTUw6OlR5cGU6OlVzZXInKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgVmFsdWVMb29rdXAoKQoKZ2V0IHRoZSB4bWwgZGF0YSBvZiBhIHZlcnNpb24KCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVMb29rdXAoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAnJyBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgbXkgJVVzZXIgPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtWYWx1ZX0sCiAgICApOwoKICAgIGlmICglVXNlcikgewoKICAgICAgICBteSAkVXNlclZhbHVlID0gc3ByaW50ZiAnIiVzICVzIiA8JXM+JywKICAgICAgICAgICAgJFVzZXJ7VXNlckZpcnN0bmFtZX0sCiAgICAgICAgICAgICRVc2Vye1VzZXJMYXN0bmFtZX0sCiAgICAgICAgICAgICRVc2Vye1VzZXJFbWFpbH07CgogICAgICAgIHJldHVybiAkVXNlclZhbHVlOwogICAgfQoKICAgIHJldHVybiAkUGFyYW17VmFsdWV9OwoKfQoKPWhlYWQyIFN0YXRzQXR0cmlidXRlQ3JlYXRlKCkKCmNyZWF0ZSBhIGF0dHJpYnV0ZSBhcnJheSBmb3IgdGhlIHN0YXRzIGZyYW1ld29yawoKICAgIG15ICRBdHRyaWJ1dGUgPSAkQmFja2VuZE9iamVjdC0+U3RhdHNBdHRyaWJ1dGVDcmVhdGUoCiAgICAgICAgS2V5ICA9PiAnS2V5OjpTdWJrZXknLAogICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIFN0YXRzQXR0cmlidXRlQ3JlYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KEtleSBOYW1lIEl0ZW0pKSB7CgogICAgICAgIG5leHQgTkVFREVEIGlmIGRlZmluZWQgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY3JlYXRlIGF0dHJpYnV0ZQogICAgbXkgJEF0dHJpYnV0ZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICRQYXJhbXtLZXl9LAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdJbnB1dEZpZWxkJywKICAgICAgICB9LAogICAgXTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZTsKfQoKPWhlYWQyIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgpCgpwcmVwYXJlIHNlYXJjaCB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJEFycmF5UmVmID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFNlYXJjaFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBFeHBvcnRWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSB2YWx1ZSBmb3IgZXhwb3J0CgogICAgbXkgJFZhbHVlID0gJEJhY2tlbmRPYmplY3QtPkV4cG9ydFZhbHVlUHJlcGFyZSgKICAgICAgICBWYWx1ZSA9PiAxMSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIEV4cG9ydFZhbHVlUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17VmFsdWV9OwogICAgcmV0dXJuICRQYXJhbXtWYWx1ZX07Cn0KCj1oZWFkMiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoKQoKcHJlcGFyZSBzZWFyY2ggdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRBcnJheVJlZiA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRTZWFyY2hWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9Cgo9aGVhZDIgSW1wb3J0VmFsdWVQcmVwYXJlKCkKCnByZXBhcmUgdmFsdWUgZm9yIGltcG9ydAoKICAgIG15ICRWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5JbXBvcnRWYWx1ZVByZXBhcmUoCiAgICAgICAgVmFsdWUgPT4gMTEsICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBJbXBvcnRWYWx1ZVByZXBhcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkUGFyYW17VmFsdWV9Owp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItemCustomerCIs.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtQ3VzdG9tZXJDSXM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCik7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMgLSBJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzIGxpYgoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJcyBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCiAgICBEb24ndCB1c2UgdGhlIGNvbnN0cnVjdG9yIGRpcmVjdGx5LCB1c2UgdGhlIE9iamVjdE1hbmFnZXIgaW5zdGVhZDoKCiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBHZXRDdXN0b21lclVzZXJDSXMoKQoKU2VhcmNoZXMgZm9yIGFsbCBjdXN0b21lciB1c2VyIHNwZWNpZmljIGNvbmZpZyBpdGVtcwoKICAgIG15IEBDb25maWdJdGVtSURzID0gJElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNPYmplY3QtPkdldEN1c3RvbWVyVXNlckNJcygKICAgICAgICBDdXN0b21lclVzZXJJRCA9PiAkQ3VzdG9tZXJVc2VyTG9naW4sICAgICMgdGhlIEN1c3RvbWVyVXNlcklEIGlzIHRoZSBVc2VyTG9naW4KICAgICAgICBTZWFyY2hQYXJhbXMgICA9PiAoICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgc2VhcmNoIHBhcmFtZXRlcnMgZm9yIHRoZSBDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQgZnVuY3Rpb24KICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFsxLCAyLCAzXSwKICAgICAgICApCiAgICApOwoKUmV0dXJuczoKCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9IFsxLDIsMyw0XTsKCj1jdXQKCnN1YiBHZXRDdXN0b21lclVzZXJDSXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ3VzdG9tZXJVc2VySUQpKSB7CiAgICAgICAgbmV4dCBORUVERUQgaWYgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQYXJhbWV0ZXIgJyROZWVkZWQnIGlzIG5lZWRlZCBpbiBHZXRDdXN0b21lclVzZXJDSXMhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlQ29uZmlnSXRlbUtleSA9ICV7CiAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kJyktPnsnMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyJ30KICAgICAgICAgICAgLT57Q29uZmlnSXRlbUtleX0KICAgICAgICAgICAgfHwge30KICAgIH07CgogICAgbXkgJENsYXNzZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwogICAgbXkgJUNsYXNzZXMgPSByZXZlcnNlICV7JENsYXNzZXN9OwoKICAgIG15ICVTZWFyY2hQYXJhbXMgPSAleyAkUGFyYW17U2VhcmNoUGFyYW1zfSAvLyB7fSB9OwoKICAgIG15IEBDb25maWdJdGVtSURzOwogICAgRU5UUlk6CiAgICBmb3IgbXkgJENsYXNzICggc29ydCBrZXlzICVDb25maWdJdGVtS2V5ICkgewoKICAgICAgICAjIG9ubHkgdmFsaWQgY2xhc3NlcwogICAgICAgIG5leHQgRU5UUlkgaWYgISRDbGFzc2VzeyRDbGFzc307CgogICAgICAgIG15ICRBdHRyaWJ1dGUgPSAkQ29uZmlnSXRlbUtleXskQ2xhc3N9OwoKICAgICAgICBteSAkSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgID0+ICRDbGFzcywKICAgICAgICApOwogICAgICAgIG5leHQgRU5UUlkgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRJdGVtRGF0YVJlZik7CgogICAgICAgIG15ICRXaGF0ID0gJ1slXXsnIC4gIidWZXJzaW9uJyIgLiAnfVslXXsnIC4gIiciIC4gJEF0dHJpYnV0ZSAuICInIiAuICd9WyVdeycgLiAiJ0NvbnRlbnQnIiAuICd9JzsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKAogICAgICAgICAgICAlU2VhcmNoUGFyYW1zLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRJdGVtRGF0YVJlZi0+e0l0ZW1JRH0gXSwKICAgICAgICAgICAgV2hhdCAgICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRXaGF0ID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBMaW1pdCA9PiAxMDBfMDAwLAogICAgICAgICk7CiAgICAgICAgbmV4dCBFTlRSWSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRDb25maWdJdGVtSURzKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgQHskQ29uZmlnSXRlbUlEc307CiAgICB9CgogICAgcmV0dXJuIEBDb25maWdJdGVtSURzOwp9Cgo9aGVhZDIgR2V0Q3VzdG9tZXJDSXMoKQoKU2VhcmNoZXMgZm9yIGFsbCBjdXN0b21lciBzcGVjaWZpYyBjb25maWcgaXRlbXMKCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzT2JqZWN0LT5HZXRDdXN0b21lckNJcygKICAgICAgICBDdXN0b21lcklEICAgICA9PiAkQ3VzdG9tZXJJRCwKICAgICAgICBTZWFyY2hQYXJhbXMgICA9PiB7ICAgICAgICAgICAgICMgb3B0aW9uYWwgc2VhcmNoIHBhcmFtZXRlcnMgZm9yIHRoZSBDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQgZnVuY3Rpb24KICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFsyNSwgMjZdLAogICAgICAgIH0sCiAgICApOwoKUmV0dXJuczoKCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9IFsxLDIsMyw0XTsKCj1jdXQKCnN1YiBHZXRDdXN0b21lckNJcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhDdXN0b21lcklEKSkgewogICAgICAgIG5leHQgTkVFREVEIGlmICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGFyYW1ldGVyICckTmVlZGVkJyBpcyBuZWVkZWQgaW4gR2V0Q3VzdG9tZXJDSXMhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAlQ29uZmlnSXRlbUtleSA9ICV7CiAgICAgICAgJENvbmZpZ09iamVjdC0+R2V0KCdBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQnKS0+eycwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSd9CiAgICAgICAgICAgIC0+e0NvbmZpZ0l0ZW1LZXl9CiAgICAgICAgICAgIHx8IHt9CiAgICB9OwoKICAgIG15ICRDbGFzc2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKICAgIG15ICVDbGFzc2VzID0gcmV2ZXJzZSAleyRDbGFzc2VzfTsKCiAgICBteSAlU2VhcmNoUGFyYW1zID0gJXsgJFBhcmFte1NlYXJjaFBhcmFtc30gLy8ge30gfTsKCiAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgIEVOVFJZOgogICAgZm9yIG15ICRDbGFzcyAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbUtleSApIHsKCiAgICAgICAgIyBvbmx5IHZhbGlkIGNsYXNzZXMKICAgICAgICBuZXh0IEVOVFJZIGlmICEkQ2xhc3Nlc3skQ2xhc3N9OwoKICAgICAgICBteSAkQXR0cmlidXRlID0gJENvbmZpZ0l0ZW1LZXl7JENsYXNzfTsKCiAgICAgICAgbXkgJEl0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAkQ2xhc3MsCiAgICAgICAgKTsKICAgICAgICBuZXh0IEVOVFJZIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkSXRlbURhdGFSZWYpOwoKICAgICAgICBteSAkV2hhdCA9ICdbJV17JyAuICInVmVyc2lvbiciIC4gJ31bJV17JyAuICInIiAuICRBdHRyaWJ1dGUgLiAiJyIgLiAnfVslXXsnIC4gIidDb250ZW50JyIgLiAnfSc7CgogICAgICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgKICAgICAgICAgICAgJVNlYXJjaFBhcmFtcywKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkSXRlbURhdGFSZWYtPntJdGVtSUR9IF0sCiAgICAgICAgICAgIFdoYXQgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkV2hhdCA9PiAkUGFyYW17Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBMaW1pdCA9PiAxMDBfMDAwLAogICAgICAgICk7CgogICAgICAgIG5leHQgRU5UUlkgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkQ29uZmlnSXRlbUlEcyk7CgogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsIEB7JENvbmZpZ0l0ZW1JRHN9OwogICAgfQoKICAgIHJldHVybiBAQ29uZmlnSXRlbUlEczsKfQoKPWhlYWQyIEdldFBvc3NpYmxlQ3VzdG9tZXJDSXMoKQoKUmV0dXJucyBwb3NzaWJsZSBjdXN0b21lciBDSXMuCgogICAgbXkgQENvbmZpZ0l0ZW1zID0gJElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNPYmplY3QtPkdldFBvc3NpYmxlQ3VzdG9tZXJDSXMoCiAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gMTIzLAogICAgICAgIFRpY2tldElEICAgICAgID0+IDEyMywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBTZWFyY2hQYXJhbXMgICA9PiB7ICAgICAgICAgICAjIG9wdGlvbmFsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbMjUsIDI2XSwKICAgICAgICB9LAogICAgKTsKClJldHVybnM6CgogICAgbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgICAgIHsKICAgICAgICAgICAgJ0xpbmtlZCcgICAgICAgPT4gJzEnLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEJyA9PiAxMjM0NTYsCiAgICAgICAgICAgICdOYW1lJyAgICAgICAgID0+ICdDb21wdXRlciB4eXonLAogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgR2V0UG9zc2libGVDdXN0b21lckNJcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRMaW5rT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CiAgICBteSAkVGlja2V0T2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICBteSAkQ29uZmlnICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJcycpOwogICAgbXkgJFdpZGdldENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Jyk7CgogICAgbXkgJUN1c3RvbWVyU2VhcmNoUGFyYW1zOwogICAgbXkgJUN1c3RvbWVyQ29tcGFueVNlYXJjaFBhcmFtczsKCiAgICBDT05GSUdQQVJBTU5BTUU6CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtTmFtZSAocXcoQ3VzdG9tZXJDSURlcGxveW1lbnRTdGF0ZXMgQ3VzdG9tZXJDb21wYW55Q0lEZXBsb3ltZW50U3RhdGVzKSkgewogICAgICAgIG5leHQgQ09ORklHUEFSQU1OQU1FIGlmICFJc0FycmF5UmVmV2l0aERhdGEoICRXaWRnZXRDb25maWctPnskQ29uZmlnUGFyYW1OYW1lfSApOwoKICAgICAgICBteSBARGVwbFN0YXRlSURzOwoKICAgICAgICBJVEVNTkFNRToKICAgICAgICBmb3IgbXkgJEl0ZW1OYW1lICggc29ydCBAeyAkV2lkZ2V0Q29uZmlnLT57JENvbmZpZ1BhcmFtTmFtZX0gfSApIHsKICAgICAgICAgICAgbXkgJEl0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkSXRlbU5hbWUsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG5leHQgSVRFTU5BTUUgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRJdGVtRGF0YVJlZik7CiAgICAgICAgICAgIHB1c2ggQERlcGxTdGF0ZUlEcywgJEl0ZW1EYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkQ29uZmlnUGFyYW1OYW1lIGVxICdDdXN0b21lckNJRGVwbG95bWVudFN0YXRlcycgKSB7CiAgICAgICAgICAgICRDdXN0b21lclNlYXJjaFBhcmFtc3tTZWFyY2hQYXJhbXN9LT57RGVwbFN0YXRlSURzfSA9IFxARGVwbFN0YXRlSURzOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEN1c3RvbWVyQ29tcGFueVNlYXJjaFBhcmFtc3tTZWFyY2hQYXJhbXN9LT57RGVwbFN0YXRlSURzfSA9IFxARGVwbFN0YXRlSURzOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlTGlua0tleUxpc3Q7CgogICAgaWYgKCAkUGFyYW17VGlja2V0SUR9ICkgewogICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJFBhcmFte0N1c3RvbWVyVXNlcklEfSA9ICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9OwogICAgICAgICRQYXJhbXtDdXN0b21lcklEfSAgICAgPSAkVGlja2V0e0N1c3RvbWVySUR9OwoKICAgICAgICAlTGlua0tleUxpc3QgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICAgICAgICAgIE9iamVjdDEgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIEtleTEgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBTdGF0ZSAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIG15IEBDb25maWdJdGVtczsKICAgIHJldHVybiBAQ29uZmlnSXRlbXMgaWYgISggJFBhcmFte0N1c3RvbWVyVXNlcklEfSB8fCAkUGFyYW17Q3VzdG9tZXJJRH0gKTsKCiAgICBteSBAQ3VzdG9tZXJVc2VyQ29uZmlnSXRlbUlEczsKICAgIGlmICggJENvbmZpZy0+e0N1c3RvbWVyVXNlcn0gJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICBAQ3VzdG9tZXJVc2VyQ29uZmlnSXRlbUlEcyA9ICRTZWxmLT5HZXRDdXN0b21lclVzZXJDSXMoCiAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgIExpbWl0ICAgICAgICAgID0+ICRDb25maWctPntTZWFyY2hMaW1pdH0sCiAgICAgICAgICAgICVDdXN0b21lclNlYXJjaFBhcmFtcywKICAgICAgICApOwogICAgfQogICAgbXkgQEN1c3RvbWVyQ29uZmlnSXRlbUlEczsKICAgIGlmICggJENvbmZpZy0+e0N1c3RvbWVyQ29tcGFueX0gJiYgJFBhcmFte0N1c3RvbWVySUR9ICkgewogICAgICAgIEBDdXN0b21lckNvbmZpZ0l0ZW1JRHMgPSAkU2VsZi0+R2V0Q3VzdG9tZXJDSXMoCiAgICAgICAgICAgIEN1c3RvbWVySUQgPT4gJFBhcmFte0N1c3RvbWVySUR9LAogICAgICAgICAgICBMaW1pdCAgICAgID0+ICRDb25maWctPntTZWFyY2hMaW1pdH0sCiAgICAgICAgICAgICVDdXN0b21lckNvbXBhbnlTZWFyY2hQYXJhbXMsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSBAQ29uZmlnSXRlbUlEcyAgID0gKCBAQ3VzdG9tZXJVc2VyQ29uZmlnSXRlbUlEcywgQEN1c3RvbWVyQ29uZmlnSXRlbUlEcyApOwogICAgbXkgJVVuaXFDb25maWdJdGVtcyA9IG1hcCB7ICRfID0+ICRfIH0gQENvbmZpZ0l0ZW1JRHM7CiAgICBAQ29uZmlnSXRlbUlEcyA9IHNvcnQga2V5cyAlVW5pcUNvbmZpZ0l0ZW1zOwoKICAgIG15ICVNYXBwaW5nID0gJXsgJENvbmZpZy0+e01hcHBpbmd9IHx8IHt9IH07CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgbXkgJFZlcnNpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbXMsIHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkVmVyc2lvbi0+e05hbWV9LAogICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJFZlcnNpb24tPntOdW1iZXJ9LAogICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJFZlcnNpb24tPntDbGFzc30sCiAgICAgICAgICAgIEljb24gICAgICAgICA9PiAkTWFwcGluZ3sgJFZlcnNpb24tPntDbGFzc30gfSB8fCAnJywKICAgICAgICAgICAgTGlua2VkICAgICAgID0+ICRMaW5rS2V5TGlzdHskQ29uZmlnSXRlbUlEfSAgIHx8IDAsCiAgICAgICAgfTsKICAgIH0KCiAgICByZXR1cm4gQENvbmZpZ0l0ZW1zOwp9CjE7Cg==</File>
        <File Permission="660" Location="Kernel/System/ITSMConfigItemInvoker.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtSW52b2tlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55JywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlhNTCcsCik7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtSW52b2tlcgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKICAgIERvbid0IHVzZSB0aGUgY29uc3RydWN0b3IgZGlyZWN0bHksIHVzZSB0aGUgT2JqZWN0TWFuYWdlciBpbnN0ZWFkOgoKICAgIG15ICRJVFNNQ29uZmlnSXRlbUludm9rZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW1JbnZva2VyJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBHZXRDb25maWdJdGVtRGF0YSgpCgogICAgUmV0dXJucyBoYXNoIHdpdGggY29tcGxldGUgZGF0YSBvZiBjb25maWcgaXRlbSB3aXRoIGdpdmVuIElELgoKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRJVFNNQ29uZmlnSXRlbUludm9rZXJPYmplY3QtPkdldENvbmZpZ0l0ZW1EYXRhKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAyMSwKCiAgICAgICAgIyBPUgogICAgICAgIFZlcnNpb25JRCA9PiA1MiwKCiAgICAgICAgRXZlbnQgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsICMgb3B0aW9uYWw7IFdpbGwgaW5jbHVkZSBkYXRhIG9mIHByZXZpb3VzIHZlcnNpb24gZm9yIGNlcnRhaW4gZXZlbnRzLgogICAgKTsKCj1jdXQKCnN1YiBHZXRDb25maWdJdGVtRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBpZiAoCiAgICAgICAgKCAhZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAhZGVmaW5lZCAkUGFyYW17VmVyc2lvbklEfSApCiAgICAgICAgfHwgKCBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtSUR9ICYmIGRlZmluZWQgJFBhcmFte1ZlcnNpb25JRH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdFaXRoZXIgcGFyYW1ldGVyIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uIElEIGhhcyB0byBiZSBnaXZlbi4nLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDdXJyZW50Q29uZmlnSXRlbVZlcnNpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgVmVyc2lvbklEICAgID0+ICRQYXJhbXtWZXJzaW9uSUR9LAogICAgICAgIFhNTERhdGFHZXQgICA9PiAxLAogICAgKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEN1cnJlbnRDb25maWdJdGVtVmVyc2lvbik7CgogICAgbXkgJUNvbmZpZ0l0ZW1EYXRhOwogICAgJENvbmZpZ0l0ZW1EYXRhe1hNTERhdGF9IHx8PSB7fTsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRDdXJyZW50Q29uZmlnSXRlbVZlcnNpb24tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSApICkgewogICAgICAgICRTZWxmLT5fWE1MMkRhdGEoCiAgICAgICAgICAgIFJlc3VsdCAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhe1hNTERhdGF9LAogICAgICAgICAgICBEYXRhICAgICAgID0+ICRDdXJyZW50Q29uZmlnSXRlbVZlcnNpb24tPntYTUxEYXRhfS0+WzFdLT57VmVyc2lvbn0tPlsxXSwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkQ3VycmVudENvbmZpZ0l0ZW1WZXJzaW9uLT57WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgKTsKICAgIH0KCiAgICBmb3IgbXkgJEZpZWxkIChxdyhDb25maWdJdGVtSUQgTmFtZSBDbGFzc0lEIENsYXNzIERlZmluaXRpb25JRCBEZXBsU3RhdGVJRCBEZXBsU3RhdGUgSW5jaVN0YXRlSUQgSW5jaVN0YXRlKSkgewogICAgICAgICRDb25maWdJdGVtRGF0YXskRmllbGR9ID0gJEN1cnJlbnRDb25maWdJdGVtVmVyc2lvbi0+eyRGaWVsZH07CiAgICB9CgogICAgcmV0dXJuIFwlQ29uZmlnSXRlbURhdGEgaWYgIWRlZmluZWQgJFBhcmFte0V2ZW50fTsKCiAgICBteSAlRXZlbnRzVG9JbmNsdWRlUHJldmlvdXNWZXJzaW9uID0gKAogICAgICAgIERlcGxveW1lbnRTdGF0ZVVwZGF0ZSA9PiAxLAogICAgICAgIEluY2lkZW50U3RhdGVVcGRhdGUgICA9PiAxLAogICAgICAgIE5hbWVVcGRhdGUgICAgICAgICAgICA9PiAxLAogICAgICAgIFZhbHVlVXBkYXRlICAgICAgICAgICA9PiAxLAogICAgICAgIFZlcnNpb25DcmVhdGUgICAgICAgICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gXCVDb25maWdJdGVtRGF0YSBpZiAhJEV2ZW50c1RvSW5jbHVkZVByZXZpb3VzVmVyc2lvbnsgJFBhcmFte0V2ZW50fSB9OwoKICAgIG15ICRDb25maWdJdGVtVmVyc2lvbnMgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKICAgIHJldHVybiBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRDb25maWdJdGVtVmVyc2lvbnMpOwogICAgcmV0dXJuIGlmIEB7JENvbmZpZ0l0ZW1WZXJzaW9uc30gPCAyOwoKICAgIG15ICRQcmV2aW91c1ZlcnNpb25JRCA9ICRDb25maWdJdGVtVmVyc2lvbnMtPlstMl07CgogICAgJENvbmZpZ0l0ZW1EYXRhe1ByZXZpb3VzQ29uZmlnSXRlbVZlcnNpb259ID0gJFNlbGYtPkdldENvbmZpZ0l0ZW1EYXRhKAogICAgICAgIFZlcnNpb25JRCA9PiAkUHJldmlvdXNWZXJzaW9uSUQsCiAgICApOwoKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnRGVwbG95bWVudFN0YXRlVXBkYXRlJyApIHsKICAgICAgICAkQ29uZmlnSXRlbURhdGF7RGVwbG95bWVudFN0YXRlVXBkYXRlfSA9IHsKICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhe1ByZXZpb3VzQ29uZmlnSXRlbVZlcnNpb259LT57RGVwbFN0YXRlSUR9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29uZmlnSXRlbURhdGF7UHJldmlvdXNDb25maWdJdGVtVmVyc2lvbn0tPntEZXBsU3RhdGV9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBOZXcgPT4gewogICAgICAgICAgICAgICAgSUQgICAgICA9PiAkQ29uZmlnSXRlbURhdGF7RGVwbFN0YXRlSUR9LAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29uZmlnSXRlbURhdGF7RGVwbFN0YXRlfSwKICAgICAgICAgICAgfSwKICAgICAgICB9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICdJbmNpZGVudFN0YXRlVXBkYXRlJyApIHsKICAgICAgICAkQ29uZmlnSXRlbURhdGF7SW5jaWRlbnRTdGF0ZVVwZGF0ZX0gPSB7CiAgICAgICAgICAgIE9sZCA9PiB7CiAgICAgICAgICAgICAgICBJRCAgICAgID0+ICRDb25maWdJdGVtRGF0YXtQcmV2aW91c0NvbmZpZ0l0ZW1WZXJzaW9ufS0+e0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbmZpZ0l0ZW1EYXRhe1ByZXZpb3VzQ29uZmlnSXRlbVZlcnNpb259LT57SW5jaVN0YXRlfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhe0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbmZpZ0l0ZW1EYXRhe0luY2lTdGF0ZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0V2ZW50fSBlcSAnTmFtZVVwZGF0ZScgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1EYXRhe05hbWVVcGRhdGV9ID0gewogICAgICAgICAgICBPbGQgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ29uZmlnSXRlbURhdGF7UHJldmlvdXNDb25maWdJdGVtVmVyc2lvbn0tPntOYW1lfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJENvbmZpZ0l0ZW1EYXRhe05hbWV9LAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtFdmVudH0gZXEgJ1ZhbHVlVXBkYXRlJyApIHsKICAgICAgICBteSAkQ2hhbmdlZENvbmZpZ0l0ZW1WYWx1ZXMgPSAkU2VsZi0+X0ZpbmRDaGFuZ2VkQ29uZmlnSXRlbVZhbHVlcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgICRDb25maWdJdGVtRGF0YXtWYWx1ZVVwZGF0ZX0gPSAkQ2hhbmdlZENvbmZpZ0l0ZW1WYWx1ZXMgLy8ge307CiAgICB9CgogICAgcmV0dXJuIFwlQ29uZmlnSXRlbURhdGE7Cn0KCj1oZWFkMiBfWE1MMkRhdGEoKQoKICAgIFR1cm5zIFhNTCBpbnRvIFBlcmwgc3RydWN0dXJlLgoKICAgIG15ICRTdWNjZXNzID0gJElUU01Db25maWdJdGVtSW52b2tlck9iamVjdC0+X1hNTDJEYXRhKAogICAgICAgIFBhcmVudCAgICAgICAgICA9PiAkSWRlbnRpZmllciwgICAgICAgICAgIyBvcHRpb25hbDogY29udGFpbnMgdGhlIGZpZWxkIG5hbWUgb2YgdGhlIHBhcmVudCBYTUwKICAgICAgICBSZXN1bHQgICAgICAgICAgPT4gJFJlc3VsdCwgICAgICAgICAgICAgICMgY29udGFpbnMgdGhlIHJlZmVyZW5jZSB0byB0aGUgcmVzdWx0IGhhc2gKICAgICAgICBEYXRhICAgICAgICAgICAgPT4gJERhdGF7JEZpZWxkfS0+WzFdLCAgICMgY29udGFpbnMgdGhlIFhNTCBoYXNoIHRvIGJlIHBhcnNlZAogICAgKTsKCiAgICBSZXR1cm5zIHRydWUgdmFsdWUgb24gc3VjY2Vzcy4KCj1jdXQKCnN1YiBfWE1MMkRhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFBhcmFte1Jlc3VsdH07CiAgICBteSAkUGFyZW50ID0gJFBhcmFte1BhcmVudH0gfHwgJyc7CiAgICBteSAlRGF0YSAgID0gJXsgJFBhcmFte0RhdGF9IHx8IHt9IH07CgogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkICggc29ydCBrZXlzICVEYXRhICkgewogICAgICAgIG5leHQgRklFTEQgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJERhdGF7JEZpZWxkfSApOwoKICAgICAgICBteSAkRmllbGREZWZpbml0aW9uSW5kZXggPSAwOwogICAgICAgIG15ICRGaWVsZFR5cGU7CgogICAgICAgIEZJRUxEREVGSU5JVElPTjoKICAgICAgICBmb3IgbXkgJEZpZWxkRGVmaW5pdGlvbiAoIEB7ICRQYXJhbXtEZWZpbml0aW9ufSAvLyBbXSB9ICkgewogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEZpZWxkRGVmaW5pdGlvbi0+e0tleX0gJiYgJEZpZWxkRGVmaW5pdGlvbi0+e0tleX0gZXEgJEZpZWxkICkgewogICAgICAgICAgICAgICAgJEZpZWxkVHlwZSA9ICRGaWVsZERlZmluaXRpb24tPntJbnB1dH0tPntUeXBlfTsKICAgICAgICAgICAgICAgIGxhc3QgRklFTERERUZJTklUSU9OOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRmllbGREZWZpbml0aW9uSW5kZXgrKzsKICAgICAgICB9CgogICAgICAgICRSZXN1bHQtPnskRmllbGR9ID0gW107CgogICAgICAgIGZvciBteSAkSW5kZXggKCAxIC4uICQjeyAkRGF0YXskRmllbGR9IH0gKSB7CiAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREYXRheyRGaWVsZH0tPlskSW5kZXhdLT57Q29udGVudH07CgogICAgICAgICAgICBteSAkQ3VycmVudFJlc3VsdCA9IHt9OwoKICAgICAgICAgICAgbXkgJERlZmluaXRpb24gPSAkUGFyYW17RGVmaW5pdGlvbn0tPlskRmllbGREZWZpbml0aW9uSW5kZXhdLT57U3VifSAvLyBbXTsKCiAgICAgICAgICAgICRTZWxmLT5fWE1MMkRhdGEoCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBQYXJlbnQgICAgID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgIFJlc3VsdCAgICAgPT4gJEN1cnJlbnRSZXN1bHQsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRGaWVsZH0tPlskSW5kZXhdLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkVmFsdWUgKSB7CiAgICAgICAgICAgICAgICAkQ3VycmVudFJlc3VsdC0+e0NvbnRlbnR9ID0gJFZhbHVlOwoKICAgICAgICAgICAgICAgIG15ICRSZWFkYWJsZVZhbHVlID0gJFNlbGYtPl9HZXRSZWFkYWJsZVZhbHVlKAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlID0+ICRGaWVsZFR5cGUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggJFJlYWRhYmxlVmFsdWUgbmUgJFZhbHVlICkgewogICAgICAgICAgICAgICAgICAgICRDdXJyZW50UmVzdWx0LT57UmVhZGFibGVWYWx1ZX0gPSAkUmVhZGFibGVWYWx1ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoIGtleXMgJXskQ3VycmVudFJlc3VsdH0gKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAeyAkUmVzdWx0LT57JEZpZWxkfSB9LCAkQ3VycmVudFJlc3VsdDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9HZXRSZWFkYWJsZVZhbHVlKCkKCiAgICBNYXBzIHZhbHVlIG9mIGNlcnRhaW4gZmllbGQgdHlwZXMgKElEKSB0byBhIHZhbHVlIHRoYXQgY2FuIGJlIHJlYWQgKG5hbWUsIHRleHQsIGV0Yy4pLgoKICAgIG15ICRSZWFkYWJsZVZhbHVlID0gJElUU01Db25maWdJdGVtSW52b2tlck9iamVjdC0+X0dldFJlYWRhYmxlVmFsdWUoCiAgICAgICAgVmFsdWUgICAgID0+IDQsCiAgICAgICAgRmllbGRUeXBlID0+ICdHZW5lcmFsQ2F0YWxvZycsCiAgICApOwoKICAgIFJldHVybnMgdGhlIHJlYWRhYmxlIHZhbHVlIGRlcGVuZGluZyBvbiB0aGUgZmllbGQgdHlwZSBvciB0aGUgb3JpZ2luYWwgdmFsdWUKICAgIGlmIG5vIHJlYWRhYmxlIHZhbHVlIGNvdWxkIGJlIGRldGVybWluZWQuCgo9Y3V0CgpzdWIgX0dldFJlYWRhYmxlVmFsdWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CiAgICBteSAkQ3VzdG9tZXJDb21wYW55T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpOwogICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiAkVmFsdWUgaWYgIWRlZmluZWQgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAkVmFsdWUgaWYgIWxlbmd0aCAkUGFyYW17VmFsdWV9OwoKICAgIHJldHVybiAkVmFsdWUgaWYgIWRlZmluZWQgJFBhcmFte0ZpZWxkVHlwZX07CiAgICByZXR1cm4gJFZhbHVlIGlmICFsZW5ndGggJFBhcmFte0ZpZWxkVHlwZX07CgogICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkVmFsdWU7CgogICAgaWYgKCAkUGFyYW17RmllbGRUeXBlfSBlcSAnR2VuZXJhbENhdGFsb2cnICkgewogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ0l0ZW1EYXRhID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJFZhbHVlLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRWYWx1ZSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEdlbmVyYWxDYXRhbG9nSXRlbURhdGEpOwogICAgICAgIHJldHVybiAkVmFsdWUgaWYgIWRlZmluZWQgJEdlbmVyYWxDYXRhbG9nSXRlbURhdGEtPntOYW1lfTsKCiAgICAgICAgJFJlYWRhYmxlVmFsdWUgPSAkR2VuZXJhbENhdGFsb2dJdGVtRGF0YS0+e05hbWV9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RmllbGRUeXBlfSBlcSAnQ3VzdG9tZXJDb21wYW55JyApIHsKICAgICAgICBteSAlQ3VzdG9tZXJDb21wYW55ID0gJEN1c3RvbWVyQ29tcGFueU9iamVjdC0+Q3VzdG9tZXJDb21wYW55R2V0KAogICAgICAgICAgICBDdXN0b21lcklEID0+ICRWYWx1ZSwKICAgICAgICApOwogICAgICAgIHJldHVybiAkVmFsdWUgaWYgISVDdXN0b21lckNvbXBhbnk7CgogICAgICAgIGRlbGV0ZSAkQ3VzdG9tZXJDb21wYW55e0NvbmZpZ307CiAgICAgICAgZGVsZXRlICRDdXN0b21lckNvbXBhbnl7Q29tcGFueUNvbmZpZ307CgogICAgICAgICRSZWFkYWJsZVZhbHVlID0gXCVDdXN0b21lckNvbXBhbnk7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtGaWVsZFR5cGV9IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgbXkgJUN1c3RvbWVyVXNlciA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgIFVzZXIgPT4gJFZhbHVlLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuICRWYWx1ZSBpZiAhJUN1c3RvbWVyVXNlcjsKCiAgICAgICAgZGVsZXRlICRDdXN0b21lclVzZXJ7Q29uZmlnfTsKICAgICAgICBkZWxldGUgJEN1c3RvbWVyVXNlcntDb21wYW55Q29uZmlnfTsKCiAgICAgICAgJFJlYWRhYmxlVmFsdWUgPSBcJUN1c3RvbWVyVXNlcjsKICAgIH0KCiAgICByZXR1cm4gJFJlYWRhYmxlVmFsdWU7Cn0KCj1oZWFkMiBfRmluZENoYW5nZWRDb25maWdJdGVtVmFsdWVzKCkKClRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gaXMgYmFzZWQgb24gS2VybmVsOjpTeXN0ZW06OklUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDo6X0ZpbmRDaGFuZ2VkWE1MVmFsdWVzKCkKCk9yaWdpbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IC0gZjVhZmU5NzRkMzAwMDU2ZTM2OGEyNDIzNzk2MmQxMGJmMjVmMWNkMCAtIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vVmVyc2lvbi5wbQpDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMSBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwoKQ29tcGFyZXMgWE1MIGRhdGEgb2YgY3VycmVudCBjb25maWcgaXRlbSB2ZXJzaW9uIHdpdGggdGhlIHByZXZpb3VzIG9uZSAoaWYgb25lIGV4aXN0cykuCgogICAgbXkgJENoYW5nZWRDb25maWdJdGVtVmFsdWVzID0gJElUU01Db25maWdJdGVtSW52b2tlck9iamVjdC0+X0ZpbmRDaGFuZ2VkQ29uZmlnSXRlbVZhbHVlcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgKTsKClJldHVybnM6CgogICAgbXkgJENoYW5nZWRDb25maWdJdGVtVmFsdWVzID0gewogICAgICAgICdOSUM6OjI6OklQb3ZlckRIQ1A6OjEnID0+IHsKICAgICAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgPT4gJzM4JywKICAgICAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgPT4gJ05vJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH07Cgo9Y3V0CgpzdWIgX0ZpbmRDaGFuZ2VkQ29uZmlnSXRlbVZhbHVlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMb2dPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRYTUxPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlhNTCcpOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQpKSB7CiAgICAgICAgbmV4dCBORUVERUQgaWYgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkVmVyc2lvbnMgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgIUB7JFZlcnNpb25zfTsKICAgIHJldHVybiBpZiBAeyRWZXJzaW9uc30gPCAyOwoKICAgIG15ICRQcmV2aW91c1ZlcnNpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBWZXJzaW9uSUQgPT4gJFZlcnNpb25zLT5bLTJdLAogICAgKTsKICAgIHJldHVybiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJFByZXZpb3VzVmVyc2lvbik7CgogICAgbXkgJEN1cnJlbnRWZXJzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9ucy0+Wy0xXSwKICAgICk7CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRDdXJyZW50VmVyc2lvbik7CgogICAgbXkgJEN1cnJlbnRYTUxEYXRhICA9ICRDdXJyZW50VmVyc2lvbi0+e1hNTERhdGF9OwogICAgbXkgJFByZXZpb3VzWE1MRGF0YSA9ICRQcmV2aW91c1ZlcnNpb24tPntYTUxEYXRhfTsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDdXJyZW50VmVyc2lvbi0+e1hNTERlZmluaXRpb259OwoKICAgICMgR2V0IGFsbCB0YWcga2V5cyBpbiBjdXJyZW50IGFuZCBwcmV2aW91cyBYTUwgZGF0YS4KICAgICMgVXNlIGEgc2lkZSBlZmZlY3Qgb2YgWE1MSGFzaDJEKCkgd2hpY2ggYWRkcyB0aGUgdGFnIGtleXMgdG8gdGhlIHBhc3NlZCBpbiBkYXRhIHN0cnVjdHVyZS4KICAgICRYTUxPYmplY3QtPlhNTEhhc2gyRCggWE1MSGFzaCA9PiAkQ3VycmVudFhNTERhdGEgKTsKICAgIG15IEBUYWdLZXlzID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9HcmFiVGFnS2V5cygKICAgICAgICBEYXRhID0+IFsKICAgICAgICAgICAgJFByZXZpb3VzWE1MRGF0YSwKICAgICAgICAgICAgJEN1cnJlbnRYTUxEYXRhLAogICAgICAgIF0sCiAgICApOwoKICAgIG15ICVVbmlxdWVUYWdLZXlzID0gbWFwIHsgJF8gPT4gMSB9IEBUYWdLZXlzOwoKICAgIG15ICVDaGFuZ2VkQ29uZmlnSXRlbVZhbHVlczsKICAgIG15ICVTdXBwcmVzc1ZlcnNpb25BZGQ7CgogICAgVEFHS0VZOgogICAgZm9yIG15ICRUYWdLZXkgKCBzb3J0IGtleXMgJVVuaXF1ZVRhZ0tleXMgKSB7CiAgICAgICAgbXkgJEN1cnJlbnRDb250ZW50ICA9IGV2YWwgJyRDdXJyZW50WE1MRGF0YS0+JyAuICRUYWdLZXkgLiAnLT57Q29udGVudH0nICB8fCAnJzsgICAgIyMgbm8gY3JpdGljCiAgICAgICAgbXkgJFByZXZpb3VzQ29udGVudCA9IGV2YWwgJyRQcmV2aW91c1hNTERhdGEtPicgLiAkVGFnS2V5IC4gJy0+e0NvbnRlbnR9JyB8fCAnJzsgICAgIyMgbm8gY3JpdGljCgogICAgICAgIG5leHQgVEFHS0VZIGlmICRDdXJyZW50Q29udGVudCBlcSAkUHJldmlvdXNDb250ZW50OwoKICAgICAgICAjIFJlbW92ZSBsZWFkaW5nICdWZXJzaW9uJyBrZXkuCiAgICAgICAgKCBteSAkSGFzaEtleSA9ICRUYWdLZXkgKSA9fiBze1xBXFtcZCtcXVx7J1ZlcnNpb24nXH1cW1xkK1xdfXt9OwoKICAgICAgICAjIFJlbW92ZSB7Jyd9IGFyb3VuZCBrZXlzLgogICAgICAgICRIYXNoS2V5ID1+IHN7KFx7J3wnXH0pfXt9ZzsKCiAgICAgICAgIyBTdWJzdGl0dXRlIFsxXSAoaW5kZXgpIHdpdGggOjoxOjoKICAgICAgICAkSGFzaEtleSA9fiBze1xbKFxkKylcXX17OjokMTo6fWc7CgogICAgICAgICMgUmVtb3ZlIHRyYWlsaW5nIDo6CiAgICAgICAgJEhhc2hLZXkgPX4gc3s6Olx6fXt9OwoKICAgICAgICAkQ2hhbmdlZENvbmZpZ0l0ZW1WYWx1ZXN7JEhhc2hLZXl9ID0gewogICAgICAgICAgICBPbGQgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkUHJldmlvdXNDb250ZW50LAogICAgICAgICAgICB9LAogICAgICAgICAgICBOZXcgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAkQ3VycmVudENvbnRlbnQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKCiAgICAgICAgIyBDaGVjayBmb3IgZ2VuZXJhbCBjYXRhbG9nIGVudHJ5IGFuZCBhZGQgaXRzIG5hbWUuCiAgICAgICAgKCBteSAkQXR0cmlidXRlUGF0aCA9ICRIYXNoS2V5ICkgPX4gc3s6OlxkK317fWc7CiAgICAgICAgbmV4dCBUQUdLRVkgaWYgIWRlZmluZWQgJEF0dHJpYnV0ZVBhdGg7CiAgICAgICAgbmV4dCBUQUdLRVkgaWYgIWxlbmd0aCAkQXR0cmlidXRlUGF0aDsKCiAgICAgICAgbXkgJEF0dHJpYnV0ZUluZm8gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkF0dHJpYnV0ZUluZm8oCiAgICAgICAgICAgIEF0dHJpYnV0ZVBhdGggPT4gJEF0dHJpYnV0ZVBhdGgsCiAgICAgICAgICAgIERlZmluaXRpb24gICAgPT4gJERlZmluaXRpb24sCiAgICAgICAgKTsKICAgICAgICBuZXh0IFRBR0tFWSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEF0dHJpYnV0ZUluZm8pOwoKICAgICAgICBteSAkUHJldmlvdXNSZWFkYWJsZVZhbHVlID0gJFNlbGYtPl9HZXRSZWFkYWJsZVZhbHVlKAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFByZXZpb3VzQ29udGVudCwKICAgICAgICAgICAgRmllbGRUeXBlID0+ICRBdHRyaWJ1dGVJbmZvLT57SW5wdXR9LT57VHlwZX0gLy8gJycsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEN1cnJlbnRSZWFkYWJsZVZhbHVlID0gJFNlbGYtPl9HZXRSZWFkYWJsZVZhbHVlKAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJEN1cnJlbnRDb250ZW50LAogICAgICAgICAgICBGaWVsZFR5cGUgPT4gJEF0dHJpYnV0ZUluZm8tPntJbnB1dH0tPntUeXBlfSAvLyAnJywKICAgICAgICApOwoKICAgICAgICBpZiAoICRQcmV2aW91c1JlYWRhYmxlVmFsdWUgbmUgJFByZXZpb3VzQ29udGVudCApIHsKICAgICAgICAgICAgJENoYW5nZWRDb25maWdJdGVtVmFsdWVzeyRIYXNoS2V5fS0+e09sZH0tPntSZWFkYWJsZVZhbHVlfSA9ICRQcmV2aW91c1JlYWRhYmxlVmFsdWU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDdXJyZW50UmVhZGFibGVWYWx1ZSBuZSAkQ3VycmVudENvbnRlbnQgKSB7CiAgICAgICAgICAgICRDaGFuZ2VkQ29uZmlnSXRlbVZhbHVlc3skSGFzaEtleX0tPntOZXd9LT57UmVhZGFibGVWYWx1ZX0gPSAkQ3VycmVudFJlYWRhYmxlVmFsdWU7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJUNoYW5nZWRDb25maWdJdGVtVmFsdWVzOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/LinkObject/ITSMConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0OjpJVFNNQ29uZmlnSXRlbSAtIExpbmtPYmplY3QgbW9kdWxlIGZvciBJVFNNQ29uZmlnSXRlbQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0LiBEbyBub3QgdXNlIGl0IGRpcmVjdGx5LCBpbnN0ZWFkIHVzZToKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRMaW5rT2JqZWN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdDo6SVRTTUNvbmZpZ0l0ZW0nKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgTGlua0xpc3RXaXRoRGF0YSgpCgpmaWxsIHVwIHRoZSBsaW5rIGxpc3Qgd2l0aCBkYXRhCgogICAgJFN1Y2Nlc3MgPSAkTGlua09iamVjdEJhY2tlbmQtPkxpbmtMaXN0V2l0aERhdGEoCiAgICAgICAgTGlua0xpc3QgPT4gJEhhc2hSZWYsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0xpc3RXaXRoRGF0YSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhMaW5rTGlzdCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgbGluayBsaXN0CiAgICBpZiAoIHJlZiAkUGFyYW17TGlua0xpc3R9IG5lICdIQVNIJyApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0xpbmtMaXN0IG11c3QgYmUgYSBoYXNoIHJlZmVyZW5jZSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJXsgJFBhcmFte0xpbmtMaXN0fSB9ICkgewoKICAgICAgICBmb3IgbXkgJERpcmVjdGlvbiAoIHNvcnQga2V5cyAleyAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfSB9ICkgewoKICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyAkUGFyYW17TGlua0xpc3R9LT57JExpbmtUeXBlfS0+eyREaXJlY3Rpb259IH0gKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgbGFzdCB2ZXJzaW9uIGRhdGEKICAgICAgICAgICAgICAgIG15ICRWZXJzaW9uRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIFhNTERhdGFHZXQgICA9PiAwLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyByZW1vdmUgaWQgZnJvbSBoYXNoIGlmIGNvbmZpZyBpdGVtIGNhbiBub3QgZ2V0CiAgICAgICAgICAgICAgICBpZiAoICEkVmVyc2lvbkRhdGEgfHwgcmVmICRWZXJzaW9uRGF0YSBuZSAnSEFTSCcgfHwgISV7JFZlcnNpb25EYXRhfSApIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufS0+eyRDb25maWdJdGVtSUR9OwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYWRkIHZlcnNpb24gZGF0YQogICAgICAgICAgICAgICAgJFBhcmFte0xpbmtMaXN0fS0+eyRMaW5rVHlwZX0tPnskRGlyZWN0aW9ufS0+eyRDb25maWdJdGVtSUR9ID0gJFZlcnNpb25EYXRhOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgT2JqZWN0UGVybWlzc2lvbigpCgpjaGVja3MgcmVhZCBwZXJtaXNzaW9uIGZvciBhIGdpdmVuIG9iamVjdCBhbmQgVXNlcklELgoKICAgICRQZXJtaXNzaW9uID0gJExpbmtPYmplY3QtPk9iamVjdFBlcm1pc3Npb24oCiAgICAgICAgT2JqZWN0ICA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0UGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhPYmplY3QgS2V5IFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9mIGNvbmZpZ2l0ZW0gem9vbSBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtWm9vbScpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRBY2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+UGVybWlzc2lvbigKICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgIEl0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgVHlwZSAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgKTsKCiAgICByZXR1cm4gJEFjY2VzczsKfQoKPWhlYWQyIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucwoKUmV0dXJuOgoKICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gIkNvbmZpZ0l0ZW0jIDEyMzQ0NTUiLAogICAgICAgIExvbmcgICA9PiAiQ29uZmlnSXRlbSMgMTIzNDQ1NTogVGhlIENvbmZpZyBJdGVtIFRpdGxlIiwKICAgICk7CgogICAgJURlc2NyaXB0aW9uID0gJExpbmtPYmplY3QtPk9iamVjdERlc2NyaXB0aW9uR2V0KAogICAgICAgIEtleSAgICAgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGVzY3JpcHRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoT2JqZWN0IEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGRlc2NyaXB0aW9uCiAgICBteSAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICdDb25maWdJdGVtJywKICAgICAgICBMb25nICAgPT4gJ0NvbmZpZ0l0ZW0nLAogICAgKTsKCiAgICByZXR1cm4gJURlc2NyaXB0aW9uIGlmICRQYXJhbXtNb2RlfSAmJiAkUGFyYW17TW9kZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgIyBnZXQgbGFzdCB2ZXJzaW9uIGRhdGEKICAgIG15ICRWZXJzaW9uRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMCwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiBpZiAhJFZlcnNpb25EYXRhOwogICAgcmV0dXJuIGlmIHJlZiAkVmVyc2lvbkRhdGEgbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmICEleyRWZXJzaW9uRGF0YX07CgogICAgIyBjcmVhdGUgZGVzY3JpcHRpb24KICAgICVEZXNjcmlwdGlvbiA9ICgKICAgICAgICBOb3JtYWwgPT4gIkNvbmZpZ0l0ZW0jICRWZXJzaW9uRGF0YS0+e051bWJlcn0iLAogICAgICAgIExvbmcgICA9PiAiQ29uZmlnSXRlbSMgJFZlcnNpb25EYXRhLT57TnVtYmVyfTogJFZlcnNpb25EYXRhLT57TmFtZX0iLAogICAgKTsKCiAgICByZXR1cm4gJURlc2NyaXB0aW9uOwp9Cgo9aGVhZDIgT2JqZWN0U2VhcmNoKCkKCnJldHVybiBhIGhhc2ggbGlzdCBvZiB0aGUgc2VhcmNoIHJlc3VsdHMKClJldHVybjoKCiAgICAkU2VhcmNoTGlzdCA9IHsKICAgICAgICBDPE5PVExJTktFRD4gPT4gewogICAgICAgICAgICBTb3VyY2UgPT4gewogICAgICAgICAgICAgICAgMTIgID0+ICREYXRhT2ZJdGVtMTIsCiAgICAgICAgICAgICAgICAyMTIgPT4gJERhdGFPZkl0ZW0yMTIsCiAgICAgICAgICAgICAgICAzMzIgPT4gJERhdGFPZkl0ZW0zMzIsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH07CgogICAgJFNlYXJjaExpc3QgPSAkTGlua09iamVjdEJhY2tlbmQtPk9iamVjdFNlYXJjaCgKICAgICAgICBTdWJPYmplY3QgICAgPT4gJzI1JywgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFNlYXJjaFBhcmFtcyA9PiAkSGFzaFJlZiwgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdFNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgVXNlcklEIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCBwYXJhbXMKICAgICRQYXJhbXtTZWFyY2hQYXJhbXN9IHx8PSB7fTsKCiAgICAjIHNldCBmb2N1cwogICAgbXkgJVNlYXJjaDsKICAgIGZvciBteSAkRWxlbWVudCAocXcoTnVtYmVyIE5hbWUpKSB7CiAgICAgICAgaWYgKCAkUGFyYW17U2VhcmNoUGFyYW1zfS0+eyRFbGVtZW50fSApIHsKICAgICAgICAgICAgJFNlYXJjaHskRWxlbWVudH0gPSAnKicgLiAkUGFyYW17U2VhcmNoUGFyYW1zfS0+eyRFbGVtZW50fSAuICcqJzsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAhJFBhcmFte1N1Yk9iamVjdH0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBjb25maWcgd2l0aCB0aGUgZGVmYXVsdCBzdWJvYmplY3RzCiAgICAgICAgbXkgJERlZmF1bHRTdWJvYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0xpbmtPYmplY3Q6OkRlZmF1bHRTdWJPYmplY3QnKSB8fCB7fTsKCiAgICAgICAgIyBleHRyYWN0IGRlZmF1bHQgY2xhc3MgbmFtZQogICAgICAgIG15ICREZWZhdWx0Q2xhc3MgPSAkRGVmYXVsdFN1Ym9iamVjdC0+e0lUU01Db25maWdJdGVtfSB8fCAnJzsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIGlmICEkQ2xhc3NMaXN0OwogICAgICAgIHJldHVybiBpZiByZWYgJENsYXNzTGlzdCBuZSAnSEFTSCc7CgogICAgICAgICMgbG9va3VwIHRoZSBjbGFzcyBpZAogICAgICAgIG15ICVDbGFzc0xpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwogICAgICAgICRQYXJhbXtTdWJPYmplY3R9ID0gJENsYXNzTGlzdFJldmVyc2V7JERlZmF1bHRDbGFzc30gfHwgJyc7CiAgICB9CgogICAgcmV0dXJuIGlmICEkUGFyYW17U3ViT2JqZWN0fTsKCiAgICAjIHNlYXJjaCB0aGUgY29uZmlnIGl0ZW1zCiAgICBteSAkQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoCiAgICAgICAgJXsgJFBhcmFte1NlYXJjaFBhcmFtc30gfSwKICAgICAgICAlU2VhcmNoLAogICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRQYXJhbXtTdWJPYmplY3R9IF0sCiAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDAsCiAgICAgICAgVXNpbmdXaWxkY2FyZHMgICAgICAgID0+IDEsCiAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgID0+IFsnVXAnXSwKICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgPT4gNTAsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICBteSAlU2VhcmNoTGlzdDsKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CgogICAgICAgICMgZ2V0IGxhc3QgdmVyc2lvbiBkYXRhCiAgICAgICAgbXkgJFZlcnNpb25EYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlZlcnNpb25HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkVmVyc2lvbkRhdGE7CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgcmVmICRWZXJzaW9uRGF0YSBuZSAnSEFTSCc7CiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISV7JFZlcnNpb25EYXRhfTsKCiAgICAgICAgIyBhZGQgdmVyc2lvbiBkYXRhCiAgICAgICAgJFNlYXJjaExpc3R7Tk9UTElOS0VEfS0+e1NvdXJjZX0tPnskQ29uZmlnSXRlbUlEfSA9ICRWZXJzaW9uRGF0YTsKICAgIH0KCiAgICByZXR1cm4gXCVTZWFyY2hMaXN0Owp9Cgo9aGVhZDIgTGlua0FkZFByZSgpCgpsaW5rIGFkZCBwcmUgZXZlbnQgbW9kdWxlCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0FkZFByZSgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICBvcgoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtBZGRQcmUoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0FkZFByZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgVHlwZSBTdGF0ZSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZG8gbm90IHRyaWdnZXIgZXZlbnQgZm9yIHRlbXBvcmFyeSBsaW5rcwogICAgcmV0dXJuIDEgaWYgJFBhcmFte1N0YXRlfSBlcSAnVGVtcG9yYXJ5JzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIExpbmtBZGRQb3N0KCkKCmxpbmsgYWRkIHByZSBldmVudCBtb2R1bGUKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkUG9zdCgKICAgICAgICBLZXkgICAgICAgICAgPT4gMTIzLAogICAgICAgIFNvdXJjZU9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFNvdXJjZUtleSAgICA9PiAzMjEsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdOb3JtYWwnLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICBvcgoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtBZGRQb3N0KAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtBZGRQb3N0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBUeXBlIFN0YXRlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkbyBub3QgdHJpZ2dlciBldmVudCBmb3IgdGVtcG9yYXJ5IGxpbmtzCiAgICByZXR1cm4gMSBpZiAkUGFyYW17U3RhdGV9IGVxICdUZW1wb3JhcnknOwoKICAgICMgZ2V0IGluZm9ybWF0aW9uIGFib3V0IGxpbmtlZCBvYmplY3QKICAgIG15ICRJRCAgICAgPSAkUGFyYW17VGFyZ2V0S2V5fSAgICB8fCAkUGFyYW17U291cmNlS2V5fTsKICAgIG15ICRPYmplY3QgPSAkUGFyYW17VGFyZ2V0T2JqZWN0fSB8fCAkUGFyYW17U291cmNlT2JqZWN0fTsKCiAgICAjIHJlY2FsY3VsYXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHRoaXMgQ0kKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtLZXl9LAogICAgKTsKCiAgICAjIHRyaWdnZXIgTGlua0FkZCBldmVudAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnTGlua0FkZCcsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkSUQgLiAnJSUnIC4gJE9iamVjdCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQYXJhbXtUeXBlfSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBXaGVuIGxpbmtpbmcgYSBjb25maWcgaXRlbSB0byBhIHRpY2tldDogQWRkIGEgdGlja2V0IGhpc3RvcnkgZW50cnkKICAgIGlmICggJE9iamVjdCBlcSAnVGlja2V0JyApIHsKCiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRJRCwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0NJTGlua0FkZCcsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiXCVcJSRQYXJhbXtLZXl9XCVcJSRQYXJhbXtUeXBlfSIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIExpbmtEZWxldGVQcmUoKQoKbGluayBkZWxldGUgcHJlIGV2ZW50IG1vZHVsZQoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtEZWxldGVQcmUoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBTb3VyY2VLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgb3IKCiAgICAkVHJ1ZSA9ICRMaW5rT2JqZWN0LT5MaW5rRGVsZXRlUHJlKAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIExpbmtEZWxldGVQcmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRvIG5vdCB0cmlnZ2VyIGV2ZW50IGZvciB0ZW1wb3JhcnkgbGlua3MKICAgIHJldHVybiAxIGlmICRQYXJhbXtTdGF0ZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBMaW5rRGVsZXRlUG9zdCgpCgpsaW5rIGRlbGV0ZSBwb3N0IGV2ZW50IG1vZHVsZQoKICAgICRUcnVlID0gJExpbmtPYmplY3QtPkxpbmtEZWxldGVQb3N0KAogICAgICAgIEtleSAgICAgICAgICA9PiAxMjMsCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU291cmNlS2V5ICAgID0+IDMyMSwKICAgICAgICBUeXBlICAgICAgICAgPT4gJ05vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgIG9yCgogICAgJFRydWUgPSAkTGlua09iamVjdC0+TGlua0RlbGV0ZVBvc3QoCiAgICAgICAgS2V5ICAgICAgICAgID0+IDEyMywKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gMzIxLAogICAgICAgIFR5cGUgICAgICAgICA9PiAnTm9ybWFsJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgTGlua0RlbGV0ZVBvc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IFR5cGUgU3RhdGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRvIG5vdCB0cmlnZ2VyIGV2ZW50IGZvciB0ZW1wb3JhcnkgbGlua3MKICAgIHJldHVybiAxIGlmICRQYXJhbXtTdGF0ZX0gZXEgJ1RlbXBvcmFyeSc7CgogICAgIyBnZXQgaW5mb3JtYXRpb24gYWJvdXQgbGlua2VkIG9iamVjdAogICAgbXkgJElEICAgICA9ICRQYXJhbXtUYXJnZXRLZXl9ICAgIHx8ICRQYXJhbXtTb3VyY2VLZXl9OwogICAgbXkgJE9iamVjdCA9ICRQYXJhbXtUYXJnZXRPYmplY3R9IHx8ICRQYXJhbXtTb3VyY2VPYmplY3R9OwoKICAgICMgcmVjYWxjdWxhdGUgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBDSQogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkN1ckluY2lTdGF0ZVJlY2FsYygKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICApOwoKICAgICMgdHJpZ2dlciBMaW5rRGVsZXRlIGV2ZW50CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdMaW5rRGVsZXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17S2V5fSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRJRCAuICclJScgLiAkT2JqZWN0LAogICAgICAgIH0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICAjIFdoZW4gdW5saW5raW5nIGEgY29uZmlnIGl0ZW0gZnJvbSBhIHRpY2tldDogQWRkIGEgdGlja2V0IGhpc3RvcnkgZW50cnkKICAgIGlmICggJE9iamVjdCBlcSAnVGlja2V0JyApIHsKCiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgJFRpY2tldE9iamVjdC0+SGlzdG9yeUFkZCgKICAgICAgICAgICAgVGlja2V0SUQgICAgID0+ICRJRCwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ0NJTGlua0RlbGV0ZScsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiXCVcJSRQYXJhbXtLZXl9XCVcJSRQYXJhbXtUeXBlfSIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="Kernel/System/Stats/Dynamic/ITSMConfigItem.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6U3RhdHM6OkR5bmFtaWM6OklUU01Db25maWdJdGVtOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEdldE9iamVjdE5hbWUgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICByZXR1cm4gJ0lUU01Db25maWdJdGVtJzsKfQoKc3ViIEdldE9iamVjdEJlaGF2aW91cnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlQmVoYXZpb3VycyA9ICgKICAgICAgICBQcm92aWRlc0Rhc2hib2FyZFdpZGdldCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gJUJlaGF2aW91cnM7Cn0KCnN1YiBHZXRPYmplY3RBdHRyaWJ1dGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICApOwoKICAgICMgZ2V0IGN1cnJlbnQgdGltZSB0byBmaXggYnVnIzM4MzAKICAgIG15ICRUaW1lU3RhbXAgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKS0+VG9TdHJpbmcoKTsKCiAgICAjIGNyZWF0ZSBvYmplY3QgYXR0cmlidXRlIGFycmF5CiAgICBteSBAT2JqZWN0QXR0cmlidXRlcyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICAgICA9PiAxLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gICAgPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICAgICA9PiAnQ2xhc3NJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgTGFuZ3VhZ2VUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0RlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnSW5jaWRlbnQgU3RhdGUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdJbmNpU3RhdGVJRHMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiAkSW5jaVN0YXRlTGlzdCwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnSW5wdXRGaWVsZCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnSW5wdXRGaWVsZCcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0NyZWF0ZSBUaW1lJywKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAxLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDEsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ3JlYXRlVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIFRpbWVTdGFydCA9PiAnQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ0NoYW5nZSBUaW1lJywKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAxLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDEsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ2hhbmdlVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgICAgICBUaW1lU3RvcCAgICAgICAgID0+ICRUaW1lU3RhbXAsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ0NvbmZpZ0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGFkZCB0aGUgeG1sIGRhdGEKICAgIENMQVNTSUQ6CiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgeG1sIGRlZmluaXRpb24gaGFzaAogICAgICAgIG15ICRYTUxEZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDTEFTU0lEIGlmICEkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH07CgogICAgICAgICRTZWxmLT5fWE1MQXR0cmlidXRlQWRkKAogICAgICAgICAgICBPYmplY3RBdHRyaWJ1dGVzID0+IFxAT2JqZWN0QXR0cmlidXRlcywKICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiAgICA9PiAkWE1MRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICdYTUw6OicgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgUHJlZml4TmFtZSAgICAgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIEBPYmplY3RBdHRyaWJ1dGVzOwp9CgpzdWIgX1hNTEF0dHJpYnV0ZUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte09iamVjdEF0dHJpYnV0ZXN9OwogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGVmaW5pdGlvbn07CiAgICByZXR1cm4gaWYgcmVmICRQYXJhbXtYTUxEZWZpbml0aW9ufSBuZSAnQVJSQVknOwoKICAgIGlmICggJFBhcmFte1ByZWZpeH0gKSB7CiAgICAgICAgJFBhcmFte1ByZWZpeH0gLj0gJzo6JzsKICAgIH0KICAgIGlmICggJFBhcmFte1ByZWZpeE5hbWV9ICkgewogICAgICAgICRQYXJhbXtQcmVmaXhOYW1lfSAuPSAnOjonOwogICAgfQoKICAgICRQYXJhbXtMZXZlbH0gICAgICB8fD0gMDsKICAgICRQYXJhbXtQcmVmaXh9ICAgICB8fD0gJyc7CiAgICAkUGFyYW17UHJlZml4TmFtZX0gfHw9ICcnOwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17WE1MRGVmaW5pdGlvbn0gfSApIHsKCiAgICAgICAgbmV4dCBJVEVNIGlmICEkSXRlbS0+e1NlYXJjaGFibGV9ICYmICEkSXRlbS0+e1N1Yn07CgogICAgICAgICMgY3JlYXRlIGtleSBhbmQgbmFtZQogICAgICAgIG15ICRLZXkgID0gJFBhcmFte1ByZWZpeH0gLiAkSXRlbS0+e0tleX07CiAgICAgICAgbXkgJE5hbWUgPSAkUGFyYW17UHJlZml4TmFtZX0gLiAkSXRlbS0+e05hbWV9OwoKICAgICAgICAjIGFkZCBhdHRyaWJ1dGUKICAgICAgICBteSAkQXR0cmlidXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlhNTFN0YXRzQXR0cmlidXRlQ3JlYXRlKAogICAgICAgICAgICBLZXkgID0+ICRLZXksCiAgICAgICAgICAgIEl0ZW0gPT4gJEl0ZW0sCiAgICAgICAgICAgIE5hbWUgPT4gJE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBJVEVNIGlmICEkQXR0cmlidXRlOwogICAgICAgIG5leHQgSVRFTSBpZiByZWYgJEF0dHJpYnV0ZSBuZSAnQVJSQVknOwogICAgICAgIG5leHQgSVRFTSBpZiAhc2NhbGFyIEB7JEF0dHJpYnV0ZX07CgogICAgICAgICMgYWRkIGF0dHJpYnV0ZXMgdG8gb2JqZWN0IGFycmF5CiAgICAgICAgcHVzaCBAeyAkUGFyYW17T2JqZWN0QXR0cmlidXRlc30gfSwgQHskQXR0cmlidXRlfTsKCiAgICAgICAgbmV4dCBJVEVNIGlmICEkSXRlbS0+e1N1Yn07CgogICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAkU2VsZi0+X1hNTEF0dHJpYnV0ZUFkZCgKICAgICAgICAgICAgT2JqZWN0QXR0cmlidXRlcyA9PiAkUGFyYW17T2JqZWN0QXR0cmlidXRlc30sCiAgICAgICAgICAgIFhNTERlZmluaXRpb24gICAgPT4gJEl0ZW0tPntTdWJ9LAogICAgICAgICAgICBMZXZlbCAgICAgICAgICAgID0+ICRQYXJhbXtMZXZlbH0gKyAxLAogICAgICAgICAgICBQcmVmaXggICAgICAgICAgID0+ICRLZXksCiAgICAgICAgICAgIFByZWZpeE5hbWUgICAgICAgPT4gJE5hbWUsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIEdldFN0YXRFbGVtZW50UHJldmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAoIGludCByYW5kIDUwMCApICsgMTsKfQoKc3ViIEdldFN0YXRFbGVtZW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBzZXQgbGltaXQKICAgICRQYXJhbXtMaW1pdH0gPSAxXzAwMF8wMDA7CgogICAgIyBleHRyYWN0IGFsbCB4bWwgcGFyYW0ga2V5cyBmcm9tIHRoZSBwYXJhbSBoYXNoCiAgICBteSBAWE1MUGFyYW1zID0gZ3JlcCB7ICRfID1+IG17XEEgWE1MOjp9eG1zIH0gc29ydCBrZXlzICVQYXJhbTsKCiAgICBpZiAoQFhNTFBhcmFtcykgewogICAgICAgIHJldHVybiAnWW91IG11c3QgZGVmaW5lIGEgY2xhc3MgaW4gb25lIGF4aXMuJyBpZiAhJFBhcmFte0NsYXNzSURzfTsKICAgICAgICByZXR1cm4gJ1lvdSBtdXN0IGRlZmluZSBhIGNsYXNzIGluIG9uZSBheGlzLicgaWYgcmVmICRQYXJhbXtDbGFzc0lEc30gbmUgJ0FSUkFZJzsKICAgIH0KCiAgICAjIHRvIGNvbGxlY3QgZGF0ZSBmaWVsZHMgc2VwYXJhdGVseQogICAgbXkgJVhNTFBhcmFtc0RhdGVGaWVsZHM7CgogICAgbXkgJVhNTENsYXNzSURzOwogICAgUEFSQU1LRVk6CiAgICBmb3IgbXkgJFBhcmFtS2V5IChAWE1MUGFyYW1zKSB7CgogICAgICAgICMgZXh0cmFjdCBzZWFyY2ggdmFsdWVzCiAgICAgICAgbXkgJFNlYXJjaFZhbHVlcyA9ICRQYXJhbXskUGFyYW1LZXl9OwoKICAgICAgICAjIHByZXBhcmUgcGFyYW0gdmFsdWUKICAgICAgICBpZiAoICFyZWYgJFNlYXJjaFZhbHVlcyApIHsKICAgICAgICAgICAgJFNlYXJjaFZhbHVlcyA9IFskU2VhcmNoVmFsdWVzXTsKICAgICAgICB9CgogICAgICAgIG5leHQgUEFSQU1LRVkgaWYgIUB7JFNlYXJjaFZhbHVlc307CgogICAgICAgICMgc3BsaXQgcGFyYW0ga2V5CiAgICAgICAgbXkgKCAkQ2xhc3NJRCwgJFNlYXJjaEtleSApID0gJFBhcmFtS2V5ID1+IG17IFxBIFhNTDo6ICggXGQrICkgOjogKC4rKSBceiB9eG1zOwoKICAgICAgICAjIHByZXBhcmUgc2VhcmNoIGtleQogICAgICAgICRTZWFyY2hLZXkgPX4gc1sgOjogXVsnfVslXXsnXXhtc2c7CgogICAgICAgICMgQWRkIGNsYXNzIGlkIHRvIHhtbCBjbGFzcyBpZCBoYXNoCiAgICAgICAgJFhNTENsYXNzSURzeyRDbGFzc0lEfSA9IDE7CgogICAgICAgICMgY29sbGVjdCBkYXRlIGZpZWxkcyBzZXBhcmF0ZWx5IChlLmcgV2FycmFudHlFeHBpcmF0aW9uRGF0ZU5ld2VyRGF0ZSkKICAgICAgICBpZiAoICRTZWFyY2hLZXkgPX4gbXsgKC4rKSAoIE5ld2VyRGF0ZSB8IE9sZGVyRGF0ZSApIFx6IH14bXMgKSB7CiAgICAgICAgICAgICRYTUxQYXJhbXNEYXRlRmllbGRzeyQxfS0+eyQyfSA9ICRTZWFyY2hWYWx1ZXMtPlswXTsKCiAgICAgICAgICAgIG5leHQgUEFSQU1LRVk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBzZWFyY2ggaGFzaAogICAgICAgIG15ICRTZWFyY2hIYXNoID0gewogICAgICAgICAgICAnWzFde1wnVmVyc2lvblwnfVsxXXtcJycgLiAkU2VhcmNoS2V5IC4gJ1wnfVslXXtcJ0NvbnRlbnRcJ30nID0+ICRTZWFyY2hWYWx1ZXMsCiAgICAgICAgfTsKCiAgICAgICAgcHVzaCBAeyAkUGFyYW17V2hhdH0gfSwgJFNlYXJjaEhhc2g7CiAgICB9CgogICAgIyBidWlsZCBzZWFyY2ggaGFzaCBmb3IgZGF0ZSBmaWVsZHMKICAgIGZvciBteSAkRGF0ZUZpZWxkTmFtZSAoIHNvcnQga2V5cyAlWE1MUGFyYW1zRGF0ZUZpZWxkcyApIHsKCiAgICAgICAgbXkgJFNlYXJjaEhhc2ggPSB7CiAgICAgICAgICAgICdbMV17XCdWZXJzaW9uXCd9WzFde1wnJyAuICREYXRlRmllbGROYW1lIC4gJ1wnfVslXXtcJ0NvbnRlbnRcJ30nID0+IHsKICAgICAgICAgICAgICAgICctYmV0d2VlbicgPT4gWwogICAgICAgICAgICAgICAgICAgICRYTUxQYXJhbXNEYXRlRmllbGRzeyREYXRlRmllbGROYW1lfS0+e05ld2VyRGF0ZX0sCiAgICAgICAgICAgICAgICAgICAgJFhNTFBhcmFtc0RhdGVGaWVsZHN7JERhdGVGaWVsZE5hbWV9LT57T2xkZXJEYXRlfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKCiAgICAgICAgcHVzaCBAeyAkUGFyYW17V2hhdH0gfSwgJFNlYXJjaEhhc2g7CiAgICB9CgogICAgaWYgKCVYTUxDbGFzc0lEcykgewogICAgICAgIG15IEBFeGlzdHMgPSBncmVwIHsgJFhNTENsYXNzSURzeyRffSB9IEB7ICRQYXJhbXtDbGFzc0lEc30gfTsKCiAgICAgICAgcmV0dXJuIDAgaWYgIUBFeGlzdHM7CiAgICB9CgogICAgIyBzdGFydCBjb25maWcgaXRlbSBleHRlbmRlZCBzZWFyY2gKICAgIG15ICRDb25maWdJdGVtSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCglUGFyYW0pOwoKICAgIHJldHVybiBzY2FsYXIgQHskQ29uZmlnSXRlbUlEc307Cn0KCnN1YiBFeHBvcnRXcmFwcGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIFwlUGFyYW07Cn0KCnN1YiBJbXBvcnRXcmFwcGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIFwlUGFyYW07Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/System/Ticket/Event/DynamicFieldConfigItemAdditionalDFStorage.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6OkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW1BZGRpdGlvbmFsREZTdG9yYWdlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0nLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6Q29uZmlnSXRlbScpOwoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyggRGF0YSBFdmVudCBDb25maWcgVXNlcklEICkpIHsKICAgICAgICBuZXh0IE5FRURFRCBpZiAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIFRpY2tldElEICkpIHsKICAgICAgICBuZXh0IE5FRURFRCBpZiAkUGFyYW17RGF0YX0tPnskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIERhdGEhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtEYXRhfS0+e0ZpZWxkTmFtZX0sCiAgICApOwogICAgcmV0dXJuIDEgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgcmV0dXJuIDEgaWYgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gbmUgJ0NvbmZpZ0l0ZW1Ecm9wZG93bicKICAgICAgICAmJiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRUeXBlfSBuZSAnQ29uZmlnSXRlbU11bHRpc2VsZWN0JzsKCiAgICByZXR1cm4gMSBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57T2JqZWN0VHlwZX0gbmUgJ1RpY2tldCc7CiAgICByZXR1cm4gMSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0FkZGl0aW9uYWxERlN0b3JhZ2V9ICk7CgogICAgbXkgJENvbmZpZ0l0ZW1JRHMgPSAkUGFyYW17RGF0YX0tPntWYWx1ZX07ICAgICMgY2FuIGFsc28gYmUgb25seSBvbmUgKHNjYWxhcikuCiAgICByZXR1cm4gMSBpZiAhZGVmaW5lZCAkQ29uZmlnSXRlbUlEczsKCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1JRHMpICkgewogICAgICAgICRDb25maWdJdGVtSURzID0gWyAkQ29uZmlnSXRlbUlEcywgXTsKICAgIH0KCiAgICBteSAkQWRkaXRpb25hbERGU3RvcmFnZURhdGEgPSAkRHluYW1pY0ZpZWxkQ29uZmlnSXRlbU9iamVjdC0+R2V0QWRkaXRpb25hbERGU3RvcmFnZURhdGEoCiAgICAgICAgU291cmNlRHluYW1pY0ZpZWxkTmFtZSA9PiAkUGFyYW17RGF0YX0tPntGaWVsZE5hbWV9LAogICAgICAgIFNlbGVjdGVkQ29uZmlnSXRlbUlEcyAgPT4gJENvbmZpZ0l0ZW1JRHMsCiAgICAgICAgU3RvcmFnZVR5cGUgICAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CiAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhKTsKCiAgICBteSAkQWRkaXRpb25hbER5bmFtaWNGaWVsZFZhbHVlc1N0b3JlZCA9ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0LT5TdG9yZUR5bmFtaWNGaWVsZFZhbHVlcygKICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgICA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICAgICAgQWRkaXRpb25hbERGU3RvcmFnZURhdGEgPT4gJEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRBZGRpdGlvbmFsRHluYW1pY0ZpZWxkVmFsdWVzU3RvcmVkOwoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Permission="660" Location="Kernel/System/Ticket/Event/DynamicFieldConfigItemTicketLink.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6OkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW1UaWNrZXRMaW5rOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRUaWNrZXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkTGlua09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CgogICAgTkVFREVEOgogICAgZm9yIG15ICROZWVkZWQgKHF3KCBEYXRhIEV2ZW50IENvbmZpZyBVc2VySUQgKSkgewogICAgICAgIG5leHQgTkVFREVEIGlmICRQYXJhbXskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIFRpY2tldElEICkpIHsKICAgICAgICBuZXh0IE5FRURFRCBpZiAkUGFyYW17RGF0YX0tPnskTmVlZGVkfTsKCiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkIGluIERhdGEhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVWYWxpZER5bmFtaWNGaWVsZFR5cGVzID0gKAogICAgICAgIENvbmZpZ0l0ZW1Ecm9wZG93biAgICA9PiAxLAogICAgICAgIENvbmZpZ0l0ZW1NdWx0aXNlbGVjdCA9PiAxLAogICAgKTsKCiAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgIE5hbWUgPT4gJFBhcmFte0RhdGF9LT57RmllbGROYW1lfQogICAgKTsKICAgIHJldHVybiBpZiAhJFZhbGlkRHluYW1pY0ZpZWxkVHlwZXN7ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IH07CgogICAgIyBTa2lwLCBpZiBubyBsaW5rIHR5cGUgaXMgY29uZmlndXJlZC4KICAgIG15ICRMaW5rVHlwZSA9ICREeW5hbWljRmllbGQtPntDb25maWd9LT57Q29uZmlnSXRlbUxpbmtUeXBlfTsKICAgIHJldHVybiBpZiAhJExpbmtUeXBlOwoKICAgIG15ICRUaWNrZXRJRCA9ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfTsKCiAgICBteSAkTGlua0xpc3QgPSAkTGlua09iamVjdC0+TGlua0xpc3QoCiAgICAgICAgT2JqZWN0ICA9PiAnVGlja2V0JywKICAgICAgICBLZXkgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU3RhdGUgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICk7CgogICAgbXkgQE5ld1ZhbHVlczsKICAgIGlmICggcmVmICRQYXJhbXtEYXRhfS0+e1ZhbHVlfSBlcSAnQVJSQVknICkgewogICAgICAgIEBOZXdWYWx1ZXMgPSBAeyAkUGFyYW17RGF0YX0tPntWYWx1ZX0gfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBOZXdWYWx1ZXMgPSAkUGFyYW17RGF0YX0tPntWYWx1ZX07CiAgICB9CgogICAgbXkgQE9sZFZhbHVlczsKICAgIGlmICggJFBhcmFte0RhdGF9LT57T2xkVmFsdWV9ICYmIHJlZiAkUGFyYW17RGF0YX0tPntPbGRWYWx1ZX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICBAT2xkVmFsdWVzID0gQHsgJFBhcmFte0RhdGF9LT57T2xkVmFsdWV9IH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEYXRhfS0+e09sZFZhbHVlfSApIHsKICAgICAgICBAT2xkVmFsdWVzID0gJFBhcmFte0RhdGF9LT57T2xkVmFsdWV9OwogICAgfQoKICAgIG15ICRTb3VyY2VPYmplY3QgPSAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfS0+e0NvbmZpZ0l0ZW1MaW5rU291cmNlfTsKICAgIG15ICRTb3VyY2VLZXk7CiAgICBteSAkVGFyZ2V0T2JqZWN0OwogICAgbXkgJFRhcmdldEtleTsKCiAgICBpZiAoICRTb3VyY2VPYmplY3QgZXEgJ0lUU01Db25maWdJdGVtJyApIHsKICAgICAgICAkVGFyZ2V0T2JqZWN0ID0gJER5bmFtaWNGaWVsZC0+e09iamVjdFR5cGV9OwogICAgICAgICRUYXJnZXRLZXkgICAgPSAkVGlja2V0SUQ7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU291cmNlS2V5ICAgID0gJFRpY2tldElEOwogICAgICAgICRUYXJnZXRPYmplY3QgPSAnSVRTTUNvbmZpZ0l0ZW0nOwogICAgfQoKICAgICMgUmVtb3ZlIGxpbmtzIGZvciByZW1vdmVkIGNvbmZpZyBpdGVtcyAob25seSBpZiBhY3RpdmF0ZWQpLgogICAgbXkgJENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCA9ICREeW5hbWljRmllbGQtPntDb25maWd9LT57Q29uZmlnSXRlbUxpbmtSZW1vdmFsfTsKICAgIGlmICggQE9sZFZhbHVlcyAmJiAkQ29uZmlnSXRlbUxpbmtSZW1vdmFsICkgewogICAgICAgIG15IEBEZXNlbGVjdGVkQ29uZmlnSXRlbUlEczsKCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAT2xkVmFsdWVzKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSURTdGlsbFNlbGVjdGVkID0gZ3JlcCB7ICRDb25maWdJdGVtSUQgZXEgJF8gfSBATmV3VmFsdWVzOwogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkQ29uZmlnSXRlbUlEU3RpbGxTZWxlY3RlZDsKCiAgICAgICAgICAgIHB1c2ggQERlc2VsZWN0ZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgICAgIH0KCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChARGVzZWxlY3RlZENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRMaW5rTGlzdC0+e0lUU01Db25maWdJdGVtfS0+eyRMaW5rVHlwZX0tPntTb3VyY2V9LT57JENvbmZpZ0l0ZW1JRH0KICAgICAgICAgICAgICAgICYmICEkTGlua0xpc3QtPntJVFNNQ29uZmlnSXRlbX0tPnskTGlua1R5cGV9LT57VGFyZ2V0fS0+eyRDb25maWdJdGVtSUR9OwoKICAgICAgICAgICAgaWYgKCAkU291cmNlT2JqZWN0IGVxICdJVFNNQ29uZmlnSXRlbScgKSB7CiAgICAgICAgICAgICAgICAkU291cmNlS2V5ID0gJENvbmZpZ0l0ZW1JRDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRUYXJnZXRLZXkgPSAkQ29uZmlnSXRlbUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGlua09iamVjdC0+TGlua0RlbGV0ZSgKICAgICAgICAgICAgICAgIE9iamVjdDEgPT4gJFNvdXJjZU9iamVjdCwKICAgICAgICAgICAgICAgIEtleTEgICAgPT4gJFNvdXJjZUtleSwKICAgICAgICAgICAgICAgIE9iamVjdDIgPT4gJFRhcmdldE9iamVjdCwKICAgICAgICAgICAgICAgIEtleTIgICAgPT4gJFRhcmdldEtleSwKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIEFkZCBsaW5rcyBmb3IgYWRkZWQgY29uZmlnIGl0ZW1zLgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBOZXdWYWx1ZXMpIHsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkTGlua0xpc3QtPntJVFNNQ29uZmlnSXRlbX0tPnskTGlua1R5cGV9LT57U291cmNlfS0+eyRDb25maWdJdGVtSUR9OwoKICAgICAgICBpZiAoICRTb3VyY2VPYmplY3QgZXEgJ0lUU01Db25maWdJdGVtJyApIHsKICAgICAgICAgICAgJFNvdXJjZUtleSA9ICRDb25maWdJdGVtSUQ7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkVGFyZ2V0S2V5ID0gJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJFNvdXJjZU9iamVjdCwKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRTb3VyY2VLZXksCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAkVGFyZ2V0T2JqZWN0LAogICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFRhcmdldEtleSwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/System/Ticket/Event/ITSMConfigItemCustomerCIs.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpabnVueTo6UGVybDo6UGFyYW1PYmplY3QpCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwogICAgbXkgJExpbmtPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoIERhdGEgRXZlbnQgQ29uZmlnIFVzZXJJRCApKSB7CiAgICAgICAgbmV4dCBORUVERUQgaWYgJFBhcmFteyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIE5FRURFRDoKICAgIGZvciBteSAkTmVlZGVkIChxdyggVGlja2V0SUQgKSkgewogICAgICAgIG5leHQgTkVFREVEIGlmICRQYXJhbXtEYXRhfS0+eyROZWVkZWR9OwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQgaW4gRGF0YSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJENJTGlzdCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lMaXN0JyApIHx8ICcnOwogICAgcmV0dXJuIDEgaWYgISRDSUxpc3Q7CgogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSBzcGxpdCAnLCcsICRDSUxpc3Q7CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgICAgIFNvdXJjZU9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFRhcmdldEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1JlbGV2YW50VG8nLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Permission="660" Location="Kernel/System/Ticket/Event/TicketStatusLink.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6VGlja2V0U3RhdHVzTGluazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6VXNlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhEYXRhIEV2ZW50IENvbmZpZykpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGZ1bmN0aW9uYWxpdHkgaXMgZW5hYmxlZAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICByZXR1cm4gMSBpZiAhJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6U2V0SW5jaWRlbnRTdGF0ZU9uTGluaycpOwoKICAgICMgZ2V0IHRpY2tldCBpZCBkZXBlbmRpbmcgb24gZXZlbnQKICAgIG15ICRUaWNrZXRJRDsKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgfHwgJFBhcmFte0V2ZW50fSBlcSAnTGlua0RlbGV0ZScgKSB7CiAgICAgICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW1JRCBDb21tZW50KSkgewogICAgICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEYXRhISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0xpbmtBZGQnICkgewogICAgICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPntUeXBlfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVHlwZSBpbiBEYXRhISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIGxpbmsgZXZlbnQgY29uY2VybnMgYSB0aWNrZXQKICAgICAgICByZXR1cm4gMSBpZiAkUGFyYW17RGF0YX0tPntDb21tZW50fSAhfiBteyBcQSAoIFxkKyApICUlVGlja2V0IFx6IH14bXM7CiAgICAgICAgJFRpY2tldElEID0gJDE7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBpZiAoICEkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFRpY2tldElEIGluIERhdGEhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICAkVGlja2V0SUQgPSAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH07CiAgICB9CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICVUaWNrZXQgICAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwogICAgcmV0dXJuIDEgaWYgISVUaWNrZXQ7CgogICAgIyBjaGVjayBpZiB0aWNrZXQgdHlwZSBpcyByZWxldmFudCAob3B0aW9uYWwgZnVuY3Rpb25hbGl0eSkKICAgIG15ICRPbGRUaWNrZXRUeXBlUmVsZXZhbnQ7CiAgICBteSAkTmV3VGlja2V0VHlwZVJlbGV2YW50OwogICAgbXkgJFRpY2tldFR5cGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6VGlja2V0VHlwZXMnKTsKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0VHlwZVVwZGF0ZScgKSB7CgogICAgICAgICMgdGlja2V0IHR5cGVzIGFyZSBub3QgdXNlZCwgY2hhbmdlcyBkb24ndCBhZmZlY3QgQ0kgaW5jaWRlbnQgc3RhdGVzCiAgICAgICAgcmV0dXJuIDEgaWYgIUlzQXJyYXlSZWZXaXRoRGF0YSgkVGlja2V0VHlwZXMpOwoKICAgICAgICAjIGRldGVybWluZSB0eXBlIG9mIHRpY2tldCBiZWZvcmUgbGFzdCB1cGRhdGUKICAgICAgICBteSAkT2xkVGlja2V0VHlwZTsKICAgICAgICBteSBASGlzdG9yeUxpbmVzID0gJFRpY2tldE9iamVjdC0+SGlzdG9yeUdldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgTElORToKICAgICAgICBmb3IgbXkgJExpbmUgKCByZXZlcnNlIEBIaXN0b3J5TGluZXMgKSB7CiAgICAgICAgICAgIG5leHQgTElORSBpZiAkTGluZS0+e0hpc3RvcnlUeXBlfSBuZSAnVHlwZVVwZGF0ZSc7CiAgICAgICAgICAgIG15IEBDb21tZW50UGFydHMgPSBzcGxpdCAnJSUnLCAkTGluZS0+e05hbWV9OwogICAgICAgICAgICAkT2xkVGlja2V0VHlwZSA9ICRDb21tZW50UGFydHNbM107CiAgICAgICAgICAgIGxhc3QgTElORTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhJE9sZFRpY2tldFR5cGUgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGb3VuZCBubyBwcmV2aW91cyB0aWNrZXQgdHlwZSBmb3IgdGlja2V0IGlkICRUaWNrZXRJRCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIG9ubHkgY2hhbmdlcyByZWxldmFudC0+aXJyZWxldmFudCBhbmQgaXJyZWxldmFudC0+cmVsZXZhbnQgYXJlIG9mIGludGVyZXN0CiAgICAgICAgJE9sZFRpY2tldFR5cGVSZWxldmFudCA9IDEgaWYgZ3JlcCB7ICRfIGVxICRPbGRUaWNrZXRUeXBlIH0gQHskVGlja2V0VHlwZXN9OwogICAgICAgICROZXdUaWNrZXRUeXBlUmVsZXZhbnQgPSAxIGlmIGdyZXAgeyAkXyBlcSAkVGlja2V0e1R5cGV9IH0gQHskVGlja2V0VHlwZXN9OwogICAgICAgIHJldHVybiAxIGlmICggJE9sZFRpY2tldFR5cGVSZWxldmFudCB8fCAnJyApIGVxICggJE5ld1RpY2tldFR5cGVSZWxldmFudCB8fCAnJyApOwogICAgfQoKICAgICMgc2hvcnRjdXQgZm9yIG90aGVyIGV2ZW50cyAoY2hlY2sgaWYgdGlja2V0IHR5cGUgaXMgaW4gc2NvcGUpCiAgICBlbHNpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkVGlja2V0VHlwZXMpICkgewogICAgICAgIHJldHVybiAxIGlmICEkVGlja2V0e1R5cGV9OwogICAgICAgIHJldHVybiAxIGlmICFncmVwIHsgJF8gZXEgJFRpY2tldHtUeXBlfSB9IEB7JFRpY2tldFR5cGVzfTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRpY2tldCBzdGF0ZSBpcyByZWxldmFudAogICAgbXkgJE9sZFRpY2tldFN0YXRlUmVsZXZhbnQ7CiAgICBteSAkTmV3VGlja2V0U3RhdGVSZWxldmFudDsKICAgIG15IEBPcGVuU3RhdGVUeXBlcyA9ICggJ25ldycsICdvcGVuJywgJ3BlbmRpbmcgcmVtaW5kZXInLCAncGVuZGluZyBhdXRvJyApOwogICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRTdGF0ZVVwZGF0ZScgKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0RhdGF9LT57T2xkVGlja2V0RGF0YX0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFRpY2tldElEIGluIE9sZFRpY2tldERhdGEhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBvbmx5IGNoYW5nZXMgb3Blbi0+Y2xvc2UgYW5kIGNsb3NlLT5vcGVuIGFyZSBvZiBpbnRlcmVzdAogICAgICAgICROZXdUaWNrZXRTdGF0ZVJlbGV2YW50ID0gMSBpZiBncmVwIHsgJF8gZXEgJFRpY2tldHtTdGF0ZVR5cGV9IH0gQE9wZW5TdGF0ZVR5cGVzOwogICAgICAgICRPbGRUaWNrZXRTdGF0ZVJlbGV2YW50ID0gMSBpZiBncmVwIHsgJF8gZXEgJFBhcmFte0RhdGF9LT57T2xkVGlja2V0RGF0YX0tPntTdGF0ZVR5cGV9IH0gQE9wZW5TdGF0ZVR5cGVzOwogICAgICAgIHJldHVybiAxIGlmICggJE5ld1RpY2tldFN0YXRlUmVsZXZhbnQgfHwgJycgKSBlcSAoICRPbGRUaWNrZXRTdGF0ZVJlbGV2YW50IHx8ICcnICk7CiAgICB9CgogICAgIyBzaG9ydGN1dCBmb3Igb3RoZXIgZXZlbnRzIChjaGVjayBpZiB0aWNrZXQgc3RhdGUgaXMgaW4gc2NvcGUpCiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gMSBpZiAhZ3JlcCB7ICRfIGVxICRUaWNrZXR7U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgIH0KCiAgICAjIHNob3J0Y3V0IGZvciB0aWNrZXQgZXZlbnRzIChjaGVjayBpZiB0aWNrZXQgaGFzIGFueSBwb3RlbnRpYWxseSByZWxldmFudCBsaW5rcykKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0U3RhdGVVcGRhdGUnIHx8ICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFR5cGVVcGRhdGUnICkgewogICAgICAgIG15ICVMaW5rS2V5TGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtLZXlMaXN0KAogICAgICAgICAgICBPYmplY3QxID0+ICdUaWNrZXQnLAogICAgICAgICAgICBLZXkxICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBTdGF0ZSAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgICAgIHJldHVybiAxIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApOwogICAgfQoKICAgICMgcHJlcGFyZSBpbmNpZGVudCBzdGF0ZXMgYW5kIHJlbGV2YW50IGxpbmsgdHlwZXMgcGVyIGluY2lkZW50IHN0YXRlCiAgICBteSAkSW5jaWRlbnRTdGF0ZXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpJbmNpZGVudFN0YXRlcycpOwogICAgbXkgJExpbmtUeXBlcyAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6TGlua1R5cGVzJyk7CiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkTGlua1R5cGVzKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgY29uZmlndXJhdGlvbiBmb3IgJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpMaW5rVHlwZXMnISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBteSAlTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlOwoKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnTGlua0FkZCcgKSB7CiAgICAgICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyRMaW5rVHlwZXN9ICkgewogICAgICAgICAgICBpZiAoICRMaW5rVHlwZSBlcSAkUGFyYW17RGF0YX0tPntUeXBlfSApIHsKICAgICAgICAgICAgICAgIHB1c2ggQHsgJExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZXsgJExpbmtUeXBlcy0+eyRMaW5rVHlwZX0gfSB9LCAkTGlua1R5cGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIDEgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCBcJUxpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZm9yIG15ICRMaW5rVHlwZSAoIHNvcnQga2V5cyAleyRMaW5rVHlwZXN9ICkgewogICAgICAgICAgICBwdXNoIEB7ICRMaW5rVHlwZXNCeUluY2lkZW50U3RhdGV7ICRMaW5rVHlwZXMtPnskTGlua1R5cGV9IH0gfSwgJExpbmtUeXBlOwogICAgICAgIH0KICAgIH0KCiAgICAjIGhhbmRsZSBhZGRlZCBvciByZW1vdmVkIGxpbmtzCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0xpbmtBZGQnIHx8ICRQYXJhbXtFdmVudH0gZXEgJ0xpbmtEZWxldGUnICkgewogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW17RGF0YX0tPntDb25maWdJdGVtSUR9OwogICAgICAgIG15ICRWZXJzaW9uICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBvcHRpb25hbDogY2hlY2sgaWYgQ0kgZGVwbG95bWVudCBzdGF0ZSBpcyByZWxldmFudAogICAgICAgIG15ICREZXBsb3ltZW50U3RhdGVzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6RGVwbG95bWVudFN0YXRlcycpOwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCREZXBsb3ltZW50U3RhdGVzKSApIHsKICAgICAgICAgICAgcmV0dXJuIDEgaWYgIWdyZXAgeyAkXyBlcSAkVmVyc2lvbi0+e0RlcGxTdGF0ZX0gfSBAeyREZXBsb3ltZW50U3RhdGVzfTsKICAgICAgICB9CgogICAgICAgICMgcmFpc2UgaW5jaWRlbnQgc3RhdGUgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgKCAkUGFyYW17RXZlbnR9IGVxICdMaW5rQWRkJyApIHsKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hlY2tSYWlzZUluY2lkZW50U3RhdGUoCiAgICAgICAgICAgICAgICBWZXJzaW9uICAgICAgICAgICAgICAgICAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlcyAgICAgICAgICAgPT4gJEluY2lkZW50U3RhdGVzLAogICAgICAgICAgICAgICAgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlID0+IFwlTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgbG93ZXIgaW5jaWRlbnQgc3RhdGUgaWYgbmVjZXNzYXJ5CiAgICAgICAgcmV0dXJuICRTZWxmLT5fQ2hlY2tMb3dlckluY2lkZW50U3RhdGUoCiAgICAgICAgICAgIFZlcnNpb24gICAgICAgICAgICAgICAgICA9PiAkVmVyc2lvbiwKICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZXMgICAgICAgICAgID0+ICRJbmNpZGVudFN0YXRlcywKICAgICAgICAgICAgTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlID0+IFwlTGlua1R5cGVzQnlJbmNpZGVudFN0YXRlLAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICk7CiAgICB9CgogICAgIyBoYW5kbGUgdGlja2V0IGNsb3N1cmUvcmUtb3BlbiBhbmQgcmVsZXZhbnQvaXJyZWxldmFudCB0eXBlIGNoYW5nZQogICAgZWxzaWYgKCAkUGFyYW17RXZlbnR9IGVxICdUaWNrZXRTdGF0ZVVwZGF0ZScgfHwgJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0VHlwZVVwZGF0ZScgKSB7CgogICAgICAgICMgcmVsZXZhbnQgdGlja2V0IHN0YXRlIGFuZCB0eXBlIHVwZGF0ZXMgYXJlIGhhbmRsZWQgdGhlIHNhbWUgd2F5CiAgICAgICAgIyBib3RoIG1lYW4gYSB0aWNrZXQgaXMgcmVsZXZhbnQgZm9yIENJIGluY2lkZW50IHN0YXRlIGNoYW5nZXMgb3Igbm90CiAgICAgICAgIyB0aWNrZXQgcmUtb3BlbiBvciBjaGFuZ2UgdG8gcmVsZXZhbnQgdHlwZSA9IG1pZ2h0IGhhdmUgdG8gcmFpc2UgaW5jaWRlbnQgc3RhdGUgb2YgQ0lzCiAgICAgICAgIyB0aWNrZXQgY2xvc3VyZSBvciBjaGFuZ2UgdG8gaXJyZWxldmFudCB0eXBlID0gbWlnaHQgaGF2ZSB0byBsb3dlciBpbmNpZGVudCBzdGF0ZSBvZiBDSXMKICAgICAgICBteSAkUmVsZXZhbnROb3c7CiAgICAgICAgaWYgKAogICAgICAgICAgICAoICRQYXJhbXtFdmVudH0gZXEgJ1RpY2tldFN0YXRlVXBkYXRlJyAmJiAkTmV3VGlja2V0U3RhdGVSZWxldmFudCApCiAgICAgICAgICAgIHx8ICggJFBhcmFte0V2ZW50fSBlcSAnVGlja2V0VHlwZVVwZGF0ZScgJiYgJE5ld1RpY2tldFR5cGVSZWxldmFudCApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRSZWxldmFudE5vdyA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGxvb3AgdGhyb3VnaCBhbGwgbGluayB0eXBlcyBhbmQgY2hlY2sgbGlua3MgdG8gc2VlIGlmIHRoZXJlIGFyZSBwb3NzaWJseSBhZmZlY3RlZCBDSXMKICAgICAgICBteSAkRGVwbG95bWVudFN0YXRlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkxpbmtTdGF0dXM6OkRlcGxveW1lbnRTdGF0ZXMnKTsKICAgICAgICBJTkNJREVOVFNUQVRFOgogICAgICAgIGZvciBteSAkSW5jaWRlbnRTdGF0ZSAoIEB7JEluY2lkZW50U3RhdGVzfSApIHsKICAgICAgICAgICAgTElOS1RZUEU6CiAgICAgICAgICAgIGZvciBteSAkTGlua1R5cGUgKCBAeyAkTGlua1R5cGVzQnlJbmNpZGVudFN0YXRleyRJbmNpZGVudFN0YXRlfSB9ICkgewogICAgICAgICAgICAgICAgbXkgQExpbmtlZENJcyA9ICRTZWxmLT5fQ2hlY2tUaWNrZXRMaW5rcygKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgPT4gJExpbmtUeXBlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG5leHQgTElOS1RZUEUgaWYgIUBMaW5rZWRDSXM7CgogICAgICAgICAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBMaW5rZWRDSXMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkVmVyc2lvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsOiBjaGVjayBpZiBDSSBkZXBsb3ltZW50IHN0YXRlIGlzIHJlbGV2YW50CiAgICAgICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJERlcGxveW1lbnRTdGF0ZXMpICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhZ3JlcCB7ICRfIGVxICRWZXJzaW9uLT57RGVwbFN0YXRlfSB9IEB7JERlcGxveW1lbnRTdGF0ZXN9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBjdXJyZW50IGluY2lkZW50IHN0YXRlIHZzIHN0YXRlIGNhdXNlZCBieSBsaW5rCgogICAgICAgICAgICAgICAgICAgICMgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBpcyBsb3dlciB0aGFuIGNhdXNlZCBieSBsaW5rIC0+IHNldAogICAgICAgICAgICAgICAgICAgIGlmICgkUmVsZXZhbnROb3cpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgYWxyZWFkeSBpbiBoaWdoZXN0IGluY2lkZW50IHN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRWZXJzaW9uLT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZXMtPlswXTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvcnRjdXQ6IG5vdGhpbmcgdG8gZG8gaWYgQ0kgaXMgYWxyZWFkeSBpbiBzYW1lIGluY2lkZW50IHN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRWZXJzaW9uLT57SW5jaVN0YXRlfSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgQ0kgaXMgaW4gaGlnaGVyIGluY2lkZW50IHN0YXRlIGFscmVhZHkKICAgICAgICAgICAgICAgICAgICAgICAgVE1QSU5DSURFTlRTVEFURToKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRUbXBJbmNpZGVudFN0YXRlICggQHskSW5jaWRlbnRTdGF0ZXN9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYWxsIGZ1cnRoZXIgaW5jaWRlbnQgc3RhdGVzIGFyZSBsb3dlciB0aGFuIGN1cnJlbnQgb25lIC0+IHNldCBuZXcgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgVE1QSU5DSURFTlRTVEFURSBpZiAkVG1wSW5jaWRlbnRTdGF0ZSBlcSAkSW5jaWRlbnRTdGF0ZTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJFRtcEluY2lkZW50U3RhdGU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2V0IG5ldyBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2lkZW50U3RhdGUgPT4gJEluY2lkZW50U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBpcyBzYW1lIGFzIGNhdXNlZCBieSBsaW5rIC0+IHJlLWNhbGN1bGF0ZQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG9ydGN1dDogbm90aGluZyB0byBkbyBpZiBDSSBpcyBhbHJlYWR5IGluIGxvd2VzdCBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gZXEgJEluY2lkZW50U3RhdGVzLT5bLTFdOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBzaG9ydGN1dDogbm90aGluZyB0byBkbyBpZiBDSSBpcyBub3QgaW4gc2FtZSBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkVmVyc2lvbi0+e0luY2lTdGF0ZX0gbmUgJEluY2lkZW50U3RhdGU7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHJlY2FsY3VsYXRlIGluY2lkZW50IHN0YXRlIGV4YWN0bHkKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPl9DaGVja0xvd2VySW5jaWRlbnRTdGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gICAgICAgICAgICAgICAgICA9PiAkVmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluY2lkZW50U3RhdGVzICAgICAgICAgICA9PiAkSW5jaWRlbnRTdGF0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgPT4gXCVMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHVua25vd24vaXJyZWxldmFudCBldmVudAogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCiMgUmF0aW9uYWxlOgojIFN0YXJ0IGF0IGhpZ2hlc3QgKHdvcnN0KSBpbmNpZGVudCBzdGF0ZSBhbmQgbG9vcCBkb3duIHRvIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUsCiMgICBjaGVja2luZyBmb3IgbGlua3Mgb24gYWxsIHR5cGVzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGluY2lkZW50IHN0YXRlLgojIElmIGFueSBsaW5rIGZvciBhIGhpZ2hlciBpbmNpZGVudCBzdGF0ZSB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyBmb3VuZCwKIyAgIHNldCB0aGlzIHN0YXRlIGFuZCBleGl0LgojIER1ZSB0byB0b3AtdG8tYm90dG9tIG1ldGhvZCwgbm8gaGlnaGVyIGluY2lkZW50IHN0YXRlIGNhbiBvY2N1ciBsYXRlci4Kc3ViIF9DaGVja1JhaXNlSW5jaWRlbnRTdGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoVmVyc2lvbiBJbmNpZGVudFN0YXRlcyBMaW5rVHlwZXNCeUluY2lkZW50U3RhdGUgVGlja2V0SUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb29wIHRocm91Z2ggdGFyZ2V0IHN0YXRlcyBhbmQgY2hlY2sgaWYgaXQgbmVlZHMgdG8gYmUgY2hhbmdlZAogICAgSU5DSURFTlRTVEFURToKICAgIGZvciBteSAkSW5jaWRlbnRTdGF0ZSAoIEB7ICRQYXJhbXtJbmNpZGVudFN0YXRlc30gfSApIHsKCiAgICAgICAgIyBDSSBhbHJlYWR5IGluIHRhcmdldCBzdGF0ZSAtIG5vdGhpbmcgdG8gZG8KICAgICAgICByZXR1cm4gMSBpZiAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9IGVxICRJbmNpZGVudFN0YXRlOwoKICAgICAgICAjIGNoZWNrIGlmIHdlIGhhdmUgbGlua2VkIHRpY2tldHMgdGhhdCBsZWFkIHRvIGluY2lkZW50IHN0YXRlCiAgICAgICAgTElOS1RZUEU6CiAgICAgICAgZm9yIG15ICRMaW5rVHlwZSAoIEB7ICRQYXJhbXtMaW5rVHlwZXNCeUluY2lkZW50U3RhdGV9LT57JEluY2lkZW50U3RhdGV9IH0gKSB7CiAgICAgICAgICAgIG5leHQgTElOS1RZUEUgaWYgISRTZWxmLT5fQ2hlY2tDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte1ZlcnNpb259LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHdlIGhhdmUgYXQgbGVhc3Qgb25lIGxpbmtlZCB0aWNrZXQgLSBzZXQgaW5jaWRlbnQgc3RhdGUgYW5kIGV4aXQKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fU2V0Q0lTdGF0dXMoCiAgICAgICAgICAgICAgICBWZXJzaW9uICAgICAgID0+ICRQYXJhbXtWZXJzaW9ufSwKICAgICAgICAgICAgICAgIEluY2lkZW50U3RhdGUgPT4gJEluY2lkZW50U3RhdGUsCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgojIFJhdGlvbmFsZToKIyBTaG9ydGN1dCBpZiBDSSBpcyBhbHJlZHkgaW4gbG93ZXN0IChiZXN0KSBpbmNpZGVudCBzdGF0ZSA9IGNhbid0IGhhdmUgY2hhbmdlZCBhZnRlciBsaW5rIGRlbGV0ZS4KIyBTdGFydCBhdCBoaWdoZXN0ICh3b3JzdCkgaW5jaWRlbnQgc3RhdGUgYW5kIGxvb3AgZG93biB0byBjdXJyZW50IGluY2lkZW50IHN0YXRlLAojICAgY2hlY2tpbmcgZm9yIGxpbmtzIG9uIGFsbCB0eXBlcyBjb25maWd1cmVkIGZvciB0aGUgY29ycmVzcG9uZGluZyBpbmNpZGVudCBzdGF0ZXMuCiMgSWYgYSBsaW5rIGZvciB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBpcyBmb3VuZCwgZXhpdCBpbW1lZGlhdGVseSAobm8gY2hhbmdlKS4KIyBPdGhlcndpc2Ugc2V0IGluY2lkZW50IHN0YXRlIGZvciBmaXJzdCBvY2N1cmFuY2Ugb2YgYSBsaW5rLCB0aGVuIGV4aXQuCiMgSWYgbm8gbGluayBpcyBmb3VuZCwgc2V0IHRoZSBsb3dlc3Qgc3RhdGUuCiMgRHVlIHRvIHRvcC10by1ib3R0b20gbWV0aG9kLCBmaXJzdCByZW1lbWJlcmVkIGluY2lkZW50IHN0YXRlIGlzIHRoZSBoaWdoZXN0IHBvc3NpYmxlLgpzdWIgX0NoZWNrTG93ZXJJbmNpZGVudFN0YXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhWZXJzaW9uIEluY2lkZW50U3RhdGVzIExpbmtUeXBlc0J5SW5jaWRlbnRTdGF0ZSBUaWNrZXRJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHNob3J0Y3V0IGZvciBsb3dlc3QgbGV2ZWwKICAgIHJldHVybiAxIGlmICRQYXJhbXtWZXJzaW9ufS0+e0luY2lTdGF0ZX0gZXEgJFBhcmFte0luY2lkZW50U3RhdGVzfS0+Wy0xXTsKCiAgICAjIGxvb3AgdGhyb3VnaCB0YXJnZXQgc3RhdGVzIGFuZCBjaGVjayBpZiBpdCBuZWVkcyB0byBiZSBjaGFuZ2VkCiAgICBteSAkTG93ZXJJbmNpZGVudFN0YXRlOwogICAgSU5DSURFTlRTVEFURToKICAgIGZvciBteSAkSW5jaWRlbnRTdGF0ZSAoIEB7ICRQYXJhbXtJbmNpZGVudFN0YXRlc30gfSApIHsKCiAgICAgICAgIyBza2lwIGxldmVsIGlmIGN1cnJlbnQgQ0kgaW5jaWRlbnQgc3RhdGUgaXMgbm90IG9uIHRoaXMgb3IgYW55IGhpZ2hlciBsZXZlbAogICAgICAgIG5leHQgSU5DSURFTlRTVEFURSBpZiAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9IG5lICRJbmNpZGVudFN0YXRlICYmICEkTG93ZXJJbmNpZGVudFN0YXRlOwoKICAgICAgICAjIGNoZWNrIGlmIHdlIGhhdmUgbGlua2VkIHRpY2tldHMgdGhhdCBrZWVwIGluY2lkZW50IHN0YXRlCiAgICAgICAgTElOS1RZUEU6CiAgICAgICAgZm9yIG15ICRMaW5rVHlwZSAoIEB7ICRQYXJhbXtMaW5rVHlwZXNCeUluY2lkZW50U3RhdGV9LT57JEluY2lkZW50U3RhdGV9IH0gKSB7CiAgICAgICAgICAgIG5leHQgTElOS1RZUEUgaWYgISRTZWxmLT5fQ2hlY2tDb25maWdJdGVtTGlua3MoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte1ZlcnNpb259LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHdlIGhhdmUgYXQgbGVhc3Qgb25lIGxpbmtlZCB0aWNrZXQKCiAgICAgICAgICAgICMga2VlcCBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICByZXR1cm4gMSBpZiAkUGFyYW17VmVyc2lvbn0tPntJbmNpU3RhdGV9IGVxICRJbmNpZGVudFN0YXRlOwoKICAgICAgICAgICAgIyBvdGhlcndpc2Ugc2V0IG5ldyAobG93ZXIpIGluY2lkZW50IHN0YXRlIGFuZCBleGl0CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1NldENJU3RhdHVzKAogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICAgICAgICAgICAgICBJbmNpZGVudFN0YXRlID0+ICRJbmNpZGVudFN0YXRlLAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGF0IHN0YXRlIG5lZWRzIHRvIGJlIGNoYW5nZWQgKD0gY3VycmVudCBsZXZlbCBpc24nVCBqdXN0aWZpZWQgYnkgbGlua3MgYW55bW9yZSkKICAgICAgICAkTG93ZXJJbmNpZGVudFN0YXRlID0gMTsKICAgIH0KCiAgICAjIG5vIHJlbGV2YW50IGxpbmtzIGhhdmUgYmVlbiBmb3VuZCwgYnV0IENJIHdhc24ndCBpbiBsb3dlc3QgaW5jaWRlbnQgc3RhdGUgYmVmb3JlIC0gc2V0IGl0IG5vdyBhbmQgZXhpdAogICAgcmV0dXJuICRTZWxmLT5fU2V0Q0lTdGF0dXMoCiAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkUGFyYW17VmVyc2lvbn0sCiAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAkUGFyYW17SW5jaWRlbnRTdGF0ZXN9LT5bLTFdLAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICk7Cn0KCiMgc2V0IENJIHRvIGEgc3BlY2lmaWVkIGluY2lkZW50IHN0YXRlIGFuZCBsb2cgY2hhbmdlIGluIGNvcnJlc3BvbmRpbmcgdGlja2V0CnN1YiBfU2V0Q0lTdGF0dXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFZlcnNpb24gSW5jaWRlbnRTdGF0ZSBUaWNrZXRJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgbXkgJEluY2lkZW50U3RhdGVMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICk7CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRJbmNpZGVudFN0YXRlTGlzdCk7CgogICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBpcyB2YWxpZAogICAgbXkgJVJldmVyc2VJbmNpZGVudFN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaWRlbnRTdGF0ZUxpc3R9OwogICAgaWYgKCAhJFJldmVyc2VJbmNpZGVudFN0YXRlTGlzdHsgJFBhcmFte0luY2lkZW50U3RhdGV9IH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJIYXZlIGludmFsaWQgaW5jaWRlbnQgc3RhdGUgJyRQYXJhbXtJbmNpZGVudFN0YXRlfSchIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGFkZCBhIG5ldyB2ZXJzaW9uIHdpdGggdGhlIG5ldyBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5WZXJzaW9uQWRkKAogICAgICAgICV7ICRQYXJhbXtWZXJzaW9ufSB9LAogICAgICAgIEluY2lTdGF0ZUlEID0+ICRSZXZlcnNlSW5jaWRlbnRTdGF0ZUxpc3R7ICRQYXJhbXtJbmNpZGVudFN0YXRlfSB9LAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICApOwogICAgcmV0dXJuIGlmICEkVmVyc2lvbklEOwoKICAgICMgbG9nIGNoYW5nZSBpbiB0aWNrZXQKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKS0+SGlzdG9yeUFkZCgKICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBIaXN0b3J5VHlwZSAgPT4gJ01pc2MnLAogICAgICAgIE5hbWUgICAgICAgICA9PiAiVXBkYXRlZCBpbmNpZGVudCBzdGF0ZSBvZiBjb25maWcgaXRlbSAnJFBhcmFte1ZlcnNpb259LT57TnVtYmVyfScgdG8gJyRQYXJhbXtJbmNpZGVudFN0YXRlfScuIiwKICAgICAgICBDcmVhdGVVc2VySUQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCiMgY2hlY2sgaWYgcmVsZXZhbnQgQ0lzIGFyZSBsaW5rZWQgdG8gYSB0aWNrZXQKc3ViIF9DaGVja1RpY2tldExpbmtzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhUaWNrZXRJRCBUeXBlKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxpbmsgdHlwZSBsb29rdXAKICAgIG15ICRMaW5rVHlwZUxvb2t1cCA9ICRTZWxmLT5fTGlua1R5cGVMb29rdXBHZXQoKTsKCiAgICBteSAlTGlua0tleUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rS2V5TGlzdCgKICAgICAgICBPYmplY3QxICAgPT4gJ1RpY2tldCcsCiAgICAgICAgS2V5MSAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgT2JqZWN0MiAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU3RhdGUgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZUxvb2t1cC0+eyAkUGFyYW17VHlwZX0gfS0+e05hbWV9LAogICAgICAgIERpcmVjdGlvbiA9PiAkTGlua1R5cGVMb29rdXAtPnsgJFBhcmFte1R5cGV9IH0tPntEaXJlY3Rpb259LT57VGlja2V0fSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CiAgICByZXR1cm4gaWYgIUlzSGFzaFJlZldpdGhEYXRhKCBcJUxpbmtLZXlMaXN0ICk7CiAgICByZXR1cm4gKCBzb3J0IGtleXMgJUxpbmtLZXlMaXN0ICk7Cn0KCiMgY2hlY2sgaWYgcmVsZXZhbnQgb3BlbiB0aWNrZXRzIGFyZSBsaW5rZWQgdG8gYSBDSQpzdWIgX0NoZWNrQ29uZmlnSXRlbUxpbmtzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgVHlwZSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBsaW5rIHR5cGUgbG9va3VwCiAgICBteSAkTGlua1R5cGVMb29rdXAgPSAkU2VsZi0+X0xpbmtUeXBlTG9va3VwR2V0KCk7CgogICAgbXkgJUxpbmtLZXlMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0tleUxpc3QoCiAgICAgICAgT2JqZWN0MSAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgS2V5MSAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgIE9iamVjdDIgICA9PiAnVGlja2V0JywKICAgICAgICBTdGF0ZSAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBUeXBlICAgICAgPT4gJExpbmtUeXBlTG9va3VwLT57ICRQYXJhbXtUeXBlfSB9LT57TmFtZX0sCiAgICAgICAgRGlyZWN0aW9uID0+ICRMaW5rVHlwZUxvb2t1cC0+eyAkUGFyYW17VHlwZX0gfS0+e0RpcmVjdGlvbn0tPntJVFNNQ29uZmlnSXRlbX0sCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwogICAgcmV0dXJuIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggXCVMaW5rS2V5TGlzdCApOwoKICAgICMgbGlzdCBvZiByZWxldmFudCBzdGF0ZSB0eXBlcwogICAgbXkgQE9wZW5TdGF0ZVR5cGVzID0gKCAnbmV3JywgJ29wZW4nLCAncGVuZGluZyByZW1pbmRlcicsICdwZW5kaW5nIGF1dG8nICk7CgogICAgIyB1c2UgdGlja2V0IHR5cGUgY2hlY2s/CiAgICBteSAkVGlja2V0VHlwZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpUaWNrZXRUeXBlcycpOwogICAgbXkgJENoZWNrVGlja2V0VHlwZXM7CiAgICAkQ2hlY2tUaWNrZXRUeXBlcyA9IDEgaWYgSXNBcnJheVJlZldpdGhEYXRhKCRUaWNrZXRUeXBlcyk7CgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIFRJQ0tFVElEOgogICAgZm9yIG15ICRUaWNrZXRJRCAoIHNvcnQga2V5cyAlTGlua0tleUxpc3QgKSB7CiAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhZ3JlcCB7ICRfIGVxICRUaWNrZXR7U3RhdGVUeXBlfSB9IEBPcGVuU3RhdGVUeXBlczsKICAgICAgICBpZiAoJENoZWNrVGlja2V0VHlwZXMpIHsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhJFRpY2tldHtUeXBlfTsKICAgICAgICAgICAgbmV4dCBUSUNLRVRJRCBpZiAhZ3JlcCB7ICRfIGVxICRUaWNrZXR7VHlwZX0gfSBAeyRUaWNrZXRUeXBlc307CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybjsKfQoKIyBjb21waWxlIGxpc3Qgb2YgaW50ZXJuYWwgbGluayB0eXBlIG5hbWVzIGFuZCBkaXJlY3Rpb25zIHRvIHVzZSBmb3IgTGlua0tleUxpc3QKc3ViIF9MaW5rVHlwZUxvb2t1cEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaWYgd2UgaGF2ZSBnZW5lcmF0ZWQgbG9va3VwIGJlZm9yZQogICAgcmV0dXJuICRTZWxmLT57TGlua1R5cGVMb29rdXB9IGlmICRTZWxmLT57TGlua1R5cGVMb29rdXB9OwoKICAgIG15ICVMaW5rVHlwZUxvb2t1cDsKICAgIG15ICVUeXBlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPlR5cGVMaXN0KCk7CiAgICBmb3IgbXkgJFR5cGVOYW1lSW50ZXJuYWwgKCBzb3J0IGtleXMgJVR5cGVMaXN0ICkgewogICAgICAgIG15ICRTb3VyY2VOYW1lID0gJFR5cGVMaXN0eyRUeXBlTmFtZUludGVybmFsfS0+e1NvdXJjZU5hbWV9OwogICAgICAgIG15ICRUYXJnZXROYW1lID0gJFR5cGVMaXN0eyRUeXBlTmFtZUludGVybmFsfS0+e1RhcmdldE5hbWV9OwogICAgICAgICRMaW5rVHlwZUxvb2t1cHskU291cmNlTmFtZX0gPSB7CiAgICAgICAgICAgIE5hbWUgICAgICA9PiAkVHlwZU5hbWVJbnRlcm5hbCwKICAgICAgICAgICAgRGlyZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+ICRTb3VyY2VOYW1lIGVxICRUYXJnZXROYW1lID8gJ0JvdGgnIDogJ1RhcmdldCcsCiAgICAgICAgICAgICAgICBUaWNrZXQgICAgICAgICA9PiAkU291cmNlTmFtZSBlcSAkVGFyZ2V0TmFtZSA/ICdCb3RoJyA6ICdTb3VyY2UnLAogICAgICAgICAgICB9LAogICAgICAgIH07CiAgICAgICAgJExpbmtUeXBlTG9va3VweyRUYXJnZXROYW1lfSA9IHsKICAgICAgICAgICAgTmFtZSAgICAgID0+ICRUeXBlTmFtZUludGVybmFsLAogICAgICAgICAgICBEaXJlY3Rpb24gPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gJFNvdXJjZU5hbWUgZXEgJFRhcmdldE5hbWUgPyAnQm90aCcgOiAnU291cmNlJywKICAgICAgICAgICAgICAgIFRpY2tldCAgICAgICAgID0+ICRTb3VyY2VOYW1lIGVxICRUYXJnZXROYW1lID8gJ0JvdGgnIDogJ1RhcmdldCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfTsKICAgIH0KCiAgICAjIHJlbWVtYmVyIHJlc3VsdAogICAgJFNlbGYtPntMaW5rVHlwZUxvb2t1cH0gPSBcJUxpbmtUeXBlTG9va3VwOwoKICAgIHJldHVybiBcJUxpbmtUeXBlTG9va3VwOwp9CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/Console/Command/Admin/ITSM/Configitem/Delete.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKIyMgbm8gY3JpdGljIChNb2R1bGVzOjpSZXF1aXJlRXhwbGljaXRQYWNrYWdlKQp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CgpteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6RGVsZXRlJyk7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiQWRtaW46OklUU006OkNvbmZpZ2l0ZW06OkRlbGV0ZSBleGl0IGNvZGUgd2l0aG91dCBvcHRpb25zIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIG9wdGlvbiAtLWFsbCBhbmQgYXJndW1lbnQgLS1hY2NlcHQgbiAoIGNhbmNlbCBkZWxldGluZyBhbGwgY29uZmlnIGl0ZW0pCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1hbGwnLCAnbicgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICctLWFsbCcgbiIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCBjbGFzcyBvcHRpb25zIChpbnZhbGlkIGNsYXNzKQpteSAkUmFuZG9tQ2xhc3MgPSAnVGVzdENsYXNzJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1jbGFzcycsICRSYW5kb21DbGFzcyApOwoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJPcHRpb24gJ2NsYXNzJyAoYnV0IGNsYXNzICRSYW5kb21DbGFzcyBkb2Vzbid0IGV4aXN0KSAiLAopOwoKIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdApteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiMgYWRkIHRlc3QgZ2VuZXJhbCBjYXRhbG9nIGl0ZW0KbXkgJEdlbmVyYWxDYXRhbG9nSXRlbUlEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tQ2xhc3MsCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKKTsKCiRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc1NldCgKICAgIEl0ZW1JRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICBLZXkgICAgPT4gJ1Blcm1pc3Npb24nLAogICAgVmFsdWUgID0+IDUsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRHZW5lcmFsQ2F0YWxvZ0l0ZW1JRCwKICAgICJUZXN0IGdlbmVyYWwgY2F0YWxvZyBpdGVtIGlzIGNyZWF0ZWQgLSAkR2VuZXJhbENhdGFsb2dJdGVtSUQgIiwKKTsKCiMgZ2V0IENvbmZpZ0l0ZW0gb2JqZWN0Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgojIGdldCBsaXN0IG9mIGFsbCBkZXBsb3ltZW50IHN0YXRlcwpteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGxpc3Qgb2YgYWxsIGluY2lkZW50IHN0YXRlcwpteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgpteSBAQ29uZmlnSXRlbU51bWJlcnM7Cm15ICRDb25maWdJdGVtSUQ7Cgpmb3IgKCAxIC4uIDEwICkgewoKICAgICMgY3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVyCiAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgIFR5cGUgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yJyksCiAgICAgICAgQ2xhc3NJRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICApOwoKICAgICMgYWRkIHRlc3QgQ29uZmlnSXRlbQogICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgQ2xhc3NJRCA9PiAkR2VuZXJhbENhdGFsb2dJdGVtSUQsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgIyBhZGQgbmV3IHZlcnNpb25zIGZvciB0aGUgbGFzdCBhZGRlZCBpbiBwcmV2aW91cyBsb29wCiAgICBteSAkQ29uZmlnSXRlbU5hbWUgPSAnVGVzdENvbmZpZ0l0ZW0nIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICBDT1VOVDoKICAgIGZvciBteSAkQ291bnQgKCAxIC4uIDUwICkgewoKICAgICAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnLScgLiAkQ291bnQsCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAxLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFJldmVyc2VEZXBsU3RhdGVMaXN0e1BsYW5uZWR9LAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJFJldmVyc2VJbmNpU3RhdGVMaXN0e09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkVmVyc2lvbklELAogICAgICAgICAgICAiVmVyc2lvbiAkQ291bnQgZm9yIGNvbmZpZyBpdGVtICRDb25maWdJdGVtSUQgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTmFtZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGFuZ2UgdGhlIGRhdGUgaW50byBwYXN0IGZvciB0aGUgZmlyc3QgMjAgdmVyc2lvbnMKICAgICAgICBuZXh0IENPVU5UIGlmICRDb3VudCA+IDEwOwoKICAgICAgICBteSAkVmVyc2lvblRlc3RDcmVhdGVUaW1lID0gJzIwMTAtMDEtMDEgMDA6MDA6MDAnOwoKICAgICAgICAjIGluc2VydCBuZXcgdmVyc2lvbgogICAgICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtX3ZlcnNpb24KICAgICAgICAgICAgICAgIFNFVCBjcmVhdGVfdGltZSA9ID8KICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCRWZXJzaW9uVGVzdENyZWF0ZVRpbWUsCiAgICAgICAgICAgICAgICBcJFZlcnNpb25JRCwKICAgICAgICAgICAgXSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgY29tbWFuZCB3aXRoIGFsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMgb3B0aW9ucyAoZGVsZXRlIGFsbCB2ZXJzaW9ucyBvbGRlciB0aGFuIG9uZSBkYXkpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tYWxsLW9sZGVyLXRoYW4tZGF5cy12ZXJzaW9ucycsIDEgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEV4aXRDb2RlLAogICAgICAgIDAsCiAgICAgICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMgMSIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaXN0IG9mIHJlbWFpbmluZyB2ZXJzaW9ucyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICMgcmVzdWx0IHNob3VsZCBvbmx5IGJlIDQwIHZlcnNpb25zIG5vdwogICAgJFNlbGYtPklzKAogICAgICAgIHNjYWxhciBAeyRWZXJzaW9uTGlzdH0sCiAgICAgICAgNDAsCiAgICAgICAgIk51bWJlciBvZiByZW1haW5pbmcgdmVyc2lvbnMgYWZ0ZXIgcnVubmluZyBjb21tYW5kIHdpdGggT3B0aW9ucyAtLWFsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMgMSIsCiAgICApOwoKICAgICMgY2hlY2sgY29tbWFuZCB3aXRoIGFsbC1idXQta2VlcC1sYXN0LXZlcnNpb25zIG9wdGlvbnMgKGRlbGV0ZSBhbGwgdmVyc2lvbnMgYnV0IGtlZXAgdGhlIGxhc3QgMzAgdmVyc2lvbnMpCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMnLCAzMCApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAkRXhpdENvZGUsCiAgICAgICAgMCwKICAgICAgICAiRXhpdCBjb2RlOiBPcHRpb25zIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgMzAiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgICRTZWxmLT5JcygKICAgICAgICBzY2FsYXIgQHskVmVyc2lvbkxpc3R9LAogICAgICAgIDMwLAogICAgICAgICJOdW1iZXIgb2YgcmVtYWluaW5nIHZlcnNpb25zIGFmdGVyIHJ1bm5pbmcgY29tbWFuZCB3aXRoIE9wdGlvbnMgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucyAzMCIsCiAgICApOwoKICAgICMgY2hlY2sgY29tbWFuZCB3aXRoIGFsbC1vbGQtdmVyc2lvbnMgb3B0aW9ucyAoZGVsZXRlIGFsbCBvbGQgdmVyc2lvbnMgZXhjZXB0IHRoZSBsYXN0IG9uZSkKICAgICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCctLWFsbC1vbGQtdmVyc2lvbnMnKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEV4aXRDb2RlLAogICAgICAgIDAsCiAgICAgICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWFsbC1vbGQtdmVyc2lvbnMiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGlzdCBvZiByZW1haW5pbmcgdmVyc2lvbnMgb2YgdGhpcyBjb25maWcgaXRlbQogICAgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIHJlc3VsdCBzaG91bGQgb25seSBiZSA0MCB2ZXJzaW9ucyBub3cKICAgICRTZWxmLT5JcygKICAgICAgICBzY2FsYXIgQHskVmVyc2lvbkxpc3R9LAogICAgICAgIDEsCiAgICAgICAgIk51bWJlciBvZiByZW1haW5pbmcgdmVyc2lvbnMgYWZ0ZXIgcnVubmluZyBjb21tYW5kIHdpdGggT3B0aW9ucyAtLWFsbC1vbGQtdmVyc2lvbnMiLAogICAgKTsKfQoKIyBjaGVjayBjb21tYW5kIHdpdGggY2xhc3Mgb3B0aW9ucyAoJFJhbmRvbUNsYXNzIGNsYXNzKSBhbmQgZGVwbG95bWVudC1zdGF0ZSAnUGxhbm5lZCcKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzLCAnLS1kZXBsb3ltZW50LXN0YXRlJywgJ1BsYW5uZWQnICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIkV4aXQgY29kZTogT3B0aW9ucyAtLWNsYXNzICRSYW5kb21DbGFzcyAtLWRlcGxveW1lbnQtc3RhdGUnIFBsYW5uZWQiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY29uZmlnaXRlbS1udW1iZXIgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgKICAgICctLWNvbmZpZ2l0ZW0tbnVtYmVyJywgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLCAnLS1jb25maWdpdGVtLW51bWJlcicsCiAgICAkQ29uZmlnSXRlbU51bWJlcnNbMV0KKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiRXhpdCBjb2RlOiBPcHRpb25zIC0tY29uZmlnaXRlbS1udW1iZXIiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggY2xhc3Mgb3B0aW9ucyAoJFJhbmRvbUNsYXNzIGNsYXNzKQojIHRocmVlIGNvbmZpZyBJdGVtcyBvZiB0ZW4gY3JlYXRlZCBpbiB0ZXN0IHdlcmUgZGVsZXRlZCB3aXRoIHRoZSBwcmV2aW91cyBjb21tYW5kcwojIHdpdGggdGhlIG5leHQgY29tbWFuZCBvdGhlciBzZXZlbiB3aWxsIGJlIGRlbGV0ZWQKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIkV4aXQgY29kZTogT3B0aW9uIC0tY2xhc3MgJFJhbmRvbUNsYXNzIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIGNvbmZpZ2l0ZW0tbnVtYmVyIG9wdGlvbnMgYW5kIG5vdCBhbGxvd2VkIGFkZGl0aW9uYWwgY2xhc3Mgb3B0aW9uCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1jb25maWdpdGVtLW51bWJlcicsICRDb25maWdJdGVtTnVtYmVyc1swXSwgJy0tY2xhc3MnLCAkUmFuZG9tQ2xhc3MgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiRXhpdCBjb2RlOiBPcHRpb25zIC0tY29uZmlnaXRlbS1udW1iZXIgLS1jbGFzcyIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCBjb25maWdpdGVtLW51bWJlciBvcHRpb25zIGFuZCBub3QgYWxsb3dlZCBhZGRpdGlvbmFsIGRlcGxveW1lbnQgc3RhdGUgb3B0aW9uCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCAnLS1jb25maWdpdGVtLW51bWJlcicsICRDb25maWdJdGVtTnVtYmVyc1swXSwgJy0tZGVwbG95bWVudC1zdGF0ZScsICdQbGFubmVkJyApOwoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1jb25maWdpdGVtLW51bWJlciAtLWRlcGxveW1lbnQtc3RhdGUiLAopOwoKIyBjaGVjayBjb21tYW5kIHdpdGggLS1hbGwsIC0tYWxsLW9sZC12ZXJzaW9ucywgLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucywgLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zIG1peGVkIHRvZ2V0aGVyLgokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgKICAgICctLWFsbCcsICctLWFsbC1vbGQtdmVyc2lvbnMnLCAgICAgICAgICAgICAnLS1hbGwtYnV0LWtlZXAtbGFzdC12ZXJzaW9ucycsCiAgICAyLCAgICAgICAnLS1hbGwtb2xkZXItdGhhbi1kYXlzLXZlcnNpb25zJywgJzEwJwopOwoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMSwKICAgICJFeGl0IGNvZGU6IE9wdGlvbnMgLS1hbGwgLS1hbGwtb2xkLXZlcnNpb25zIC0tYWxsLWJ1dC1rZWVwLWxhc3QtdmVyc2lvbnMgMiAtLWFsbC1vbGRlci10aGFuLWRheXMtdmVyc2lvbnMgMTAiLAopOwoKIyBjbGVhbnVwIGlzIGRvbmUgYnkgUmVzdG9yZURhdGFiYXNlCgoxOwo=</File>
        <File Permission="660" Location="scripts/test/Console/Command/Admin/ITSM/Configitem/ListDuplicates.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKIyMgbm8gY3JpdGljIChNb2R1bGVzOjpSZXF1aXJlRXhwbGljaXRQYWNrYWdlKQp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CgojIGdldCBjb21tYW5kIG9iamVjdApteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6Q29uZmlnaXRlbTo6TGlzdER1cGxpY2F0ZXMnKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIGNoZWNrIGNvbW1hbmQgd2l0aG91dCBhbnkgb3B0aW9ucwpteSAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgpOwoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJObyBvcHRpb25zIC0gbGlzdCBhbGwgY29uZmlnIGl0ZW1zIGluIHByb2R1Y3RpdmUgc3RhdGVzIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tY2xhc3Mgb3B0aW9ucyAoaW52YWxpZCBjbGFzcykKbXkgJFJhbmRvbUNsYXNzID0gJ05vbkV4aXN0aW5nQ2xhc3MnIC4gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgJFJhbmRvbUNsYXNzICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAxLAogICAgIk9wdGlvbiAnY2xhc3MnIChidXQgY2xhc3MgJFJhbmRvbUNsYXNzIGRvZXNuJ3QgZXhpc3QpICIsCik7CgojIGFkZCB0ZXN0IGNvbmZpZyBpdGVtCm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElEcwpteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKKTsKbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiMgZ2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcwpteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKbXkgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCA9ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CgojIGdldCBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIKbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgIFR5cGUgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yJyksCiAgICBDbGFzc0lEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKKTsKCm15IEBDb25maWdJdGVtSUQ7CgojIGFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0KbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgVXNlcklEICA9PiAxLAopOwpwdXNoIEBDb25maWdJdGVtSUQsICRDb25maWdJdGVtSUQ7CgpteSAkQ29uZmlnSXRlbU5hbWUgPSAnVGVzdENvbmZpZ0l0ZW0nIC4gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKbXkgJFZlcnNpb25JRCAgICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICBEZXBsU3RhdGVJRCAgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgIEluY2lTdGF0ZUlEICA9PiAxLAogICAgVXNlcklEICAgICAgID0+IDEsCiAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKKTsKCiMgYWRkIHRoZSBuZXcgZHVwbGljYXRlIENvbmZpZ0l0ZW0KJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICBVc2VySUQgID0+IDEsCik7CnB1c2ggQENvbmZpZ0l0ZW1JRCwgJENvbmZpZ0l0ZW1JRDsKCiRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICBEZWZpbml0aW9uSUQgPT4gMSwKICAgIERlcGxTdGF0ZUlEICA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgSW5jaVN0YXRlSUQgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAopOwoKIyBhZGQgdGhlIG5ldyBkdXBsaWNhdGUgQ29uZmlnSXRlbSBpbiBTb2Z0d2FyZSBjYXRhbG9nIGNsYXNzCiMgZ2V0ICdTb2Z0d2FyZScgY2F0YWxvZyBjbGFzcyBJRHMKJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIE5hbWUgID0+ICdTb2Z0d2FyZScsCik7Cm15ICRTb2Z0d2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgokQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBDbGFzc0lEID0+ICRTb2Z0d2FyZUNvbmZpZ0l0ZW1JRCwKICAgIFVzZXJJRCAgPT4gMSwKKTsKcHVzaCBAQ29uZmlnSXRlbUlELCAkQ29uZmlnSXRlbUlEOwoKJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIERlZmluaXRpb25JRCA9PiAxLAogICAgRGVwbFN0YXRlSUQgID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICBJbmNpU3RhdGVJRCAgPT4gMSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLWNsYXNzIEhhcmR3YXJlIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLWNsYXNzJywgIkhhcmR3YXJlIiApOwoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJPcHRpb24gJ2NsYXNzJyAoSGFyZHdhcmUpICIsCik7CgojIGNoZWNrIGNvbW1hbmQgd2l0aCAtLXNjb3BlIG9wdGlvbnMgKGludmFsaWQgc2NvcGUpCm15ICRSYW5kb21TY29wZSA9ICdzY29wZScgLiAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAkUmFuZG9tU2NvcGUgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDEsCiAgICAiT3B0aW9uICdzY29wZScgKGJ1dCBwcm92aWRlZCBpbnZhbGlkIHZhbHVlIGZvciBvcHRpb24gJy0tc2NvcGUnIC0gJFJhbmRvbVNjb3BlICkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgY2xhc3Mgb3B0aW9ucwokRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggJy0tc2NvcGUnLCAnY2xhc3MnICk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIk9wdGlvbiAnc2NvcGUnIChjbGFzcykgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tc2NvcGUgZ2xvYmFsIG9wdGlvbnMKJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoICctLXNjb3BlJywgJ2dsb2JhbCcgKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGdsb2JhbCkgIiwKKTsKCiMgY2hlY2sgY29tbWFuZCB3aXRoIC0tYWxsLXN0YXRlcyBvcHRpb25zCiRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCctLWFsbC1zdGF0ZXMnKTsKCiRTZWxmLT5JcygKICAgICRFeGl0Q29kZSwKICAgIDAsCiAgICAiT3B0aW9uICdzY29wZScgKGFsbC1zdGF0ZXMpICIsCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJzZQoKMTsK</File>
        <File Permission="660" Location="scripts/test/Console/Command/Admin/ITSM/IncidentState/Recalculate.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKIyMgbm8gY3JpdGljIChNb2R1bGVzOjpSZXF1aXJlRXhwbGljaXRQYWNrYWdlKQp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CgpteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpBZG1pbjo6SVRTTTo6SW5jaWRlbnRTdGF0ZTo6UmVjYWxjdWxhdGUnKTsKCm15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCk7CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIkFkbWluOjpJVFNNOjpJbmNpZGVudFN0YXRlOjpSZWNhbGN1bGF0ZSBleGl0IGNvZGUiLAopOwoKMTsK</File>
        <File Permission="660" Location="scripts/test/Console/Command/Maint/ITSM/Configitem/DefinitionPerl2YAML.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKIyMgbm8gY3JpdGljIChNb2R1bGVzOjpSZXF1aXJlRXhwbGljaXRQYWNrYWdlKQp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJENsYXNzSUQsCiAgICAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciLAopOwoKbXkgJFZlcnNpb24gPSAxOwoKbXkgJFBlcmxEZWZpbml0aW9uID0gPDwnRU9GJzsKWwogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ1ZlbmRvcicsCiAgICAgICAgTmFtZSAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1ZlbmRvcicpLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgfSwKICAgICAgICBDb3VudE1pbiAgICAgPT4gMSwKICAgICAgICBDb3VudE1heCAgICAgPT4gMSwKICAgICAgICBDb3VudERlZmF1bHQgPT4gMSwKICAgIH0sCl0KRU9GCgpteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCnJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgIFNRTCA9PiAnCiAgICAgICAgSU5TRVJUIElOVE8gY29uZmlnaXRlbV9kZWZpbml0aW9uCiAgICAgICAgICAgIChjbGFzc19pZCwgY29uZmlnaXRlbV9kZWZpbml0aW9uLCB2ZXJzaW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5KQogICAgICAgIFZBTFVFUwogICAgICAgICAgICAoPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgIEJpbmQgPT4gWyBcJENsYXNzSUQsIFwkUGVybERlZmluaXRpb24sIFwkVmVyc2lvbiwgXCRVc2VySUQgXSwKKTsKCnJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgU1FMID0+ICcKICAgICAgICBTRUxFQ1QgaWQKICAgICAgICBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbgogICAgICAgIFdIRVJFIGNsYXNzX2lkID0gPwogICAgICAgICAgICBBTkQgdmVyc2lvbiA9ID8KICAgICAgICBPUkRFUiBCWSB2ZXJzaW9uIERFU0MnLAogICAgQmluZCAgPT4gWyBcJENsYXNzSUQsIFwkVmVyc2lvbiBdLAogICAgTGltaXQgPT4gMSwKKTsKCm15ICREZWZpbml0aW9uSUQ7CndoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgJERlZmluaXRpb25JRCA9ICRSb3dbMF07Cn0KCm15ICRHZXREZWZpbml0aW9uID0gc3ViIHsKICAgIG15ICVQYXJhbSA9IEBfOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBjb25maWdpdGVtX2RlZmluaXRpb24KICAgICAgICAgICAgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24KICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgIE9SREVSIEJZIHZlcnNpb24gREVTQycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0RlZmluaXRpb25JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAkRGVmaW5pdGlvbjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICREZWZpbml0aW9uID0gJFJvd1swXTsKICAgIH0KICAgIHJldHVybiAkRGVmaW5pdGlvbjsKfTsKCm15ICREZWZpbml0aW9uID0gJEdldERlZmluaXRpb24tPiggRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQgKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICREZWZpbml0aW9uLAogICAgJFBlcmxEZWZpbml0aW9uLAogICAgIkRlZmluaXRpb24gYmVmb3JlIHJ1biAoUGVybCkiLAopOwoKbXkgJENvbW1hbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ2l0ZW06OkRlZmluaXRpb25QZXJsMllBTUwnKTsKCm15ICggJFJlc3VsdCwgJEV4aXRDb2RlICk7Cgp7CiAgICBsb2NhbCAqU1RET1VUOwogICAgb3BlbiBTVERPVVQsICc+OnV0ZjgnLCBcJFJlc3VsdDsgICAgIyMgbm8gY3JpdGljCiAgICAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgpOwp9CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIkNvbW1hbmQgZXhpdCBjb2RlIiwKKTsKCiREZWZpbml0aW9uID0gJEdldERlZmluaXRpb24tPiggRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQgKTsKCm15ICRZQU1MRGVmaW5pdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkR1bXAoCiAgICBEYXRhID0+IGV2YWwgJFBlcmxEZWZpbml0aW9uLCAgICAjIyBubyBjcml0aWMKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICREZWZpbml0aW9uLAogICAgJFlBTUxEZWZpbml0aW9uLAogICAgIkRlZmluaXRpb24gYmVmb3JlIHJ1biAoWUFNTCkiLAopOwoKMTsK</File>
        <File Permission="660" Location="scripts/test/DynamicField/ConfigItem.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXJPYmplY3QgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICRWYWxpZE9iamVjdCAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkWm51bnlIZWxwZXJPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpabnVueUhlbHBlcicpOwpteSAkRHluYW1pY0ZpZWxkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkNvbmZpZ0l0ZW0nKTsKCm15ICRWYWxpZElEID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgIFZhbGlkID0+ICd2YWxpZCcsCik7CgpteSAkVXNlcklEID0gMTsKCiMKIyBQcmVwYXJlIGNvbmZpZyBpdGVtCiMKbXkgJENsYXNzTGlzdFJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgVmFsaWQgPT4gJFZhbGlkSUQsCik7Cm15ICVDbGFzc0xpc3QgPSByZXZlcnNlICV7ICRDbGFzc0xpc3RSZWYgfHwge30gfTsKCm15ICRZZXNOb1JlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm8nLAogICAgVmFsaWQgPT4gJFZhbGlkSUQsCik7Cm15ICVZZXNOb0xpc3QgPSByZXZlcnNlICV7ICRZZXNOb1JlZiB8fCB7fSB9OwoKbXkgJENvbmZpZ0l0ZW0xSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgIENsYXNzSUQgPT4gJENsYXNzTGlzdHtDb21wdXRlcn0sCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciAkQ29uZmlnSXRlbTFJRCwKICAgICdDb25maWcgaXRlbSBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4nLAopOwoKbXkgJENvbmZpZ0l0ZW0xVmVyc2lvbklEID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uQWRkKAogICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbTFJRCwKICAgIE5hbWUgICAgICAgICAgPT4gJ1VuaXQgdGVzdCBjb21wdXRlciAxJywKICAgIENsYXNzTmFtZSAgICAgPT4gJ0NvbXB1dGVyJywKICAgIERlcGxTdGF0ZU5hbWUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgSW5jaVN0YXRlTmFtZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgWE1MRGF0YSAgICAgICA9PiB7CiAgICAgICAgT3RoZXJFcXVpcG1lbnQgICAgICAgICA9PiAnTW91c2UnLAogICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXQgdGVzdCBjb21wdXRlciAxIG5vdGUuJywKICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcyMDQwLTAxLTAxJywKICAgICAgICBJbnN0YWxsRGF0ZSAgICAgICAgICAgID0+ICcyMDQwLTAxLTAxJywKICAgICAgICBDUFUgICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ1BVIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDUFUgMicsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgID0+ICdOSUMnLAogICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRZZXNOb0xpc3R7WWVzfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIElQQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjcuMC4wLjEnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciAkQ29uZmlnSXRlbTFWZXJzaW9uSUQsCiAgICAnQ29uZmlnIGl0ZW0gdmVyc2lvbiBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4nLAopOwoKbXkgJENvbmZpZ0l0ZW0ySUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgIENsYXNzSUQgPT4gJENsYXNzTGlzdHtDb21wdXRlcn0sCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciAkQ29uZmlnSXRlbTJJRCwKICAgICdDb25maWcgaXRlbSBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4nLAopOwoKbXkgJENvbmZpZ0l0ZW0yVmVyc2lvbklEID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uQWRkKAogICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbTJJRCwKICAgIE5hbWUgICAgICAgICAgPT4gJ1VuaXQgdGVzdCBjb21wdXRlciAyJywKICAgIENsYXNzTmFtZSAgICAgPT4gJ0NvbXB1dGVyJywKICAgIERlcGxTdGF0ZU5hbWUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgSW5jaVN0YXRlTmFtZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgWE1MRGF0YSAgICAgICA9PiB7CiAgICAgICAgT3RoZXJFcXVpcG1lbnQgICAgICAgICA9PiAnTW91c2UnLAogICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXQgdGVzdCBjb21wdXRlciAyIG5vdGUuJywKICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcyMDQxLTAxLTAxJywKICAgICAgICBJbnN0YWxsRGF0ZSAgICAgICAgICAgID0+ICcyMDQxLTAxLTAxJywKICAgICAgICBDUFUgICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ1BVIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdDUFUgNCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgID0+ICdOSUMnLAogICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRZZXNOb0xpc3R7Tm99LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgSVBBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyNy4wLjAuMicKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKKTsKCiRTZWxmLT5UcnVlKAogICAgc2NhbGFyICRDb25maWdJdGVtMlZlcnNpb25JRCwKICAgICdDb25maWcgaXRlbSB2ZXJzaW9uIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LicsCik7CgojCiMgUHJlcGFyZSBkeW5hbWljIGZpZWxkcy4KIwpteSBARHluYW1pY0ZpZWxkcyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MScsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDEnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ1RleHQnLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gJycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDInLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQyJywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdUZXh0JywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICcnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQzJywKICAgICAgICBMYWJlbCAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MycsCiAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAnVGV4dCcsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAnJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0NCcsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDQnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ1RleHQnLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gJycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDUnLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ1JywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdUZXh0JywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICcnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ2JywKICAgICAgICBMYWJlbCAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0NicsCiAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAnVGV4dCcsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAnJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlVGltZScsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RGF0ZVRpbWUnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ0RhdGVUaW1lJywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICcnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUnLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ0RhdGUnLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gJycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QxJywKICAgICAgICBMYWJlbCAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RNdWx0aXNlbGVjdDEnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ011bHRpc2VsZWN0JywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgPT4gJycsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgID0+IDEsCiAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzID0+IHsKICAgICAgICAgICAgICAgICdDUFUgMScgPT4gJ0NQVSAxJywKICAgICAgICAgICAgICAgICdDUFUgMicgPT4gJ0NQVSAyJywKICAgICAgICAgICAgICAgICdDUFUgMycgPT4gJ0NQVSAzJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RNdWx0aXNlbGVjdDInLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MicsCiAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAnTXVsdGlzZWxlY3QnLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgICA9PiAnJywKICAgICAgICAgICAgUG9zc2libGVOb25lICAgPT4gMSwKICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gewogICAgICAgICAgICAgICAgJ0NQVSAxJyA9PiAnQ1BVIDEnLAogICAgICAgICAgICAgICAgJ0NQVSAyJyA9PiAnQ1BVIDInLAogICAgICAgICAgICAgICAgJ0NQVSAzJyA9PiAnQ1BVIDMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MycsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QzJywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdNdWx0aXNlbGVjdCcsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgID0+ICcnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgICA9PiAxLAogICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiB7CiAgICAgICAgICAgICAgICAnQ1BVIDEnID0+ICdDUFUgMScsCiAgICAgICAgICAgICAgICAnQ1BVIDInID0+ICdDUFUgMicsCiAgICAgICAgICAgICAgICAnQ1BVIDMnID0+ICdDUFUgMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24xJywKICAgICAgICBMYWJlbCAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjEnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ0Ryb3Bkb3duJywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgPT4gJycsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgID0+IDEsCiAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzID0+IHsKICAgICAgICAgICAgICAgICdDUFUgMScgPT4gJ0NQVSAxJywKICAgICAgICAgICAgICAgICdDUFUgMicgPT4gJ0NQVSAyJywKICAgICAgICAgICAgICAgICdDUFUgMycgPT4gJ0NQVSAzJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjInLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERyb3Bkb3duMicsCiAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgICA9PiAnJywKICAgICAgICAgICAgUG9zc2libGVOb25lICAgPT4gMSwKICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gewogICAgICAgICAgICAgICAgJ0NQVSAxJyA9PiAnQ1BVIDEnLAogICAgICAgICAgICAgICAgJ0NQVSAyJyA9PiAnQ1BVIDInLAogICAgICAgICAgICAgICAgJ0NQVSAzJyA9PiAnQ1BVIDMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERyb3Bkb3duMycsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24zJywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgID0+ICcnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgICA9PiAxLAogICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiB7CiAgICAgICAgICAgICAgICAnQ1BVIDEnID0+ICdDUFUgMScsCiAgICAgICAgICAgICAgICAnQ1BVIDInID0+ICdDUFUgMicsCiAgICAgICAgICAgICAgICAnQ1BVIDMnID0+ICdDUFUgMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBDb25maWdJdGVtRHJvcGRvd24gKHNpbmdsZSBzZWxlY3QpCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0Q29uZmlnSXRlbTEnLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0xJywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdDb25maWdJdGVtRHJvcGRvd24nLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtUeXBlICAgID0+IHVuZGVmLAogICAgICAgICAgICBDb25maWdJdGVtTGlua1NvdXJjZSAgPT4gdW5kZWYsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCA9PiAwLAogICAgICAgICAgICBBZGRpdGlvbmFsREZTdG9yYWdlICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQxJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDInLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NQVTo6MicsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDMnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kQmFja2VuZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdOSUM6OjE6OklQQWRkcmVzczo6MScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDUnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0JhY2tlbmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGljZSB0aGF0IHRoaXMgb25lIGlzIGJhY2tlbmQgb25seQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0NicsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnTklDOjoxOjpJUG92ZXJESENQOjoxX1ZhbHVlJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdGcm9udGVuZEJhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdXYXJyYW50eUV4cGlyYXRpb25EYXRlJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdGcm9udGVuZEJhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlVGltZScsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnV2FycmFudHlFeHBpcmF0aW9uRGF0ZScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24xJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFU6OjEnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24yJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QxJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFU6OjInLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kQmFja2VuZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MicsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnQ1BVJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdGcm9udGVuZEJhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIENvbmZpZ0l0ZW1NdWx0aXNlbGVjdAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0yJywKICAgICAgICBMYWJlbCAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RDb25maWdJdGVtMicsCiAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAnQ29uZmlnSXRlbU11bHRpc2VsZWN0JywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUNsYXNzICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rVHlwZSAgICA9PiB1bmRlZiwKICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtTb3VyY2UgID0+IHVuZGVmLAogICAgICAgICAgICBDb25maWdJdGVtTGlua1JlbW92YWwgPT4gMCwKICAgICAgICAgICAgQWRkaXRpb25hbERGU3RvcmFnZSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MScsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnQ1BVJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDInLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NQVTo6MicsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDMnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kQmFja2VuZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdOSUM6OjE6OklQQWRkcmVzczo6MScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDUnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGljZSB0aGF0IHRoaXMgb25lIGlzIGZyb250ZW5kIG9ubHkKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDYnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ05JQzo6MTo6SVBvdmVyREhDUDo6MV9WYWx1ZScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RGF0ZScsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnV2FycmFudHlFeHBpcmF0aW9uRGF0ZScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGVUaW1lJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdXYXJyYW50eUV4cGlyYXRpb25EYXRlJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24xJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFU6OjEnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0JhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjInLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NQVScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MScsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnQ1BVOjoyJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QyJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0JhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKKTsKCm15ICREeW5hbWljRmllbGRzQ3JlYXRlZCA9ICRabnVueUhlbHBlck9iamVjdC0+X0R5bmFtaWNGaWVsZHNDcmVhdGUoQER5bmFtaWNGaWVsZHMpOwoKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgJER5bmFtaWNGaWVsZHNDcmVhdGVkLAogICAgJ0R5bmFtaWMgZmllbGRzIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LicsCik7CgojCiMgVGVzdHMgZm9yIEdldEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhKCkgYW5kIFN0b3JlRHluYW1pY0ZpZWxkVmFsdWVzKCkKIwoKIyBDb25maWdJdGVtRHJvcGRvd24gKER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0xKQpteSAkRHluYW1pY0ZpZWxkRGF0YSA9ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0LT5HZXRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSgKICAgIFNvdXJjZUR5bmFtaWNGaWVsZE5hbWUgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0xJywKICAgIFNlbGVjdGVkQ29uZmlnSXRlbUlEcyAgPT4gWyAkQ29uZmlnSXRlbTFJRCwgXSwKICAgIFN0b3JhZ2VUeXBlICAgICAgICAgICAgPT4gJ0Zyb250ZW5kJywKICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKKTsKCm15ICVFeHBlY3RlZER5bmFtaWNGaWVsZERhdGEgPSAoCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MSAgICAgICAgPT4gJ0NQVSAxLCBDUFUgMicsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MiAgICAgICAgPT4gJ0NQVSAyJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQzICAgICAgICA9PiAnVW5pdCB0ZXN0IGNvbXB1dGVyIDEnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDQgICAgICAgID0+ICcxMjcuMC4wLjEnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDYgICAgICAgID0+ICdZZXMnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RGF0ZSAgICAgICAgID0+ICcyMDQwLTAxLTAxJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGVUaW1lICAgICA9PiAnMjA0MC0wMS0wMSAwMDowMDowMCcsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjEgICAgPT4gJ0NQVSAxJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERyb3Bkb3duMiAgICA9PiAnQ1BVIDEnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QxID0+IFsKICAgICAgICAnQ1BVIDInLAogICAgXSwKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MiA9PiBbCiAgICAgICAgJ0NQVSAxJywKICAgICAgICAnQ1BVIDInLAogICAgXSwKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICREeW5hbWljRmllbGREYXRhLAogICAgXCVFeHBlY3RlZER5bmFtaWNGaWVsZERhdGEsCiAgICAnQ29uZmlnSXRlbURyb3Bkb3duIC0gR2V0QWRkaXRpb25hbERGU3RvcmFnZURhdGEoKSBtdXN0IHJldHVybiBleHBlY3RlZCBkeW5hbWljIGZpZWxkIGRhdGEuJywKKTsKCiMgU3RvcmUgZHluYW1pYyBmaWVsZCB2YWx1ZXMgaW4gdGlja2V0LgpteSAkVGlja2V0SUQgPSAkSGVscGVyT2JqZWN0LT5UaWNrZXRDcmVhdGUoKTsKCm15ICRTdG9yZWREeW5hbWljRmllbGRzID0gJER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1PYmplY3QtPlN0b3JlRHluYW1pY0ZpZWxkVmFsdWVzKAogICAgVGlja2V0SUQgICAgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgQWRkaXRpb25hbERGU3RvcmFnZURhdGEgPT4gJER5bmFtaWNGaWVsZERhdGEsCiAgICBVc2VySUQgICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAopOwoKbXkgQEV4cGVjdGVkU3RvcmVkRHluYW1pY0ZpZWxkcyA9IHNvcnQga2V5cyAlRXhwZWN0ZWREeW5hbWljRmllbGREYXRhOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJFN0b3JlZER5bmFtaWNGaWVsZHMsCiAgICBcQEV4cGVjdGVkU3RvcmVkRHluYW1pY0ZpZWxkcywKICAgICdDb25maWdJdGVtRHJvcGRvd24gLSBTdG9yZWQgZHluYW1pYyBmaWVsZHMgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmVzLicsCik7CgpteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgICAgID0+ICRVc2VySUQsCik7Cgpmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBzb3J0IGtleXMgJUV4cGVjdGVkRHluYW1pY0ZpZWxkRGF0YSApIHsKICAgIG15ICRFeHBlY3RlZFZhbHVlID0gJEV4cGVjdGVkRHluYW1pY0ZpZWxkRGF0YXskRHluYW1pY0ZpZWxkTmFtZX07CgogICAgaWYgKCAkRHluYW1pY0ZpZWxkTmFtZSBlcSAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RGF0ZScgKSB7CiAgICAgICAgJEV4cGVjdGVkVmFsdWUgLj0gJyAwMDowMDowMCc7CiAgICB9CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGROYW1lIH0sCiAgICAgICAgJEV4cGVjdGVkVmFsdWUsCiAgICAgICAgIkNvbmZpZ0l0ZW1Ecm9wZG93biAtIENvbnRlbnQgb2YgZHluYW1pYyBmaWVsZCAkRHluYW1pY0ZpZWxkTmFtZSBtdXN0IG1hdGNoIGV4cGVjdGVkIG9uZS4iLAogICAgKTsKfQoKIyBDb25maWdJdGVtTXVsdGlzZWxlY3QgKER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0yKQokRHluYW1pY0ZpZWxkRGF0YSA9ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0LT5HZXRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSgKICAgIFNvdXJjZUR5bmFtaWNGaWVsZE5hbWUgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0yJywKICAgIFNlbGVjdGVkQ29uZmlnSXRlbUlEcyAgPT4gWyAkQ29uZmlnSXRlbTFJRCwgJENvbmZpZ0l0ZW0ySUQsIF0sCiAgICBTdG9yYWdlVHlwZSAgICAgICAgICAgID0+ICdCYWNrZW5kJywKICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKKTsKCiVFeHBlY3RlZER5bmFtaWNGaWVsZERhdGEgPSAoCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MSAgICAgICAgPT4gJ0NQVSAxLCBDUFUgMiwgQ1BVIDEsIENQVSA0JywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQyICAgICAgICA9PiAnQ1BVIDIsIENQVSA0JywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQzICAgICAgICA9PiAnVW5pdCB0ZXN0IGNvbXB1dGVyIDEsIFVuaXQgdGVzdCBjb21wdXRlciAyJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ0ICAgICAgICA9PiAnMTI3LjAuMC4xLCAxMjcuMC4wLjInLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDYgICAgICAgID0+ICdZZXMsIE5vJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUgICAgICAgICA9PiAnMjA0MC0wMS0wMScsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlVGltZSAgICAgPT4gJzIwNDAtMDEtMDEgMDA6MDA6MDAnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24xICAgID0+ICdDUFUgMScsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjIgICAgPT4gJ0NQVSAxJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MSA9PiBbCiAgICAgICAgJ0NQVSAyJywKICAgICAgICAnQ1BVIDQnLAogICAgXSwKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MiA9PiBbCiAgICAgICAgJ0NQVSAxJywKICAgICAgICAnQ1BVIDInLAogICAgICAgICdDUFUgMScsCiAgICAgICAgJ0NQVSA0JywKICAgIF0sCik7CgokU2VsZi0+SXNEZWVwbHkoCiAgICAkRHluYW1pY0ZpZWxkRGF0YSwKICAgIFwlRXhwZWN0ZWREeW5hbWljRmllbGREYXRhLAogICAgJ0NvbmZpZ0l0ZW1NdWx0aXNlbGVjdCAtIEdldEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhKCkgbXVzdCByZXR1cm4gZXhwZWN0ZWQgZHluYW1pYyBmaWVsZCBkYXRhLicsCik7CgojIFN0b3JlIGR5bmFtaWMgZmllbGQgdmFsdWVzIGluIHRpY2tldC4KJFRpY2tldElEID0gJEhlbHBlck9iamVjdC0+VGlja2V0Q3JlYXRlKCk7CgokU3RvcmVkRHluYW1pY0ZpZWxkcyA9ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0LT5TdG9yZUR5bmFtaWNGaWVsZFZhbHVlcygKICAgIFRpY2tldElEICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgIEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhID0+ICREeW5hbWljRmllbGREYXRhLAogICAgVXNlcklEICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKKTsKCkBFeHBlY3RlZFN0b3JlZER5bmFtaWNGaWVsZHMgPSBzb3J0IGtleXMgJUV4cGVjdGVkRHluYW1pY0ZpZWxkRGF0YTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTdG9yZWREeW5hbWljRmllbGRzLAogICAgXEBFeHBlY3RlZFN0b3JlZER5bmFtaWNGaWVsZHMsCiAgICAnQ29uZmlnSXRlbU11bHRpc2VsZWN0IC0gU3RvcmVkIGR5bmFtaWMgZmllbGRzIG11c3QgbWF0Y2ggZXhwZWN0ZWQgb25lcy4nLAopOwoKJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICAgICA9PiAkVXNlcklELAopOwoKZm9yIG15ICREeW5hbWljRmllbGROYW1lICggc29ydCBrZXlzICVFeHBlY3RlZER5bmFtaWNGaWVsZERhdGEgKSB7CiAgICBteSAkRXhwZWN0ZWRWYWx1ZSA9ICRFeHBlY3RlZER5bmFtaWNGaWVsZERhdGF7JER5bmFtaWNGaWVsZE5hbWV9OwoKICAgIGlmICggJER5bmFtaWNGaWVsZE5hbWUgZXEgJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUnICkgewogICAgICAgICRFeHBlY3RlZFZhbHVlIC49ICcgMDA6MDA6MDAnOwogICAgfQoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkTmFtZSB9LAogICAgICAgICRFeHBlY3RlZFZhbHVlLAogICAgICAgICJDb25maWdJdGVtTXVsdGlzZWxlY3QgMSAtIENvbnRlbnQgb2YgZHluYW1pYyBmaWVsZCAkRHluYW1pY0ZpZWxkTmFtZSBtdXN0IG1hdGNoIGV4cGVjdGVkIG9uZS4iLAogICAgKTsKfQoKIyBDb25maWdJdGVtTXVsdGlzZWxlY3QgKER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0yKQokRHluYW1pY0ZpZWxkRGF0YSA9ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0LT5HZXRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YSgKICAgIFNvdXJjZUR5bmFtaWNGaWVsZE5hbWUgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0yJywKCiAgICAjIGNoYW5nZWQgb3JkZXIgb2YgY29uZmlnIGl0ZW1zIG11c3QgIGhhdmUgYW4gZWZmZWN0IGJlY2F1c2UgdmFsdWVzIGZvciBkeW5hbWljIGZpZWxkcwogICAgIyB3aWxsIGJlIHNvcnRlZC4KICAgIFNlbGVjdGVkQ29uZmlnSXRlbUlEcyA9PiBbICRDb25maWdJdGVtMklELCAkQ29uZmlnSXRlbTFJRCwgXSwKICAgIFN0b3JhZ2VUeXBlICAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICBVc2VySUQgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKKTsKCiVFeHBlY3RlZER5bmFtaWNGaWVsZERhdGEgPSAoCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MSAgICAgICAgPT4gJ0NQVSAxLCBDUFUgNCwgQ1BVIDEsIENQVSAyJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQyICAgICAgICA9PiAnQ1BVIDQsIENQVSAyJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQzICAgICAgICA9PiAnVW5pdCB0ZXN0IGNvbXB1dGVyIDIsIFVuaXQgdGVzdCBjb21wdXRlciAxJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ0ICAgICAgICA9PiAnMTI3LjAuMC4yLCAxMjcuMC4wLjEnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDYgICAgICAgID0+ICdObywgWWVzJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUgICAgICAgICA9PiAnMjA0MS0wMS0wMScsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlVGltZSAgICAgPT4gJzIwNDEtMDEtMDEgMDA6MDA6MDAnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24xICAgID0+ICdDUFUgMScsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjIgICAgPT4gJ0NQVSAxJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MSA9PiBbCiAgICAgICAgJ0NQVSA0JywKICAgICAgICAnQ1BVIDInLAogICAgXSwKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MiA9PiBbCiAgICAgICAgJ0NQVSAxJywKICAgICAgICAnQ1BVIDQnLAogICAgICAgICdDUFUgMScsCiAgICAgICAgJ0NQVSAyJywKICAgIF0sCik7CgokU2VsZi0+SXNEZWVwbHkoCiAgICAkRHluYW1pY0ZpZWxkRGF0YSwKICAgIFwlRXhwZWN0ZWREeW5hbWljRmllbGREYXRhLAogICAgJ0NvbmZpZ0l0ZW1NdWx0aXNlbGVjdCAtIEdldEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhKCkgbXVzdCByZXR1cm4gZXhwZWN0ZWQgZHluYW1pYyBmaWVsZCBkYXRhLicsCik7CgojIFN0b3JlIGR5bmFtaWMgZmllbGQgdmFsdWVzIGluIHRpY2tldC4KJFRpY2tldElEID0gJEhlbHBlck9iamVjdC0+VGlja2V0Q3JlYXRlKCk7CgokU3RvcmVkRHluYW1pY0ZpZWxkcyA9ICREeW5hbWljRmllbGRDb25maWdJdGVtT2JqZWN0LT5TdG9yZUR5bmFtaWNGaWVsZFZhbHVlcygKICAgIFRpY2tldElEICAgICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgIEFkZGl0aW9uYWxERlN0b3JhZ2VEYXRhID0+ICREeW5hbWljRmllbGREYXRhLAogICAgVXNlcklEICAgICAgICAgICAgICAgICAgPT4gJFVzZXJJRCwKKTsKCkBFeHBlY3RlZFN0b3JlZER5bmFtaWNGaWVsZHMgPSBzb3J0IGtleXMgJUV4cGVjdGVkRHluYW1pY0ZpZWxkRGF0YTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICRTdG9yZWREeW5hbWljRmllbGRzLAogICAgXEBFeHBlY3RlZFN0b3JlZER5bmFtaWNGaWVsZHMsCiAgICAnU3RvcmVkIGR5bmFtaWMgZmllbGRzIG11c3QgbWF0Y2ggZXhwZWN0ZWQgb25lcy4nLAopOwoKJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICAgICA9PiAkVXNlcklELAopOwoKZm9yIG15ICREeW5hbWljRmllbGROYW1lICggc29ydCBrZXlzICVFeHBlY3RlZER5bmFtaWNGaWVsZERhdGEgKSB7CiAgICBteSAkRXhwZWN0ZWRWYWx1ZSA9ICRFeHBlY3RlZER5bmFtaWNGaWVsZERhdGF7JER5bmFtaWNGaWVsZE5hbWV9OwoKICAgIGlmICggJER5bmFtaWNGaWVsZE5hbWUgZXEgJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUnICkgewogICAgICAgICRFeHBlY3RlZFZhbHVlIC49ICcgMDA6MDA6MDAnOwogICAgfQoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkTmFtZSB9LAogICAgICAgICRFeHBlY3RlZFZhbHVlLAogICAgICAgICJDb25maWdJdGVtTXVsdGlzZWxlY3QgMiAtIENvbnRlbnQgb2YgZHluYW1pYyBmaWVsZCAkRHluYW1pY0ZpZWxkTmFtZSBtdXN0IG1hdGNoIGV4cGVjdGVkIG9uZS4iLAogICAgKTsKfQoKMTsK</File>
        <File Permission="660" Location="scripts/test/GenericInterface/Invoker/ITSMConfigItem/Generic.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OklUU01Db25maWdJdGVtOjpHZW5lcmljOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwoKbXkgJEhlbHBlck9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFpudW55SGVscGVyT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7Cm15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cm15ICRWYWxpZE9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwpteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgpteSAkR2VuZXJpY0ludm9rZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OklUU01Db25maWdJdGVtOjpHZW5lcmljLT5uZXcoCiAgICBEZWJ1Z2dlck9iamVjdCA9PiAxLCAgICAjIHRoaXMgaXMgYSBtb2NrLXVwLCB0aGUgZGVidWdnZXIgb2JqZWN0IHdpbGwgbm90IGJlIHVzZWQgd2l0aGluIHRoaXMgdGVzdC4KKTsKCm15ICRVc2VySUQgPSAxOwoKIwojIFByZXBhcmUgYSBjb25maWcgaXRlbQojCm15ICRWYWxpZElEID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgIFZhbGlkID0+ICd2YWxpZCcsCik7CgpteSAkQ2xhc3NlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgVmFsaWQgPT4gJFZhbGlkSUQsCik7Cm15ICVDbGFzc2VzID0gcmV2ZXJzZSAleyAkQ2xhc3NlcyAvLyB7fSB9OwoKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgJENsYXNzZXN7Q29tcHV0ZXJ9LAogICAgJ0NsYXNzICJDb21wdXRlciIgbXVzdCBiZSBwcmVzZW50LicsCik7CgpteSAkWWVzTm8gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06Olllc05vJywKICAgIFZhbGlkID0+ICRWYWxpZElELAopOwpteSAlWWVzTm8gPSByZXZlcnNlICV7ICRZZXNObyAvLyB7fSB9OwoKbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCA9PiAkQ2xhc3Nlc3tDb21wdXRlcn0sCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciAkQ29uZmlnSXRlbUlELAogICAgJ0NvbmZpZyBpdGVtIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LicsCikgfHwgcmV0dXJuOwoKbXkgJENvbXB1dGVyTmFtZUZpcnN0VmVyc2lvbiAgPSAnVW5pdFRlc3RDb21wdXRlcicgLiAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwpteSAkQ29tcHV0ZXJOYW1lU2Vjb25kVmVyc2lvbiA9ICdVbml0VGVzdENvbXB1dGVyJyAuICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7Cm15ICRDbGFzcyAgICAgICAgICAgICAgICAgICAgID0gJ0NvbXB1dGVyJzsKbXkgJENsYXNzSUQgICAgICAgICAgICAgICAgICAgPSAkQ2xhc3Nlc3tDb21wdXRlcn07CgpteSAkRGVwbFN0YXRlUHJvZHVjdGlvbiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAopOwoKbXkgJERlcGxTdGF0ZVJlcGFpciA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ1JlcGFpcicsCik7CgpteSAkSW5jaVN0YXRlT3BlcmF0aW9uYWwgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICBOYW1lICA9PiAnT3BlcmF0aW9uYWwnLAopOwoKbXkgJEluY2lTdGF0ZUluY2lkZW50ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ0luY2lkZW50JywKKTsKCm15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICBDbGFzc0lEID0+ICRDbGFzc0lELAopOwoKbXkgJEZpcnN0VmVyc2lvbklEID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uQWRkKAogICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgTmFtZSAgICAgICAgICA9PiAkQ29tcHV0ZXJOYW1lRmlyc3RWZXJzaW9uLAogICAgQ2xhc3NOYW1lICAgICA9PiAkQ2xhc3MsCiAgICBEZXBsU3RhdGVOYW1lID0+ICdQcm9kdWN0aW9uJywKICAgIEluY2lTdGF0ZU5hbWUgPT4gJ09wZXJhdGlvbmFsJywKICAgIFhNTERhdGEgICAgICAgPT4gewogICAgICAgIENQVSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0FNRCBSeXplbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcyMDIxLTA3LTE2JywKICAgICAgICBJbnN0YWxsRGF0ZSAgICAgICAgICAgID0+ICcyMDIxLTA3LTE2JywKICAgICAgICBOSUMgICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICA9PiAnTklDJywKICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkWWVzTm97WWVzfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIElQQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjcuMC4wLjEnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgojCiMgSW52YWxpZCBjb25maWcgaXRlbSBJRAojCm15ICRSZXF1ZXN0RGF0YSA9ICRHZW5lcmljSW52b2tlck9iamVjdC0+UHJlcGFyZVJlcXVlc3QoCiAgICBEYXRhID0+IHsKICAgICAgICBDb25maWdJdGVtSUQgPT4gOTk5OTk5OTk5OTk5LAogICAgICAgIEV2ZW50ICAgICAgICA9PiB1bmRlZiwKICAgIH0sCik7CgpteSAlRXhwZWN0ZWRSZXF1ZXN0RGF0YSA9ICgKICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgRXJyb3JNZXNzYWdlID0+ICdEYXRhIG9mIGNvbmZpZyBpdGVtIHdpdGggSUQgOTk5OTk5OTk5OTk5IGNvdWxkIG5vdCBiZSByZXRyaWV2ZWQuJywKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICRSZXF1ZXN0RGF0YSwKICAgIFwlRXhwZWN0ZWRSZXF1ZXN0RGF0YSwKICAgICdQcmVwYXJlUmVxdWVzdCgpOiBSZXF1ZXN0IGRhdGEgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmUgZm9yIGludmFsaWQgY29uZmlnIGl0ZW0gSUQuJywKKTsKCiMKIyBWYWxpZCBjb25maWcgaXRlbSBJRCB3aXRob3V0IGV2ZW50CiMKJFJlcXVlc3REYXRhID0gJEdlbmVyaWNJbnZva2VyT2JqZWN0LT5QcmVwYXJlUmVxdWVzdCgKICAgIERhdGEgPT4gewogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIEV2ZW50ICAgICAgICA9PiB1bmRlZiwKICAgIH0sCik7CgpteSAlRXhwZWN0ZWRSZXF1ZXN0RGF0YUZpcnN0VmVyc2lvbiA9ICgKICAgIFhNTERhdGEgPT4gewogICAgICAgIE5JQyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElQQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjcuMC4wLjEnLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgPT4gJFllc05ve1llc30sCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ05JQycsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAyMS0wNy0xNicsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBDUFUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdBTUQgUnl6ZW4nLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgSW5zdGFsbERhdGUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDIxLTA3LTE2JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlT3BlcmF0aW9uYWwtPntJdGVtSUR9LAogICAgTmFtZSAgICAgICAgID0+ICRDb21wdXRlck5hbWVGaXJzdFZlcnNpb24sCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZVByb2R1Y3Rpb24tPntJdGVtSUR9LAogICAgRGVwbFN0YXRlICAgID0+ICdQcm9kdWN0aW9uJywKICAgIENsYXNzSUQgICAgICA9PiAkQ2xhc3NJRCwKICAgIEluY2lTdGF0ZSAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKKTsKCiVFeHBlY3RlZFJlcXVlc3REYXRhID0gKAogICAgU3VjY2VzcyA9PiAxLAogICAgRGF0YSAgICA9PiB7CiAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICVFeHBlY3RlZFJlcXVlc3REYXRhRmlyc3RWZXJzaW9uLAogICAgICAgIH0sCiAgICAgICAgRXZlbnQgPT4gdW5kZWYsCiAgICB9LAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJFJlcXVlc3REYXRhLAogICAgXCVFeHBlY3RlZFJlcXVlc3REYXRhLAogICAgJ1ByZXBhcmVSZXF1ZXN0KCk6IFJlcXVlc3QgZGF0YSBtdXN0IG1hdGNoIGV4cGVjdGVkIG9uZSBmb3IgdmFsaWQgY29uZmlnIGl0ZW0gSUQgKGZpcnN0IHZlcnNpb24pIHdpdGhvdXQgZXZlbnQuJywKKTsKCm15ICRTZWNvbmRWZXJzaW9uSUQgPSAkWm51bnlIZWxwZXJPYmplY3QtPl9JVFNNQ29uZmlnSXRlbVZlcnNpb25BZGQoCiAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICBOYW1lICAgICAgICAgID0+ICRDb21wdXRlck5hbWVTZWNvbmRWZXJzaW9uLAogICAgQ2xhc3NOYW1lICAgICA9PiAkQ2xhc3MsCiAgICBEZXBsU3RhdGVOYW1lID0+ICdSZXBhaXInLAogICAgSW5jaVN0YXRlTmFtZSA9PiAnSW5jaWRlbnQnLAogICAgWE1MRGF0YSAgICAgICA9PiB7CiAgICAgICAgQ1BVID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnSW50ZWwgQ29yZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcyMDIzLTA3LTE1JywKICAgICAgICBJbnN0YWxsRGF0ZSAgICAgICAgICAgID0+ICcyMDIxLTA3LTE2JywKICAgICAgICBOSUMgICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICA9PiAnTklDMScsCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFllc05ve1llc30sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBJUEFkZHJlc3MgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMTI3LjAuMC4xJwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgID0+ICdOSUMyJywKICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkWWVzTm97Tm99LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgSVBBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyNy4xLjAuMScKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKKTsKCiRSZXF1ZXN0RGF0YSA9ICRHZW5lcmljSW52b2tlck9iamVjdC0+UHJlcGFyZVJlcXVlc3QoCiAgICBEYXRhID0+IHsKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBFdmVudCAgICAgICAgPT4gdW5kZWYsCiAgICB9LAopOwoKbXkgJUV4cGVjdGVkUmVxdWVzdERhdGFTZWNvbmRWZXJzaW9uID0gKAogICAgWE1MRGF0YSA9PiB7CiAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSVBBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyNy4wLjAuMScsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUmVhZGFibGVWYWx1ZSA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkWWVzTm97WWVzfSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTklDMScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElQQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjcuMS4wLjEnLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkWWVzTm97Tm99LAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOSUMyJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDIzLTA3LTE1JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIENQVSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0ludGVsIENvcmUnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgSW5zdGFsbERhdGUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDIxLTA3LTE2JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlSW5jaWRlbnQtPntJdGVtSUR9LAogICAgTmFtZSAgICAgICAgID0+ICRDb21wdXRlck5hbWVTZWNvbmRWZXJzaW9uLAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVSZXBhaXItPntJdGVtSUR9LAogICAgRGVwbFN0YXRlICAgID0+ICdSZXBhaXInLAogICAgQ2xhc3NJRCAgICAgID0+ICRDbGFzc0lELAogICAgSW5jaVN0YXRlICAgID0+ICdJbmNpZGVudCcsCiAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAopOwoKJUV4cGVjdGVkUmVxdWVzdERhdGEgPSAoCiAgICBTdWNjZXNzID0+IDEsCiAgICBEYXRhICAgID0+IHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgJUV4cGVjdGVkUmVxdWVzdERhdGFTZWNvbmRWZXJzaW9uLAogICAgICAgIH0sCiAgICAgICAgRXZlbnQgPT4gdW5kZWYsCiAgICB9LAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJFJlcXVlc3REYXRhLAogICAgXCVFeHBlY3RlZFJlcXVlc3REYXRhLAogICAgJ1ByZXBhcmVSZXF1ZXN0KCk6IFJlcXVlc3QgZGF0YSBtdXN0IG1hdGNoIGV4cGVjdGVkIG9uZSBmb3IgdmFsaWQgY29uZmlnIGl0ZW0gSUQgKHNlY29uZCB2ZXJzaW9uKSB3aXRob3V0IGV2ZW50LicsCik7CgojCiMgVmFsaWQgY29uZmlnIGl0ZW0gSUQgd2l0aCBldmVudCBDb25maWdJdGVtQ3JlYXRlCiMgVGhpcyBzaG91bGQgbm90IHJldHVybiB0aGUgZGF0YSBvZiB0aGUgcHJldmlvdXMgY29uZmlnIGl0ZW0gdmVyc2lvbi4KIwokUmVxdWVzdERhdGEgPSAkR2VuZXJpY0ludm9rZXJPYmplY3QtPlByZXBhcmVSZXF1ZXN0KAogICAgRGF0YSA9PiB7CiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgRXZlbnQgICAgICAgID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCik7CgolRXhwZWN0ZWRSZXF1ZXN0RGF0YSA9ICgKICAgIFN1Y2Nlc3MgPT4gMSwKICAgIERhdGEgICAgPT4gewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAlRXhwZWN0ZWRSZXF1ZXN0RGF0YVNlY29uZFZlcnNpb24sCiAgICAgICAgfSwKICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJFJlcXVlc3REYXRhLAogICAgXCVFeHBlY3RlZFJlcXVlc3REYXRhLAogICAgJ1ByZXBhcmVSZXF1ZXN0KCk6IFJlcXVlc3QgZGF0YSBtdXN0IG1hdGNoIGV4cGVjdGVkIG9uZSBmb3IgdmFsaWQgY29uZmlnIGl0ZW0gSUQgKHNlY29uZCB2ZXJzaW9uKSB3aXRoIGV2ZW50IENvbmZpZ0l0ZW1DcmVhdGUuJywKKTsKCiMKIyBWYWxpZCBjb25maWcgaXRlbSBJRCB3aXRoIGV2ZW50IENvbmZpZ0l0ZW1EZWxldGUKIyBUaGlzIHNob3VsZCBub3QgcmV0dXJuIHRoZSBkYXRhIG9mIHRoZSBwcmV2aW91cyBjb25maWcgaXRlbSB2ZXJzaW9uLgojCiRSZXF1ZXN0RGF0YSA9ICRHZW5lcmljSW52b2tlck9iamVjdC0+UHJlcGFyZVJlcXVlc3QoCiAgICBEYXRhID0+IHsKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBFdmVudCAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKKTsKCiVFeHBlY3RlZFJlcXVlc3REYXRhID0gKAogICAgU3VjY2VzcyA9PiAxLAogICAgRGF0YSAgICA9PiB7CiAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICVFeHBlY3RlZFJlcXVlc3REYXRhU2Vjb25kVmVyc2lvbiwKICAgICAgICB9LAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCik7CgokU2VsZi0+SXNEZWVwbHkoCiAgICAkUmVxdWVzdERhdGEsCiAgICBcJUV4cGVjdGVkUmVxdWVzdERhdGEsCiAgICAnUHJlcGFyZVJlcXVlc3QoKTogUmVxdWVzdCBkYXRhIG11c3QgbWF0Y2ggZXhwZWN0ZWQgb25lIGZvciB2YWxpZCBjb25maWcgaXRlbSBJRCAoc2Vjb25kIHZlcnNpb24pIHdpdGggZXZlbnQgQ29uZmlnSXRlbURlbGV0ZS4nLAopOwoKIwojIFZhbGlkIGNvbmZpZyBpdGVtIElEIHdpdGggZXZlbnQgRGVwbG95bWVudFN0YXRlVXBkYXRlCiMgVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBkYXRhIG9mIHRoZSBwcmV2aW91cyBjb25maWcgaXRlbSB2ZXJzaW9uIGFuZCBhcyBzZXBhcmF0ZSBpbmZvcm1hdGlvbgojIHRoZSBjaGFuZ2VkIGRlcGxveW1lbnQgc3RhdHVzLgojCiRSZXF1ZXN0RGF0YSA9ICRHZW5lcmljSW52b2tlck9iamVjdC0+UHJlcGFyZVJlcXVlc3QoCiAgICBEYXRhID0+IHsKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBFdmVudCAgICAgICAgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICB9LAopOwoKJUV4cGVjdGVkUmVxdWVzdERhdGEgPSAoCiAgICBTdWNjZXNzID0+IDEsCiAgICBEYXRhICAgID0+IHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgJUV4cGVjdGVkUmVxdWVzdERhdGFTZWNvbmRWZXJzaW9uLAogICAgICAgICAgICBQcmV2aW91c0NvbmZpZ0l0ZW1WZXJzaW9uID0+IHsKICAgICAgICAgICAgICAgICVFeHBlY3RlZFJlcXVlc3REYXRhRmlyc3RWZXJzaW9uLAogICAgICAgICAgICB9LAogICAgICAgICAgICBEZXBsb3ltZW50U3RhdGVVcGRhdGUgPT4gewogICAgICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgID0+ICRFeHBlY3RlZFJlcXVlc3REYXRhRmlyc3RWZXJzaW9ue0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRFeHBlY3RlZFJlcXVlc3REYXRhRmlyc3RWZXJzaW9ue0RlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgID0+ICRFeHBlY3RlZFJlcXVlc3REYXRhU2Vjb25kVmVyc2lvbntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRXhwZWN0ZWRSZXF1ZXN0RGF0YVNlY29uZFZlcnNpb257RGVwbFN0YXRlfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFdmVudCA9PiAnRGVwbG95bWVudFN0YXRlVXBkYXRlJywKICAgIH0sCik7CgokU2VsZi0+SXNEZWVwbHkoCiAgICAkUmVxdWVzdERhdGEsCiAgICBcJUV4cGVjdGVkUmVxdWVzdERhdGEsCiAgICAnUHJlcGFyZVJlcXVlc3QoKTogUmVxdWVzdCBkYXRhIG11c3QgbWF0Y2ggZXhwZWN0ZWQgb25lIGZvciB2YWxpZCBjb25maWcgaXRlbSBJRCAoc2Vjb25kIHZlcnNpb24pIHdpdGggZXZlbnQgRGVwbG95bWVudFN0YXRlVXBkYXRlLicsCik7CgojCiMgVmFsaWQgY29uZmlnIGl0ZW0gSUQgd2l0aCBldmVudCBJbmNpZGVudFN0YXRlVXBkYXRlCiMgVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBkYXRhIG9mIHRoZSBwcmV2aW91cyBjb25maWcgaXRlbSB2ZXJzaW9uIGFuZCBhcyBzZXBhcmF0ZSBpbmZvcm1hdGlvbgojIHRoZSBjaGFuZ2VkIGluY2lkZW50IHN0YXR1cy4KIwokUmVxdWVzdERhdGEgPSAkR2VuZXJpY0ludm9rZXJPYmplY3QtPlByZXBhcmVSZXF1ZXN0KAogICAgRGF0YSA9PiB7CiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgRXZlbnQgICAgICAgID0+ICdJbmNpZGVudFN0YXRlVXBkYXRlJywKICAgIH0sCik7CgolRXhwZWN0ZWRSZXF1ZXN0RGF0YSA9ICgKICAgIFN1Y2Nlc3MgPT4gMSwKICAgIERhdGEgICAgPT4gewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAlRXhwZWN0ZWRSZXF1ZXN0RGF0YVNlY29uZFZlcnNpb24sCiAgICAgICAgICAgIFByZXZpb3VzQ29uZmlnSXRlbVZlcnNpb24gPT4gewogICAgICAgICAgICAgICAgJUV4cGVjdGVkUmVxdWVzdERhdGFGaXJzdFZlcnNpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEluY2lkZW50U3RhdGVVcGRhdGUgPT4gewogICAgICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgID0+ICRFeHBlY3RlZFJlcXVlc3REYXRhRmlyc3RWZXJzaW9ue0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRFeHBlY3RlZFJlcXVlc3REYXRhRmlyc3RWZXJzaW9ue0luY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgICAgICAgICBJRCAgICAgID0+ICRFeHBlY3RlZFJlcXVlc3REYXRhU2Vjb25kVmVyc2lvbntJbmNpU3RhdGVJRH0sCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRXhwZWN0ZWRSZXF1ZXN0RGF0YVNlY29uZFZlcnNpb257SW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFdmVudCA9PiAnSW5jaWRlbnRTdGF0ZVVwZGF0ZScsCiAgICB9LAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJFJlcXVlc3REYXRhLAogICAgXCVFeHBlY3RlZFJlcXVlc3REYXRhLAogICAgJ1ByZXBhcmVSZXF1ZXN0KCk6IFJlcXVlc3QgZGF0YSBtdXN0IG1hdGNoIGV4cGVjdGVkIG9uZSBmb3IgdmFsaWQgY29uZmlnIGl0ZW0gSUQgKHNlY29uZCB2ZXJzaW9uKSB3aXRoIGV2ZW50IEluY2lkZW50U3RhdGVVcGRhdGUuJywKKTsKCiMKIyBWYWxpZCBjb25maWcgaXRlbSBJRCB3aXRoIGV2ZW50IE5hbWVVcGRhdGUKIyBUaGlzIHNob3VsZCByZXR1cm4gdGhlIGRhdGEgb2YgdGhlIHByZXZpb3VzIGNvbmZpZyBpdGVtIHZlcnNpb24gYW5kIGFzIHNlcGFyYXRlIGluZm9ybWF0aW9uCiMgdGhlIGNoYW5nZWQgbmFtZS4KIwokUmVxdWVzdERhdGEgPSAkR2VuZXJpY0ludm9rZXJPYmplY3QtPlByZXBhcmVSZXF1ZXN0KAogICAgRGF0YSA9PiB7CiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgRXZlbnQgICAgICAgID0+ICdOYW1lVXBkYXRlJywKICAgIH0sCik7CgolRXhwZWN0ZWRSZXF1ZXN0RGF0YSA9ICgKICAgIFN1Y2Nlc3MgPT4gMSwKICAgIERhdGEgICAgPT4gewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAlRXhwZWN0ZWRSZXF1ZXN0RGF0YVNlY29uZFZlcnNpb24sCiAgICAgICAgICAgIFByZXZpb3VzQ29uZmlnSXRlbVZlcnNpb24gPT4gewogICAgICAgICAgICAgICAgJUV4cGVjdGVkUmVxdWVzdERhdGFGaXJzdFZlcnNpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE5hbWVVcGRhdGUgPT4gewogICAgICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRFeHBlY3RlZFJlcXVlc3REYXRhRmlyc3RWZXJzaW9ue05hbWV9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIE5ldyA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRXhwZWN0ZWRSZXF1ZXN0RGF0YVNlY29uZFZlcnNpb257TmFtZX0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXZlbnQgPT4gJ05hbWVVcGRhdGUnLAogICAgfSwKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICRSZXF1ZXN0RGF0YSwKICAgIFwlRXhwZWN0ZWRSZXF1ZXN0RGF0YSwKICAgICdQcmVwYXJlUmVxdWVzdCgpOiBSZXF1ZXN0IGRhdGEgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmUgZm9yIHZhbGlkIGNvbmZpZyBpdGVtIElEIChzZWNvbmQgdmVyc2lvbikgd2l0aCBldmVudCBOYW1lVXBkYXRlLicsCik7CgojCiMgVmFsaWQgY29uZmlnIGl0ZW0gSUQgd2l0aCBldmVudCBWYWx1ZVVwZGF0ZQojIFRoaXMgc2hvdWxkIHJldHVybiB0aGUgZGF0YSBvZiB0aGUgcHJldmlvdXMgY29uZmlnIGl0ZW0gdmVyc2lvbiBhbmQgYXMgc2VwYXJhdGUgaW5mb3JtYXRpb24KIyB0aGUgY2hhbmdlZCB2YWx1ZXMgb2YgZmllbGQgQ1BVLgojCiRSZXF1ZXN0RGF0YSA9ICRHZW5lcmljSW52b2tlck9iamVjdC0+UHJlcGFyZVJlcXVlc3QoCiAgICBEYXRhID0+IHsKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBFdmVudCAgICAgICAgPT4gJ1ZhbHVlVXBkYXRlJywKICAgIH0sCik7CgolRXhwZWN0ZWRSZXF1ZXN0RGF0YSA9ICgKICAgIFN1Y2Nlc3MgPT4gMSwKICAgIERhdGEgICAgPT4gewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAlRXhwZWN0ZWRSZXF1ZXN0RGF0YVNlY29uZFZlcnNpb24sCiAgICAgICAgICAgIFByZXZpb3VzQ29uZmlnSXRlbVZlcnNpb24gPT4gewogICAgICAgICAgICAgICAgJUV4cGVjdGVkUmVxdWVzdERhdGFGaXJzdFZlcnNpb24sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZhbHVlVXBkYXRlID0+IHsKICAgICAgICAgICAgICAgICdDUFU6OjEnID0+IHsKICAgICAgICAgICAgICAgICAgICBOZXcgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdJbnRlbCBDb3JlJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIE9sZCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0FNRCBSeXplbicsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAnTklDOjoxJyA9PiB7CiAgICAgICAgICAgICAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTklDMScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBPbGQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOSUMnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgJ05JQzo6MicgPT4gewogICAgICAgICAgICAgICAgICAgIE5ldyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ05JQzInLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICdOSUM6OjI6OklQQWRkcmVzczo6MScgPT4gewogICAgICAgICAgICAgICAgICAgIE5ldyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyNy4xLjAuMScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBPbGQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgJ05JQzo6Mjo6SVBvdmVyREhDUDo6MScgPT4gewogICAgICAgICAgICAgICAgICAgIE5ldyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgPT4gJFllc05ve05vfSwKICAgICAgICAgICAgICAgICAgICAgICAgUmVhZGFibGVWYWx1ZSA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICdXYXJyYW50eUV4cGlyYXRpb25EYXRlOjoxJyA9PiB7CiAgICAgICAgICAgICAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAyMy0wNy0xNScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBPbGQgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDIxLTA3LTE2JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV2ZW50ID0+ICdWYWx1ZVVwZGF0ZScsCiAgICB9LAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJFJlcXVlc3REYXRhLAogICAgXCVFeHBlY3RlZFJlcXVlc3REYXRhLAogICAgJ1ByZXBhcmVSZXF1ZXN0KCk6IFJlcXVlc3QgZGF0YSBtdXN0IG1hdGNoIGV4cGVjdGVkIG9uZSBmb3IgdmFsaWQgY29uZmlnIGl0ZW0gSUQgKHNlY29uZCB2ZXJzaW9uKSB3aXRoIGV2ZW50IFZhbHVlVXBkYXRlLicsCik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemCreate.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIE1JTUU6OkJhc2U2NDsKCnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyOwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMgU2V0IFVzZXJJRCB0byByb290LgokU2VsZi0+e1VzZXJJRH0gPSAxOwoKIyBTa2lwIFNTTCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24uCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFNraXBTU0xWZXJpZnkgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCiMgQ2hlY2sgaWYgU1NMIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBpcyBkaXNhYmxlZC4KJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0LgpteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgU2V0IHdlYnNlcnZpY2UgbmFtZS4KbXkgJFdlYnNlcnZpY2VOYW1lID0gJy1UZXN0LScgLiAkUmFuZG9tSUQ7CgpteSAkV2Vic2VydmljZUlEID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VBZGQoCiAgICBOYW1lICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgfSwKICAgICAgICBQcm92aWRlciA9PiB7CiAgICAgICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlSUQsCiAgICAiQWRkZWQgV2Vic2VydmljZSIsCik7CgojIEdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMuCm15ICRIb3N0OwpteSAkRlFETiA9ICRDb25maWdPYmplY3QtPkdldCgnRlFETicpOwoKIyBUcnkgdG8gcmVzb2x2ZSBmcWRuIGhvc3QuCmlmICggJEZRRE4gbmUgJ3lvdXJob3N0LmV4YW1wbGUuY29tJyAmJiBnZXRob3N0YnluYW1lKCRGUUROKSApIHsKICAgICRIb3N0ID0gJEZRRE47Cn0KCiMgVHJ5IHRvIHJlc29sdmUgbG9jYWxob3N0IGluc3RlYWQuCmlmICggISRIb3N0ICYmIGdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpICkgewogICAgJEhvc3QgPSAnbG9jYWxob3N0JzsKfQoKIyBVc2UgaGFyZGNvZGVkIGxvY2FsaG9zdCBpcCBhZGRyZXNzLgppZiAoICEkSG9zdCApIHsKICAgICRIb3N0ID0gJzEyNy4wLjAuMSc7Cn0KCiMgUHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZy4KbXkgJFJlbW90ZVN5c3RlbSA9CiAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0h0dHBUeXBlJykKICAgIC4gJzovLycKICAgIC4gJEhvc3QKICAgIC4gJy8nCiAgICAuICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKQogICAgLiAnL25waC1nZW5lcmljaW50ZXJmYWNlLnBsL1dlYnNlcnZpY2VJRC8nCiAgICAuICRXZWJzZXJ2aWNlSUQ7CgpteSAkV2Vic2VydmljZUNvbmZpZyA9IHsKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yIENvbmZpZ0l0ZW0gQ29ubmVjdG9yIHVzaW5nIFNPQVAgdHJhbnNwb3J0IGJhY2tlbmQuJywKICAgIERlYnVnZ2VyID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgUHJvdmlkZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTBfMDAwXzAwMCwKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290cnMub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgICAgIFRpbWVvdXQgICA9PiA2MCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdHJzLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgICAgIFRpbWVvdXQgICA9PiA2MCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyBVcGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnLgpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlVXBkYXRlLAogICAgIlVwZGF0ZWQgV2Vic2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiwKKTsKCiMgRGVidWdnZXIgb2JqZWN0LgpteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlZCBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklELgojIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgpteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBDcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0LgpteSAkVXNlckxvZ2luID0gJEhlbHBlck9iamVjdC0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwpteSAkUGFzc3dvcmQgPSAkVXNlckxvZ2luOwoKIyBTdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZS4KbXkgJFJlcXVlc3RlclNlc3Npb25SZXN1bHQgPSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdC0+UnVuKAogICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBJbnZva2VyICAgICAgPT4gJ1Nlc3Npb25DcmVhdGUnLAogICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgfSwKKTsKCm15ICROZXdTZXNzaW9uSUQgPSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdC0+e0RhdGF9LT57U2Vzc2lvbklEfTsKCiMgQWN0dWFsIHRlc3RzLgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0gcGFyYW1ldGVyIGlzIG1pc3Npbmcgb3Igbm90IHZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IDEsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtIHBhcmFtZXRlciBpcyBtaXNzaW5nIG9yIG5vdCB2YWxpZCEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQ0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDLT5JUG92ZXJESENQIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3QnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEgaXMgbWlzc2luZyBvciBpbnZhbGlkIScsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBDbGFzcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DbGFzcyBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTmFtZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPk5hbWUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIERlcGxTdGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZSBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgSW5jaVN0YXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkluY2lTdGF0ZSBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENsYXNzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnTm90RXhpc2l0bmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q2xhc3MgcGFyYW1ldGVyIGlzIGludmFsaWQhJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5EZXBsU3RhdGUgcGFyYW1ldGVyIGlzIGludmFsaWQhJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBJbmNpU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5JbmNpU3RhdGUgcGFyYW1ldGVyIGlzIGludmFsaWQhJywKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+TklDJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+TklDIHBhcmFtZXRlciB2YWx1ZSBpcyByZXF1aXJlZCBhbmQgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+ICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPk5JQy0+SVBvdmVyREhDUCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5OSUMgaW4gYXJyYXknLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPk5JQyBwYXJhbWV0ZXIgdmFsdWUgaXMgcmVxdWlyZWQgYW5kIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPklwT3ZlckRIQ1AgaW4gYXJyYXknLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUNbMV0tPklQb3ZlckRIQ1AgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgTklDLT5JcE92ZXJESENQIEdlbmVyYWwgQ2F0YWxvZyBpbiBIYXNoJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUMtPklQb3ZlckRIQ1AgcGFyYW1ldGVyIHZhbHVlIGlzIG5vdCBhIHZhbGlkIGZvciBHZW5lcmFsIENhdGFsb2cgXCdJVFNNOjpDb25maWdJdGVtOjpZZXNOb1wnIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE5JQy0+SXBPdmVyREhDUCBHZW5lcmFsIENhdGFsb2cgaW4gQXJyYXkgSGFzaCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAnQ29uZmlnSXRlbUNyZWF0ZTogQ29uZmlnSXRlbS0+Q0lYTUxEYXRhLT5OSUNbMV0tPklQb3ZlckRIQ1AgcGFyYW1ldGVyIHZhbHVlIGlzIG5vdCBhIHZhbGlkIGZvciBHZW5lcmFsIENhdGFsb2cgXCdJVFNNOjpDb25maWdJdGVtOjpZZXNOb1wnIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIFZlbmRvciBMb25nIFRleHQgJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ2EnIHggNTEsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkNJWE1MRGF0YS0+VmVuZG9yIHBhcmFtZXRlciB2YWx1ZSBleGNlZGVzIHRoZSBtYXhpdW0gbGVuZ3RoIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTMwLTMwLTMwJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPldhcnJhbnR5RXhwaXJhdGlvbkRhdGUgcGFyYW1ldGVyIHZhbHVlIGlzIG5vdCBhIHZhbGlkIERhdGUgZm9ybWF0IScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIE93bmVyIEN1c3RvbWVyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPk93bmVyIHBhcmFtZXRlciB2YWx1ZSBpcyBub3QgYSB2YWxpZCBjdXN0b21lciEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBSYW0gVG9vIE1hbnknLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0NyZWF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgICAgICAgICAzLAogICAgICAgICAgICAgICAgICAgICAgICA0LAogICAgICAgICAgICAgICAgICAgICAgICA1LAogICAgICAgICAgICAgICAgICAgICAgICA2LAogICAgICAgICAgICAgICAgICAgICAgICA3LAogICAgICAgICAgICAgICAgICAgICAgICA4LAogICAgICAgICAgICAgICAgICAgICAgICA5LAogICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgMTEsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgICAgICdDb25maWdJdGVtQ3JlYXRlOiBDb25maWdJdGVtLT5DSVhNTERhdGEtPlJhbSBwYXJhbWV0ZXIgcmVwZXRpdGlvbnMgaXMgaGlnaGVyIHRoYW4gdGhlIG1heGl1bSB2YWx1ZSEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBBdHRhY2htZW50JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgcGFyYW1ldGVyIGlzIGludmFsaWQhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBBdHRhY2htZW50LT5Db250ZW50JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQXR0YWNobWVudC0+Q29udGVudCBwYXJhbWV0ZXIgaXMgbWlzc2luZyEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIEF0dGFjaG1lbnQtPkNvbnRlbnRUeXBlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICdDb25maWdJdGVtQ3JlYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ29uZmlnSXRlbUNyZWF0ZTogQXR0YWNobWVudC0+Q29udGVudFR5cGUgcGFyYW1ldGVyIGlzIG1pc3NpbmchJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBBdHRhY2htZW50LT5GaWxlbmFtZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAnQ29uZmlnSXRlbUNyZWF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGU6IEF0dGFjaG1lbnQtPkZpbGVuYW1lIHBhcmFtZXRlciBpcyBtaXNzaW5nIScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzQ3JlYXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnTGVub3ZvJywKICAgICAgICAgICAgICAgICAgICBNb2RlbCAgICAgICAgICAgPT4gJ1RoaW5rcGFkJywKICAgICAgICAgICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnRGVza3RvcCcsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgICAgICAgICAgT3BlcmF0aW5nU3lzdGVtID0+ICdDZW50T1MgNi4wJywKICAgICAgICAgICAgICAgICAgICBDUFUgICAgICAgICAgICAgPT4gJ0ludGVsIENvcmUgaTMnLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICc0MDAwJywKICAgICAgICAgICAgICAgICAgICAgICAgJzIwMDAnLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiAnL2RldicsCiAgICAgICAgICAgICAgICAgICAgICAgIENhcGFjaXR5ID0+ICc1MDAwMCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBGUUROID0+ICdob3RzLmV4YW1wbGUuY29tJywKICAgICAgICAgICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcxOTIuMTY4LjMwLjEnLAoKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMjAwLjM0LjU2Ljc4JywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIEdyYXBoaWNBZGFwdGVyICAgICAgICAgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBJbnN0YWxsRGF0ZSAgICAgICAgICAgID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBOb3RlICAgICAgICAgICAgICAgICAgID0+ICdUaGlzIGlzIGEgRGVtbyBDSScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0LnR4dCcsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PWlzby04ODU5LTEnLAogICAgICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW0gd2l0aG91dCBYU0xEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NDcmVhdGUgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnTG9jYXRpb24nLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICB9LAopOwoKIyBTdGFydCB0ZXN0aW5nLgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgQ3JlYXRlIGxvY2FsIG9iamVjdC4KICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBNYWtlIGEgZGVlcCBjb3B5IHRvIGF2b2lkIGNoYW5naW5nIHRoZSBkZWZpbml0aW9uLgogICAgbXkgJENsb25lZFJlcXVlc3REYXRhID0gU3RvcmFibGU6OmRjbG9uZSggJFRlc3QtPntSZXF1ZXN0RGF0YX0gKTsKCiAgICAjIFN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWJzZXJ2aWNlLgogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIFJlc3RvcmUgY2xvbmVkIGRhdGEuCiAgICAkVGVzdC0+e1JlcXVlc3REYXRhfSA9ICRDbG9uZWRSZXF1ZXN0RGF0YTsKCiAgICAjIENoZWNrIHJlc3VsdC4KICAgICRTZWxmLT5JcygKICAgICAgICAnSEFTSCcsCiAgICAgICAgcmVmICRMb2NhbFJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBzdHJ1Y3R1cmUgaXMgdmFsaWQiLAogICAgKTsKCiAgICAjIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0LgogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBTdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZS4KICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIENoZWNrIHJlc3VsdC4KICAgICRTZWxmLT5JcygKICAgICAgICAnSEFTSCcsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57U3VjY2Vzc30sCiAgICAgICAgJFRlc3QtPntTdWNjZXNzUmVxdWVzdH0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgc3VjY2Vzc2Z1bCByZXN1bHQiLAogICAgKTsKCiAgICAjIFRlc3RzIHN1cHBvc2VkIHRvIHN1Y2NlZWQuCiAgICBpZiAoICRUZXN0LT57U3VjY2Vzc0NyZWF0ZX0gKSB7CgogICAgICAgICMgTG9jYWwgcmVzdWx0cy4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntOdW1iZXJ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBUcnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3IgaXMgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBSZXF1ZXN0ZXIgcmVzdWx0cy4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW1JRCB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntOdW1iZXJ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgTnVtYmVyIHdpdGggVHJ1ZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3IgaXMgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgdGhlIENvbmZpZ0l0ZW0gZW50cnkgKGZyb20gbG9jYWwgcmVzdWx0KS4KICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJExvY2FsVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgbG9jYWwgdmVyc2lvbiBzdHJjdHVyZSB3aXRoIFRydWUuIiwKICAgICAgICApOwoKICAgICAgICAjIEdldCB0aGUgY29uZmlnIGl0ZW0gZW50cnkgKGZyb20gcmVxdWVzdGVyIHJlc3VsdCkuCiAgICAgICAgbXkgJFJlcXVlc3RlclZlcnNpb25EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJFJlcXVlc3RlclZlcnNpb25EYXRhKSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBjcmVhdGVkIHJlcXVlc3RlciBjb25maWcgaXRlbSBzdHJjdHVyZSB3aXRoIFRydWUuIiwKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgdGVzdC4KICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoTnVtYmVyIENsYXNzIE5hbWUgSW5jaVN0YXRlIERlcGxTdGF0ZSBEZXBsU3RhdGVUeXBlKSkgewogICAgICAgICAgICBpZiAoICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPnskQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgICAgICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbX0tPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGxvY2FsIENvbmZpZ0l0ZW0tPiRBdHRyaWJ1dGUiIC4gIiBtYXRjaCB0ZXN0IGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0NJWE1MRGF0YX0gKSB7CgogICAgICAgICAgICAjIFRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0LgogICAgICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRMb2NhbFZlcnNpb25EYXRhLT57WE1MRGVmaW5pdGlvbn07CgogICAgICAgICAgICAjIE1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIHJlc3VsdC4KICAgICAgICAgICAgbXkgJENsb25lZFhNTERhdGEgPSBTdG9yYWJsZTo6ZGNsb25lKCAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERhdGF9ICk7CgogICAgICAgICAgICBteSAkRm9ybWF0ZWRYTUxEYXRhID0gJExvY2FsT2JqZWN0LT5JbnZlcnRGb3JtYXRYTUxEYXRhKAogICAgICAgICAgICAgICAgWE1MRGF0YSA9PiAkQ2xvbmVkWE1MRGF0YS0+WzFdLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkUmVwbGFjZWRYTUxEYXRhID0gJExvY2FsT2JqZWN0LT5JbnZlcnRSZXBsYWNlWE1MRGF0YSgKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgPT4gJEZvcm1hdGVkWE1MRGF0YSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIENvbXBhcmUgWE1MIGRhdGEuCiAgICAgICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgICAgICRSZXBsYWNlZFhNTERhdGEsCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57Q0lYTUxEYXRhfSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gbG9jYWwgQ29uZmlnSXRlbS0+Q0lYTUxEYXRhIG1hdGNoIHRlc3QgZGVmaW5pdGlvbi4iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH0gKSB7CgogICAgICAgICAgICAjIENoZWNrIGF0dGFjaG1lbnRzLgogICAgICAgICAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSBAQXR0YWNobWVudHM7CiAgICAgICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkRmlsZU5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICEkRmlsZU5hbWU7CgogICAgICAgICAgICAgICAgbXkgJEF0dGFjaG1lbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlTmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBOZXh0IGlmIG5vdCBhdHRhY2htZW50LgogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQXR0YWNobWVudCk7CgogICAgICAgICAgICAgICAgIyBDb252ZXJ0IGNvbnRlbnQgdG8gYmFzZTY0LgogICAgICAgICAgICAgICAgJEF0dGFjaG1lbnQtPntDb250ZW50fSA9IGVuY29kZV9iYXNlNjQoICRBdHRhY2htZW50LT57Q29udGVudH0sICcnICk7CgogICAgICAgICAgICAgICAgIyBEZWxldGUgbm90IG5lZWRlZCBhdHRpYnV0ZXMuCiAgICAgICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoUHJlZmVyZW5jZXMgRmlsZXNpemUgVHlwZSkpIHsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJEF0dGFjaG1lbnQtPnskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRzLCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQFJlcXVlc3RlZEF0dGFjaG1lbnRzOwogICAgICAgICAgICBpZiAoIHJlZiAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0F0dGFjaG1lbnR9IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFJlcXVlc3RlZEF0dGFjaG1lbnRzLCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBAUmVxdWVzdGVkQXR0YWNobWVudHMgPSBAeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57QXR0YWNobWVudH0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgXEBBdHRhY2htZW50cywKICAgICAgICAgICAgICAgIFxAUmVxdWVzdGVkQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGxvY2FsIENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFJlbW92ZSBhdHRyaWJ1dGVzIHRoYXQgbWlnaHQgYmUgZGlmZmVyZW50IGZyb20gbG9jYWwgYW5kIHJlcXVlc3RlciByZXNwb25zZXMuCiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKAogICAgICAgICAgICBxdyhDb25maWdJdGVtSUQgTnVtYmVyIENyZWF0ZVRpbWUgVmVyc2lvbklEIExhc3RWZXJzaW9uSUQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIGRlbGV0ZSAkTG9jYWxWZXJzaW9uRGF0YS0+eyRBdHRyaWJ1dGV9OwogICAgICAgICAgICBkZWxldGUgJFJlcXVlc3RlclZlcnNpb25EYXRhLT57JEF0dHJpYnV0ZX07CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFZlcnNpb25EYXRhLAogICAgICAgICAgICAkUmVxdWVzdGVyVmVyc2lvbkRhdGEsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgY29uZmlnIGl0ZW0gcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgdGhlIGNvbmZpZyBpdGVtcy4KICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EZWxldGUgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNhbml0eSBjaGVjay4KICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtRGVsZXRlKCkgc3VjY2Vzc2Z1bCBmb3IgQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBUZXN0cyBzdXBwb3NlZCB0byBmYWlsLgogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0KICAgICAgICAgICAgICAgIC4gJzogJwogICAgICAgICAgICAgICAgLiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSAob3V0c2lkZSBEYXRhIGhhc2gpIG1hdGNoZWQgd2l0aCBjb25jYXRlbmF0aW9uIgogICAgICAgICAgICAgICAgLiAiIG9mIEVycm9yQ29kZSBhbmQgRXJyb3JNZXNzYWdlIHdpdGhpbiBEYXRhIGhhc2guIiwKICAgICAgICApOwoKICAgICAgICAjIFJlbW92ZSBFcnJvck1lc3NhZ2UgcGFyYW1ldGVyIGZyb20gZGlyZWN0IGNhbGwuCiAgICAgICAgIyBSZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQuCiAgICAgICAgaWYgKCAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgICAgICB9CgogICAgICAgICMgU2FuaXR5IGNoZWNrLgogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb01lc3NhZ2UgKG91dHNpc2UgRGF0YSBoYXNoKSBnb3QgcmVtb3ZlZCB0byBjb21wYXJlIgogICAgICAgICAgICAgICAgLiAiIGxvY2FsIGFuZCByZW1vdGUgdGVzdHMuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQp9CgojIENsZWFuIHVwIHdlYnNlcnZpY2UuCm15ICRXZWJzZXJ2aWNlRGVsZXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VEZWxldGUoCiAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlRGVsZXRlLAogICAgIkRlbGV0ZWQgV2Vic2VydmljZSAkV2Vic2VydmljZUlEIiwKKTsKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemDelete.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0Owp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGU7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiMgc2V0IFVzZXJJRCB0byByb290CiRTZWxmLT57VXNlcklEfSA9IDE7CgojIGhlbHBlciBvYmplY3QKIyBza2lwIFNTTCBjZXJ0aWNpYXRlIHZlcmlmaWNhdGlvbgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBTa2lwU1NMVmVyaWZ5ID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgpteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgY2hlY2sgaWYgU1NMIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBpcyBkaXNhYmxlZAokU2VsZi0+SXMoCiAgICAkRU5We1BFUkxfTFdQX1NTTF9WRVJJRllfSE9TVE5BTUV9LAogICAgMCwKICAgICdEaXNhYmxlZCBTU0wgY2VydGl0aWNhdGVzIHZlcmlmaWNhdGlvbiBpbiBlbnZpcm9ubWVudCcsCik7CgojIGNyZWF0ZSBDb25maWdJdGVtIG9iamVjdApteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKbXkgJFRlc3RDdXN0b21lclVzZXJMb2dpbiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgY3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0Cm15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKJFNlbGYtPklzKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJywKICAgIHJlZiAkV2Vic2VydmljZU9iamVjdCwKICAgICJDcmVhdGUgd2Vic2VydmljZSBvYmplY3QiLAopOwoKIyBzZXQgd2Vic2VydmljZSBuYW1lCm15ICRXZWJzZXJ2aWNlTmFtZSA9ICctVGVzdC0nIC4gJFJhbmRvbUlEOwoKbXkgJFdlYnNlcnZpY2VJRCA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlQWRkKAogICAgTmFtZSAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyA9PiB7CiAgICAgICAgRGVidWdnZXIgPT4gewogICAgICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIH0sCiAgICAgICAgUHJvdmlkZXIgPT4gewogICAgICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZUlELAogICAgIkFkZGVkIFdlYnNlcnZpY2UiLAopOwoKIyBnZXQgcmVtb3RlIGhvc3Qgd2l0aCBzb21lIHByZWNhdXRpb25zIGZvciBjZXJ0YWluIHVuaXQgdGVzdCBzeXN0ZW1zCm15ICRIb3N0OwpteSAkRlFETiA9ICRDb25maWdPYmplY3QtPkdldCgnRlFETicpOwoKIyB0cnkgdG8gcmVzb2x2ZSBmcWRuIGhvc3QKaWYgKCAkRlFETiBuZSAneW91cmhvc3QuZXhhbXBsZS5jb20nICYmIGdldGhvc3RieW5hbWUoJEZRRE4pICkgewogICAgJEhvc3QgPSAkRlFETjsKfQoKIyB0cnkgdG8gcmVzb2x2ZSBsb2NhbGhvc3QgaW5zdGVhZAppZiAoICEkSG9zdCAmJiBnZXRob3N0YnluYW1lKCdsb2NhbGhvc3QnKSApIHsKICAgICRIb3N0ID0gJ2xvY2FsaG9zdCc7Cn0KCiMgdXNlIGhhcmRjb2RlZCBsb2NhbGhvc3QgaXAgYWRkcmVzcwppZiAoICEkSG9zdCApIHsKICAgICRIb3N0ID0gJzEyNy4wLjAuMSc7Cn0KCiMgcHJlcGFyZSB3ZWJzZXJ2aWNlIGNvbmZpZwpteSAkUmVtb3RlU3lzdGVtID0KICAgICRDb25maWdPYmplY3QtPkdldCgnSHR0cFR5cGUnKQogICAgLiAnOi8vJwogICAgLiAkSG9zdAogICAgLiAnLycKICAgIC4gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpCiAgICAuICcvbnBoLWdlbmVyaWNpbnRlcmZhY2UucGwvV2Vic2VydmljZUlELycKICAgIC4gJFdlYnNlcnZpY2VJRDsKCm15ICRXZWJzZXJ2aWNlQ29uZmlnID0gewoKICAgICMgICAgTmFtZSA9PiAnJywKICAgIERlc2NyaXB0aW9uID0+CiAgICAgICAgJ1Rlc3QgZm9yIENvbmZpZ0l0ZW0gQ29ubmVjdG9yIHVzaW5nIFNPQVAgdHJhbnNwb3J0IGJhY2tlbmQuJywKICAgIERlYnVnZ2VyID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgUHJvdmlkZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTBfMDAwXzAwMCwKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290cnMub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgICAgIFRpbWVvdXQgICA9PiA2MCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1EZWxldGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbURlbGV0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnU2Vzc2lvbjo6U2Vzc2lvbkNyZWF0ZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBSZXF1ZXN0ZXIgPT4gewogICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgIFR5cGUgICA9PiAnSFRUUDo6U09BUCcsCiAgICAgICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdHJzLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5jb2RpbmcgID0+ICdVVEYtOCcsCiAgICAgICAgICAgICAgICBFbmRwb2ludCAgPT4gJFJlbW90ZVN5c3RlbSwKICAgICAgICAgICAgICAgIFRpbWVvdXQgICA9PiA2MCwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEludm9rZXIgPT4gewogICAgICAgICAgICBDb25maWdJdGVtRGVsZXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Rlc3Q6OlRlc3RTaW1wbGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAp9OwoKIyB1cGRhdGUgd2Vic2VydmljZSB3aXRoIHJlYWwgY29uZmlnCm15ICRXZWJzZXJ2aWNlVXBkYXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICBJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBOYW1lICAgID0+ICRXZWJzZXJ2aWNlTmFtZSwKICAgIENvbmZpZyAgPT4gJFdlYnNlcnZpY2VDb25maWcsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VVcGRhdGUsCiAgICAiVXBkYXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQgLSAkV2Vic2VydmljZU5hbWUiLAopOwoKIyBkZWJ1Z2dlciBvYmplY3QKbXkgJERlYnVnZ2VyT2JqZWN0ID0gS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlci0+bmV3KAogICAgRGVidWdnZXJDb25maWcgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBXZWJzZXJ2aWNlSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgQ29tbXVuaWNhdGlvblR5cGUgPT4gJ1Byb3ZpZGVyJywKKTsKJFNlbGYtPklzKAogICAgcmVmICREZWJ1Z2dlck9iamVjdCwKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyJywKICAgICdEZWJ1Z2dlck9iamVjdCBpbnN0YW5jaWF0ZSBjb3JyZWN0bHknLAopOwoKIyBHZXQgU2Vzc2lvbklECiMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKbXkgJFJlcXVlc3RlclNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgcmVmICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0LAogICAgIlNlc3Npb25JRCAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKKTsKCiMgY3JlYXRlIGEgbmV3IHVzZXIgZm9yIGN1cnJlbnQgdGVzdApteSAkVXNlckxvZ2luID0gJEhlbHBlck9iamVjdC0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnLCAnaXRzbS1jb25maWdpdGVtJyBdLAopOwoKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJFJlcXVlc3RlclNlc3Npb25SZXN1bHQgPSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdC0+UnVuKAogICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBJbnZva2VyICAgICAgPT4gJ1Nlc3Npb25DcmVhdGUnLAogICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgfSwKKTsKCm15ICROZXdTZXNzaW9uSUQgPSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdC0+e0RhdGF9LT57U2Vzc2lvbklEfTsKCiNDb25maWdJdGVtdHMgY29udGFpbmVyICh1c2VmdWxsIGZvciBsb29rdXAgY29tcGFyZSkKbXkgJUFkZGVkQ29uZmlnSXRlbXM7Cm15IEBBZGRlZENvbmZpZ0l0ZW1JRHM7CgojIENvbmZpZ0l0ZW0gc2V0dGluZ3MKbXkgQENvbmZpZ0l0ZW1zID0gKAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTEtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdMbzAnLAogICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTItJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdXYXJuaW5nJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnVGhpbmtwYWQnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgPT4gJ1RoaW5rcGFkIFgzMDAnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gNTAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcyMDAuMzQuNTYuNzgnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgR3JhcGhpY0FkYXB0ZXIgPT4gJ0FUSSBSYWRlb24gMzAwJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0hhcmR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0zLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ0hhcmR3YXJlIFZlbmRvcicsCiAgICAgICAgICAgIE1vZGVsICAgICAgICA9PiAnSGFyZHdhcmUgTW9kZWwnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1Rlc2l0bmcgSGFucmR3YXJlJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdDYW1lcmEnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNhbWM0NTYnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnTG9jYXRpb24nLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTQtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgID0+ICdCdWlsZGluZycsCiAgICAgICAgICAgIFBob25lMSAgID0+ICcxMjMnLAogICAgICAgICAgICBQaG9uZTIgICA9PiAnNDU2JywKICAgICAgICAgICAgRmF4ICAgICAgPT4gJzc4OScsCiAgICAgICAgICAgICdFLU1haWwnID0+ICdzb2Vtb25lQGV4YW1wbGUuY29tJywKICAgICAgICAgICAgQWRkcmVzcyAgPT4gJ1NvbWUgYWRkcmVzcycsCiAgICAgICAgICAgIE5vdGUgICAgID0+ICdUaGlzIGlzIGEgdGVzdCBsb2NhdGlvbicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdOZXR3b3JrJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS01LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnTmV0d29yayBDSSBmb3IgdGVzdGluZycsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICdMQU4nLAogICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gJzE5Mi4xLjEuMScsCiAgICAgICAgICAgICAgICAgICAgU3VibmV0TWFzayAgICAgPT4gJzI1NS4yNTUuMjU1LjAnLAogICAgICAgICAgICAgICAgICAgIEdhdGV3YXkgICAgICAgID0+ICcxOTIuMS4xLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+ICcxOTIuMS41MC4xJywKICAgICAgICAgICAgICAgICAgICBTdWJuZXRNYXNrICAgICA9PiAnMjU1LjI1NS4yNTUuMCcsCiAgICAgICAgICAgICAgICAgICAgR2F0ZXdheSAgICAgICAgPT4gJzE5Mi4xLjUwLjI1NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBOb3RlID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNi0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnRG93bmxvYWQnLAogICAgICAgICAgICBOb3RlICA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTctJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0Rvd25sb2FkJywKICAgICAgICAgICAgTm90ZSAgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS04LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCik7CgpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENsYXNzTGlzdCAgICAgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVSZXZlcnNlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwpteSAkSW5jaVN0YXRlTGlzdCAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVSZXZlcnNlSW5jaVN0YXRlTGlzdCA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07Cm15ICREZXBsU3RhdGVMaXN0ICAgICAgICA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VEZXBsU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBjcmVhdGUgbmV3IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkUmV2ZXJzZUNsYXNzTGlzdHsgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSwKICAgICAgICBVc2VySUQgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzYW5pdHkgY2hlY2tzCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQiLAogICAgKTsKCiAgICBteSAkRGVmaW5pdGlvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICBDbGFzc0lEID0+ICRSZXZlcnNlQ2xhc3NMaXN0eyAkQ29uZmlnSXRlbS0+e0NsYXNzfSB9LAogICAgKTsKCiAgICBteSAkTG9jYWxPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZS0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICBteSAkUmVwbGFjZWRYTUxEYXRhID0gJExvY2FsT2JqZWN0LT5SZXBsYWNlWE1MRGF0YSgKICAgICAgICBYTUxEYXRhICAgID0+ICRDb25maWdJdGVtLT57Q0lYTUxEYXRhfSwKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uRGF0YS0+e0RlZmluaXRpb25SZWZ9LAogICAgKTsKCiAgICBteSAkWE1MRGF0YSA9ICRMb2NhbE9iamVjdC0+Rm9ybWF0WE1MRGF0YSgKICAgICAgICBYTUxEYXRhID0+ICRSZXBsYWNlZFhNTERhdGEsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25EYXRhLT57RGVmaW5pdGlvbklEfSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFJldmVyc2VEZXBsU3RhdGVMaXN0eyAkQ29uZmlnSXRlbS0+e0RlcGxTdGF0ZX0gfSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJFJldmVyc2VJbmNpU3RhdGVMaXN0eyAkQ29uZmlnSXRlbS0+e0luY2lTdGF0ZX0gfSwKICAgICAgICBYTUxEYXRhICAgICAgPT4gJFhNTERhdGEsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzYW5pdHkgY2hlY2tzCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQiLAogICAgKTsKCiAgICBteSAkVmVyc2lvbkluZm8gPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgJFNlbGYtPklzTm90RGVlcGx5KAogICAgICAgICRWZXJzaW9uSW5mbywKICAgICAgICB7fSwKICAgICAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIC0gVmVyc2lvbiBpcyBub3QgYW4gZW1wdHkgaGFzaCIsCiAgICApOwoKICAgICMgcmVtZW1iZXIgdGhlIGNvbmZpZyBpdGVtCiAgICBpZiAoJENvbmZpZ0l0ZW1JRCkgewogICAgICAgICRBZGRlZENvbmZpZ0l0ZW1zeyRDb25maWdJdGVtSUR9ID0gJENsb25lZENvbmZpZ0l0ZW07CiAgICAgICAgcHVzaCBAQWRkZWRDb25maWdJdGVtSURzLCAkQ29uZmlnSXRlbUlEOwogICAgfQp9CgojIGFjdHVhbCB0ZXN0cyBmb3IgQ29uZmlnSXRlbURlbGV0ZSBvcGVyYXRpb24KbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdFbXB0eSBSZXF1ZXN0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NEZWxldGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4ge30sCiAgICAgICAgRXhwZWN0ZWREYXRhICAgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEIGZvcm1hdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IHsKICAgICAgICAgICAgICAgIFRlc3QxID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdOb3RFeGlzdGVudCcgLiAkUmFuZG9tSUQsCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1EZWxldGUuQWNjZXNzRGVuaWVkJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgQXJyYXknLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiBbICdOb3RFeGlzdGVudCcgLiAkUmFuZG9tSUQgXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbURlbGV0ZS5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1swXSBdLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCAxICh3YXMgYWxyZWFkeSBkZWxldGVkIGJlZm9yZSknLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtRGVsZXRlLkFjY2Vzc0RlbmllZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzFdIF0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1EZWxldGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMl0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzNdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1s0XSBdLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzRdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1s0XSBdLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDYnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0RlbGV0ZSAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzVdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJEFkZGVkQ29uZmlnSXRlbUlEc1s1XSBdLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDctOCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzRGVsZXRlICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbNl0sCiAgICAgICAgICAgICAgICAkQWRkZWRDb25maWdJdGVtSURzWzddLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsKICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1JRHNbNl0sCiAgICAgICAgICAgICAgICAkQWRkZWRDb25maWdJdGVtSURzWzddLAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgIH0sCik7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgY3JlYXRlIGxvY2FsIG9iamVjdAogICAgbXkgJExvY2FsT2JqZWN0ID0gIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLT5uZXcoCiAgICAgICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OiRUZXN0LT57T3BlcmF0aW9ufSIsCiAgICAgICAgcmVmICRMb2NhbE9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSBsb2NhbCBvYmplY3QiLAogICAgKTsKCiAgICAjIGNyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0CiAgICBteSAkUmVxdWVzdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInKTsKICAgICRTZWxmLT5JcygKICAgICAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInLAogICAgICAgIHJlZiAkUmVxdWVzdGVyT2JqZWN0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAogICAgKTsKCiAgICAjIHN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWJzZXJ2aWNlCiAgICBteSAkUmVxdWVzdGVyUmVzdWx0ID0gJFJlcXVlc3Rlck9iamVjdC0+UnVuKAogICAgICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgICAgIEludm9rZXIgICAgICA9PiAkVGVzdC0+e09wZXJhdGlvbn0sCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICROZXdTZXNzaW9uSUQsCiAgICAgICAgICAgICV7ICRUZXN0LT57UmVxdWVzdERhdGF9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBjaGVjayByZXN1bHQKICAgICRTZWxmLT5JcygKICAgICAgICAnSEFTSCcsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57U3VjY2Vzc30sCiAgICAgICAgJFRlc3QtPntTdWNjZXNzUmVxdWVzdH0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgc3VjY2Vzc2Z1bCByZXN1bHQiLAogICAgKTsKCiAgICBpZiAoICRUZXN0LT57U3VjY2Vzc0RlbGV0ZX0gKSB7CgogICAgICAgICMgcmVxdWVzdGVyIHJlc3VsdHMKICAgICAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbUlEIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBteSAkRXhwZWN0ZWRSZXN1bHRUeXBlID0gcmVmICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgJEV4cGVjdGVkUmVzdWx0VHlwZSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW1JRCByZWZlcmVuY2UuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBJc0FycmF5UmVmV2l0aERhdGEoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gKSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgcmVmZXJlbmNlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHRlc3RzIHN1cHBvc2VkIHRvIGZhaWwKICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IENvbmZpZ0l0ZW1JRCB3aXRoIGZhbHNlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IEVycm9yQ29kZSBtYXRjaGVkIHdpdGggZXhwZWN0ZWQgY2FsbCByZXN1bHQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgRXJyb3JNZXNzYWdlIHdpdGggdHJ1ZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAnJywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IEVycm9yTWVzc2FnZSBpcyBub3QgZW1wdHkuIiwKICAgICAgICApOwogICAgfQp9ICAgICNlbmQgbG9vcAoKIyBjbGVhbiB1cAoKIyBjbGVhbiB1cCB3ZWJzZXJ2aWNlCm15ICRXZWJzZXJ2aWNlRGVsZXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VEZWxldGUoCiAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VEZWxldGUsCiAgICAiRGVsZXRlZCBXZWJzZXJ2aWNlICRXZWJzZXJ2aWNlSUQiLAopOwoKMTsK</File>
        <File Permission="660" Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemGet.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtR2V0Owp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgojIHNldCBVc2VySUQgdG8gcm9vdAokU2VsZi0+e1VzZXJJRH0gPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyT2JqZWN0LT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgZ2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcwpteSAkSG9zdDsKbXkgJEZRRE4gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZRRE4nKTsKCiMgdHJ5IHRvIHJlc29sdmUgZnFkbiBob3N0CmlmICggJEZRRE4gbmUgJ3lvdXJob3N0LmV4YW1wbGUuY29tJyAmJiBnZXRob3N0YnluYW1lKCRGUUROKSApIHsKICAgICRIb3N0ID0gJEZRRE47Cn0KCiMgdHJ5IHRvIHJlc29sdmUgbG9jYWxob3N0IGluc3RlYWQKaWYgKCAhJEhvc3QgJiYgZ2V0aG9zdGJ5bmFtZSgnbG9jYWxob3N0JykgKSB7CiAgICAkSG9zdCA9ICdsb2NhbGhvc3QnOwp9CgojIHVzZSBoYXJkY29kZWQgbG9jYWxob3N0IGlwIGFkZHJlc3MKaWYgKCAhJEhvc3QgKSB7CiAgICAkSG9zdCA9ICcxMjcuMC4wLjEnOwp9CgojIHByZXBhcmUgd2Vic2VydmljZSBjb25maWcKbXkgJFJlbW90ZVN5c3RlbSA9CiAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0h0dHBUeXBlJykKICAgIC4gJzovLycKICAgIC4gJEhvc3QKICAgIC4gJy8nCiAgICAuICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKQogICAgLiAnL25waC1nZW5lcmljaW50ZXJmYWNlLnBsL1dlYnNlcnZpY2VJRC8nCiAgICAuICRXZWJzZXJ2aWNlSUQ7CgpteSAkV2Vic2VydmljZUNvbmZpZyA9IHsKCiAgICAjICAgIE5hbWUgPT4gJycsCiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdHJzLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgICAgICBUaW1lb3V0ICAgPT4gNjAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Nlc3Npb246OlNlc3Npb25DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgUmVxdWVzdGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3Rycy5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgICAgICBUaW1lb3V0ICAgPT4gNjAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgdXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZwpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlVXBkYXRlLAogICAgIlVwZGF0ZWQgV2Vic2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiwKKTsKCiMgZGVidWdnZXIgb2JqZWN0Cm15ICREZWJ1Z2dlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXItPm5ldygKICAgIERlYnVnZ2VyQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgV2Vic2VydmljZUlEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIENvbW11bmljYXRpb25UeXBlID0+ICdQcm92aWRlcicsCik7CiRTZWxmLT5JcygKICAgIHJlZiAkRGVidWdnZXJPYmplY3QsCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcicsCiAgICAnRGVidWdnZXJPYmplY3QgaW5zdGFuY2lhdGUgY29ycmVjdGx5JywKKTsKCiMgR2V0IFNlc3Npb25JRAojIGNyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0Cm15ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInKTsKJFNlbGYtPklzKAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgIHJlZiAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCwKICAgICJTZXNzaW9uSUQgLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCik7CgojIGNyZWF0ZSBhIG5ldyB1c2VyIGZvciBjdXJyZW50IHRlc3QKbXkgJFVzZXJMb2dpbiA9ICRIZWxwZXJPYmplY3QtPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKTsKCm15ICRQYXNzd29yZCA9ICRVc2VyTG9naW47CgojIHN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWJzZXJ2aWNlCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07CgojQ29uZmlnSXRlbXRzIGNvbnRhaW5lciAodXNlZnVsbCBmb3IgbG9va3VwIGNvbXBhcmUpCm15ICVBZGRlZENvbmZpZ0l0ZW1zOwpteSBAQWRkZWRDb25maWdJdGVtSURzOwoKIyBDb25maWdJdGVtIHNldHRpbmdzCm15IEBDb25maWdJdGVtcyA9ICgKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0xLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBOSUMgPT4gewogICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnTG8wJywKICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0yLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdSZXBhaXInLAogICAgICAgIEluY2lTdGF0ZSA9PiAnV2FybmluZycsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgICAgID0+ICdMZW5vdm8nLAogICAgICAgICAgICBNb2RlbCAgICAgICAgICAgPT4gJ1RoaW5rcGFkJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgID0+ICdUaGlua3BhZCBYMzAwJywKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgID0+ICdEZXNrdG9wJywKICAgICAgICAgICAgT3duZXIgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gPT4gJ0NlbnRPUyA2LjAnLAogICAgICAgICAgICBDUFUgICAgICAgICAgICAgPT4gJ0ludGVsIENvcmUgaTMnLAogICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgIDIwMDAsCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgIEhhcmREaXNrID0+ICcvZGV2JywKICAgICAgICAgICAgICAgIENhcGFjaXR5ID0+IDUwMDAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBGUUROID0+ICdob3RzLmV4YW1wbGUuY29tJywKICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzE5Mi4xNjguMzAuMScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMjAwLjM0LjU2Ljc4JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEdyYXBoaWNBZGFwdGVyID0+ICdBVEkgUmFkZW9uIDMwMCcsCiAgICAgICAgICAgIEluc3RhbGxEYXRlICAgID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgTm90ZSAgICAgICAgICAgPT4gJ1RoaXMgaXMgYSBEZW1vIENJJywKICAgICAgICB9LAogICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTEnLAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgPT4gJ015IFRleHQyLnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdIYXJkd2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMy0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdIYXJkd2FyZSBWZW5kb3InLAogICAgICAgICAgICBNb2RlbCAgICAgICAgPT4gJ0hhcmR3YXJlIE1vZGVsJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdUZXNpdG5nIEhhbnJkd2FyZScsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQ2FtZXJhJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzYW1jNDU2JywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ0xvY2F0aW9uJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS00LScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBUeXBlICAgICA9PiAnQnVpbGRpbmcnLAogICAgICAgICAgICBQaG9uZTEgICA9PiAnMTIzJywKICAgICAgICAgICAgUGhvbmUyICAgPT4gJzQ1NicsCiAgICAgICAgICAgIEZheCAgICAgID0+ICc3ODknLAogICAgICAgICAgICAnRS1NYWlsJyA9PiAnc29lbW9uZUBleGFtcGxlLmNvbScsCiAgICAgICAgICAgIEFkZHJlc3MgID0+ICdTb21lIGFkZHJlc3MnLAogICAgICAgICAgICBOb3RlICAgICA9PiAnVGhpcyBpcyBhIHRlc3QgbG9jYXRpb24nLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnTmV0d29yaycsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNS0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgPT4gJ05ldHdvcmsgQ0kgZm9yIHRlc3RpbmcnLAogICAgICAgICAgICBUeXBlICAgICAgICAgICA9PiAnTEFOJywKICAgICAgICAgICAgTmV0d29ya0FkZHJlc3MgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5ldHdvcmtBZGRyZXNzID0+ICcxOTIuMS4xLjEnLAogICAgICAgICAgICAgICAgICAgIFN1Ym5ldE1hc2sgICAgID0+ICcyNTUuMjU1LjI1NS4wJywKICAgICAgICAgICAgICAgICAgICBHYXRld2F5ICAgICAgICA9PiAnMTkyLjEuMS4yNTQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOZXR3b3JrQWRkcmVzcyA9PiAnMTkyLjEuNTAuMScsCiAgICAgICAgICAgICAgICAgICAgU3VibmV0TWFzayAgICAgPT4gJzI1NS4yNTUuMjU1LjAnLAogICAgICAgICAgICAgICAgICAgIEdhdGV3YXkgICAgICAgID0+ICcxOTIuMS41MC4yNTQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTm90ZSA9PiAnVGhpcyBpcyBhIHRlc3QgQ0knLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnU29mdHdhcmUnLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTYtJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICA9PiAnU29tZSBzb2Z0d2FyZSB2ZW5kb3InLAogICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gJzEuMS4xJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gID0+ICdTb21lIHNvZnR3YXJlIGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdBZG1pbiBUb29sJywKICAgICAgICAgICAgT3duZXIgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgIFNlcmlhbE51bWJlciA9PiAnMTIzQUJDNDU2JywKICAgICAgICAgICAgTGljZW5jZVR5cGUgID0+ICdPcGVuIFNvdXJjZScsCiAgICAgICAgICAgIExpY2VuY2VLZXkgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzEyMzQnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICc0NTY3JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMycsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMjUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgTWVkaWEgPT4gJ0Rvd25sb2FkJywKICAgICAgICAgICAgTm90ZSAgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKKTsKCm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwpteSAkQ2xhc3NMaXN0ICAgICAgICAgICAgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKKTsKbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICV7JENsYXNzTGlzdH07Cm15ICRJbmNpU3RhdGVMaXN0ICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKKTsKbXkgJVJldmVyc2VJbmNpU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyRJbmNpU3RhdGVMaXN0fTsKbXkgJERlcGxTdGF0ZUxpc3QgICAgICAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpteSAlUmV2ZXJzZURlcGxTdGF0ZUxpc3QgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9Owpmb3IgbXkgJENvbmZpZ0l0ZW0gKEBDb25maWdJdGVtcykgewoKICAgICMgbWFrZSBhIGRlZXAgY29weSB0byBhdm9pZCBjaGFuZ2luZyB0aGUgZGVmaW5pdGlvbgogICAgbXkgJENsb25lZENvbmZpZ0l0ZW0gPSBTdG9yYWJsZTo6ZGNsb25lKCRDb25maWdJdGVtKTsKCiAgICAjIGNyZWF0ZSBuZXcgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICBDbGFzc0lEID0+ICRSZXZlcnNlQ2xhc3NMaXN0eyAkQ29uZmlnSXRlbS0+e0NsYXNzfSB9LAogICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCIsCiAgICApOwoKICAgIG15ICREZWZpbml0aW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIENsYXNzSUQgPT4gJFJldmVyc2VDbGFzc0xpc3R7ICRDb25maWdJdGVtLT57Q2xhc3N9IH0sCiAgICApOwoKICAgIG15ICRMb2NhbE9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlLT5uZXcoCiAgICAgICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgIG15ICRSZXBsYWNlZFhNTERhdGEgPSAkTG9jYWxPYmplY3QtPlJlcGxhY2VYTUxEYXRhKAogICAgICAgIFhNTERhdGEgICAgPT4gJENvbmZpZ0l0ZW0tPntDSVhNTERhdGF9LAogICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb25EYXRhLT57RGVmaW5pdGlvblJlZn0sCiAgICApOwoKICAgIG15ICRYTUxEYXRhID0gJExvY2FsT2JqZWN0LT5Gb3JtYXRYTUxEYXRhKAogICAgICAgIFhNTERhdGEgPT4gJFJlcGxhY2VkWE1MRGF0YSwKICAgICk7CgogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbkRhdGEtPntEZWZpbml0aW9uSUR9LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUmV2ZXJzZURlcGxTdGF0ZUxpc3R7ICRDb25maWdJdGVtLT57RGVwbFN0YXRlfSB9LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkUmV2ZXJzZUluY2lTdGF0ZUxpc3R7ICRDb25maWdJdGVtLT57SW5jaVN0YXRlfSB9LAogICAgICAgIFhNTERhdGEgICAgICA9PiAkWE1MRGF0YSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIHNhbml0eSBjaGVja3MKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCIsCiAgICApOwoKICAgIG15ICRWZXJzaW9uSW5mbyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAkU2VsZi0+SXNOb3REZWVwbHkoCiAgICAgICAgJFZlcnNpb25JbmZvLAogICAgICAgIHt9LAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSBWZXJzaW9uIGlzIG5vdCBhbiBlbXB0eSBoYXNoIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0KICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7JENvbmZpZ0l0ZW1JRH0gPSAkQ2xvbmVkQ29uZmlnSXRlbTsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtR2V0IG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBDb25maWdJdGVtSUQgZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gewogICAgICAgICAgICAgICAgVGVzdDEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQ29uZmlnSXRlbUlEJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW1JRCBBcnJheScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFsgJ05vdEV4aXN0ZW50JyAuICRSYW5kb21JRCwgXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbUdldC5BY2Nlc3NEZW5pZWQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzBdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCAyJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgMycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbMl0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc0dldCAgICAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQWRkZWRDb25maWdJdGVtSURzWzNdLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW1JRCA1JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NHZXQgICAgID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJEFkZGVkQ29uZmlnSXRlbUlEc1s0XSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1HZXQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQ29ycmVjdCBDb25maWdJdGVtSUQgNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBZGRlZENvbmZpZ0l0ZW1JRHNbNV0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4ge30sCiAgICAgICAgT3BlcmF0aW9uICAgID0+ICdDb25maWdJdGVtR2V0JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0NvcnJlY3QgQ29uZmlnSXRlbUlEIDEtNicsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzR2V0ICAgICA9PiAxLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IFxAQWRkZWRDb25maWdJdGVtSURzLAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHt9LAogICAgICAgIE9wZXJhdGlvbiAgICA9PiAnQ29uZmlnSXRlbUdldCcsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIGNyZWF0ZSBsb2NhbCBvYmplY3QKICAgIG15ICRMb2NhbE9iamVjdCA9ICJLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6JFRlc3QtPntPcGVyYXRpb259Ii0+bmV3KAogICAgICAgIERlYnVnZ2VyT2JqZWN0ID0+ICREZWJ1Z2dlck9iamVjdCwKICAgICAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLAogICAgICAgIHJlZiAkTG9jYWxPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgbG9jYWwgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJExvY2FsUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IHN0cnVjdHVyZSBpcyB2YWxpZCIsCiAgICApOwoKICAgICMgY3JlYXRlIHJlcXVlc3RlciBvYmplY3QKICAgIG15ICRSZXF1ZXN0ZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicpOwogICAgJFNlbGYtPklzKAogICAgICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICAgICAgcmVmICRSZXF1ZXN0ZXJPYmplY3QsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCiAgICApOwoKICAgICMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKICAgIG15ICRSZXF1ZXN0ZXJSZXN1bHQgPSAkUmVxdWVzdGVyT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJE5ld1Nlc3Npb25JRCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIHJlc3VsdAogICAgJFNlbGYtPklzKAogICAgICAgICdIQVNIJywKICAgICAgICByZWYgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgJFNlbGYtPklzKAogICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntTdWNjZXNzfSwKICAgICAgICAkVGVzdC0+e1N1Y2Nlc3NSZXF1ZXN0fSwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciBzdWNjZXNzZnVsIHJlc3VsdCIsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTdWNjZXNzR2V0fSApIHsKCiAgICAgICAgIyBsb2NhbCByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgQ29uZmlnSXRlbSBpcyBub3QgdW5kZWZpbmVkLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIHJlZiAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAnQVJSQVknLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIElzQXJyYXlSZWZXaXRoRGF0YSggJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtIHJlZmVyZW5jZSBpcyBub3QgZW1wdHkuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBteSAkRXhwZWN0ZWRSZXN1bHRUeXBlID0gcmVmICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB8fCAnSEFTSCc7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgcmVmICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAkRXhwZWN0ZWRSZXN1bHRUeXBlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBJc0FycmF5UmVmV2l0aERhdGEoICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ICksCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFJlcXVlc3RlciByZXN1bHQgQ29uZmlnSXRlbSByZWZlcmVuY2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIElzSGFzaFJlZldpdGhEYXRhKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW0gcmVmZXJlbmNlIGlzIG5vdCBlbXB0eS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICBpZiAoICRFeHBlY3RlZFJlc3VsdFR5cGUgZXEgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICMgbG9vcCBhbGwgQ29uZmlnSXRlbUlEcyBpbiB0aGUgcmVzcG9uc2UKICAgICAgICAgICAgZm9yIG15ICRDb3VudGVyICggMCAuLiBzY2FsYXIgQHsgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtSUR9IH0gLSAxICkgewoKICAgICAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19LT5bJENvdW50ZXJdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRBZGRlZENvbmZpZ0l0ZW1zeyAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW1JRH0tPlskQ291bnRlcl0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IG1hdGNoIENvbmZpZ0l0ZW0tPlskQ291bnRlcl0gJEF0dHJpYnV0ZSBjcmVhdGUiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIgZGF0YS4iCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICMgY2hlY2sgc3BlY2lmaWMgYXR0cmlidXRlcyBmb3IgdGhlIG9ubHkgMSByZXN1bHQKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KENJWE1MRGF0YSBDbGFzcyBEZXBsU3RhdGUgSW5jaVN0YXRlIE5hbWUpKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtfS0+WzBdLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEFkZGVkQ29uZmlnSXRlbXN7ICRUZXN0LT57UmVxdWVzdERhdGF9LT57Q29uZmlnSXRlbUlEfSB9LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgbWF0Y2ggQ29uZmlnSXRlbSAkQXR0cmlidXRlIGNyZWF0ZSBkYXRhLiIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgbWFrZSBSZXF1ZXN0ZXIgcmVzdWx0IGFuIGFycmF5IGZvciBlYXN5IGNvbXBhcmUKICAgICAgICAgICAgbXkgJFJlcXVlc3RlckNvbmZpZ0l0ZW0gPSBkZWxldGUgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbX07CiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW19ID0gWyRSZXF1ZXN0ZXJDb25maWdJdGVtXTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIGNvbmZpZyBpdGVtIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBmYWlsCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0NvbmZpZ0l0ZW19LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIHdpdGggdHJ1ZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvck1lc3NhZ2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfQogICAgICAgICAgICAgICAgLiAnOiAnCiAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAuICIgb2YgRXJyb3JDb2RlIGFuZCBFcnJvck1lc3NhZ2Ugd2l0aGluIERhdGEgaGFzaC4iLAogICAgICAgICk7CgogICAgICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgICAgICMgcmVzdWx0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBTT0FQIGNhbGwgcmVzdWx0CiAgICAgICAgaWYgKCAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgICAgICB9CgogICAgICAgICMgc2FuaXR5IGNoZWNrCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvTWVzc2FnZSAob3V0c2lzZSBEYXRhIGhhc2gpIGdvdCByZW1vdmVkIHRvIGNvbXBhcmUiCiAgICAgICAgICAgICAgICAuICIgbG9jYWwgYW5kIHJlbW90ZSB0ZXN0cy4iLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZURlbGV0ZSwKICAgICJEZWxldGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCIsCik7Cgpmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAlQWRkZWRDb25maWdJdGVtcyApIHsKCiAgICAjIGRlbGV0ZSB0aGUgQ29uZmlnSXRlbXMKICAgIG15ICRTdWNjZXNzRGVsZXRlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzYW5pdHkgY2hlY2sKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRTdWNjZXNzRGVsZXRlLAogICAgICAgICJTdWNjZXNzRGVsZXRlKCkgc3VjY2Vzc2Z1bCBmb3IgQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUlEIiwKICAgICk7Cn0KCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemSearch.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXI7CnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZTsKdXNlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtU2VhcmNoOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgojIHNldCBVc2VySUQgdG8gcm9vdAokU2VsZi0+e1VzZXJJRH0gPSAxOwoKIyBoZWxwZXIgb2JqZWN0CiMgc2tpcCBTU0wgY2VydGljaWF0ZSB2ZXJpZmljYXRpb24KJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgU2tpcFNTTFZlcmlmeSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkUmFuZG9tSUQgPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwoKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIGNoZWNrIGlmIFNTTCBDZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gaXMgZGlzYWJsZWQKJFNlbGYtPklzKAogICAgJEVOVntQRVJMX0xXUF9TU0xfVkVSSUZZX0hPU1ROQU1FfSwKICAgIDAsCiAgICAnRGlzYWJsZWQgU1NMIGNlcnRpdGljYXRlcyB2ZXJpZmljYXRpb24gaW4gZW52aXJvbm1lbnQnLAopOwoKIyBjcmVhdGUgQ29uZmlnSXRlbSBvYmplY3QKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4gPSAkSGVscGVyT2JqZWN0LT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7CgojIGNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdApteSAkV2Vic2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmljSW50ZXJmYWNlOjpXZWJzZXJ2aWNlJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScsCiAgICByZWYgJFdlYnNlcnZpY2VPYmplY3QsCiAgICAiQ3JlYXRlIHdlYnNlcnZpY2Ugb2JqZWN0IiwKKTsKCiMgc2V0IHdlYnNlcnZpY2UgbmFtZQpteSAkV2Vic2VydmljZU5hbWUgPSAnLVRlc3QtJyAuICRSYW5kb21JRDsKCm15ICRXZWJzZXJ2aWNlSUQgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUFkZCgKICAgIE5hbWUgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgPT4gewogICAgICAgIERlYnVnZ2VyID0+IHsKICAgICAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICB9LAogICAgICAgIFByb3ZpZGVyID0+IHsKICAgICAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFdlYnNlcnZpY2VJRCwKICAgICJBZGRlZCBXZWJzZXJ2aWNlIiwKKTsKCiMgZ2V0IHJlbW90ZSBob3N0IHdpdGggc29tZSBwcmVjYXV0aW9ucyBmb3IgY2VydGFpbiB1bml0IHRlc3Qgc3lzdGVtcwpteSAkSG9zdDsKbXkgJEZRRE4gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0ZRRE4nKTsKCiMgdHJ5IHRvIHJlc29sdmUgZnFkbiBob3N0CmlmICggJEZRRE4gbmUgJ3lvdXJob3N0LmV4YW1wbGUuY29tJyAmJiBnZXRob3N0YnluYW1lKCRGUUROKSApIHsKICAgICRIb3N0ID0gJEZRRE47Cn0KCiMgdHJ5IHRvIHJlc29sdmUgbG9jYWxob3N0IGluc3RlYWQKaWYgKCAhJEhvc3QgJiYgZ2V0aG9zdGJ5bmFtZSgnbG9jYWxob3N0JykgKSB7CiAgICAkSG9zdCA9ICdsb2NhbGhvc3QnOwp9CgojIHVzZSBoYXJkY29kZWQgbG9jYWxob3N0IGlwIGFkZHJlc3MKaWYgKCAhJEhvc3QgKSB7CiAgICAkSG9zdCA9ICcxMjcuMC4wLjEnOwp9CgojIHByZXBhcmUgd2Vic2VydmljZSBjb25maWcKbXkgJFJlbW90ZVN5c3RlbSA9CiAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0h0dHBUeXBlJykKICAgIC4gJzovLycKICAgIC4gJEhvc3QKICAgIC4gJy8nCiAgICAuICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKQogICAgLiAnL25waC1nZW5lcmljaW50ZXJmYWNlLnBsL1dlYnNlcnZpY2VJRC8nCiAgICAuICRXZWJzZXJ2aWNlSUQ7CgpteSAkV2Vic2VydmljZUNvbmZpZyA9IHsKCiAgICAjICAgIE5hbWUgPT4gJycsCiAgICBEZXNjcmlwdGlvbiA9PgogICAgICAgICdUZXN0IGZvciBDb25maWdJdGVtIENvbm5lY3RvciB1c2luZyBTT0FQIHRyYW5zcG9ydCBiYWNrZW5kLicsCiAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFByb3ZpZGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwXzAwMF8wMDAsCiAgICAgICAgICAgICAgICBOYW1lU3BhY2UgPT4gJ2h0dHA6Ly9vdHJzLm9yZy9Tb2FwVGVzdEludGVyZmFjZS8nLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgICAgICBUaW1lb3V0ICAgPT4gNjAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gewogICAgICAgICAgICBDb25maWdJdGVtU2VhcmNoID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXNzaW9uQ3JlYXRlID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1Nlc3Npb246OlNlc3Npb25DcmVhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgUmVxdWVzdGVyID0+IHsKICAgICAgICBUcmFuc3BvcnQgPT4gewogICAgICAgICAgICBUeXBlICAgPT4gJ0hUVFA6OlNPQVAnLAogICAgICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3Rycy5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuY29kaW5nICA9PiAnVVRGLTgnLAogICAgICAgICAgICAgICAgRW5kcG9pbnQgID0+ICRSZW1vdGVTeXN0ZW0sCiAgICAgICAgICAgICAgICBUaW1lb3V0ICAgPT4gNjAsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBJbnZva2VyID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXN0OjpUZXN0U2ltcGxlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKfTsKCiMgdXBkYXRlIHdlYnNlcnZpY2Ugd2l0aCByZWFsIGNvbmZpZwpteSAkV2Vic2VydmljZVVwZGF0ZSA9ICRXZWJzZXJ2aWNlT2JqZWN0LT5XZWJzZXJ2aWNlVXBkYXRlKAogICAgSUQgICAgICA9PiAkV2Vic2VydmljZUlELAogICAgTmFtZSAgICA9PiAkV2Vic2VydmljZU5hbWUsCiAgICBDb25maWcgID0+ICRXZWJzZXJ2aWNlQ29uZmlnLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlVXBkYXRlLAogICAgIlVwZGF0ZWQgV2Vic2VydmljZSAkV2Vic2VydmljZUlEIC0gJFdlYnNlcnZpY2VOYW1lIiwKKTsKCiMgZGVidWdnZXIgb2JqZWN0Cm15ICREZWJ1Z2dlck9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXItPm5ldygKICAgIERlYnVnZ2VyQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z1RocmVzaG9sZCA9PiAnZGVidWcnLAogICAgICAgIFRlc3RNb2RlICAgICAgID0+IDEsCiAgICB9LAogICAgV2Vic2VydmljZUlEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIENvbW11bmljYXRpb25UeXBlID0+ICdQcm92aWRlcicsCik7CiRTZWxmLT5JcygKICAgIHJlZiAkRGVidWdnZXJPYmplY3QsCiAgICAnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpEZWJ1Z2dlcicsCiAgICAnRGVidWdnZXJPYmplY3QgaW5zdGFuY2lhdGUgY29ycmVjdGx5JywKKTsKCiMgR2V0IFNlc3Npb25JRAojIGNyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0Cm15ICRSZXF1ZXN0ZXJTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpSZXF1ZXN0ZXInKTsKJFNlbGYtPklzKAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgIHJlZiAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCwKICAgICJTZXNzaW9uSUQgLSBDcmVhdGUgcmVxdWVzdGVyIG9iamVjdCIsCik7CgojIGNyZWF0ZSBhIG5ldyB1c2VyIGZvciBjdXJyZW50IHRlc3QKbXkgJFVzZXJMb2dpbiA9ICRIZWxwZXJPYmplY3QtPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKTsKbXkgJFBhc3N3b3JkID0gJFVzZXJMb2dpbjsKCiMgc3RhcnQgcmVxdWVzdGVyIHdpdGggb3VyIHdlYnNlcnZpY2UKbXkgJFJlcXVlc3RlclNlc3Npb25SZXN1bHQgPSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdC0+UnVuKAogICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBJbnZva2VyICAgICAgPT4gJ1Nlc3Npb25DcmVhdGUnLAogICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICBQYXNzd29yZCAgPT4gJFBhc3N3b3JkLAogICAgfSwKKTsKCm15ICROZXdTZXNzaW9uSUQgPSAkUmVxdWVzdGVyU2Vzc2lvblJlc3VsdC0+e0RhdGF9LT57U2Vzc2lvbklEfTsKCiNDb25maWdJdGVtdHMgY29udGFpbmVyICh1c2VmdWxsIGZvciBsb29rdXAgY29tcGFyZSkKbXkgQEFkZGVkQ29uZmlnSXRlbUlEczsKCiMgQ29uZmlnSXRlbSBzZXR0aW5ncwpteSBAQ29uZmlnSXRlbXMgPSAoCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktMS0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUmVwYWlyJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ1dhcm5pbmcnLAogICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgIFZlbmRvciAgICAgICAgICA9PiAnTGVub3ZvJywKICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnVGhpbmtwYWQgWDMwMCcsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICA9PiAnRGVza3RvcCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgPT4gJ2FiYzEyMzQ1YWJjJywKICAgICAgICAgICAgT3BlcmF0aW5nU3lzdGVtID0+ICdDZW50T1MgNi4wJywKICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgUmFtICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAyMDAwLAogICAgICAgICAgICBdLAogICAgICAgICAgICBIYXJkRGlzayA9PiB7CiAgICAgICAgICAgICAgICBIYXJkRGlzayA9PiAnL2RldicsCiAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiA1MDAwMCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5JQyAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICBJUEFkZHJlc3MgID0+ICcxOTIuMTY4LjMwLjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBHcmFwaGljQWRhcHRlciA9PiAnQVRJIFJhZGVvbiAzMDAnLAogICAgICAgICAgICBJbnN0YWxsRGF0ZSAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgIE5vdGUgICAgICAgICAgID0+ICdUaGlzIGlzIGEgRGVtbyBDSScsCiAgICAgICAgfSwKICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJ1ZHaHBjeUJwY3lCaGJpQmxibU52WkdWa0lIUmxlSFE9JywKICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0LnR4dCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xJywKICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgID0+ICdNeSBUZXh0Mi50eHQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJLTItJyAuICRSYW5kb21JRCwKICAgICAgICBEZXBsU3RhdGUgPT4gJ1JlcGFpcicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgICAgID0+ICdBcHBsZScsCiAgICAgICAgICAgIE1vZGVsICAgICAgICAgICA9PiAnaU1hYycsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICA9PiAnQXBwbGUgQ29tcHV0ZXInLAogICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICBPd25lciAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyICAgID0+ICdhYmMxMjM0NWFiYycsCiAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnT1NYIDEwLjguMycsCiAgICAgICAgICAgIENQVSAgICAgICAgICAgICA9PiAnSW50ZWwgQ29yZSBpMycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIFJhbSAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgMjAwMCwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSGFyZERpc2sgPT4gewogICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgQ2FwYWNpdHkgPT4gODAwMDAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZRRE4gPT4gJ2hvdHMuZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOSUMgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFbjAnLAogICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRW4xJywKICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBHcmFwaGljQWRhcHRlciA9PiAnbnZpZGlhJywKICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICBOb3RlICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgIH0sCiAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dC50eHQnLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAnVkdocGN5QnBjeUJoYmlCbGJtTnZaR1ZrSUhSbGVIUT0nLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAnTXkgVGV4dDIudHh0JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBDbGFzcyAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSS0zLScgLiAkUmFuZG9tSUQsCiAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGUgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICBWZW5kb3IgICAgICAgPT4gJ1NvbWUgc29mdHdhcmUgdmVuZG9yJywKICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+ICcxLjEuMScsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICA9PiAnU29tZSBzb2Z0d2FyZSBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIFR5cGUgICAgICAgICA9PiAnQWRtaW4gVG9vbCcsCiAgICAgICAgICAgIE93bmVyICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgPT4gJzEyM0FCQzQ1NicsCiAgICAgICAgICAgIExpY2VuY2VUeXBlICA9PiAnT3BlbiBTb3VyY2UnLAogICAgICAgICAgICBMaWNlbmNlS2V5ICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIExpY2VuY2VLZXkgICAgID0+ICcxMjM0JywKICAgICAgICAgICAgICAgICAgICBRdWFudGl0eSAgICAgICA9PiAnMScsCiAgICAgICAgICAgICAgICAgICAgRXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnNDU2NycsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTI1JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIE1lZGlhID0+ICdEb3dubG9hZCcsCiAgICAgICAgICAgIE5vdGUgID0+ICdUaGlzIGlzIGEgdGVzdCBDSScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgQ2xhc3MgICAgID0+ICdTb2Z0d2FyZScsCiAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0ktNC0nIC4gJFJhbmRvbUlELAogICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgSW5jaVN0YXRlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgVmVuZG9yICAgICAgID0+ICdTb21lIHNvZnR3YXJlIHZlbmRvcicsCiAgICAgICAgICAgIFZlcnNpb24gICAgICA9PiAnMS4xLjEnLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ1NvbWUgc29mdHdhcmUgZGVzY3JpcHRpb24nLAogICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ0FkbWluIFRvb2wnLAogICAgICAgICAgICBPd25lciAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgU2VyaWFsTnVtYmVyID0+ICcxMjNBQkM0NTYnLAogICAgICAgICAgICBMaWNlbmNlVHlwZSAgPT4gJ09wZW4gU291cmNlJywKICAgICAgICAgICAgTGljZW5jZUtleSAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ICAgICA9PiAnMTIzNCcsCiAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgICAgICAgPT4gJzQnLAogICAgICAgICAgICAgICAgICAgIEV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSAgICAgPT4gJzQ1NjcnLAogICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICAgICBFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0yNScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBNZWRpYSA9PiAnQ0QtUk9NJywKICAgICAgICAgICAgTm90ZSAgPT4gJ1RoaXMgaXMgYSB0ZXN0IENJJywKICAgICAgICB9LAogICAgfSwKKTsKCiMgY3JlYXRlIGxvY2FsIG9iamVjdApteSAkQ29uZmlnSXRlbUNyZWF0ZU9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlLT5uZXcoCiAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAopOwoKZm9yIG15ICRDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRDb25maWdJdGVtID0gU3RvcmFibGU6OmRjbG9uZSgkQ29uZmlnSXRlbSk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgIyBhZGQgbmV3IENvbmZpZ0l0ZW1zCiAgICBteSAkQ3JlYXRlUmVzdWx0ID0gJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFVzZXJMb2dpbiAgPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgICA9PiAkUGFzc3dvcmQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDcmVhdGVSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gfHwgJyc7CgogICAgIyBzYW5pdHkgY2hlY2tzCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICJBZGRlZCBDb25maWdJdGVtICRDb25maWdJdGVtSUQgLSAkQ3JlYXRlUmVzdWx0LT57RGF0YX0tPntOdW1iZXJ9IiwKICAgICk7CgogICAgbXkgJFZlcnNpb25JbmZvID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgICRTZWxmLT5Jc05vdERlZXBseSgKICAgICAgICAkVmVyc2lvbkluZm8sCiAgICAgICAge30sCiAgICAgICAgIkFkZGVkIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1JRCAtIFZlcnNpb24gaXMgbm90IGFuIGVtcHR5IGhhc2giLAogICAgKTsKCiAgICAjIHJlbWVtYmVyIHRoZSBjb25maWcgaXRlbQogICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICBwdXNoIEBBZGRlZENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICB9Cn0KCiMgYWN0dWFsIHRlc3RzIGZvciBDb25maWdJdGVtU2VhcmNoIG9wZXJhdGlvbgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIFRlc3QgPT4gMQogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENvbmZpZ0l0ZW0gZm9ybWF0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IDEKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENvbmZpZ0l0ZW0tPkNsYXNzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPkNsYXNzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzID0+ICdOb25FeGlzdGluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5DSVhNTERhdGEnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPkluY2lTdGF0ZXMnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyA9PiAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPkluY2lTdGF0ZXMgSEFTSCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5JbmNpU3RhdGVzIEFSUkFZJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgPT4gWyAnSW5jaWRlbnQnLCAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgXSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+RGVwbFN0YXRlcycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzID0+ICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSAgPT4gewogICAgICAgICAgICAgICAgICAgICdOb3RFeGlzdHNuaW5nJyAuICRSYW5kb21JRCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPkRlcGxTdGF0ZXMgSEFTSCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5EZXBsU3RhdGVzIEFSUkFZJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyA9PiBbICdQcm9kdWN0aW9uJywgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEIF0sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0tPk9yZGVyQnkgSEFTSCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guV3JvbmdTdHJ1Y3R1cmUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ29uZmlnSXRlbS0+T3JkZXJCeURpcmVjdGlvbiBIQVNIJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAnTm90RXhpc3RzbmluZycgLiAkUmFuZG9tSUQgPT4gMQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5Xcm9uZ1N0cnVjdHVyZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5DcmVhdGVUaW1lTmV3ZXJEYXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0wMi0zMCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5DcmVhdGVUaW1lT2xkZXJEYXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0wMi0zMCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5DaGFuZ2VUaW1lTmV3ZXJEYXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0wMi0zMCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5DaGFuZ2VUaW1lT2xkZXJEYXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0wMi0zMCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtLT5MaW1pdCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzU2VhcmNoICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICAgICAgICAgICAgICAgPT4gWyAnUHJvZHVjdGlvbicsICdSZXRpcmVkJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gICAgICAgICAgICAgID0+IFsnRG93biddLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVOZXdlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUNoYW5nZVRpbWVPbGRlckRhdGUgPT4gJzIwMTItMTItMTInLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VubGltaXRlZCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ05vdEV4aXN0c25pbmcnIC4gJFJhbmRvbUlEID0+IDEKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2guSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDSVhNTERhdGEgR2VuZXJhbCBDYXRhbG9nJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENJWE1MRGF0YSBEYXRlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdJbmNpZGVudCcsICAgJ1dhcm5pbmcnIF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVzICAgICAgICAgICAgICAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnIF0sCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiAgICAgICAgICAgICAgPT4gWydEb3duJ10sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0xMicsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBJbnN0YWxsRGF0ZSA9PiAnMjAxMi0wMi0zMCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtU2VhcmNoLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0ludmFsaWQgQ0lYTUxEYXRhIFRleHQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgICAgICAgICAgICA9PiBbJ0Rvd24nXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdhJyB4IDUxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENJWE1MRGF0YSBOdW1iZXInLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1NlYXJjaCAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ0luY2lkZW50JywgICAnV2FybmluZycgXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgICAgICAgICAgICAgID0+IFsgJ1Byb2R1Y3Rpb24nLCAnUmV0aXJlZCcgXSwKICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgICAgICAgICAgID0+IFsnTnVtYmVyJ10sCiAgICAgICAgICAgICAgICBPcmRlckJ5RGlyZWN0aW9uICAgICAgICAgICAgICA9PiBbJ0Rvd24nXSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTEyJywKICAgICAgICAgICAgICAgIExpbWl0ICAgICAgICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yICAgICA9PiAnYScgeCA1MCwKICAgICAgICAgICAgICAgICAgICBMaWNlbmNlS2V5ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgUXVhbnRpdHkgPT4gJ05vdEV4aXN0aW5nJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVNlYXJjaC5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbXB1dGVyIE5vIExpbWl0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnLCAnUmVwYWlyJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ1VwJ10sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBDUFUgPT4gJ0ludGVsIENvcmUgaTMnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzBdLCAkQWRkZWRDb25maWdJdGVtSURzWzFdIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbXB1dGVyIExpbWl0JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgPT4gWyAnSW5jaWRlbnQnLCAgICdXYXJuaW5nJyBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICAgICA9PiBbICdQcm9kdWN0aW9uJywgJ1JldGlyZWQnLCAnUmVwYWlyJyBdLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ1VwJ10sCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBDUFUgPT4gJ0ludGVsIENvcmUgaTMnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gWyAkQWRkZWRDb25maWdJdGVtSURzWzBdIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IFNvZnR3YXJlJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NTZWFyY2ggID0+IDEsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJ1NvZnR3YXJlJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZXMgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ051bWJlciddLAogICAgICAgICAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJ1VwJ10sCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgTGljZW5jZUtleSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFF1YW50aXR5ID0+IFsgJzMnLCAnNCcgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBbICRBZGRlZENvbmZpZ0l0ZW1JRHNbMl0sICRBZGRlZENvbmZpZ0l0ZW1JRHNbM10gXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgIH0sCik7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgY3JlYXRlIGxvY2FsIG9iamVjdAogICAgbXkgJExvY2FsT2JqZWN0ID0gIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLT5uZXcoCiAgICAgICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OiRUZXN0LT57T3BlcmF0aW9ufSIsCiAgICAgICAgcmVmICRMb2NhbE9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSBsb2NhbCBvYmplY3QiLAogICAgKTsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRSZXF1ZXN0RGF0YSA9IFN0b3JhYmxlOjpkY2xvbmUoICRUZXN0LT57UmVxdWVzdERhdGF9ICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJlc3RvcmUgY2xvbmVkIGRhdGEKICAgICRUZXN0LT57UmVxdWVzdERhdGF9ID0gJENsb25lZFJlcXVlc3REYXRhOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkTG9jYWxSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkTmV3U2Vzc2lvbklELAogICAgICAgICAgICAleyAkVGVzdC0+e1JlcXVlc3REYXRhfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBzdHJ1Y3R1cmUgaXMgdmFsaWQiLAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e1N1Y2Nlc3N9LAogICAgICAgICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHN1Y2Nlc3NmdWwgcmVzdWx0IiwKICAgICk7CgogICAgaWYgKCAkVGVzdC0+e1N1Y2Nlc3NTZWFyY2h9ICkgewoKICAgICAgICAjIGxvY2FsIHJlc3VsdHMKICAgICAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEc30sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIG5vdCB1bmRlZmluZWQuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgcmVmICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEc30sCiAgICAgICAgICAgICdBUlJBWScsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IENvbmZpZ0l0ZW1JRHMgcmVmZXJlbmNlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgSXNBcnJheVJlZldpdGhEYXRhKCAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9ICksCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IENvbmZpZ0l0ZW0gaXMgYSBub24gZW1wdHJ5IGFycmF5IHdpdGggdHJ1ZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfSwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yIGlzIHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgICMgcmVxdWVzdGVyIHJlc3VsdHMKICAgICAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW1JRHMgaXMgbm90IHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgIGlmICggcmVmICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgSXNBcnJheVJlZldpdGhEYXRhKCAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSURzfSApLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IENvbmZpZ0l0ZW1JRHMgaXMgYSBub24gZW1wdHJ5IGFycmF5IHdpdGggdHJ1ZS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBJc051bWJlciggJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEc30gKSwKICAgICAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSURzIGlzIG51bWJlciB3aXRoIHRydWUuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgbWFrZSBSZXF1ZXN0ZXIgcmVzdWx0IGFuIGFycmF5IGZvciBlYXN5IGNvbXBhcmUKICAgICAgICAgICAgbXkgJFJlcXVlc3RlckNvbmZpZ0l0ZW1JRHMgPSBkZWxldGUgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57Q29uZmlnSXRlbUlEc307CiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRHN9ID0gWyRSZXF1ZXN0ZXJDb25maWdJdGVtSURzXTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkVGVzdC0+e0V4cGVjdGVkRGF0YX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IG1hdGNoIGV4cGVjdGVkIGRhdGEuIiwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+SXNEZWVwbHkoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdCwKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCBjb25maWcgaXRlbSByZXN1bHQgbWF0Y2hlZCB3aXRoIHJlbW90ZSByZXN1bHQuIiwKICAgICAgICApOwogICAgfQoKICAgICMgdGVzdHMgc3VwcG9zZWQgdG8gZmFpbAogICAgZWxzZSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntOdW1iZXJ9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBOdW1iZXIgd2l0aCBmYWxzZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yQ29kZX0sCiAgICAgICAgICAgICRUZXN0LT57RXhwZWN0ZWREYXRhfS0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JDb2RlIG1hdGNoZWQgd2l0aCBleHBlY3RlZCBsb2NhbCBjYWxsIHJlc3VsdC4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIHdpdGggdHJ1ZS4iLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzTm90KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0Vycm9yfS0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICcnLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvck1lc3NhZ2UgaXMgbm90IGVtcHR5LiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfQogICAgICAgICAgICAgICAgLiAnOiAnCiAgICAgICAgICAgICAgICAuICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgRXJyb3JNZXNzYWdlIChvdXRzaWRlIERhdGEgaGFzaCkgbWF0Y2hlZCB3aXRoIGNvbmNhdGVuYXRpb24iCiAgICAgICAgICAgICAgICAuICIgb2YgRXJyb3JDb2RlIGFuZCBFcnJvck1lc3NhZ2Ugd2l0aGluIERhdGEgaGFzaC4iLAogICAgICAgICk7CgogICAgICAgICMgcmVtb3ZlIEVycm9yTWVzc2FnZSBwYXJhbWV0ZXIgZnJvbSBkaXJlY3QgY2FsbAogICAgICAgICMgcmVzdWx0IHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBTT0FQIGNhbGwgcmVzdWx0CiAgICAgICAgaWYgKCAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9ICkgewogICAgICAgICAgICBkZWxldGUgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfTsKICAgICAgICB9CgogICAgICAgICMgc2FuaXR5IGNoZWNrCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvTWVzc2FnZSAob3V0c2lzZSBEYXRhIGhhc2gpIGdvdCByZW1vdmVkIHRvIGNvbXBhcmUiCiAgICAgICAgICAgICAgICAuICIgbG9jYWwgYW5kIHJlbW90ZSB0ZXN0cy4iLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LAogICAgICAgICAgICAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9Cn0gICAgI2VuZCBsb29wCgojIGNsZWFuIHVwCgojIGNsZWFuIHVwIHdlYnNlcnZpY2UKbXkgJFdlYnNlcnZpY2VEZWxldGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZURlbGV0ZSgKICAgIElEICAgICA9PiAkV2Vic2VydmljZUlELAogICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZURlbGV0ZSwKICAgICJEZWxldGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCIsCik7Cgpmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQgQEFkZGVkQ29uZmlnSXRlbUlEcyApIHsKCiAgICAjIGRlbGV0ZSB0aGUgQ29uZmlnSXRlbXMKICAgIG15ICRTdWNjZXNzRGVsZXRlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICk7CgogICAgIyBzYW5pdHkgY2hlY2sKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRTdWNjZXNzRGVsZXRlLAogICAgICAgICJTdWNjZXNzRGVsZXRlKCkgc3VjY2Vzc2Z1bCBmb3IgQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUlEIiwKICAgICk7Cn0KCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/GenericInterface/Operation/ConfigItem/ConfigItemUpdate.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKdXNlIE1JTUU6OkJhc2U2NDsKCnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyOwp1c2UgS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1DcmVhdGU7CnVzZSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKIyBzZXQgVXNlcklEIHRvIHJvb3QKJFNlbGYtPntVc2VySUR9ID0gMTsKCiMgaGVscGVyIG9iamVjdAojIHNraXAgU1NMIGNlcnRpY2lhdGUgdmVyaWZpY2F0aW9uCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFNraXBTU0xWZXJpZnkgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFJhbmRvbUlEID0gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBjaGVjayBpZiBTU0wgQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGlzIGRpc2FibGVkCiRTZWxmLT5JcygKICAgICRFTlZ7UEVSTF9MV1BfU1NMX1ZFUklGWV9IT1NUTkFNRX0sCiAgICAwLAogICAgJ0Rpc2FibGVkIFNTTCBjZXJ0aXRpY2F0ZXMgdmVyaWZpY2F0aW9uIGluIGVudmlyb25tZW50JywKKTsKCiMgY3JlYXRlIENvbmZpZ0l0ZW0gb2JqZWN0Cm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgpteSAkVGVzdEN1c3RvbWVyVXNlckxvZ2luID0gJEhlbHBlck9iamVjdC0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpOwoKIyBjcmVhdGUgd2Vic2VydmljZSBvYmplY3QKbXkgJFdlYnNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJpY0ludGVyZmFjZTo6V2Vic2VydmljZScpOwokU2VsZi0+SXMoCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnLAogICAgcmVmICRXZWJzZXJ2aWNlT2JqZWN0LAogICAgIkNyZWF0ZSB3ZWJzZXJ2aWNlIG9iamVjdCIsCik7CgojIHNldCB3ZWJzZXJ2aWNlIG5hbWUKbXkgJFdlYnNlcnZpY2VOYW1lID0gJy1UZXN0LScgLiAkUmFuZG9tSUQ7CgpteSAkV2Vic2VydmljZUlEID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VBZGQoCiAgICBOYW1lICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnID0+IHsKICAgICAgICBEZWJ1Z2dlciA9PiB7CiAgICAgICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgfSwKICAgICAgICBQcm92aWRlciA9PiB7CiAgICAgICAgICAgIFRyYW5zcG9ydCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlSUQsCiAgICAiQWRkZWQgV2Vic2VydmljZSIsCik7CgojIGdldCByZW1vdGUgaG9zdCB3aXRoIHNvbWUgcHJlY2F1dGlvbnMgZm9yIGNlcnRhaW4gdW5pdCB0ZXN0IHN5c3RlbXMKbXkgJEhvc3Q7Cm15ICRGUUROID0gJENvbmZpZ09iamVjdC0+R2V0KCdGUUROJyk7CgojIHRyeSB0byByZXNvbHZlIGZxZG4gaG9zdAppZiAoICRGUUROIG5lICd5b3VyaG9zdC5leGFtcGxlLmNvbScgJiYgZ2V0aG9zdGJ5bmFtZSgkRlFETikgKSB7CiAgICAkSG9zdCA9ICRGUUROOwp9CgojIHRyeSB0byByZXNvbHZlIGxvY2FsaG9zdCBpbnN0ZWFkCmlmICggISRIb3N0ICYmIGdldGhvc3RieW5hbWUoJ2xvY2FsaG9zdCcpICkgewogICAgJEhvc3QgPSAnbG9jYWxob3N0JzsKfQoKIyB1c2UgaGFyZGNvZGVkIGxvY2FsaG9zdCBpcCBhZGRyZXNzCmlmICggISRIb3N0ICkgewogICAgJEhvc3QgPSAnMTI3LjAuMC4xJzsKfQoKIyBwcmVwYXJlIHdlYnNlcnZpY2UgY29uZmlnCm15ICRSZW1vdGVTeXN0ZW0gPQogICAgJENvbmZpZ09iamVjdC0+R2V0KCdIdHRwVHlwZScpCiAgICAuICc6Ly8nCiAgICAuICRIb3N0CiAgICAuICcvJwogICAgLiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJykKICAgIC4gJy9ucGgtZ2VuZXJpY2ludGVyZmFjZS5wbC9XZWJzZXJ2aWNlSUQvJwogICAgLiAkV2Vic2VydmljZUlEOwoKbXkgJFdlYnNlcnZpY2VDb25maWcgPSB7CgogICAgIyAgICBOYW1lID0+ICcnLAogICAgRGVzY3JpcHRpb24gPT4KICAgICAgICAnVGVzdCBmb3IgQ29uZmlnSXRlbSBDb25uZWN0b3IgdXNpbmcgU09BUCB0cmFuc3BvcnQgYmFja2VuZC4nLAogICAgRGVidWdnZXIgPT4gewogICAgICAgIERlYnVnVGhyZXNob2xkID0+ICdkZWJ1ZycsCiAgICAgICAgVGVzdE1vZGUgICAgICAgPT4gMSwKICAgIH0sCiAgICBQcm92aWRlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMF8wMDBfMDAwLAogICAgICAgICAgICAgICAgTmFtZVNwYWNlID0+ICdodHRwOi8vb3Rycy5vcmcvU29hcFRlc3RJbnRlcmZhY2UvJywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICAgICAgVGltZW91dCAgID0+IDYwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbVVwZGF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2Vzc2lvbkNyZWF0ZSA9PiB7CiAgICAgICAgICAgICAgICBUeXBlID0+ICdTZXNzaW9uOjpTZXNzaW9uQ3JlYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIFJlcXVlc3RlciA9PiB7CiAgICAgICAgVHJhbnNwb3J0ID0+IHsKICAgICAgICAgICAgVHlwZSAgID0+ICdIVFRQOjpTT0FQJywKICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgIE5hbWVTcGFjZSA9PiAnaHR0cDovL290cnMub3JnL1NvYXBUZXN0SW50ZXJmYWNlLycsCiAgICAgICAgICAgICAgICBFbmNvZGluZyAgPT4gJ1VURi04JywKICAgICAgICAgICAgICAgIEVuZHBvaW50ICA9PiAkUmVtb3RlU3lzdGVtLAogICAgICAgICAgICAgICAgVGltZW91dCAgID0+IDYwLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgSW52b2tlciA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1VcGRhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlc3Npb25DcmVhdGUgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnVGVzdDo6VGVzdFNpbXBsZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCn07CgojIHVwZGF0ZSB3ZWJzZXJ2aWNlIHdpdGggcmVhbCBjb25maWcKbXkgJFdlYnNlcnZpY2VVcGRhdGUgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZVVwZGF0ZSgKICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIE5hbWUgICAgPT4gJFdlYnNlcnZpY2VOYW1lLAogICAgQ29uZmlnICA9PiAkV2Vic2VydmljZUNvbmZpZywKICAgIFZhbGlkSUQgPT4gMSwKICAgIFVzZXJJRCAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkV2Vic2VydmljZVVwZGF0ZSwKICAgICJVcGRhdGVkIFdlYnNlcnZpY2UgJFdlYnNlcnZpY2VJRCAtICRXZWJzZXJ2aWNlTmFtZSIsCik7CgojIGRlYnVnZ2VyIG9iamVjdApteSAkRGVidWdnZXJPYmplY3QgPSBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkRlYnVnZ2VyLT5uZXcoCiAgICBEZWJ1Z2dlckNvbmZpZyA9PiB7CiAgICAgICAgRGVidWdUaHJlc2hvbGQgPT4gJ2RlYnVnJywKICAgICAgICBUZXN0TW9kZSAgICAgICA9PiAxLAogICAgfSwKICAgIFdlYnNlcnZpY2VJRCAgICAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICBDb21tdW5pY2F0aW9uVHlwZSA9PiAnUHJvdmlkZXInLAopOwokU2VsZi0+SXMoCiAgICByZWYgJERlYnVnZ2VyT2JqZWN0LAogICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6RGVidWdnZXInLAogICAgJ0RlYnVnZ2VyT2JqZWN0IGluc3RhbmNpYXRlIGNvcnJlY3RseScsCik7CgojIEdldCBTZXNzaW9uSUQKIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdApteSAkUmVxdWVzdGVyU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiRTZWxmLT5JcygKICAgICdLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OlJlcXVlc3RlcicsCiAgICByZWYgJFJlcXVlc3RlclNlc3Npb25PYmplY3QsCiAgICAiU2Vzc2lvbklEIC0gQ3JlYXRlIHJlcXVlc3RlciBvYmplY3QiLAopOwoKIyBjcmVhdGUgYSBuZXcgdXNlciBmb3IgY3VycmVudCB0ZXN0Cm15ICRVc2VyTG9naW4gPSAkSGVscGVyT2JqZWN0LT5UZXN0VXNlckNyZWF0ZSgKICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCik7Cm15ICRQYXNzd29yZCA9ICRVc2VyTG9naW47CgojIHN0YXJ0IHJlcXVlc3RlciB3aXRoIG91ciB3ZWJzZXJ2aWNlCm15ICRSZXF1ZXN0ZXJTZXNzaW9uUmVzdWx0ID0gJFJlcXVlc3RlclNlc3Npb25PYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdTZXNzaW9uQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luID0+ICRVc2VyTG9naW4sCiAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgIH0sCik7CgpteSAkTmV3U2Vzc2lvbklEID0gJFJlcXVlc3RlclNlc3Npb25SZXN1bHQtPntEYXRhfS0+e1Nlc3Npb25JRH07CgojIGNyZWF0ZSBhIG5ldyBjb25maWcgaXRlbSB3aXRoIHRoZSBiYXNpYyBvcHRpb25zCm15ICRDb25maWdJdGVtID0gewogICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICBDSVhNTERhdGEgPT4gewogICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0xvMCcsCiAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICB9LAogICAgfSwKfTsKCiMgY3JlYXRlIGxvY2FsIG9iamVjdApteSAkQ29uZmlnSXRlbUNyZWF0ZU9iamVjdCA9IEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlLT5uZXcoCiAgICBEZWJ1Z2dlck9iamVjdCA9PiAkRGVidWdnZXJPYmplY3QsCiAgICBXZWJzZXJ2aWNlSUQgICA9PiAkV2Vic2VydmljZUlELAopOwoKIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQpteSAkQ3JlYXRlUmVzdWx0ID0gJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QtPlJ1bigKICAgIFdlYnNlcnZpY2VJRCA9PiAkV2Vic2VydmljZUlELAogICAgSW52b2tlciAgICAgID0+ICdDb25maWdJdGVtQ3JlYXRlJywKICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgVXNlckxvZ2luICA9PiAkVXNlckxvZ2luLAogICAgICAgIFBhc3N3b3JkICAgPT4gJFBhc3N3b3JkLAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICB9LAopOwoKbXkgJENvbmZpZ0l0ZW1JRCA9ICRDcmVhdGVSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0gfHwgJyc7CgokU2VsZi0+VHJ1ZSgKICAgICRDb25maWdJdGVtSUQsCiAgICAiQWRkZWQgQ29uZmlnSXRlbSAkQ29uZmlnSXRlbUlEIC0gJENyZWF0ZVJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSIsCik7CgojIGFjdHVhbCB0ZXN0cwpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ0VtcHR5IFJlcXVlc3QnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7fSwKICAgICAgICBFeHBlY3RlZERhdGEgICA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gMSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENvbmZpZ0l0ZW1JRCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSW52YWxpZCBDb25maWdJdGVtSUQnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAnTm90RXhpc2l0bmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQ0lYTUxEYXRhJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdJbnZhbGlkIENJWE1MRGF0YScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIENsYXNzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5hbWUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBEZXBsU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBJbmNpU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIENsYXNzJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnTm90RXhpc2l0bmcnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUZXN0ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIERlcGxTdGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBJbmNpU3RhdGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFRlc3QgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPk5JQycsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgTklDID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBOSUMtPklwT3ZlckRIQ1AnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5JQyA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdNaXNzaW5nIE5JQy0+TklDIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgTklDLT5JcE92ZXJESENQIGluIGFycmF5JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBOSUMtPklwT3ZlckRIQ1AgR2VuZXJhbCBDYXRhbG9nIGluIEhhc2gnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5JQyA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgTklDLT5JcE92ZXJESENQIEdlbmVyYWwgQ2F0YWxvZyBpbiBBcnJheSBIYXNoJywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBOSUMgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgVmVuZG9yIExvbmcgVGV4dCAnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnYScgeCA1MSwKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLkludmFsaWRQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1dyb25nIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgRGF0ZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTMwLTMwLTMwJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgT3duZXIgQ3VzdG9tZXInLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5JbnZhbGlkUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdXcm9uZyBSYW0gVG9vIE1hbnknLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAxLAogICAgICAgICAgICAgICAgICAgICAgICAyLAogICAgICAgICAgICAgICAgICAgICAgICAzLAogICAgICAgICAgICAgICAgICAgICAgICA0LAogICAgICAgICAgICAgICAgICAgICAgICA1LAogICAgICAgICAgICAgICAgICAgICAgICA2LAogICAgICAgICAgICAgICAgICAgICAgICA3LAogICAgICAgICAgICAgICAgICAgICAgICA4LAogICAgICAgICAgICAgICAgICAgICAgICA5LAogICAgICAgICAgICAgICAgICAgICAgICAxMCwKICAgICAgICAgICAgICAgICAgICAgICAgMTEsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnV3JvbmcgQXR0YWNobWVudCcsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuSW52YWxpZFBhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBBdHRhY2htZW50LT5Db250ZW50JywKICAgICAgICBTdWNjZXNzUmVxdWVzdCA9PiAxLAogICAgICAgIFN1Y2Nlc3NVcGRhdGUgID0+IDAsCiAgICAgICAgUmVxdWVzdERhdGEgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+IHsKICAgICAgICAgICAgICAgIENsYXNzICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgID0+ICdUZXN0Q0knIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgPT4gJ1RvcmVybyBDaGlwcycsCiAgICAgICAgICAgICAgICAgICAgTklDICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdObycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzE5NzctMTItMTInLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICAgICAgICAgPT4gJFRlc3RDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICAgICAgNDAwMCwKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIEF0dGFjaG1lbnQgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVGVzdCA9PiAxLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgRXhwZWN0ZWREYXRhID0+IHsKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBFcnJvciA9PiB7CiAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlID0+ICdDb25maWdJdGVtVXBkYXRlLk1pc3NpbmdQYXJhbWV0ZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIH0sCiAgICAgICAgT3BlcmF0aW9uID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ01pc3NpbmcgQXR0YWNobWVudC0+Q29udGVudFR5cGUnLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMCwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3RDSScgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDSVhNTERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFZlbmRvciA9PiAnVG9yZXJvIENoaXBzJywKICAgICAgICAgICAgICAgICAgICBOSUMgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDICAgICAgICA9PiAnRXRoMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+ICdZZXMnLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFJhbSAgICAgICAgICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgICAgICA0MDAwLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQXR0YWNobWVudCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBFeHBlY3RlZERhdGEgPT4gewogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEVycm9yID0+IHsKICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUuTWlzc2luZ1BhcmFtZXRlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgfSwKICAgICAgICBPcGVyYXRpb24gPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTWlzc2luZyBBdHRhY2htZW50LT5GaWxlbmFtZScsCiAgICAgICAgU3VjY2Vzc1JlcXVlc3QgPT4gMSwKICAgICAgICBTdWNjZXNzVXBkYXRlICA9PiAwLAogICAgICAgIFJlcXVlc3REYXRhICAgID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gICA9PiB7CiAgICAgICAgICAgICAgICBDbGFzcyAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAnVGVzdENJJyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgIENJWE1MRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+ICdUb3Jlcm8gQ2hpcHMnLAogICAgICAgICAgICAgICAgICAgIE5JQyAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOSUMgICAgICAgID0+ICdFdGgxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gJ1llcycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcxOTc3LTEyLTEyJywKICAgICAgICAgICAgICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgID0+ICRUZXN0Q3VzdG9tZXJVc2VyTG9naW4sCiAgICAgICAgICAgICAgICAgICAgUmFtICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDQwMDAsCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICdWR2hwY3lCcGN5QmhiaUJsYm1OdlpHVmtJSFJsZUhRPScsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7CiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRXJyb3IgPT4gewogICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSA9PiAnQ29uZmlnSXRlbVVwZGF0ZS5NaXNzaW5nUGFyYW1ldGVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICB9LAogICAgICAgIE9wZXJhdGlvbiA9PiAnQ29uZmlnSXRlbVVwZGF0ZScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgID0+ICdDb3JyZWN0IENvbmZpZ0l0ZW0nLAogICAgICAgIFN1Y2Nlc3NSZXF1ZXN0ID0+IDEsCiAgICAgICAgU3VjY2Vzc1VwZGF0ZSAgPT4gMSwKICAgICAgICBSZXF1ZXN0RGF0YSAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDb25maWdJdGVtICAgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJ1Rlc3QnIC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ0lYTUxEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBWZW5kb3IgICAgICAgICAgPT4gJ0xlbm92bycsCiAgICAgICAgICAgICAgICAgICAgTW9kZWwgICAgICAgICAgID0+ICdUaGlua3BhZCcsCiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgID0+ICdUaGlua3BhZCBYMzAwJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgPT4gJ0Rlc2t0b3AnLAogICAgICAgICAgICAgICAgICAgIE93bmVyICAgICAgICAgICA9PiAkVGVzdEN1c3RvbWVyVXNlckxvZ2luLAogICAgICAgICAgICAgICAgICAgIFNlcmlhbE51bWJlciAgICA9PiAnYWJjMTIzNDVhYmMnLAogICAgICAgICAgICAgICAgICAgIE9wZXJhdGluZ1N5c3RlbSA9PiAnQ2VudE9TIDYuMCcsCiAgICAgICAgICAgICAgICAgICAgQ1BVICAgICAgICAgICAgID0+ICdJbnRlbCBDb3JlIGkzJywKICAgICAgICAgICAgICAgICAgICBSYW0gICAgICAgICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAnNDAwMCcsCiAgICAgICAgICAgICAgICAgICAgICAgICcyMDAwJywKICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIEhhcmREaXNrID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGFyZERpc2sgPT4gJy9kZXYnLAogICAgICAgICAgICAgICAgICAgICAgICBDYXBhY2l0eSA9PiAnNTAwMDAnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgRlFETiA9PiAnaG90cy5leGFtcGxlLmNvbScsCiAgICAgICAgICAgICAgICAgICAgTklDICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnTm8nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBBZGRyZXNzICA9PiAnMTkyLjE2OC4zMC4xJywKCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5JQyAgICAgICAgPT4gJ0V0aDEnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyAgPT4gJzIwMC4zNC41Ni43OCcsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBHcmFwaGljQWRhcHRlciAgICAgICAgID0+ICdBVEkgUmFkZW9uIDMwMCcsCiAgICAgICAgICAgICAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMTk3Ny0xMi0xMicsCiAgICAgICAgICAgICAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICA9PiAnVGhpcyBpcyBhIERlbW8gQ0knLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEV4cGVjdGVkRGF0YSA9PiB7fSwKICAgICAgICBPcGVyYXRpb24gICAgPT4gJ0NvbmZpZ0l0ZW1VcGRhdGUnLAogICAgfSwKKTsKCiMgc3RhcnQgdGVzdGluZwpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgY3JlYXRlIGxvY2FsIG9iamVjdAogICAgbXkgJExvY2FsT2JqZWN0ID0gIktlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtOjokVGVzdC0+e09wZXJhdGlvbn0iLT5uZXcoCiAgICAgICAgRGVidWdnZXJPYmplY3QgPT4gJERlYnVnZ2VyT2JqZWN0LAogICAgICAgIFdlYnNlcnZpY2VJRCAgID0+ICRXZWJzZXJ2aWNlSUQsCiAgICApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAiS2VybmVsOjpHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW06OiRUZXN0LT57T3BlcmF0aW9ufSIsCiAgICAgICAgcmVmICRMb2NhbE9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIENyZWF0ZSBsb2NhbCBvYmplY3QiLAogICAgKTsKCiAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIGRlZmluaXRpb24KICAgIG15ICRDbG9uZWRSZXF1ZXN0RGF0YSA9IFN0b3JhYmxlOjpkY2xvbmUoICRUZXN0LT57UmVxdWVzdERhdGF9ICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJExvY2FsUmVzdWx0ID0gJExvY2FsT2JqZWN0LT5SdW4oCiAgICAgICAgV2Vic2VydmljZUlEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgSW52b2tlciAgICAgID0+ICRUZXN0LT57T3BlcmF0aW9ufSwKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgID0+ICRQYXNzd29yZCwKICAgICAgICAgICAgJXsgJFRlc3QtPntSZXF1ZXN0RGF0YX0gfSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIHJlc3RvcmUgY2xvbmVkIGRhdGEKICAgICRUZXN0LT57UmVxdWVzdERhdGF9ID0gJENsb25lZFJlcXVlc3REYXRhOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkTG9jYWxSZXN1bHQsCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBMb2NhbCByZXN1bHQgc3RydWN0dXJlIGlzIHZhbGlkIiwKICAgICk7CgogICAgIyBjcmVhdGUgcmVxdWVzdGVyIG9iamVjdAogICAgbXkgJFJlcXVlc3Rlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJyk7CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0tlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6UmVxdWVzdGVyJywKICAgICAgICByZWYgJFJlcXVlc3Rlck9iamVjdCwKICAgICAgICAiJFRlc3QtPntOYW1lfSAtIFVwZGF0ZSByZXF1ZXN0ZXIgb2JqZWN0IiwKICAgICk7CgogICAgIyBzdGFydCByZXF1ZXN0ZXIgd2l0aCBvdXIgd2Vic2VydmljZQogICAgbXkgJFJlcXVlc3RlclJlc3VsdCA9ICRSZXF1ZXN0ZXJPYmplY3QtPlJ1bigKICAgICAgICBXZWJzZXJ2aWNlSUQgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICBJbnZva2VyICAgICAgPT4gJFRlc3QtPntPcGVyYXRpb259LAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkTmV3U2Vzc2lvbklELAogICAgICAgICAgICAleyAkVGVzdC0+e1JlcXVlc3REYXRhfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgcmVzdWx0CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJ0hBU0gnLAogICAgICAgIHJlZiAkUmVxdWVzdGVyUmVzdWx0LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBzdHJ1Y3R1cmUgaXMgdmFsaWQiLAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e1N1Y2Nlc3N9LAogICAgICAgICRUZXN0LT57U3VjY2Vzc1JlcXVlc3R9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHN1Y2Nlc3NmdWwgcmVzdWx0IiwKICAgICk7CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBzdWNjZWVkCiAgICBpZiAoICRUZXN0LT57U3VjY2Vzc1VwZGF0ZX0gKSB7CgogICAgICAgICMgbG9jYWwgcmVzdWx0cwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IENvbmZpZ0l0ZW1JRCB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkTG9jYWxSZXN1bHQtPntEYXRhfS0+e051bWJlcn0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0sCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvciBpcyB1bmRlZmluZWQuIiwKICAgICAgICApOwoKICAgICAgICAjIHJlcXVlc3RlciByZXN1bHRzCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gUmVxdWVzdGVyIHJlc3VsdCBDb25maWdJdGVtSUQgd2l0aCBUcnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57TnVtYmVyfSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IE51bWJlciB3aXRoIFRydWUuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlcXVlc3RlclJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBSZXF1ZXN0ZXIgcmVzdWx0IEVycm9yIGlzIHVuZGVmaW5lZC4iLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRoZSBDb25maWdJdGVtIGVudHJ5IChmcm9tIGxvY2FsIHJlc3VsdCkKICAgICAgICBteSAkTG9jYWxWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExvY2FsUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgSXNIYXNoUmVmV2l0aERhdGEoJExvY2FsVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgbG9jYWwgdmVyc2lvbiBzdHJjdHVyZSB3aXRoIFRydWUuIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aGUgY29uZmlnIGl0ZW0gZW50cnkgKGZyb20gcmVxdWVzdGVyIHJlc3VsdCkKICAgICAgICBteSAkUmVxdWVzdGVyVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRSZXF1ZXN0ZXJSZXN1bHQtPntEYXRhfS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSgkUmVxdWVzdGVyVmVyc2lvbkRhdGEpLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIGNyZWF0ZWQgcmVxdWVzdGVyIGNvbmZpZyBpdGVtIHN0cmN0dXJlIHdpdGggVHJ1ZS4iLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgY29uZmlnIGl0ZW0gYXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSB0ZXN0CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KE51bWJlciBDbGFzcyBOYW1lIEluY2lTdGF0ZSBEZXBsU3RhdGUgRGVwbFN0YXRlVHlwZSkpIHsKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAgICAgJExvY2FsVmVyc2lvbkRhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICAgICAkVGVzdC0+e1JlcXVlc3REYXRhfS0+e0NvbmZpZ0l0ZW19LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT4kQXR0cmlidXRlIiAuICIgbWF0Y2ggdGVzdCBkZWZpbml0aW9uLiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHRyYW5zZm9ybSBYTUwgZGF0YSB0byBhIGNvbXBhcmFibGUgZm9ybWF0CiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkTG9jYWxWZXJzaW9uRGF0YS0+e1hNTERlZmluaXRpb259OwoKICAgICAgICAjIG1ha2UgYSBkZWVwIGNvcHkgdG8gYXZvaWQgY2hhbmdpbmcgdGhlIHJlc3VsdAogICAgICAgIG15ICRDbG9uZWRYTUxEYXRhID0gU3RvcmFibGU6OmRjbG9uZSggJExvY2FsVmVyc2lvbkRhdGEtPntYTUxEYXRhfSApOwoKICAgICAgICBteSAkRm9ybWF0ZWRYTUxEYXRhID0gJExvY2FsT2JqZWN0LT5JbnZlcnRGb3JtYXRYTUxEYXRhKAogICAgICAgICAgICBYTUxEYXRhID0+ICRDbG9uZWRYTUxEYXRhLT5bMV0tPntWZXJzaW9ufSwKICAgICAgICApOwoKICAgICAgICBteSAkUmVwbGFjZWRYTUxEYXRhID0gJExvY2FsT2JqZWN0LT5JbnZlcnRSZXBsYWNlWE1MRGF0YSgKICAgICAgICAgICAgWE1MRGF0YSAgICA9PiAkRm9ybWF0ZWRYTUxEYXRhLAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgICk7CgogICAgICAgICMgY29tcGFyZSBYTUwgZGF0YQogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJFJlcGxhY2VkWE1MRGF0YSwKICAgICAgICAgICAgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0NJWE1MRGF0YX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gbG9jYWwgQ29uZmlnSXRlbS0+Q0lYTUxEYXRhIG1hdGNoIHRlc3QgZGVmaW5pdGlvbi4iLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgYXR0YWNobWVudHMKICAgICAgICBpZiAoIGRlZmluZWQgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntBdHRhY2htZW50fSApIHsKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQEF0dGFjaG1lbnRzOwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEZpbGVOYW1lIChAQXR0YWNobWVudExpc3QpIHsKICAgICAgICAgICAgICAgIG5leHQgQVRUQUNITUVOVCBpZiAhJEZpbGVOYW1lOwoKICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUmVxdWVzdGVyUmVzdWx0LT57RGF0YX0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkRmlsZU5hbWUsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgbmV4dCBpZiBub3QgYXR0YWNobWVudAogICAgICAgICAgICAgICAgbmV4dCBBVFRBQ0hNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkQXR0YWNobWVudCk7CgogICAgICAgICAgICAgICAgIyBjb252ZXJ0IGNvbnRlbnQgdG8gYmFzZTY0CiAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+e0NvbnRlbnR9ID0gZW5jb2RlX2Jhc2U2NCggJEF0dGFjaG1lbnQtPntDb250ZW50fSwgJycgKTsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBub3QgbmVlZGVkIGF0dGlidXRlcwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFByZWZlcmVuY2VzIEZpbGVzaXplIFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRBdHRhY2htZW50LT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBBdHRhY2htZW50cywgJEF0dGFjaG1lbnQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15IEBSZXF1ZXN0ZWRBdHRhY2htZW50czsKICAgICAgICAgICAgaWYgKCByZWYgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntBdHRhY2htZW50fSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSZXF1ZXN0ZWRBdHRhY2htZW50cywgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0F0dGFjaG1lbnR9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQFJlcXVlc3RlZEF0dGFjaG1lbnRzID0gQHsgJFRlc3QtPntSZXF1ZXN0RGF0YX0tPntDb25maWdJdGVtfS0+e0F0dGFjaG1lbnR9IH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgICAgIFxAQXR0YWNobWVudHMsCiAgICAgICAgICAgICAgICBcQFJlcXVlc3RlZEF0dGFjaG1lbnRzLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBsb2NhbCBDb25maWdJdGVtLT5BdHRhY2htZW50IG1hdGNoIHRlc3QgZGVmaW5pdGlvbi4iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxWZXJzaW9uRGF0YSwKICAgICAgICAgICAgJFJlcXVlc3RlclZlcnNpb25EYXRhLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIGNvbmZpZyBpdGVtIHJlc3VsdCBtYXRjaGVkIHdpdGggcmVtb3RlIHJlc3VsdC4iLAogICAgICAgICk7CiAgICB9CgogICAgIyB0ZXN0cyBzdXBwb3NlZCB0byBmYWlsCiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IENvbmZpZ0l0ZW1JRCB3aXRoIGZhbHNlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e051bWJlcn0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IE51bWJlciB3aXRoIGZhbHNlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JDb2RlfSwKICAgICAgICAgICAgJFRlc3QtPntFeHBlY3RlZERhdGF9LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvckNvZGUgbWF0Y2hlZCB3aXRoIGV4cGVjdGVkIGxvY2FsIGNhbGwgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvck1lc3NhZ2Ugd2l0aCB0cnVlLiIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXNOb3QoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0RhdGF9LT57RXJyb3J9LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgJycsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9yTWVzc2FnZSBpcyBub3QgZW1wdHkuIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RXJyb3JNZXNzYWdlfSwKICAgICAgICAgICAgJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvckNvZGV9CiAgICAgICAgICAgICAgICAuICc6ICcKICAgICAgICAgICAgICAgIC4gJExvY2FsUmVzdWx0LT57RGF0YX0tPntFcnJvcn0tPntFcnJvck1lc3NhZ2V9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAtIExvY2FsIHJlc3VsdCBFcnJvck1lc3NhZ2UgKG91dHNpZGUgRGF0YSBoYXNoKSBtYXRjaGVkIHdpdGggY29uY2F0ZW5hdGlvbiIKICAgICAgICAgICAgICAgIC4gIiBvZiBFcnJvckNvZGUgYW5kIEVycm9yTWVzc2FnZSB3aXRoaW4gRGF0YSBoYXNoLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1vdmUgRXJyb3JNZXNzYWdlIHBhcmFtZXRlciBmcm9tIGRpcmVjdCBjYWxsCiAgICAgICAgIyByZXN1bHQgdG8gYmUgY29uc2lzdGVudCB3aXRoIFNPQVAgY2FsbCByZXN1bHQKICAgICAgICBpZiAoICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkTG9jYWxSZXN1bHQtPntFcnJvck1lc3NhZ2V9OwogICAgICAgIH0KCiAgICAgICAgIyBzYW5pdHkgY2hlY2sKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRMb2NhbFJlc3VsdC0+e0Vycm9yTWVzc2FnZX0sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IEVycm9NZXNzYWdlIChvdXRzaXNlIERhdGEgaGFzaCkgZ290IHJlbW92ZWQgdG8gY29tcGFyZSIKICAgICAgICAgICAgICAgIC4gIiBsb2NhbCBhbmQgcmVtb3RlIHRlc3RzLiIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAkTG9jYWxSZXN1bHQsCiAgICAgICAgICAgICRSZXF1ZXN0ZXJSZXN1bHQsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gTG9jYWwgcmVzdWx0IG1hdGNoZWQgd2l0aCByZW1vdGUgcmVzdWx0LiIsCiAgICAgICAgKTsKICAgIH0KfQoKIyBjbGVhbiB1cCBjb25maWcgaXRlbXMKbXkgJENvbmZpZ0l0ZW1EZWxldGUgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgojIHNhbml0eSBjaGVjawokU2VsZi0+VHJ1ZSgKICAgICRDb25maWdJdGVtRGVsZXRlLAogICAgIkNvbmZpZ0l0ZW1EZWxldGUoKSBzdWNjZXNzZnVsIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQiLAopOwoKIyBjbGVhbiB1cCB3ZWJzZXJ2aWNlCm15ICRXZWJzZXJ2aWNlRGVsZXRlID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VEZWxldGUoCiAgICBJRCAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRXZWJzZXJ2aWNlRGVsZXRlLAogICAgIkRlbGV0ZWQgV2Vic2VydmljZSAkV2Vic2VydmljZUlEIiwKKTsKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/ImportExportObjectITSMConfigItem.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiMgcnVuIHRoaXMgdGVzdCBvbmx5IGlmIHRoZSBJbXBvcnRFeHBvcnQgcGFja2FnZSBpcyBpbnN0YWxsZWQKewogICAgIyBnZXQgSW1wb3J0RXhwb3J0IG1vZHVsZSBkaXJlY3RvcnkKICAgIG15ICRJbXBvcnRFeHBvcnRNb2R1bGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0hvbWUnKSAuICcvS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQucG0nOwoKICAgICMgUmV0dXJuIGVhcmx5IGlmIEltcG9ydEV4cG9ydCBwYWNrYWdlIGlzIG5vdCBpbnN0YWxsZWQuCiAgICBpZiAoICEtZSAkSW1wb3J0RXhwb3J0TW9kdWxlICkgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgMCwKICAgICAgICAgICAgJ0ltcG9ydEV4cG9ydCBwYWNrYWdlIG5vdCBpbnN0YWxsZWQnCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDE7CiAgICB9Cn0KCm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwpteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJEltcG9ydEV4cG9ydE9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkltcG9ydEV4cG9ydCcpOwpteSAkT2JqZWN0QmFja2VuZE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkWE1MT2JqZWN0ICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WE1MJyk7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgbWFrZSBwcmVwYXJhdGlvbnMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBhZGQgc29tZSB0ZXN0IHRlbXBsYXRlcyBmb3IgbGF0ZXIgY2hlY2tzCm15IEBUZW1wbGF0ZUlEczsKbXkgJENvdW50ZXIgPSAwOwpmb3IgKCAxIC4uIDMwICkgewoKICAgICMgYWRkIGEgdGVzdCB0ZW1wbGF0ZSBmb3IgbGF0ZXIgY2hlY2tzCiAgICBteSAkVGVtcGxhdGVJRCA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPlRlbXBsYXRlQWRkKAogICAgICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBGb3JtYXQgID0+ICdVbml0VGVzdCcgLiAkQ291bnRlciAuICRSYW5kb21JRCwKICAgICAgICBOYW1lICAgID0+ICdVbml0VGVzdCcgLiAkQ291bnRlciAuICRSYW5kb21JRCwKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICBwdXNoIEBUZW1wbGF0ZUlEcywgJFRlbXBsYXRlSUQ7CgogICAgJENvdW50ZXIrKzsKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIE9iamVjdExpc3QgdGVzdCAxIChjaGVjayBDU1YgaXRlbSkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBnZXQgb2JqZWN0IGxpc3QKbXkgJE9iamVjdExpc3QxID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0TGlzdCgpOwoKIyBjaGVjayBvYmplY3QgbGlzdAokU2VsZi0+VHJ1ZSgKICAgICRPYmplY3RMaXN0MSAmJiByZWYgJE9iamVjdExpc3QxIGVxICdIQVNIJyAmJiAkT2JqZWN0TGlzdDEtPntJVFNNQ29uZmlnSXRlbX0sCiAgICAiT2JqZWN0TGlzdCgpIC0gSVRTTUNvbmZpZ0l0ZW0gZXhpc3RzIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBPYmplY3RBdHRyaWJ1dGVzR2V0IHRlc3QgMSAoY2hlY2sgYXR0cmlidXRlIGhhc2gpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCnsKCiAgICAjIGdldCBvYmplY3QgYXR0cmlidXRlcwogICAgbXkgJE9iamVjdEF0dHJpYnV0ZXNHZXQxID0gJEltcG9ydEV4cG9ydE9iamVjdC0+T2JqZWN0QXR0cmlidXRlc0dldCgKICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1swXSwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgb2JqZWN0IGF0dHJpYnV0ZSByZWZlcmVuY2UKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MSAmJiByZWYgJE9iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAgICAgIk9iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGNoZWNrIGFycmF5IHJlZmVyZW5jZSIsCiAgICApOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgICMgZGVmaW5lIHRoZSByZWZlcmVuY2UgaGFzaAogICAgbXkgJE9iamVjdEF0dHJpYnV0ZXNHZXQxUmVmZXJlbmNlID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICBOYW1lICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJlcXVpcmVkICAgICA9PiAxLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0NvdW50TWF4JywKICAgICAgICAgICAgTmFtZSAgPT4gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50JywKICAgICAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFZhbHVlRGVmYXVsdCA9PiAnMTAnLAogICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgID0+IDEsCiAgICAgICAgICAgICAgICBSZWdleCAgICAgICAgPT4gcXJ7IFxBIFxkKyBceiB9eG1zLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIE1heExlbmd0aCAgICA9PiA1LAogICAgICAgICAgICAgICAgRGF0YVR5cGUgICAgID0+ICdJbnRlZ2VyQmlnZ2VyVGhhblplcm8nLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAnSW5wdXQnID0+IHsKICAgICAgICAgICAgICAgICdUeXBlJyA9PiAnQ2hlY2tib3gnCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdOYW1lJyA9PiAnRW1wdHkgZmllbGRzIGluZGljYXRlIHRoYXQgdGhlIGN1cnJlbnQgdmFsdWVzIGFyZSBrZXB0JywKICAgICAgICAgICAgJ0tleScgID0+ICdFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzJywKICAgICAgICB9CiAgICBdOwoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAkT2JqZWN0QXR0cmlidXRlc0dldDEsCiAgICAgICAgJE9iamVjdEF0dHJpYnV0ZXNHZXQxUmVmZXJlbmNlLAogICAgICAgICJPYmplY3RBdHRyaWJ1dGVzR2V0KCkgLSBhdHRyaWJ1dGVzIG9mIHRoZSByb3cgYXJlIGlkZW50aWNhbCIsCiAgICApOwp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgT2JqZWN0QXR0cmlidXRlc0dldCB0ZXN0IDIgKGNoZWNrIHdpdGggbm9uIGV4aXN0aW5nIHRlbXBsYXRlKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGdldCBvYmplY3QgYXR0cmlidXRlcwpteSAkT2JqZWN0QXR0cmlidXRlc0dldDIgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbLTFdICsgMSwKICAgIFVzZXJJRCAgICAgPT4gMSwKKTsKCiMgY2hlY2sgZmFsc2UgcmV0dXJuCiRTZWxmLT5GYWxzZSgKICAgICRPYmplY3RBdHRyaWJ1dGVzR2V0MiwKICAgICJPYmplY3RBdHRyaWJ1dGVzR2V0KCkgLSBjaGVjayBmYWxzZSByZXR1cm4iLAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIE1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0IHRlc3QgMSAoY2hlY2sgYXR0cmlidXRlIGhhc2gpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZ2V0IG1hcHBpbmcgb2JqZWN0IGF0dHJpYnV0ZXMKbXkgJE1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0MSA9ICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0KAogICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbMF0sCiAgICBVc2VySUQgICAgID0+IDEsCik7CgojIGNoZWNrIG1hcHBpbmcgb2JqZWN0IGF0dHJpYnV0ZSByZWZlcmVuY2UKJFNlbGYtPlRydWUoCiAgICAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxICYmIHJlZiAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQxIGVxICdBUlJBWScsCiAgICAiTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoKSAtIGNoZWNrIGFycmF5IHJlZmVyZW5jZSIsCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQgdGVzdCAyIChjaGVjayB3aXRoIG5vbiBleGlzdGluZyB0ZW1wbGF0ZSkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyBnZXQgbWFwcGluZyBvYmplY3QgYXR0cmlidXRlcwpteSAkTWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQyID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdEF0dHJpYnV0ZXNHZXQoCiAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1stMV0gKyAxLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKIyBjaGVjayBmYWxzZSByZXR1cm4KJFNlbGYtPkZhbHNlKAogICAgJE1hcHBpbmdPYmplY3RBdHRyaWJ1dGVzR2V0MiwKICAgICJNYXBwaW5nT2JqZWN0QXR0cmlidXRlc0dldCgpIC0gY2hlY2sgZmFsc2UgcmV0dXJuIiwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBtYWtlIHByZXBhcmF0aW9ucyB0byB0ZXN0IEV4cG9ydERhdGFHZXQoKSBhbmQgSW1wb3J0RGF0YVNhdmUoKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgpteSAkR2VuZXJhbENhdGFsb2dDbGFzcyA9ICdVbml0VGVzdCcgLiAkUmFuZG9tSUQ7CgojIGFkZCBhIGdlbmVyYWwgY2F0YWxvZyB0ZXN0IGxpc3QKZm9yIG15ICROYW1lIChxdyhUZXN0MSBUZXN0MiBUZXN0MyBUZXN0NCkpIHsKCiAgICAjIGFkZCBhIG5ldyBpdGVtCiAgICBteSAkSXRlbUlEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgIENsYXNzICAgPT4gJEdlbmVyYWxDYXRhbG9nQ2xhc3MsCiAgICAgICAgTmFtZSAgICA9PiAkTmFtZSwKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIGl0ZW0gaWQKICAgIGlmICggISRJdGVtSUQgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiQ2FuJ3QgYWRkIG5ldyBnZW5lcmFsIGNhdGFsb2cgaXRlbS4iLAogICAgICAgICk7CiAgICB9Cn0KCiMgZGVmaW5lIHRoZSBmaXJzdCB0ZXN0IGRlZmluaXRpb24gKGFsbCBwcm92aWRlZCBkYXRhIHR5cGVzKQpteSBAQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uczsKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMF0gPSAiIFsKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdDdXN0b21lcjEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0N1c3RvbWVyIDEnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAnQ3VzdG9tZXInLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0RhdGUxJywKICAgICAgICBOYW1lICAgICAgID0+ICdEYXRlIDEnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnRGF0ZVRpbWUxJywKICAgICAgICBOYW1lICAgICAgID0+ICdEYXRlIFRpbWUgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEYXRlVGltZScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgPT4gJ0R1bW15MScsCiAgICAgICAgTmFtZSAgPT4gJ0R1bW15IDEnLAogICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAnRHVtbXknLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0dlbmVyYWxDYXRhbG9nMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnR2VuZXJhbENhdGFsb2cgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlICA9PiAnR2VuZXJhbENhdGFsb2cnLAogICAgICAgICAgICBDbGFzcyA9PiAnJEdlbmVyYWxDYXRhbG9nQ2xhc3MnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0ludGVnZXIxJywKICAgICAgICBOYW1lICAgICAgID0+ICdJbnRlZ2VyIDEnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAnSW50ZWdlcicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnVGV4dDEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1RleHQgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdUZXh0QXJlYTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1RleHRBcmVhIDEnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAnVGV4dEFyZWEnLAogICAgICAgIH0sCiAgICB9LApdICI7CgojIGRlZmluZSB0aGUgc2Vjb25kIHRlc3QgZGVmaW5pdGlvbiAoc3ViIGRhdGEgdHlwZXMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzFdID0gIiBbCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgUmVxdWlyZWQgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICBTdWIgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMVN1YjEnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxIFN1YiAxJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgICAgIFN1YiA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMVN1YjFTdWJTdWIxJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxIFN1YiAxIFN1YlN1YiAxJywKICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMVN1YjFTdWJTdWIyJywKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxIFN1YiAxIFN1YlN1YiAyJywKICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ01haW4xU3ViMicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICdNYWluIDEgU3ViIDInLAogICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVGV4dEFyZWEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ01haW4yJywKICAgICAgICBOYW1lICAgICAgID0+ICdNYWluIDInLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAnVGV4dEFyZWEnLAogICAgICAgIH0sCiAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgU3ViID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjJTdWIxJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMiBTdWIgMScsCiAgICAgICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ01haW4yU3ViMicsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICdNYWluIDIgU3ViIDInLAogICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAnVGV4dEFyZWEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LApdICI7CgojIERlZmluZSB0aGUgdGhpcmQgdGVzdCBkZWZpbml0aW9uIHdpdGggcmVxdWlyZWQgYXR0cmlidXRlICdUeXBlJy4KJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMl0gPSAiIFsKICAgIHsKICAgICAgICAnS2V5JyA9PiAnVHlwZScsCiAgICAgICAgJ0lucHV0JyA9PiB7CiAgICAgICAgICAgICdDbGFzcycgPT4gJyRHZW5lcmFsQ2F0YWxvZ0NsYXNzJywKICAgICAgICAgICAgJ1JlcXVpcmVkJyA9PiAxLAogICAgICAgICAgICAnVHJhbnNsYXRpb24nID0+IDEsCiAgICAgICAgICAgICdUeXBlJyA9PiAnR2VuZXJhbENhdGFsb2cnCiAgICAgICAgfSwKICAgICAgICAnU2VhcmNoYWJsZScgPT4gMSwKICAgICAgICAnQ291bnRNaW4nID0+IDEsCiAgICAgICAgJ0NvdW50RGVmYXVsdCcgPT4gMSwKICAgICAgICAnQ291bnRNYXgnID0+IDMsCiAgICAgICAgJ05hbWUnID0+ICdUeXBlJywKICAgIH0sCl0gIjsKCm15ICRZQU1MT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCm15IEBDb25maWdJdGVtRGVmaW5pdGlvbnM7CmZvciBteSAkUGVybERlZmluaXRpb24gKEBDb25maWdJdGVtUGVybERlZmluaXRpb25zKSB7CiAgICBteSAkWUFNTERlZmluaXRpb24gPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICBEYXRhID0+IGV2YWwgJFBlcmxEZWZpbml0aW9uLCAgICAjIyBubyBjcml0aWMKICAgICk7CiAgICBwdXNoIEBDb25maWdJdGVtRGVmaW5pdGlvbnMsICRZQU1MRGVmaW5pdGlvbjsKfQoKIyBhZGQgdGhlIHRlc3QgY2xhc3NlcwpteSBAQ29uZmlnSXRlbUNsYXNzSURzOwpteSBAQ29uZmlnSXRlbURlZmluaXRpb25JRHM7CmZvciBteSAkRGVmaW5pdGlvbiAoQENvbmZpZ0l0ZW1EZWZpbml0aW9ucykgewoKICAgICMgZ2VuZXJhdGUgYSByYW5kb20gbmFtZQogICAgbXkgJENsYXNzTmFtZSA9ICdVbml0VGVzdCcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKICAgICMgYWRkIGFuIHVuaXR0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzCiAgICBteSAkQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgTmFtZSAgICA9PiAkQ2xhc3NOYW1lLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgY2xhc3MgaWQKICAgIGlmICggISRDbGFzc0lEICkgewoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgMCwKICAgICAgICAgICAgIkNhbid0IGFkZCBuZXcgY29uZmlnIGl0ZW0gY2xhc3MuIiwKICAgICAgICApOwogICAgfQoKICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENsYXNzSUQ7CgogICAgIyBhZGQgYSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcwogICAgbXkgJERlZmluaXRpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgZGVmaW5pdGlvbiBpZAogICAgaWYgKCAhJERlZmluaXRpb25JRCApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGRlZmluaXRpb24uIiwKICAgICAgICApOwogICAgfQoKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkRGVmaW5pdGlvbklEOwp9CgojIGNyZWF0ZSBzb21lIHJhbmRvbSBudW1iZXJzCm15IEBDb25maWdJdGVtTnVtYmVyczsKZm9yICggMSAuLiAxMCApIHsKICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkSGVscGVyLT5HZXRSYW5kb21OdW1iZXIoKTsKfQoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgojIGdldCBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRHZW5lcmFsQ2F0YWxvZ0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJEdlbmVyYWxDYXRhbG9nQ2xhc3MsCik7Cm15ICVHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRHZW5lcmFsQ2F0YWxvZ0xpc3R9OwoKIyBkZWZpbmUgdGhlIHRlc3QgY29uZmlnIGl0ZW1zCm15IEBDb25maWdJdGVtcyA9ICgKCiAgICAjIGNvbmZpZyBpdGVtIGZvciBhbGwgcHJvdmlkZWQgZGF0YSB0eXBlcwogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBcmVhMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAoKICAgICMgYSBzZWNvbmQgY29uZmlnIGl0ZW0gZm9yIGFsbCBwcm92aWRlZCBkYXRhIHR5cGVzCiAgICAjIChkdXBsaWNhdGUgbmFtZSBvZiBmaXJzdCB2ZXJzaW9uIGZvciBzZWFyY2ggY2hlY2tzKQogICAgewogICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBWZXJzaW9ucyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywgICAgIyBkdXBsaWNhdGUgbmFtZSBmb3IgdGVzdHMKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXN0b21lcjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlVGltZTEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmFsQ2F0YWxvZzEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHQxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBcmVhMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAyIFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1VuaXRUZXN0MicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAyLTAyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVUaW1lMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDA4LTAyLTAyIDAzOjU5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYWxDYXRhbG9nMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzInLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dDEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGVzdCBUZXh0IFRlc3QyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBcmVhMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICJUZXN0MlxuVGV4dCBBcnJheVxuVGVzdCAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAoKICAgICMgY29uZmlnIGl0ZW0gZm9yIHN1YiBlbGVtZW50IHRlc3RzCiAgICB7CiAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMV0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1sxXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnTWFpbjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICdNYWluMSAoMSkgU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ01haW4xICgxKSBTdWIyICgyKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJ01haW4yICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTWFpbjIgKDEpIFN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgPT4gJ01haW4yICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAnTWFpbjIgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAoKICAgICMgY29uZmlnIGl0ZW0gZm9yIHN1YiBlbGVtZW50IHRlc3RzCiAgICB7CiAgICAgICAgQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMV0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICB9LAogICAgICAgIFZlcnNpb25zID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gNCBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1sxXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgICAgID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIxID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjFTdWJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3Igc3BlY2lhbCBjaGFyYWN0ZXIgdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA1IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzFdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICA9PiAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnPjxAflwnfXtbXVxcJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnPjxAflwnfXtbXVxcJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgPT4gJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4yU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdUZXN0IFRlc3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gIlRlc3RcblRlc3RcdFRlc3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBjb25maWcgaXRlbSBmb3IgVVRGLTggdGVzdHMKICAgIHsKICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVmVyc2lvbnMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA2IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzFdLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfihoIg4oW7IOKFmycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICA9PiAn4piEIOKGriDihrkg4oaSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjFTdWIxU3ViU3ViMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICfigqQg4oKhIOKCqSDigq8g4oK1JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1haW4xU3ViMVN1YlN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pmKIOKZiCDimYkg4pmKIOKZiyDimY0g4pmRJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMVN1YjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAn4pyIIOKdpCDimK4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjIgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgID0+ICfViiDVhCDVgCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWluMlN1YjEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnwq4gwqknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFpbjJTdWIyID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ+OBiyDjgZIg44KSJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAopOwoKIyBhZGQgdGhlIHRlc3QgY29uZmlnIGl0ZW1zCm15IEBDb25maWdJdGVtSURzOwpmb3IgbXkgJENvbmZpZ0l0ZW0gKEBDb25maWdJdGVtcykgewoKICAgICMgYWRkIGEgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAleyAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW19IH0sCiAgICApOwoKICAgICMgY2hlY2sgY29uZmlnIGl0ZW0gaWQKICAgIGlmICggISRDb25maWdJdGVtSUQgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiQ2FuJ3QgYWRkIG5ldyBjb25maWcgaXRlbS4iLAogICAgICAgICk7CiAgICB9CgogICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAjIGFkZCB0aGUgdmVyc2lvbnMKICAgIGZvciBteSAkVmVyc2lvbiAoIEB7ICRDb25maWdJdGVtLT57VmVyc2lvbnN9IH0gKSB7CgogICAgICAgICMgYWRkIGEgdmVyc2lvbgogICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgJXskVmVyc2lvbn0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgdmVyc2lvbiBpZAogICAgICAgIGlmICggISRWZXJzaW9uSUQgKSB7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAiQ2FuJ3QgYWRkIG5ldyB2ZXJzaW9uLiIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgZGVmaW5lIGdlbmVyYWwgRXhwb3J0RGF0YUdldCB0ZXN0cwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgpteSBARXhwb3J0RGF0YVRlc3RzID0gKAoKICAgICMgSW1wb3J0RGF0YUdldCBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgSW1wb3J0RGF0YUdldCBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gZXhpc3RpbmcgdGVtcGxhdGUgaWQgaXMgZ2l2ZW4gKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1stMV0gKyAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgbm8gY2xhc3MgaWQgaXMgZ2l2ZW4gKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGludmFsaWQgY2xhc3MgaWQgaXMgZ2l2ZW4gKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbLTFdICsgMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIG1hcHBpbmcgbGlzdCBpcyBlbXB0eSAoY2hlY2sgcmV0dXJuIGZhbHNlKQogICAgewogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1szXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChudW1iZXIgc2VhcmNoIGNoZWNrKQogICAgewogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKG5hbWUgc2VhcmNoIGNoZWNrKQogICAgewogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTmFtZSA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNhc2UgaW5zZW5zaXRpdmUgbmFtZSBzZWFyY2ggY2hlY2spCiAgICB7CiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICd1bml0dGVzdCAtIGNvbmZpZ2l0ZW0gMSB2ZXJzaW9uIDEnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzVdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsgJENvbmZpZ0l0ZW1OdW1iZXJzWzBdIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAobmFtZSBhbmQgbnVtYmVyIHNlYXJjaCBjaGVjaykKICAgIHsKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWyAkQ29uZmlnSXRlbU51bWJlcnNbMF0gXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChkZXBsb3ltZW50IHN0YXRlIHNlYXJjaCBjaGVjaykKICAgIHsKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWyAkQ29uZmlnSXRlbU51bWJlcnNbMF0gXSwKICAgICAgICAgICAgWyAkQ29uZmlnSXRlbU51bWJlcnNbMV0gXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChpbmNpZGVudCBzdGF0ZSBzZWFyY2ggY2hlY2spCiAgICB7CiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRHMgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1sxXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNvbWJpbmVkIHNlYXJjaCBjaGVjaykKICAgIHsKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWyAkQ29uZmlnSXRlbU51bWJlcnNbMF0gXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChYTUwgZGF0YSBzZWFyY2ggY2hlY2spCiAgICB7CiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBEYXRlMSAgICAgICAgICAgPT4gJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgVGV4dEFyZWExICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgICAgIEN1c3RvbWVyMSAgICAgICA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgVGV4dDEgICAgICAgICAgID0+ICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICBEYXRlVGltZTEgICAgICAgPT4gJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgSW50ZWdlcjEgICAgICAgID0+ICcxJywKICAgICAgICAgICAgICAgIEdlbmVyYWxDYXRhbG9nMSA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbNV0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWyAkQ29uZmlnSXRlbU51bWJlcnNbMF0gXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChjb21iaW5lZCBhbGwgc2VhcmNoIGNoZWNrKQogICAgewogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEcyAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRHMgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIERhdGUxICAgICAgICAgICA9PiAnMjAwOC0wMi0wMScsCiAgICAgICAgICAgICAgICBUZXh0QXJlYTEgICAgICAgPT4gIlRlc3RcblRleHQgQXJyYXlcblRlc3QiLAogICAgICAgICAgICAgICAgQ3VzdG9tZXIxICAgICAgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICBUZXh0MSAgICAgICAgICAgPT4gJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgIERhdGVUaW1lMSAgICAgICA9PiAnMjAwOC0wMi0wMSAwMzo1OScsCiAgICAgICAgICAgICAgICBJbnRlZ2VyMSAgICAgICAgPT4gJzEnLAogICAgICAgICAgICAgICAgR2VuZXJhbENhdGFsb2cxID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QxfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s1XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbICRDb25maWdJdGVtTnVtYmVyc1swXSBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNoZWNrIHRoZSByZXR1cm5lZCBhcnJheSkKICAgIHsKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0N1c3RvbWVyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGVUaW1lMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRHVtbXkxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s2XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMF0sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnVGVzdDEnLAogICAgICAgICAgICAgICAgJzEnLAogICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICJUZXN0XG5UZXh0IEFycmF5XG5UZXN0IiwKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChkb3VibGUgZWxlbWVudCBjaGVja3MpCiAgICB7CiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0N1c3RvbWVyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGVUaW1lMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRHVtbXkxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEdW1teTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbnRlZ2VyMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0QXJlYTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBFeHBvcnREYXRhR2V0ID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlbXBsYXRlSURzWzZdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRXhwb3J0RGF0YSA9PiBbCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgJzIwMDgtMDItMDEnLAogICAgICAgICAgICAgICAgJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgJzIwMDgtMDItMDEgMDM6NTknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICAnVGVzdDEnLAogICAgICAgICAgICAgICAgJzEnLAogICAgICAgICAgICAgICAgJzEnLAogICAgICAgICAgICAgICAgJ1Rlc3QgVGV4dCBUZXN0JywKICAgICAgICAgICAgICAgICdUZXN0IFRleHQgVGVzdCcsCiAgICAgICAgICAgICAgICAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgICAgICAiVGVzdFxuVGV4dCBBcnJheVxuVGVzdCIsCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoc3ViIGVsZW1lbnQgY2hlY2tzKQogICAgewogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s3XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMyknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMikgU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMiAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChzdWIgZWxlbWVudCBjaGVja3Mgd2l0aCB1bmRlZiB2YWx1ZXMpCiAgICB7CiAgICAgICAgU291cmNlRXhwb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6NCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s3XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDMgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgxKSBTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMSAoMSkgU3ViMSAoMSkgU3ViU3ViMSAoMyknLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDEpIFN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIxICgyKSBTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjEgKDIpIFN1YlN1YjIgKDIpJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJ01haW4xICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJ01haW4yICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjEgKDEpJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJ01haW4yICgxKSBTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIFN1YjIgKDIpJywKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoc3ViIGVsZW1lbnQgY2hlY2tzIHdpdGggdW5kZWYgdmFsdWVzIGFuZCBlbXB0eSBzdHJpbmdzKQogICAgewogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjMnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjozJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbM10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbN10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA0IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHNwZWNpYWwgY2hhcmFjdGVyIGNoZWNrcykKICAgIHsKICAgICAgICBTb3VyY2VFeHBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEV4cG9ydERhdGFHZXQgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVtcGxhdGVJRHNbOF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VFeHBvcnREYXRhID0+IFsKICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzRdLAogICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSA1IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICdUZXN0OzpfwrBeISLCpyQlJi8oKT0/wrRgKitUZXN0JywKICAgICAgICAgICAgICAgICc+PEB+XCd9e1tdXFwnLAogICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAnIiI7Ozo6Li4tLV9fIyMnLAogICAgICAgICAgICAgICAgJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAiVGVzdFxuVGVzdFx0VGVzdCIsCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoVVRGLTggY2hlY2tzKQogICAgewogICAgICAgIFNvdXJjZUV4cG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxOjpNYWluMVN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MTo6TWFpbjJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1s1XSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgRXhwb3J0RGF0YUdldCA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1s5XSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUV4cG9ydERhdGEgPT4gWwogICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNV0sCiAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDYgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAn4oaCIOKFuyDihZsnLAogICAgICAgICAgICAgICAgJ+KYhCDihq4g4oa5IOKGkicsCiAgICAgICAgICAgICAgICAn4oKkIOKCoSDigqkg4oKvIOKCtScsCiAgICAgICAgICAgICAgICAn4pmKIOKZiCDimYkg4pmKIOKZiyDimY0g4pmRJywKICAgICAgICAgICAgICAgICfinIgg4p2kIOKYricsCiAgICAgICAgICAgICAgICAn1Yog1YQg1YAnLAogICAgICAgICAgICAgICAgJ8KuIMKpJywKICAgICAgICAgICAgICAgICfjgYsg44GSIOOCkicsCiAgICAgICAgICAgIF0sCiAgICAgICAgXSwKICAgIH0sCik7CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIGdlbmVyYWwgRXhwb3J0RGF0YUdldCB0ZXN0cwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgpteSAkRXhwb3J0VGVzdENvdW50ID0gMTsKVEVTVDoKZm9yIG15ICRUZXN0IChARXhwb3J0RGF0YVRlc3RzKSB7CgogICAgIyBjaGVjayBTb3VyY2VFeHBvcnREYXRhIGF0dHJpYnV0ZQogICAgaWYgKCAhJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiRXhwb3J0VGVzdCAkRXhwb3J0VGVzdENvdW50OiBObyBTb3VyY2VFeHBvcnREYXRhIGZvdW5kIGZvciB0aGlzIHRlc3QuIgogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICAjIHNldCB0aGUgb2JqZWN0IGRhdGEKICAgIGlmICgKICAgICAgICAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57T2JqZWN0RGF0YX0KICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e09iamVjdERhdGF9IGVxICdIQVNIJwogICAgICAgICYmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntFeHBvcnREYXRhR2V0fS0+e1RlbXBsYXRlSUR9CiAgICAgICAgKQogICAgewoKICAgICAgICAjIHNhdmUgb2JqZWN0IGRhdGEKICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfSwKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57T2JqZWN0RGF0YX0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IHRoZSBtYXBwaW5nIG9iamVjdCBkYXRhCiAgICBpZiAoCiAgICAgICAgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfQogICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9IGVxICdBUlJBWScKICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBkZWxldGUgYWxsIGV4aXN0aW5nIG1hcHBpbmcgZGF0YQogICAgICAgICRJbXBvcnRFeHBvcnRPYmplY3QtPk1hcHBpbmdEZWxldGUoCiAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3Qgcm93cwogICAgICAgIE1BUFBJTkdPQkpFQ1REQVRBOgogICAgICAgIGZvciBteSAkTWFwcGluZ09iamVjdERhdGEgKCBAeyAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9IH0gKSB7CgogICAgICAgICAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgICAgICAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5NYXBwaW5nT2JqZWN0RGF0YVNhdmUoCiAgICAgICAgICAgICAgICBNYXBwaW5nSUQgICAgICAgICA9PiAkTWFwcGluZ0lELAogICAgICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gJE1hcHBpbmdPYmplY3REYXRhLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgdGhlIHNlYXJjaCBkYXRhCiAgICBpZiAoCiAgICAgICAgJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9CiAgICAgICAgJiYgcmVmICRUZXN0LT57U291cmNlRXhwb3J0RGF0YX0tPntTZWFyY2hEYXRhfSBlcSAnSEFTSCcKICAgICAgICAmJiAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0tPntUZW1wbGF0ZUlEfQogICAgICAgICkKICAgIHsKCiAgICAgICAgIyBzYXZlIHNlYXJjaCBkYXRhCiAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+U2VhcmNoRGF0YVNhdmUoCiAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e0V4cG9ydERhdGFHZXR9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgIFNlYXJjaERhdGEgPT4gJFRlc3QtPntTb3VyY2VFeHBvcnREYXRhfS0+e1NlYXJjaERhdGF9LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBleHBvcnQgZGF0YQogICAgbXkgJEV4cG9ydERhdGEgPSAkT2JqZWN0QmFja2VuZE9iamVjdC0+RXhwb3J0RGF0YUdldCgKICAgICAgICAleyAkVGVzdC0+e1NvdXJjZUV4cG9ydERhdGF9LT57RXhwb3J0RGF0YUdldH0gfSwKICAgICk7CgogICAgaWYgKCAhJFRlc3QtPntSZWZlcmVuY2VFeHBvcnREYXRhfSApIHsKCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkRXhwb3J0RGF0YSwKICAgICAgICAgICAgIkV4cG9ydFRlc3QgJEV4cG9ydFRlc3RDb3VudDogRXhwb3J0RGF0YUdldCgpIC0gcmV0dXJuIGZhbHNlIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgaWYgKCByZWYgJEV4cG9ydERhdGEgbmUgJ0FSUkFZJyApIHsKCiAgICAgICAgIyBjaGVjayBhcnJheSByZWZlcmVuY2UKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgMCwKICAgICAgICAgICAgIkV4cG9ydFRlc3QgJEV4cG9ydFRlc3RDb3VudDogRXhwb3J0RGF0YUdldCgpIC0gcmV0dXJuIHZhbHVlIGlzIGFuIGFycmF5IHJlZmVyZW5jZSIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUOwogICAgfQoKICAgICMgY2hlY2sgbnVtYmVyIG9mIHJvd3MKICAgICRTZWxmLT5JcygKICAgICAgICBzY2FsYXIgQHskRXhwb3J0RGF0YX0sCiAgICAgICAgc2NhbGFyIEB7ICRUZXN0LT57UmVmZXJlbmNlRXhwb3J0RGF0YX0gfSwKICAgICAgICAiRXhwb3J0VGVzdCAkRXhwb3J0VGVzdENvdW50OiBFeHBvcnREYXRhR2V0KCkgLSBjb3JyZWN0IG51bWJlciBvZiByb3dzIiwKICAgICk7CgogICAgIyBjaGVjayBjb250ZW50IG9mIGV4cG9ydCBkYXRhCiAgICBteSAkQ291bnRlclJvdyA9IDA7CiAgICBST1c6CiAgICBmb3IgbXkgJEV4cG9ydFJvdyAoIEB7JEV4cG9ydERhdGF9ICkgewoKICAgICAgICAjIGV4dHJhY3QgcmVmZXJlbmNlIHJvdwogICAgICAgIG15ICRSZWZlcmVuY2VSb3cgPSAkVGVzdC0+e1JlZmVyZW5jZUV4cG9ydERhdGF9LT5bJENvdW50ZXJSb3ddOwoKICAgICAgICBpZiAoIHJlZiAkRXhwb3J0Um93IG5lICdBUlJBWScgfHwgcmVmICRSZWZlcmVuY2VSb3cgbmUgJ0FSUkFZJyApIHsKCiAgICAgICAgICAgICMgY2hlY2sgYXJyYXkgcmVmZXJlbmNlCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICJFeHBvcnRUZXN0ICRFeHBvcnRUZXN0Q291bnQ6IEV4cG9ydERhdGFHZXQoKSAtIGV4cG9ydCByb3cgYW5kIHJlZmVyZW5jZSByb3cgbWF0Y2hlZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IFRFU1Q7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIG51bWJlciBvZiBjb2x1bW5zCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHskRXhwb3J0Um93fSwKICAgICAgICAgICAgc2NhbGFyIEB7JFJlZmVyZW5jZVJvd30sCiAgICAgICAgICAgICJFeHBvcnRUZXN0ICRFeHBvcnRUZXN0Q291bnQ6IEV4cG9ydERhdGFHZXQoKSAtIGNvcnJlY3QgbnVtYmVyIG9mIGNvbHVtbnMiLAogICAgICAgICk7CgogICAgICAgIG15ICRDb3VudGVyQ29sdW1uID0gMDsKICAgICAgICBmb3IgbXkgJENlbGwgKCBAeyRFeHBvcnRSb3d9ICkgewoKICAgICAgICAgICAgIyBzZXQgY29udGVudCBpZiB2YWx1ZXMgYXJlIHVuZGVmCiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJENlbGwgKSB7CiAgICAgICAgICAgICAgICAkQ2VsbCA9ICdVTkRFRi11bml0dGVzdCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUmVmZXJlbmNlUm93LT5bJENvdW50ZXJDb2x1bW5dICkgewogICAgICAgICAgICAgICAgJFJlZmVyZW5jZVJvdy0+WyRDb3VudGVyQ29sdW1uXSA9ICdVTkRFRi11bml0dGVzdCc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY2hlY2sgY2VsbCBkYXRhCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRDZWxsLAogICAgICAgICAgICAgICAgJFJlZmVyZW5jZVJvdy0+WyRDb3VudGVyQ29sdW1uXSwKICAgICAgICAgICAgICAgICJFeHBvcnRUZXN0ICRFeHBvcnRUZXN0Q291bnQ6IEV4cG9ydERhdGFHZXQoKSAiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvdW50ZXJDb2x1bW4rKzsKICAgICAgICB9CgogICAgICAgICRDb3VudGVyUm93Kys7CiAgICB9Cn0KY29udGludWUgewogICAgJEV4cG9ydFRlc3RDb3VudCsrOwp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgZGVmaW5lIGdlbmVyYWwgSW1wb3J0RGF0YVNhdmUgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKbXkgQEltcG9ydERhdGFUZXN0cyA9ICgKCiAgICAjIEltcG9ydERhdGFTYXZlIGRvZXNuJ3QgY29udGFpbnMgYWxsIGRhdGEgKGNoZWNrIHJlcXVpcmVkIGF0dHJpYnV0ZXMpCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gW10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBJbXBvcnREYXRhU2F2ZSBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBJbXBvcnREYXRhU2F2ZSBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFtdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaW1wb3J0IGRhdGEgcm93IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIwXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gJycsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgZGF0YSByb3cgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjBdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiB7fSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIG5vIGV4aXN0aW5nIHRlbXBsYXRlIGlkIGlzIGdpdmVuIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWy0xXSArIDEsCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsnRHVtbXknXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIG5vIGNsYXNzIGlkIGlzIGdpdmVuIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIxXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWydEdW1teSddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaW52YWxpZCBjbGFzcyBpZCBpcyBnaXZlbiAoY2hlY2sgcmV0dXJuIGZhbHNlKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1stMV0gKyAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syMl0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsnRHVtbXknXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIG1hcHBpbmcgbGlzdCBpcyBlbXB0eSAoY2hlY2sgcmV0dXJuIGZhbHNlKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbJ0R1bW15J10sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBtb3JlIHRoYW4gb25lIGlkZW50aWZpZXIgd2l0aCB0aGUgc2FtZSBuYW1lIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICcxMjMnLCAnMzIxJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaWRlbnRpZmllciBpcyBlbXB0eSAoY2hlY2sgcmV0dXJuIGZhbHNlKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbJyddLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaWRlbnRpZmllciBpcyB1bmRlZiAoY2hlY2sgcmV0dXJuIGZhbHNlKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbdW5kZWZdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYm90aCBpZGVudGlmaWVycyBhcmUgZW1wdHkgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICcnLCAnJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYm90aCBpZGVudGlmaWVycyBhcmUgdW5kZWYgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbIHVuZGVmLCB1bmRlZiBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgb25lIGlkZW50aWZpZXJzIGlzIGVtcHR5LCBvbmUgaXMgdW5kZWYgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICcnLCB1bmRlZiBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgb25lIG9mIHRoZSBpZGVudGlmaWVycyBpcyBlbXB0eSAoY2hlY2sgcmV0dXJuIGZhbHNlKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syM10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJzEyMycsICcnIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBvbmUgb2YgdGhlIGlkZW50aWZpZXJzIGlzIHVuZGVmIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzIzXSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWyAnMTIzJywgdW5kZWYgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIG9uZSBvZiB0aGUgaWRlbnRpZmllcnMgaXMgZW1wdHkgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjNdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICcnLCAnMTIzJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgb25lIG9mIHRoZSBpZGVudGlmaWVycyBpcyBlbXB0eSAoY2hlY2sgcmV0dXJuIGZhbHNlKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syM10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgdW5kZWYsICcxMjMnIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBlbXB0eSBuYW1lIGlzIGdpdmVuIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJycsICdQcm9kdWN0aW9uJywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaW52YWxpZCBkZXBsb3ltZW50IHN0YXRlIGlzIGdpdmVuIChjaGVjayByZXR1cm4gZmFsc2UpCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNF0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCAxJywgJ0R1bW15JywgJ09wZXJhdGlvbmFsJyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaW52YWxpZCBpbmNpZGVudCBzdGF0ZSBpcyBnaXZlbiAoY2hlY2sgcmV0dXJuIGZhbHNlKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjRdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbICdVbml0VGVzdCAtIEltcG9ydHRlc3QgMicsICdQcm9kdWN0aW9uJywgJ0R1bW15JyBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGEgTkVXIGNvbmZpZyBpdGVtIG11c3QgYmUgY3JlYXRlZCkKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdDdXN0b21lcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RhdGUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlVGltZTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW50ZWdlcjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0QXJlYTE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCAzJywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTA2LTA1JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wOC0wNSAwNDo1MCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QzJywKICAgICAgICAgICAgICAgICAgICAnMycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QzIFRleHQzIFRlc3QzJywKICAgICAgICAgICAgICAgICAgICAiVGVzdDNcblRleHRBcnJheTNcblRlc3QzIiwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uTnVtYmVyID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCAzJywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQ3VzdG9tZXIxOjoxJyAgICAgICA9PiAnVW5pdFRlc3QnLAogICAgICAgICAgICAgICAgJ0RhdGUxOjoxJyAgICAgICAgICAgPT4gJzIwMDgtMDYtMDUnLAogICAgICAgICAgICAgICAgJ0RhdGVUaW1lMTo6MScgICAgICAgPT4gJzIwMDgtMDgtMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDN9LAogICAgICAgICAgICAgICAgJ0ludGVnZXIxOjoxJyAgICAgICAgPT4gJzMnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJ1Rlc3QzIFRleHQzIFRlc3QzJywKICAgICAgICAgICAgICAgICdUZXh0QXJlYTE6OjEnICAgICAgID0+ICJUZXN0M1xuVGV4dEFycmF5M1xuVGVzdDMiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGEgc2Vjb25kIE5FVyBjb25maWcgaXRlbSBtdXN0IGJlIGNyZWF0ZWQpCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wOS0wNScsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMTItMDUgMDQ6NTAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgJzQnLAogICAgICAgICAgICAgICAgICAgICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3Q0XG5UZXh0QXJyYXk0XG5UZXN0NCIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbk51bWJlciA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNCcsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTA5LTA1JywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTEyLTA1IDA0OjUwJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3Q0fSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICc0JywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0NCBUZXh0NCBUZXN0NCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdDRcblRleHRBcnJheTRcblRlc3Q0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gZmlyc3QgdGVzdCBjb25maWcgaXRlbSkKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI2XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAyJywKICAgICAgICAgICAgICAgICAgICAnUGlsb3QnLAogICAgICAgICAgICAgICAgICAgICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICAgICAnMjAwOC0wMi0wMicsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMDItMDIgMDM6NTknLAogICAgICAgICAgICAgICAgICAgICdUZXN0MicsCiAgICAgICAgICAgICAgICAgICAgJzInLAogICAgICAgICAgICAgICAgICAgICdUZXN0IFRleHQgVVBEQVRFMSBUZXN0JywKICAgICAgICAgICAgICAgICAgICAiVGVzdFxuVGV4dCBBcnJheSBVUERBVEUxXG5UZXN0IiwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uTnVtYmVyID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAxIFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUGlsb3QnLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICdDdXN0b21lcjE6OjEnICAgICAgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAnRGF0ZTE6OjEnICAgICAgICAgICA9PiAnMjAwOC0wMi0wMicsCiAgICAgICAgICAgICAgICAnRGF0ZVRpbWUxOjoxJyAgICAgICA9PiAnMjAwOC0wMi0wMiAwMzo1OScsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0Mn0sCiAgICAgICAgICAgICAgICAnSW50ZWdlcjE6OjEnICAgICAgICA9PiAnMicsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnVGVzdCBUZXh0IFVQREFURTEgVGVzdCcsCiAgICAgICAgICAgICAgICAnVGV4dEFyZWExOjoxJyAgICAgICA9PiAiVGVzdFxuVGV4dCBBcnJheSBVUERBVEUxXG5UZXN0IiwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChhIG5ldyB2ZXJzaW9uIG11c3QgYmUgYWRkZWQgdG8gZmlyc3QgdGVzdCBjb25maWcgaXRlbSBhZ2FpbikKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdOYW1lJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnQ3VzdG9tZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEYXRlMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGF0ZVRpbWUxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0ludGVnZXIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dEFyZWExOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI3XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBDb25maWdJdGVtIDEgVmVyc2lvbiAzJywKICAgICAgICAgICAgICAgICAgICAnUmVwYWlyJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCcsCiAgICAgICAgICAgICAgICAgICAgJzIwMDgtMDItMDMnLAogICAgICAgICAgICAgICAgICAgICcyMDA4LTAyLTAzIDAzOjU5JywKICAgICAgICAgICAgICAgICAgICAnVGVzdDMnLAogICAgICAgICAgICAgICAgICAgICczJywKICAgICAgICAgICAgICAgICAgICAnVGVzdCBUZXh0IFVQREFURTIgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3RcblRleHQgQXJyYXkgVVBEQVRFMlxuVGVzdCIsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbk51bWJlciA9PiAzLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDMnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgPT4gJ1JlcGFpcicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0N1c3RvbWVyMTo6MScgICAgICAgPT4gJ1VuaXRUZXN0JywKICAgICAgICAgICAgICAgICdEYXRlMTo6MScgICAgICAgICAgID0+ICcyMDA4LTAyLTAzJywKICAgICAgICAgICAgICAgICdEYXRlVGltZTE6OjEnICAgICAgID0+ICcyMDA4LTAyLTAzIDAzOjU5JywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QzfSwKICAgICAgICAgICAgICAgICdJbnRlZ2VyMTo6MScgICAgICAgID0+ICczJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdUZXN0IFRleHQgVVBEQVRFMiBUZXN0JywKICAgICAgICAgICAgICAgICdUZXh0QXJlYTE6OjEnICAgICAgID0+ICJUZXN0XG5UZXh0IEFycmF5IFVQREFURTJcblRlc3QiLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGEgbmV3IHZlcnNpb24gbXVzdCBiZSBhZGRlZCB0byB0aGlyZCB0ZXN0IGNvbmZpZyBpdGVtKQogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MicsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjddLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjIgKDIpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpJywKICAgICAgICAgICAgICAgICAgICAnTWFpbjIgKDEpIE1haW4yU3ViMSAoMSknLAogICAgICAgICAgICAgICAgICAgICdNYWluMiAoMSkgTWFpbjJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAgICAgJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uTnVtYmVyID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjInICAgICAgICAgICAgICAgICAgICAgID0+ICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMSAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoyJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgPT4gJ01haW4xICgxKSBNYWluMVN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJyA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgID0+ICdNYWluMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnID0+ICdNYWluMiAoMSkgTWFpbjJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMjo6MTo6TWFpbjJTdWIyOjoyJyA9PiAnTWFpbjIgKDEpIE1haW4yU3ViMiAoMiknLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKHNwZWNpYWwgY2hhcmFjdGVyIGNoZWNrcykKICAgICMgSW4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicgMTYgQXR0cmlidXRlcyB3ZXJlIGltcG9ydGVkLAogICAgIyBzbyB0aGVyZSB3aWxsIGJlIDggbGluZ2VyaW5nIGF0dHJpYnV0ZXMuCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzFdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4xOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MTo6TWFpbjFTdWIyOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syN10sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgICAgICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAgICAgIlRlc3RcblRlc3RcdFRlc3QiLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25OdW1iZXIgPT4gMywKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMycsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjEnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJyIiOzs6Oi4uLS1fXyMjJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxJyAgICAgICAgICAgICAgICAgICAgICA9PiAnVGVzdDs6X8KwXiEiwqckJSYvKCk9P8K0YCorVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4gJz48QH5cJ317W11cXCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3Q7Ol/CsF4hIsKnJCUmLygpPT/CtGAqK1Rlc3QnLAogICAgICAgICAgICAgICAgJ01haW4yOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICciIjs7OjouLi0tX18jIycsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMTo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3QgVGVzdCcsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gIlRlc3RcblRlc3RcdFRlc3QiLAoKICAgICAgICAgICAgICAgICMgbGluZ2VyaW5nIGZyb20gJ1VuaXRUZXN0IC0gQ29uZmlnSXRlbSAzIFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMSkgTWFpbjFTdWIxU3ViU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjMnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDMpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyJyAgICAgICAgICAgICAgICAgICAgICA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjE6OjEnID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjEgKDEpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIyOjoxJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIyICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MicgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjI6OjInID0+ICdNYWluMSAoMSkgTWFpbjFTdWIyICgyKScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MicgPT4gJ01haW4yICgxKSBNYWluMlN1YjIgKDIpJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChVVEYtOCBjaGVja3MpCiAgICAjIEluICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInIDE2IEF0dHJpYnV0ZXMgd2VyZSBpbXBvcnRlZCwKICAgICMgc28gdGhlcmUgd2lsbCBiZSA4IGxpbmdlcmluZyBhdHRyaWJ1dGVzLgogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdNYWluMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MTo6TWFpbjFTdWIxU3ViU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnTWFpbjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ01haW4yOjoxOjpNYWluMlN1YjI6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjddLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzJdLAogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDQnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICfOqyDOtCDOuycsCiAgICAgICAgICAgICAgICAgICAgJ8+AIM+HIM+YJywKICAgICAgICAgICAgICAgICAgICAnz7ogz7Egz64nLAogICAgICAgICAgICAgICAgICAgICfJryDKkyDKoCcsCiAgICAgICAgICAgICAgICAgICAgJ8qsIMqvJywKICAgICAgICAgICAgICAgICAgICAn0Lkg0YQg0YknLAogICAgICAgICAgICAgICAgICAgICfRmiDRkScsCiAgICAgICAgICAgICAgICAgICAgJ9GsINGmJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uTnVtYmVyID0+IDQsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDQnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ01haW4xOjoxJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICfOqyDOtCDOuycsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ8+AIM+HIM+YJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjoxJyA9PiAnz7ogz7Egz64nLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjI6OjEnID0+ICfJryDKkyDKoCcsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ8qsIMqvJywKICAgICAgICAgICAgICAgICdNYWluMjo6MScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAn0Lkg0YQg0YknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjE6OjEnICAgICAgICAgICAgICAgICAgICAgID0+ICfRmiDRkScsCiAgICAgICAgICAgICAgICAnTWFpbjI6OjE6Ok1haW4yU3ViMjo6MScgICAgICAgICAgICAgICAgICAgICAgPT4gJ9GsINGmJywKCiAgICAgICAgICAgICAgICAjIGxpbmdlcmluZyBmcm9tICdVbml0VGVzdCAtIENvbmZpZ0l0ZW0gMyBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjE6Ok1haW4xU3ViMVN1YlN1YjE6OjInID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDEpIE1haW4xU3ViMVN1YlN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoxOjpNYWluMVN1YjFTdWJTdWIxOjozJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgxKSBNYWluMVN1YjFTdWJTdWIxICgzKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6MicgICAgICAgICAgICAgICAgICAgICAgPT4gJ01haW4xICgxKSBNYWluMVN1YjEgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIxOjoyOjpNYWluMVN1YjFTdWJTdWIxOjoxJyA9PgogICAgICAgICAgICAgICAgICAgICdNYWluMSAoMSkgTWFpbjFTdWIxICgyKSBNYWluMVN1YjFTdWJTdWIxICgxKScsCiAgICAgICAgICAgICAgICAnTWFpbjE6OjE6Ok1haW4xU3ViMTo6Mjo6TWFpbjFTdWIxU3ViU3ViMjo6MScgPT4KICAgICAgICAgICAgICAgICAgICAnTWFpbjEgKDEpIE1haW4xU3ViMSAoMikgTWFpbjFTdWIxU3ViU3ViMiAoMSknLAogICAgICAgICAgICAgICAgJ01haW4xOjoxOjpNYWluMVN1YjE6OjI6Ok1haW4xU3ViMVN1YlN1YjI6OjInID0+CiAgICAgICAgICAgICAgICAgICAgJ01haW4xICgxKSBNYWluMVN1YjEgKDIpIE1haW4xU3ViMVN1YlN1YjIgKDIpJywKICAgICAgICAgICAgICAgICdNYWluMTo6MTo6TWFpbjFTdWIyOjoyJyA9PiAnTWFpbjEgKDEpIE1haW4xU3ViMiAoMiknLAogICAgICAgICAgICAgICAgJ01haW4yOjoxOjpNYWluMlN1YjI6OjInID0+ICdNYWluMiAoMSkgTWFpbjJTdWIyICgyKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhIHNpbXBsZSBpbXBvcnQgZm9yIHRlc3RpbmcgdGhlIG92ZXJyaWRpbmcgYmVoYXZpb3Igb2YgZW1wdHkgdmFsdWVzCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJ0ltcG9ydHRlc3QgNSBmb3IgYmVoYXZpb3Igb2YgZW1wdHkgdmFsdWVzJywKICAgICAgICAgICAgICAgICAgICAnVGVzdDEnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIFZlcnNpb25OdW1iZXIgPT4gMSwKICAgICAgICAgICAgTGFzdFZlcnNpb24gICA9PiB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdUZXh0MTo6MScgICAgICAgICAgID0+ICdJbXBvcnR0ZXN0IDUgZm9yIGJlaGF2aW9yIG9mIGVtcHR5IHZhbHVlcycsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgYW4gZW1wdHkgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9uCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uTnVtYmVyID0+IDEsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnSW1wb3J0dGVzdCA1IGZvciBiZWhhdmlvciBvZiBlbXB0eSB2YWx1ZXMnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaW1wb3J0IHVuZGVmIGZvciBUZXh0MSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbgogICAgIyBubyBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJ29uJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbk51bWJlciA9PiAxLAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJ0ltcG9ydHRlc3QgNSBmb3IgYmVoYXZpb3Igb2YgZW1wdHkgdmFsdWVzJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QxfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGltcG9ydCBhbiBlbXB0eSB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb2ZmCiAgICAjIGEgbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uTnVtYmVyID0+IDIsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnJywKICAgICAgICAgICAgICAgICdHZW5lcmFsQ2F0YWxvZzE6OjEnID0+ICRHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNle1Rlc3QxfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGltcG9ydCBhIHNpbmdsZSBzcGFjZSB2YWx1ZSBmb3IgVGV4dDEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb24KICAgICMgYSBuZXcgdmVyc2lvbiBzaG91bGQgYmUgY3JlYXRlZAogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnICcsCiAgICAgICAgICAgICAgICAgICAgJ1Rlc3QxJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uTnVtYmVyID0+IDMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnICcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgdGhlIHN0cmluZyAnMCcgdmFsdWUgZm9yIFRleHQxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9uCiAgICAjIGEgbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgJzAnLAogICAgICAgICAgICAgICAgICAgICdUZXN0MScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbk51bWJlciA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBHZW5lcmFsQ2F0YWxvZzEsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb24KICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uTnVtYmVyID0+IDQsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9uCiAgICAjIHRoZSBpbXBvcnQgc2hvdWxkIGZhaWwKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnbm9uLWV4aXN0ZW50IGdlbmVyYWwgY2F0YWxvZyBlbnRyeScsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgR2VuZXJhbENhdGFsb2cxLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9mZgogICAgIyB0aGUgaW1wb3J0IHNob3VsZCBmYWlsCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgTWFwcGluZ09iamVjdERhdGEgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIElkZW50aWZpZXIgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdEZXBsU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnVGV4dDE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0dlbmVyYWxDYXRhbG9nMTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICAgICBJbXBvcnREYXRhU2F2ZSA9PiB7CiAgICAgICAgICAgICAgICBUZW1wbGF0ZUlEICAgID0+ICRUZW1wbGF0ZUlEc1syNV0sCiAgICAgICAgICAgICAgICBJbXBvcnREYXRhUm93ID0+IFsKICAgICAgICAgICAgICAgICAgICAnVW5pdFRlc3QgLSBJbXBvcnR0ZXN0IDUnLAogICAgICAgICAgICAgICAgICAgICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICdub24tZXhpc3RlbnQgZ2VuZXJhbCBjYXRhbG9nIGVudHJ5JywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGltcG9ydCBhbiBlbXB0eSB2YWx1ZSBmb3IgRGVwbFN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9uCiAgICAjIG5vIG5ldyB2ZXJzaW9uIHNob3VsZCBiZSBjcmVhdGVkCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBWZXJzaW9uTnVtYmVyID0+IDQsCiAgICAgICAgICAgIExhc3RWZXJzaW9uICAgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnVGV4dDE6OjEnICAgICAgICAgICA9PiAnMCcsCiAgICAgICAgICAgICAgICAnR2VuZXJhbENhdGFsb2cxOjoxJyA9PiAkR2VuZXJhbENhdGFsb2dMaXN0UmV2ZXJzZXtUZXN0MX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbXBvcnQgYW4gaW52YWxpZCB2YWx1ZSBmb3IgRGVwbFN0YXRlLCB3aXRoIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgdHVybmVkIG9uCiAgICAjIGFuIGVycm9yIHNob3VsZCBiZSBnZW5lcmF0ZWQKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaW1wb3J0IGFuIGVtcHR5IHZhbHVlIGZvciBJbmNpU3RhdGUsIHdpdGggRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyB0dXJuZWQgb24KICAgICMgbm8gbmV3IHZlcnNpb24gc2hvdWxkIGJlIGNyZWF0ZWQKICAgIHsKICAgICAgICBTb3VyY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgT2JqZWN0RGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzID0+ICdvbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1RleHQxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdHZW5lcmFsQ2F0YWxvZzE6OjEnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VJbXBvcnREYXRhID0+IHsKICAgICAgICAgICAgVmVyc2lvbk51bWJlciA9PiA0LAogICAgICAgICAgICBMYXN0VmVyc2lvbiAgID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ1RleHQxOjoxJyAgICAgICAgICAgPT4gJzAnLAogICAgICAgICAgICAgICAgJ0dlbmVyYWxDYXRhbG9nMTo6MScgPT4gJEdlbmVyYWxDYXRhbG9nTGlzdFJldmVyc2V7VGVzdDF9LAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaW1wb3J0IGFuIGludmFsaWQgdmFsdWUgZm9yIEluY2lTdGF0ZSwgd2l0aCBFbXB0eUZpZWxkc0xlYXZlVGhlT2xkVmFsdWVzIHR1cm5lZCBvbgogICAgIyBhbiBlcnJvciBzaG91bGQgYmUgZ2VuZXJhdGVkCiAgICB7CiAgICAgICAgU291cmNlSW1wb3J0RGF0YSA9PiB7CiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgRW1wdHlGaWVsZHNMZWF2ZVRoZU9sZFZhbHVlcyA9PiAnb24nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBNYXBwaW5nT2JqZWN0RGF0YSA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgSWRlbnRpZmllciA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnSW5jaVN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdUZXh0MTo6MScsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnR2VuZXJhbENhdGFsb2cxOjoxJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEltcG9ydERhdGFTYXZlID0+IHsKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgICAgPT4gJFRlbXBsYXRlSURzWzI1XSwKICAgICAgICAgICAgICAgIEltcG9ydERhdGFSb3cgPT4gWwogICAgICAgICAgICAgICAgICAgICdVbml0VGVzdCAtIEltcG9ydHRlc3QgNScsCiAgICAgICAgICAgICAgICAgICAgJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGluY2lkZW50IHN0YXRlJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIEltcG9ydCB3aXRob3V0IHJlcXVpcmVkIGF0dHJpYnV0ZSAnVHlwZScsIGFuIGVycm9yIHNob3VsZCBiZSBnZW5lcmF0ZWQgKHNlZSBidWcjMTQwOTgpLgogICAgewogICAgICAgIFNvdXJjZUltcG9ydERhdGEgPT4gewogICAgICAgICAgICBPYmplY3REYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgIEVtcHR5RmllbGRzTGVhdmVUaGVPbGRWYWx1ZXMgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICAgICBJZGVudGlmaWVyID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEtleSA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ID0+ICdJbmNpU3RhdGUnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgSW1wb3J0RGF0YVNhdmUgPT4gewogICAgICAgICAgICAgICAgVGVtcGxhdGVJRCAgICA9PiAkVGVtcGxhdGVJRHNbMjVdLAogICAgICAgICAgICAgICAgSW1wb3J0RGF0YVJvdyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSW1wb3J0dGVzdCA1JywKICAgICAgICAgICAgICAgICAgICAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBydW4gZ2VuZXJhbCBFeHBvcnREYXRhR2V0IHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRJbXBvcnRUZXN0Q291bnQgPSAxOwpURVNUOgpmb3IgbXkgJFRlc3QgKEBJbXBvcnREYXRhVGVzdHMpIHsKCiAgICAjIGNoZWNrIFNvdXJjZUltcG9ydERhdGEgYXR0cmlidXRlCiAgICBpZiAoICEkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IHx8IHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJJbXBvcnRUZXN0ICRJbXBvcnRUZXN0Q291bnQ6IE5vIFNvdXJjZUltcG9ydERhdGEgZm91bmQgZm9yIHRoaXMgdGVzdC4iCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUOwogICAgfQoKICAgICMgc2V0IHRoZSBvYmplY3QgZGF0YQogICAgaWYgKAogICAgICAgICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntPYmplY3REYXRhfQogICAgICAgICYmIHJlZiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57T2JqZWN0RGF0YX0gZXEgJ0hBU0gnCiAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9CiAgICAgICAgKQogICAgewoKICAgICAgICAjIHNhdmUgb2JqZWN0IGRhdGEKICAgICAgICAkSW1wb3J0RXhwb3J0T2JqZWN0LT5PYmplY3REYXRhU2F2ZSgKICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgIE9iamVjdERhdGEgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e09iamVjdERhdGF9LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNldCB0aGUgbWFwcGluZyBvYmplY3QgZGF0YQogICAgaWYgKAogICAgICAgICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntNYXBwaW5nT2JqZWN0RGF0YX0KICAgICAgICAmJiByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e01hcHBpbmdPYmplY3REYXRhfSBlcSAnQVJSQVknCiAgICAgICAgJiYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9CiAgICAgICAgKQogICAgewoKICAgICAgICAjIGRlbGV0ZSBhbGwgZXhpc3RpbmcgbWFwcGluZyBkYXRhCiAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0RlbGV0ZSgKICAgICAgICAgICAgVGVtcGxhdGVJRCA9PiAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57SW1wb3J0RGF0YVNhdmV9LT57VGVtcGxhdGVJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0aGUgbWFwcGluZyBvYmplY3Qgcm93cwogICAgICAgIE1BUFBJTkdPQkpFQ1REQVRBOgogICAgICAgIGZvciBteSAkTWFwcGluZ09iamVjdERhdGEgKCBAeyAkVGVzdC0+e1NvdXJjZUltcG9ydERhdGF9LT57TWFwcGluZ09iamVjdERhdGF9IH0gKSB7CgogICAgICAgICAgICAjIGFkZCBhIG5ldyBtYXBwaW5nIHJvdwogICAgICAgICAgICBteSAkTWFwcGluZ0lEID0gJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ0FkZCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlSUQgPT4gJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfS0+e0ltcG9ydERhdGFTYXZlfS0+e1RlbXBsYXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhZGQgdGhlIG1hcHBpbmcgb2JqZWN0IGRhdGEKICAgICAgICAgICAgJEltcG9ydEV4cG9ydE9iamVjdC0+TWFwcGluZ09iamVjdERhdGFTYXZlKAogICAgICAgICAgICAgICAgTWFwcGluZ0lEICAgICAgICAgPT4gJE1hcHBpbmdJRCwKICAgICAgICAgICAgICAgIE1hcHBpbmdPYmplY3REYXRhID0+ICRNYXBwaW5nT2JqZWN0RGF0YSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgaW1wb3J0IGRhdGEgc2F2ZQogICAgbXkgKCAkQ29uZmlnSXRlbUlELCAkUmV0Q29kZSApID0gJE9iamVjdEJhY2tlbmRPYmplY3QtPkltcG9ydERhdGFTYXZlKAogICAgICAgICV7ICRUZXN0LT57U291cmNlSW1wb3J0RGF0YX0tPntJbXBvcnREYXRhU2F2ZX0gfSwKICAgICAgICBDb3VudGVyID0+ICRJbXBvcnRUZXN0Q291bnQsCiAgICApOwoKICAgIGlmICggISRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX0gKSB7CgogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIkltcG9ydFRlc3QgJEltcG9ydFRlc3RDb3VudDogSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBubyBDb25maWdJdGVtSUQiCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRSZXRDb2RlLAogICAgICAgICAgICAiSW1wb3J0VGVzdCAkSW1wb3J0VGVzdENvdW50OiBJbXBvcnREYXRhU2F2ZSgpIC0gcmV0dXJuIG5vIFJldENvZGUiCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUOwogICAgfQoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgIkltcG9ydFRlc3QgJEltcG9ydFRlc3RDb3VudDogSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBDb25maWdJdGVtSUQiCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFJldENvZGUsCiAgICAgICAgIkltcG9ydFRlc3QgJEltcG9ydFRlc3RDb3VudDogSW1wb3J0RGF0YVNhdmUoKSAtIHJldHVybiBSZXRDb2RlIgogICAgKTsKCiAgICAjIGdldCB0aGUgdmVyc2lvbiBsaXN0CiAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApIC8vIFtdOwoKICAgICMgY2hlY2sgbnVtYmVyIG9mIHZlcnNpb25zCiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyIEB7JFZlcnNpb25MaXN0fSwKICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57VmVyc2lvbk51bWJlcn0gfHwgMCwKICAgICAgICAiSW1wb3J0VGVzdCAkSW1wb3J0VGVzdENvdW50OiBJbXBvcnREYXRhU2F2ZSgpIC0gY29ycmVjdCBudW1iZXIgb2YgdmVyc2lvbnMiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGFzdCB2ZXJzaW9uCiAgICBteSAkVmVyc2lvbkRhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBYTUxEYXRhR2V0ICAgPT4gMSwKICAgICk7CgogICAgIyB0cmFuc2xhdGUgeG1sZGF0YSBpbiBhIDJkIGhhc2gKICAgIG15ICVYTUxIYXNoID0gJFhNTE9iamVjdC0+WE1MSGFzaDJEKAogICAgICAgIFhNTEhhc2ggPT4gJFZlcnNpb25EYXRhLT57WE1MRGF0YX0sCiAgICApOwoKICAgICMgY2xlYW4gdGhlIHhtbCBoYXNoCiAgICBLRVk6CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlWE1MSGFzaCApIHsKCiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSA9fiBteyBceydDb250ZW50J1x9IFx6IH14bXM7CgogICAgICAgIGRlbGV0ZSAkWE1MSGFzaHskS2V5fTsKICAgIH0KCiAgICAjIGNoZWNrIGdlbmVyYWwgZWxlbWVudHMKICAgIEVMRU1FTlQ6CiAgICBmb3IgbXkgJEVsZW1lbnQgKHF3KE51bWJlciBOYW1lIERlcGxTdGF0ZSBJbmNpU3RhdGUpKSB7CgogICAgICAgIG5leHQgRUxFTUVOVCBpZiAhZXhpc3RzICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX0tPntMYXN0VmVyc2lvbn0tPnskRWxlbWVudH07CgogICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgIGlmICggIWRlZmluZWQgJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfS0+e0xhc3RWZXJzaW9ufS0+eyRFbGVtZW50fSApIHsKICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfS0+e0xhc3RWZXJzaW9ufS0+eyRFbGVtZW50fSA9ICdVTkRFRi11bml0dGVzdCc7CiAgICAgICAgfQogICAgICAgIGlmICggIWRlZmluZWQgJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfS0+e0xhc3RWZXJzaW9ufS0+eyRFbGVtZW50fSApIHsKICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfS0+e0xhc3RWZXJzaW9ufS0+eyRFbGVtZW50fSA9ICdVTkRFRi11bml0dGVzdCc7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGVsZW1lbnQKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRWZXJzaW9uRGF0YS0+eyRFbGVtZW50fSwKICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfS0+e0xhc3RWZXJzaW9ufS0+eyRFbGVtZW50fSwKICAgICAgICAgICAgIkltcG9ydFRlc3QgJEltcG9ydFRlc3RDb3VudDogSW1wb3J0RGF0YVNhdmUoKSAkRWxlbWVudCBpcyBpZGVudGljYWwiLAogICAgICAgICk7CgogICAgICAgIGRlbGV0ZSAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEVsZW1lbnR9OwogICAgfQoKICAgICMgY2hlY2sgbnVtYmVyIG9mIFhNTCBlbGVtZW50cwogICAgJFNlbGYtPklzKAogICAgICAgIHNjYWxhciBrZXlzICVYTUxIYXNoLAogICAgICAgIHNjYWxhciBrZXlzICV7ICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX0tPntMYXN0VmVyc2lvbn0gfSwKICAgICAgICAiSW1wb3J0VGVzdCAkSW1wb3J0VGVzdENvdW50OiBJbXBvcnREYXRhU2F2ZSgpIC0gY29ycmVjdCBudW1iZXIgb2YgWE1MIGVsZW1lbnRzIiwKICAgICk7CgogICAgIyBjaGVjayBYTUwgZWxlbWVudHMKICAgIEVMRU1FTlQ6CiAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259IH0gKSB7CgogICAgICAgICMgZHVwbGljYXRlIGtleQogICAgICAgIG15ICRYTUxLZXkgPSAkS2V5OwoKICAgICAgICAjIHByZXBhcmUga2V5CiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIHdoaWxlICggJFhNTEtleSA9fiBteyA6OiB9eG1zICkgewoKICAgICAgICAgICAgaWYgKCAkQ291bnRlciAlIDIgKSB7CiAgICAgICAgICAgICAgICAkWE1MS2V5ID1+IHN7IDo6IH17XVx7J314bXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkWE1MS2V5ID1+IHN7IDo6IH17J1x9W314bXM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgfQoKICAgICAgICBuZXh0IEVMRU1FTlQgaWYgIWV4aXN0cyAkWE1MSGFzaHsgJ1sxXXtcJ1ZlcnNpb25cJ31bMV17XCcnIC4gJFhNTEtleSAuICdde1wnQ29udGVudFwnfScgfTsKCiAgICAgICAgIyBzZXQgY29udGVudCBpZiB2YWx1ZXMgYXJlIHVuZGVmCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkWE1MSGFzaHsgJ1sxXXtcJ1ZlcnNpb25cJ31bMV17XCcnIC4gJFhNTEtleSAuICdde1wnQ29udGVudFwnfScgfSApIHsKICAgICAgICAgICAgJFhNTEhhc2h7ICdbMV17XCdWZXJzaW9uXCd9WzFde1wnJyAuICRYTUxLZXkgLiAnXXtcJ0NvbnRlbnRcJ30nIH0gPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgIH0KICAgICAgICBpZiAoICFkZWZpbmVkICRUZXN0LT57UmVmZXJlbmNlSW1wb3J0RGF0YX0tPntMYXN0VmVyc2lvbn0tPnskS2V5fSApIHsKICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VJbXBvcnREYXRhfS0+e0xhc3RWZXJzaW9ufS0+eyRLZXl9ID0gJ1VOREVGLXVuaXR0ZXN0JzsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgWE1MIGVsZW1lbnQKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRYTUxIYXNoeyAnWzFde1wnVmVyc2lvblwnfVsxXXtcJycgLiAkWE1MS2V5IC4gJ117XCdDb250ZW50XCd9JyB9LAogICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZUltcG9ydERhdGF9LT57TGFzdFZlcnNpb259LT57JEtleX0sCiAgICAgICAgICAgICJJbXBvcnRUZXN0ICRJbXBvcnRUZXN0Q291bnQ6IEltcG9ydERhdGFTYXZlKCkgJEtleSBpcyBpZGVudGljYWwiLAogICAgICAgICk7CiAgICB9Cn0KY29udGludWUgewogICAgJEltcG9ydFRlc3RDb3VudCsrOwp9CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/ITSMConfigItem.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgpteSAkREJPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwpteSAkTGlua09iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwpteSAkVXNlck9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZQpteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgcGVyZm9ybSBDb25maWdJdGVtQ291bnQgdG8gZmlsbCB0aGUgZW1wdHkgZmllbGRzCiRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQ291bnQoKTsKCiMgY3JlYXRlIG5lZWRlZCB1c2VycwpteSBAVXNlcklEczsKewoKICAgICMgZGlzYWJsZSBlbWFpbCBjaGVja3MgdG8gY3JlYXRlIG5ldyB1c2VyCiAgICBteSAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZyA9ICRDb25maWdPYmplY3QtPkdldCgnQ2hlY2tFbWFpbEFkZHJlc3NlcycpIHx8IDE7CiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwoKICAgIGZvciBteSAkQ291bnRlciAoIDEgLi4gMyApIHsKCiAgICAgICAgIyBjcmVhdGUgbmV3IHVzZXJzIGZvciB0aGUgdGVzdHMKICAgICAgICBteSAkVXNlcklEID0gJFVzZXJPYmplY3QtPlVzZXJBZGQoCiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gJ0lUU01Db25maWdJdGVtJyAuICRDb3VudGVyLAogICAgICAgICAgICBVc2VyTGFzdG5hbWUgID0+ICdVbml0VGVzdCcsCiAgICAgICAgICAgIFVzZXJMb2dpbiAgICAgPT4gJ1VuaXRUZXN0LUlUU01Db25maWdJdGVtLScgLiAkQ291bnRlciAuICRSYW5kb21JRCwKICAgICAgICAgICAgVXNlckVtYWlsICAgICA9PiAnVW5pdFRlc3QtSVRTTUNvbmZpZ0l0ZW0tJyAuICRDb3VudGVyIC4gJ0Bsb2NhbGhvc3QnLAogICAgICAgICAgICBWYWxpZElEICAgICAgID0+IDEsCiAgICAgICAgICAgIENoYW5nZVVzZXJJRCAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBVc2VySURzLCAkVXNlcklEOwogICAgfQoKICAgICMgcmVzdG9yZSBvcmlnaW5hbCBlbWFpbCBjaGVjayBwYXJhbQogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgICAgICBWYWx1ZSA9PiAkQ2hlY2tFbWFpbEFkZHJlc3Nlc09yZywKICAgICk7Cn0KCm15ICRHZW5lcmFsQ2F0YWxvZ0NsYXNzID0gJ1VuaXRUZXN0JyAuICRSYW5kb21JRDsKCiMgYWRkIGEgZ2VuZXJhbCBjYXRhbG9nIHRlc3QgbGlzdApmb3IgbXkgJE5hbWUgKHF3KFRlc3QxIFRlc3QyIFRlc3QzIFRlc3Q0KSkgewoKICAgICMgYWRkIGEgbmV3IGl0ZW0KICAgIG15ICRJdGVtSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICAgICAgQ2xhc3MgICA9PiAkR2VuZXJhbENhdGFsb2dDbGFzcywKICAgICAgICBOYW1lICAgID0+ICROYW1lLAogICAgICAgIFZhbGlkSUQgPT4gMSwKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgaXRlbSBpZAogICAgaWYgKCAhJEl0ZW1JRCApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGdlbmVyYWwgY2F0YWxvZyBpdGVtLiIsCiAgICAgICAgKTsKICAgIH0KfQoKIyBkZWZpbmUgdGhlIGZpcnN0IHRlc3QgZGVmaW5pdGlvbiAoYWxsIHByb3ZpZGVkIGRhdGEgdHlwZXMpCm15IEBDb25maWdJdGVtUGVybERlZmluaXRpb25zOwokQ29uZmlnSXRlbVBlcmxEZWZpbml0aW9uc1swXSA9ICIgWwogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnQ3VzdG9tZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdDdXN0b21lcicsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnRGF0ZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEYXRlJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdEYXRlVGltZTEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0RhdGUgVGltZSAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ0RhdGVUaW1lJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICA9PiAnRHVtbXkxJywKICAgICAgICBOYW1lICA9PiAnRHVtbXkgMScsCiAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEdW1teScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnR2VuZXJhbENhdGFsb2cxJywKICAgICAgICBOYW1lICAgICAgID0+ICdHZW5lcmFsQ2F0YWxvZyAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgID0+ICdHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgICAgIENsYXNzID0+ICckR2VuZXJhbENhdGFsb2dDbGFzcycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnSW50ZWdlcjEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0ludGVnZXIgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdUZXh0MScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dCAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ1RleHRBcmVhMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnVGV4dEFyZWEgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgfSwKICAgIH0sCl0gIjsKCiMgZGVmaW5lIHRoZSBzZWNvbmQgdGVzdCBkZWZpbml0aW9uIChzdWIgZGF0YSB0eXBlcykKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMV0gPSAiIFsKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgIH0sCiAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgU3ViID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxJywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMScsCiAgICAgICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgQ291bnRNYXggPT4gMTAsCiAgICAgICAgICAgICAgICBTdWIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMScsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICA9PiAnTWFpbjFTdWIxU3ViU3ViMicsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ01haW4gMSBTdWIgMSBTdWJTdWIgMicsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXh0QXJlYScsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMVN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAxIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMicsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICB9LAogICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgIFN1YiA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ01haW4yU3ViMScsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICdNYWluIDIgU3ViIDEnLAogICAgICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDUwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdNYWluMlN1YjInLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnTWFpbiAyIFN1YiAyJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1heCA9PiAxMCwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKXSAiOwoKIyBkZWZpbmUgdGhlIHRoaXJkIHRlc3QgZGVmaW5pdGlvbiAoZXNwZWNpYWxseSBmb3Igc2VhcmNoIHRlc3RzIHdpdGggWE1MRGF0YSkKJENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnNbMl0gPSAiIFsKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdDdXN0b21lcjEnLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0N1c3RvbWVyIDEnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAnQ3VzdG9tZXInLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0RhdGUxJywKICAgICAgICBOYW1lICAgICAgID0+ICdEYXRlIDEnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSA9PiAnRGF0ZScsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnRGF0ZVRpbWUxJywKICAgICAgICBOYW1lICAgICAgID0+ICdEYXRlIFRpbWUgMScsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlID0+ICdEYXRlVGltZScsCiAgICAgICAgfSwKICAgIH0sCl0gIjsKCiMgZGVmaW5lIHRoZSBmb3VydGggdGVzdCBkZWZpbml0aW9uIChvbmx5IGZvciBzZWFyY2ggdGVzdHMpCiRDb25maWdJdGVtUGVybERlZmluaXRpb25zWzNdID0gIiBbCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnQ3VzdG9tZXIxJywKICAgICAgICBOYW1lICAgICAgID0+ICdDdXN0b21lciAxJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ0N1c3RvbWVyJywKICAgICAgICB9LAogICAgfSwKXSAiOwoKbXkgJFlBTUxPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpOwoKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9uczsKZm9yIG15ICRQZXJsRGVmaW5pdGlvbiAoQENvbmZpZ0l0ZW1QZXJsRGVmaW5pdGlvbnMpIHsKICAgIG15ICRZQU1MRGVmaW5pdGlvbiA9ICRZQU1MT2JqZWN0LT5EdW1wKAogICAgICAgIERhdGEgPT4gZXZhbCAkUGVybERlZmluaXRpb24sICAgICMjIG5vIGNyaXRpYwogICAgKTsKICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9ucywgJFlBTUxEZWZpbml0aW9uOwp9CgojIGFkZCB0aGUgdGVzdCBjbGFzc2VzCm15IEBDb25maWdJdGVtQ2xhc3NJRHM7Cm15IEBDb25maWdJdGVtQ2xhc3NlczsKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzOwpmb3IgbXkgJERlZmluaXRpb24gKEBDb25maWdJdGVtRGVmaW5pdGlvbnMpIHsKCiAgICAjIGdlbmVyYXRlIGEgcmFuZG9tIG5hbWUKICAgIG15ICRDbGFzc05hbWUgPSAnVW5pdFRlc3QnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAjIGFkZCBhbiB1bml0dGVzdCBjb25maWcgaXRlbSBjbGFzcwogICAgbXkgJENsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgIE5hbWUgICAgPT4gJENsYXNzTmFtZSwKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIGNsYXNzIGlkCiAgICBpZiAoICEkQ2xhc3NJRCApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDbGFzc0lEOwogICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkQ2xhc3NOYW1lOwoKICAgICMgYWRkIGEgZGVmaW5pdGlvbiB0byB0aGUgY2xhc3MKICAgIG15ICREZWZpbml0aW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIGRlZmluaXRpb24gaWQKICAgIGlmICggISREZWZpbml0aW9uSUQgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiQ2FuJ3QgYWRkIG5ldyBjb25maWcgaXRlbSBkZWZpbml0aW9uLiIsCiAgICAgICAgKTsKICAgIH0KCiAgICBwdXNoIEBDb25maWdJdGVtRGVmaW5pdGlvbklEcywgJERlZmluaXRpb25JRDsKfQoKIyB0ZXN0IERlZmluaXRpb25MaXN0IGZvciB0aG9zZSBzaW1wbGUgY2FzZXMKbXkgJENvdW50ZXIgPSAwOwpmb3IgbXkgJENsYXNzSUQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgIG15ICREZWZpbml0aW9uTGlzdFJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCgKICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgKTsKCiAgICAjIGV4cGVjdCBhIHNpbmdsZSBkZWZpbml0aW9uIHBlciBjb25maWcgaXRlbSBjbGFzcwogICAgJFNlbGYtPklzKAogICAgICAgIHNjYWxhciBAeyREZWZpbml0aW9uTGlzdFJlZn0sCiAgICAgICAgMSwKICAgICAgICAiRGVmaW5pdGlvbkxpc3QoKSBmb3IgY2xhc3MgaWQgJENsYXNzSUQ6IGdvdCBhIHNpbmdsZSByZXN1bHQiLAogICAgKTsKCiAgICAjIGV4cGVjdCB0aGUgcmVtZW1iZXJlZCBkZWZpbml0aW9uIGlkIGluIHRoZSBmaXJzdCBkZWZpbml0aW9uCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJERlZmluaXRpb25MaXN0UmVmLT5bMF0tPntEZWZpbml0aW9uSUR9LAogICAgICAgICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1skQ291bnRlcl0sCiAgICAgICAgIkRlZmluaXRpb25MaXN0KCkgZm9yIGNsYXNzIGlkICRDbGFzc0lEOiBnb3QgZXhwZWN0ZWQgZGVmaW5pdGlvbiBpZCIsCiAgICApOwoKICAgICRDb3VudGVyKys7Cn0KCiMgY3JlYXRlIHNvbWUgcmFuZG9tIG51bWJlcnMKbXkgQENvbmZpZ0l0ZW1OdW1iZXJzOwpmb3IgKCAxIC4uIDEwMCApIHsKICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkSGVscGVyLT5HZXRSYW5kb21OdW1iZXIoKTsKfQoKIyBnZXQgY2xhc3MgbGlzdApteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVDbGFzc0xpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgojIGdldCBnZW5lcmFsIGNhdGFsb2cgdGVzdCBsaXN0Cm15ICRHZW5lcmFsQ2F0YWxvZ0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJEdlbmVyYWxDYXRhbG9nQ2xhc3MsCik7Cm15ICVHZW5lcmFsQ2F0YWxvZ0xpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRHZW5lcmFsQ2F0YWxvZ0xpc3R9OwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIGNvbmZpZyBpdGVtIHRlc3RzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCm15ICRDb25maWdJdGVtVGVzdHMgPSBbCgogICAgIyBDb25maWdJdGVtQWRkIGRvZXNuJ3QgY29udGFpbnMgYWxsIGRhdGEgKGNoZWNrIHJlcXVpcmVkIGF0dHJpYnV0ZXMpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBDb25maWdJdGVtQWRkIGRvZXNuJ3QgY29udGFpbnMgYWxsIGRhdGEgKGNoZWNrIHJlcXVpcmVkIGF0dHJpYnV0ZXMpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgaW52YWxpZCBjbGFzcyBpZCBpcyBnaXZlbiAoY2hlY2sgcmV0dXJuIGZhbHNlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1stMV0gKyAxLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIGNvbmZpZyBpdGVtIHZhbHVlcyBhcmUgZ2l2ZW4gKGNoZWNrIHJldHVybmVkIGNvbmZpZyBpdGVtIHZhbHVlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgTGFzdFZlcnNpb25JRCAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCBjb25maWcgaXRlbSB2YWx1ZXMgYXJlIGdpdmVuIChjaGVjayBudW1iZXIgYXR0cmlidXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIExhc3RWZXJzaW9uSUQgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGNvbmZpZyBpdGVtIHdpdGggdGhpcyBudW1iZXIgYWxyZWFkeSBleGlzdHMgKGNoZWNrIHJldHVybiBmYWxzZSkKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1swXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIFZlcnNpb25BZGQgZG9lc24ndCBjb250YWlucyBhbGwgZGF0YSAoY2hlY2sgcmVxdWlyZWQgYXR0cmlidXRlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkFkZCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIExhc3RWZXJzaW9uSUQgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBWZXJzaW9uQWRkIGRvZXNuJ3QgY29udGFpbnMgYWxsIGRhdGEgKGNoZWNrIHJlcXVpcmVkIGF0dHJpYnV0ZXMpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMl0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25BZGQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDEgQ29uZmlnSXRlbSAyIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1syXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICBMYXN0VmVyc2lvbklEICAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgVmVyc2lvbkFkZCBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uQWRkID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ2xhc3MgMSBDb25maWdJdGVtIDMgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzNdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIExhc3RWZXJzaW9uSUQgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBWZXJzaW9uQWRkIGRvZXNuJ3QgY29udGFpbnMgYWxsIGRhdGEgKGNoZWNrIHJlcXVpcmVkIGF0dHJpYnV0ZXMpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25BZGQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAxIENvbmZpZ0l0ZW0gNCBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s0XSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICBMYXN0VmVyc2lvbklEICAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgVmVyc2lvbkFkZCBkb2Vzbid0IGNvbnRhaW5zIGFsbCBkYXRhIChjaGVjayByZXF1aXJlZCBhdHRyaWJ1dGVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzVdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkFkZCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDEgQ29uZmlnSXRlbSA1IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzVdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIExhc3RWZXJzaW9uSUQgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGludmFsaWQgZGVwbG95bWVudCBzdGF0ZSBpZCBpcyBnaXZlbiAoY2hlY2sgcmV0dXJuZWQgdmFsdWVzKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzZdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uQWRkID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ2xhc3MgMSBDb25maWdJdGVtIDYgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiA5OTk5OTk5LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzZdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIExhc3RWZXJzaW9uSUQgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBpbnZhbGlkIGluY2lkZW50IHN0YXRlIGlkIGlzIGdpdmVuIChjaGVjayByZXR1cm5lZCB2YWx1ZXMpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbN10sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25BZGQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAxIENvbmZpZ0l0ZW0gNyBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gOTk5OTk5OSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3XSwKICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICBMYXN0VmVyc2lvbklEICAgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+IHVuZGVmLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWxsIHJlcXVpcmVkIHZhbHVlcyBhcmUgZ2l2ZW4gKGNoZWNrIHJldHVybmVkIHZhbHVlcykKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1s4XSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkFkZCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDEgQ29uZmlnSXRlbSA4IFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtR2V0ID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzhdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbOF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAxIENvbmZpZ0l0ZW0gOCBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgICAgPT4gW10sCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChnZW5lcmFsIGNoZWNrIHdpdGggdHdvIHZlcnNpb25zKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzldLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uQWRkID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ2xhc3MgMSBDb25maWdJdGVtIDkgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAxIENvbmZpZ0l0ZW0gOSBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbOV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbOV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAxIENvbmZpZ0l0ZW0gOSBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgICAgPT4gW10sCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s5XSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDEgQ29uZmlnSXRlbSA5IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICAgICA9PiBbXSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChjaGVjayB0aGUgY2FsY3VsYXRpb24gb2YgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc3RhdGUpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbMTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uQWRkID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ2xhc3MgMSBDb25maWdJdGVtIDEwIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ2xhc3MgMSBDb25maWdJdGVtIDEwIFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1sxMF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzEwXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDEgQ29uZmlnSXRlbSAxMCBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1BsYW5uZWQnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3ByZXByb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdNYWludGVuYW5jZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICAgICA9PiBbXSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzEwXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDEgQ29uZmlnSXRlbSAxMCBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdNYWludGVuYW5jZScsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgICAgID0+IFtdLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkFkZCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDMgQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDMgQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICAgICA9PiBbXSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZCBjb25maWcgaXRlbSBvbmx5IGZvciBsYXRlciBzZWFyY2ggdGVzdHMKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25BZGQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAzIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDMgQ29uZmlnSXRlbSAyIFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ2xhc3MgMyBDb25maWdJdGVtIDIgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgICAgPT4gW10sCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAzIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzJdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdNYWludGVuYW5jZScsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgICAgID0+IFtdLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWRkIGNvbmZpZyBpdGVtIG9ubHkgZm9yIGxhdGVyIHNlYXJjaCB0ZXN0cywgaW5jbHVkaW5nIFhNTERhdGEKICAgIHsKICAgICAgICBTb3VyY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUFkZCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uQWRkID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQ2xhc3MgMyBDb25maWdJdGVtIDMgVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzJdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySURzWzJdLAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdkdW1teV9jdXN0b21lcl9mb3JfdW5pdGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDEwLTAyLTEyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGVUaW1lMSA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDEwLTAyLTEyIDA5OjE0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMl0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMl0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDMgQ29uZmlnSXRlbSAzIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFnS2V5JyAgPT4gJ1sxXScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVmVyc2lvbicgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0N1c3RvbWVyMScgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQnID0+ICdkdW1teV9jdXN0b21lcl9mb3JfdW5pdGVzdCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RhZ0tleScgID0+ICdbMV17XCdWZXJzaW9uXCd9WzFde1wnQ3VzdG9tZXIxXCd9WzFdJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdEYXRlMScgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQnID0+ICcyMDEwLTAyLTEyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFnS2V5JyAgPT4gJ1sxXXtcJ1ZlcnNpb25cJ31bMV17XCdEYXRlMVwnfVsxXScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRGF0ZVRpbWUxJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgPT4gJzIwMTAtMDItMTIgMDk6MTQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdUYWdLZXknICA9PiAnWzFde1wnVmVyc2lvblwnfVsxXXtcJ0RhdGVUaW1lMVwnfVsxXScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGFnS2V5JyA9PiAnWzFde1wnVmVyc2lvblwnfVsxXScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSA9PiAkVXNlcklEc1syXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGQgY29uZmlnIGl0ZW0gb25seSBmb3IgbGF0ZXIgc2VhcmNoIHRlc3RzCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzNdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkFkZCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDQgQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1syXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbM10sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAkVXNlcklEc1sxXSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gJFVzZXJJRHNbMV0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbM10sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbM10gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDQgQ29uZmlnSXRlbSAxIFZlcnNpb24gMScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMl0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICAgICA9PiBbXSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+ICRVc2VySURzWzFdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCiAgICAjIGFkZGVkIHRvIGNoZWNrIGhpc3RvcnkgZnVuY3Rpb25zCiAgICAjIGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIGdpdmVuIChjaGVjayB0aGUgY2FsY3VsYXRpb24gb2YgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc3RhdGUpCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzBdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uQWRkID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gSGlzdG9yeVRlc3QnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0IFZlcnNpb24gMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcwXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0JywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdQbGFubmVkJywKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVUeXBlICAgID0+ICdwcmVwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVJRCAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnaW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgICAgPT4gW10sCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBIaXN0b3J5VGVzdCBWZXJzaW9uIDInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdNYWludGVuYW5jZScsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgICAgID0+IFtdLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICAgIEhpc3RvcnlHZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ1ZlcnNpb25DcmVhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNiwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ0RlZmluaXRpb25VcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gOCwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgPT4gJ05hbWVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gNSwKICAgICAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgID0+ICdVbml0VGVzdCAtIEhpc3RvcnlUZXN0JSUnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnSW5jaWRlbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiA5LAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSAuICclJScsCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgID0+ICdEZXBsb3ltZW50U3RhdGVVcGRhdGUnLAogICAgICAgICAgICAgICAgICAgIEhpc3RvcnlUeXBlSUQgPT4gMTAsCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UGxhbm5lZH0gLiAnJSUnLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnVmVyc2lvbkNyZWF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiA2LAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnTmFtZVVwZGF0ZScsCiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGVJRCA9PiA1LAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJ1VuaXRUZXN0IC0gSGlzdG9yeVRlc3QgVmVyc2lvbiAyJSVVbml0VGVzdCAtIEhpc3RvcnlUZXN0JywKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgID0+ICdJbmNpZGVudFN0YXRlVXBkYXRlJywKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZUlEID0+IDksCiAgICAgICAgICAgICAgICAgICAgQ29tbWVudCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9IC4gJyUlJwogICAgICAgICAgICAgICAgICAgICAgICAuICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICA9PiAnRGVwbG95bWVudFN0YXRlVXBkYXRlJywKICAgICAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZUlEID0+IDEwLAogICAgICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSAuICclJScKICAgICAgICAgICAgICAgICAgICAgICAgLiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UGxhbm5lZH0sCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnNDE5NgogICAgIyBhbGwgcmVxdWlyZWQgdmFsdWVzIGFyZSBnaXZlbiAoY2hlY2sgdGhlIGNhbGN1bGF0aW9uIG9mIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlKQogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcxXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkFkZCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQxOTYnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQbGFubmVkfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQxOTYgVjInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0MTk2IFYyJywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDE5NiBWMicsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3MV0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnTWFpbnRlbmFuY2UnLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFuZ2VCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFZlcnNpb25HZXQgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcxXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQxOTYnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1BsYW5uZWR9LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1BsYW5uZWQnLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3ByZXByb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdNYWludGVuYW5jZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdpbmNpZGVudCcsCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICAgICA9PiBbXSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIE51bWJlciAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcxXSwKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQxOTYgVjInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGUgICAgICAgID0+ICdNYWludGVuYW5jZScsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ01haW50ZW5hbmNlJywKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgICAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZVR5cGUgICAgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVJRCAgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ2luY2lkZW50JywKICAgICAgICAgICAgICAgICAgICBYTUxEYXRhICAgICAgICAgID0+IFtdLAogICAgICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBhZGRlZCBmb3IgQnVnIDQzNzcgLSBDSS1BCiAgICB7CiAgICAgICAgU291cmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1BZGQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzJdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uQWRkID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IHsKICAgICAgICAgICAgQ29uZmlnSXRlbUdldCA9PiB7CiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3Ml0sCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGUgICAgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ2hhbmdlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICBWZXJzaW9uR2V0ID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICRDb25maWdJdGVtTnVtYmVyc1s3Ml0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbUNsYXNzSURzWzBdIH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQScsCiAgICAgICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEICAgICA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlICAgICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgRGVwbFN0YXRlVHlwZSAgICA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlSUQgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSA9PiAncHJvZHVjdGl2ZScsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZSAgICAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGVUeXBlICAgID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlSUQgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVUeXBlID0+ICdvcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICAgICA9PiBbXSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAoKICAgICMgYWRkZWQgZm9yIEJ1ZyA0Mzc3IC0gQ0ktQgogICAgewogICAgICAgIFNvdXJjZURhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQWRkID0+IHsKICAgICAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzczXSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkFkZCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQzNzcgLSBDSS1CJywKICAgICAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1HZXQgPT4gewogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICA9PiAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0gfSwKICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVUeXBlID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZSAgICAgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZVR5cGUgPT4gJ29wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgIENyZWF0ZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYW5nZUJ5ICAgICAgICAgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmVyc2lvbkdldCA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICA9PiAkQ29uZmlnSXRlbU51bWJlcnNbNzNdLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICAgID0+ICRDbGFzc0xpc3QtPnsgJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSB9LAogICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIERlcGxTdGF0ZVR5cGUgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZSAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgICAgIEN1ckRlcGxTdGF0ZVR5cGUgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBJbmNpU3RhdGUgICAgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgSW5jaVN0YXRlVHlwZSAgICA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGUgICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICAgICAgPT4gW10sCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlQnkgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgfSwKCl07CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIGdlbmVyYWwgY29uZmlnIGl0ZW0gdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKbXkgJFRlc3RDb3VudCA9IDE7Cm15IEBDb25maWdJdGVtSURzOwoKVEVTVDoKZm9yIG15ICRUZXN0ICggQHskQ29uZmlnSXRlbVRlc3RzfSApIHsKCiAgICAjIGNoZWNrIFNvdXJjZURhdGEgYXR0cmlidXRlCiAgICBpZiAoICEkVGVzdC0+e1NvdXJjZURhdGF9IHx8IHJlZiAkVGVzdC0+e1NvdXJjZURhdGF9IG5lICdIQVNIJyApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IE5vIFNvdXJjZURhdGEgZm91bmQgZm9yIHRoaXMgdGVzdC4iLAogICAgICAgICk7CgogICAgICAgIG5leHQgVEVTVDsKICAgIH0KCiAgICAjIGV4dHJhY3Qgc291cmNlIGRhdGEKICAgIG15ICRTb3VyY2VEYXRhID0gJFRlc3QtPntTb3VyY2VEYXRhfTsKCiAgICAjIGFkZCBhIG5ldyBjb25maWcgaXRlbQogICAgbXkgJENvbmZpZ0l0ZW1JRDsKICAgIGlmICggJFNvdXJjZURhdGEtPntDb25maWdJdGVtQWRkfSApIHsKCiAgICAgICAgIyBhZGQgdGhlIG5ldyBjb25maWcgaXRlbQogICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgJXsgJFNvdXJjZURhdGEtPntDb25maWdJdGVtQWRkfSB9LAogICAgICAgICk7CgogICAgICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgdGhlIGNvbmZpZyBpdGVtCiAgICBpZiAoICRUZXN0LT57UmVmZXJlbmNlRGF0YX0gJiYgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0NvbmZpZ0l0ZW1HZXR9ICkgewoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ29uZmlnSXRlbUFkZCgpIC0gQWRkIG5ldyBjb25maWcgaXRlbS4gSW5zZXJ0IHN1Y2Nlc3MuIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1QgaWYgISRDb25maWdJdGVtSUQ7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDb25maWdJdGVtQWRkKCkgLSBBZGQgbmV3IGNvbmZpZyBpdGVtLiBSZXR1cm4gZmFsc2UuIiwKICAgICAgICApOwogICAgfQoKICAgICMgYWRkIGFsbCBkZWZpbmVkIHZlcnNpb25zCiAgICBteSBAVmVyc2lvbklEczsKICAgIG15ICVWZXJzaW9uSURzU2VlbjsKICAgIGlmICggJFNvdXJjZURhdGEtPntWZXJzaW9uQWRkfSApIHsKCiAgICAgICAgZm9yIG15ICRWZXJzaW9uICggQHsgJFNvdXJjZURhdGEtPntWZXJzaW9uQWRkfSB9ICkgewoKICAgICAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgICAgICRWZXJzaW9uLT57Q29uZmlnSXRlbUlEfSA9ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgYWRkIGEgbmV3IHZlcnNpb24KICAgICAgICAgICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICAgICAgJXskVmVyc2lvbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoJFZlcnNpb25JRCkgewogICAgICAgICAgICAgICAgcHVzaCBAVmVyc2lvbklEcywgJFZlcnNpb25JRCBpZiAhJFZlcnNpb25JRHNTZWVueyRWZXJzaW9uSUR9Kys7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayB0aGUgY29uZmlnIGl0ZW0KICAgIG15ICRDb25maWdJdGVtRGF0YTsKICAgIGlmICggJFRlc3QtPntSZWZlcmVuY2VEYXRhfSAmJiAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0gKSB7CgogICAgICAgICMgZ2V0IHRoZSBjb25maWcgaXRlbSBkYXRhCiAgICAgICAgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICk7CgogICAgICAgIGlmICggISRDb25maWdJdGVtRGF0YSApIHsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IENvbmZpZ0l0ZW1HZXQoKSAtIGdldCBjb25maWcgaXRlbSBkYXRhLiIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgYWxsIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZXMKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0NvbmZpZ0l0ZW1HZXR9IH0gKSB7CgogICAgICAgICAgICAjIHNldCBjb250ZW50IGlmIHZhbHVlcyBhcmUgdW5kZWYKICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbURhdGEtPnskQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtRGF0YS0+eyRBdHRyaWJ1dGV9ID0gJ1VOREVGLXVuaXR0ZXN0JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntDb25maWdJdGVtR2V0fS0+eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0NvbmZpZ0l0ZW1HZXR9LT57JEF0dHJpYnV0ZX0gPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGF0dHJpYnV0ZXMKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRhLT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57Q29uZmlnSXRlbUdldH0tPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IENvbmZpZ0l0ZW1HZXQoKSAtICRBdHRyaWJ1dGUiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayB0aGUgdmVyc2lvbnMKICAgIGlmICgKICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZURhdGF9CiAgICAgICAgJiYgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e1ZlcnNpb25HZXR9CiAgICAgICAgJiYgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e1ZlcnNpb25HZXR9IH0KICAgICAgICApCiAgICB7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgc2NhbGFyIEBWZXJzaW9uSURzLAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e1ZlcnNpb25HZXR9IH0sCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IFZlcnNpb25BZGQoKSAtIGNvcnJlY3QgbnVtYmVyIG9mIHZlcnNpb25zIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1QgaWYgISRDb25maWdJdGVtSUQ7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICBzY2FsYXIgQFZlcnNpb25JRHMsCiAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IFZlcnNpb25BZGQoKSAtIG5vIHZlcnNpb25zIGV4aXRzIiwKICAgICAgICApOwogICAgfQoKICAgIG5leHQgVEVTVCBpZiAhJFRlc3QtPntSZWZlcmVuY2VEYXRhfTsKICAgIG5leHQgVEVTVCBpZiAhJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e1ZlcnNpb25HZXR9OwoKICAgIG15ICRDb3VudGVyICAgICAgICAgICA9IDA7CiAgICBteSAkTGFzdFZlcnNpb25JRE11c3QgPSAnVU5ERUYtdW5pdHRlc3QnOwoKICAgICMgUmVmcmVzaCBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgY2FjaGUgdG8gYXZvaWQgaXNzdWVzIHdpdGggcHJldmlvdXNseSBjYWNoZWQgdmFsdWVzLgogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyktPkNsZWFuVXAoCiAgICAgICAgVHlwZSA9PiAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JywKICAgICk7CgogICAgVkVSU0lPTklEOgogICAgZm9yIG15ICRWZXJzaW9uSUQgKEBWZXJzaW9uSURzKSB7CgogICAgICAgICMgZ2V0IHRoaXMgdmVyc2lvbgogICAgICAgIG15ICRWZXJzaW9uRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgICAgICBWZXJzaW9uSUQgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgIFhNTERhdGFHZXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkVmVyc2lvbkRhdGEgKSB7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uR2V0KCkgLSBnZXQgdmVyc2lvbiBkYXRhLiIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVkVSU0lPTklEOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIGxhc3QgdmVyc2lvbiBpZAogICAgICAgICRMYXN0VmVyc2lvbklETXVzdCA9ICRWZXJzaW9uRGF0YS0+e1ZlcnNpb25JRH07CgogICAgICAgICMgY2hlY2sgYWxsIHZlcnNpb24gYXR0cmlidXRlcwogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICV7ICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntWZXJzaW9uR2V0fS0+WyRDb3VudGVyXSB9ICkgewoKICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBuZWVkZWQgYXR0cmlidXRlcwogICAgICAgICAgICBteSAkVmVyc2lvbkF0dHJpYnV0ZSAgID0gJFZlcnNpb25EYXRhLT57JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57VmVyc2lvbkdldH0tPlskQ291bnRlcl0tPnskQXR0cmlidXRlfTsKCiAgICAgICAgICAgICMgc2V0IGNvbnRlbnQgaWYgdmFsdWVzIGFyZSB1bmRlZgogICAgICAgICAgICBpZiAoICFkZWZpbmVkICRWZXJzaW9uQXR0cmlidXRlICkgewogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggIWRlZmluZWQgJFJlZmVyZW5jZUF0dHJpYnV0ZSApIHsKICAgICAgICAgICAgICAgICRSZWZlcmVuY2VBdHRyaWJ1dGUgPSAnVU5ERUYtdW5pdHRlc3QnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGF0dHJpYnV0ZXMKICAgICAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICAgICAgJFZlcnNpb25BdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAkUmVmZXJlbmNlQXR0cmlidXRlLAogICAgICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkdldCgpIC0gJEF0dHJpYnV0ZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkQ291bnRlcisrOwogICAgfQoKICAgICMgcHJlcGFyZSBsYXN0IHZlcnNpb24gaWQKICAgIG15ICRMYXN0VmVyc2lvbklEQWN0dWFsID0gJ1VOREVGLXVuaXR0ZXN0JzsKICAgIGlmICggJENvbmZpZ0l0ZW1EYXRhLT57TGFzdFZlcnNpb25JRH0gKSB7CiAgICAgICAgJExhc3RWZXJzaW9uSURBY3R1YWwgPSAkQ29uZmlnSXRlbURhdGEtPntMYXN0VmVyc2lvbklEfTsKICAgIH0KCiAgICAjIGNoZWNrIGxhc3QgdmVyc2lvbiBpZAogICAgJFNlbGYtPklzKAogICAgICAgICRDb25maWdJdGVtRGF0YS0+e0xhc3RWZXJzaW9uSUR9LAogICAgICAgICRMYXN0VmVyc2lvbklETXVzdCwKICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBsYXN0IHZlcnNpb24gaWQgaWRlbnRpY2FsIiwKICAgICk7CgogICAgIyBjaGVjayBoaXN0b3J5IGVudHJpZXMKICAgIGlmICgKICAgICAgICAkVGVzdC0+e1JlZmVyZW5jZURhdGF9CiAgICAgICAgJiYgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0hpc3RvcnlHZXR9CiAgICAgICAgJiYgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfS0+e0hpc3RvcnlHZXR9IH0KICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJENvbXBsZXRlSGlzdG9yeSA9ICRDb25maWdJdGVtT2JqZWN0LT5IaXN0b3J5R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIG5yIG9mIGhpc3RvcnkgZW50cmllcwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgc2NhbGFyIEB7ICRUZXN0LT57UmVmZXJlbmNlRGF0YX0tPntIaXN0b3J5R2V0fSB9LAogICAgICAgICAgICBzY2FsYXIgQHskQ29tcGxldGVIaXN0b3J5fSwKICAgICAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogbnIgb2YgaGlzdG9yeSBlbnRyaWVzIiwKICAgICAgICApOwoKICAgICAgICBDSEVDS05SOiBmb3IgbXkgJENoZWNrTnIgKCAwIC4uICQjeyRDb21wbGV0ZUhpc3Rvcnl9ICkgewogICAgICAgICAgICBteSAkQ2hlY2sgPSAkVGVzdC0+e1JlZmVyZW5jZURhdGF9LT57SGlzdG9yeUdldH0tPlskQ2hlY2tOcl07CiAgICAgICAgICAgIG15ICREYXRhICA9ICRDb21wbGV0ZUhpc3RvcnktPlskQ2hlY2tOcl07CgogICAgICAgICAgICBuZXh0IENIRUNLTlIgaWYgISggJENoZWNrICYmICREYXRhICk7CgogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRDaGVja30gKSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBoaXN0b3J5IGRhdGEKICAgICAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICAgICAkQ2hlY2stPnskS2V5fSwKICAgICAgICAgICAgICAgICAgICAkRGF0YS0+eyRLZXl9LAogICAgICAgICAgICAgICAgICAgICJUZXN0ICRUZXN0Q291bnQ6ICRLZXkiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQpjb250aW51ZSB7CiAgICAkVGVzdENvdW50Kys7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGZvciBidWdmaXggNDM3NwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgp7CgogICAgbXkgJENJMSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzcyXSwKICAgICk7CgogICAgbXkgJENJMiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzczXSwKICAgICk7CgogICAgIyBsaW5rIHRoZSBDSSB3aXRoIGEgQ0kKICAgIG15ICRMaW5rUmVzdWx0ID0gJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU291cmNlS2V5ICAgID0+ICRDSTEsCiAgICAgICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRDSTIsCiAgICAgICAgVHlwZSAgICAgICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICAjIHVwZGF0ZSBpbmNpZGVudCBzdGF0ZSBvZiBDSTEKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUEnLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBpZiB2ZXJzaW9uIGNvdWxkIGJlIGFkZGVkCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVmVyc2lvbklELAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IFZlcnNpb25BZGQoKSBmb3IgJENJMSAtIFNldCB0byAnSW5jaWRlbnQnIiwKICAgICk7CgogICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTEKICAgIG15ICRWZXJzaW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiAgICApOwoKICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIGlzICdJbmNpZGVudCcKICAgICRTZWxmLT5JcygKICAgICAgICAkVmVyc2lvblJlZi0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgJ0luY2lkZW50JywKICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgogICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMiwKICAgICk7CgogICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgaXMgJ1dhcm5pbmcnCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAogICAgICAgICdXYXJuaW5nJywKICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTIiLAogICAgKTsKCiAgICAjIHVwZGF0ZSBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgdG8gJ0luY2lkZW50JwogICAgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kyLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnVW5pdFRlc3QgLSBCdWdmaXg0Mzc3IC0gQ0ktQicsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtRGVmaW5pdGlvbklEc1swXSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7SW5jaWRlbnR9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHZlcnNpb24gY291bGQgYmUgYWRkZWQKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogVmVyc2lvbkFkZCgpIGZvciBDSSAkQ0kyIC0gU2V0IHRvICdJbmNpZGVudCciLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgogICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMiwKICAgICk7CgogICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgaXMgJ0luY2lkZW50JwogICAgJFNlbGYtPklzKAogICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAnSW5jaWRlbnQnLAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IEN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgb2YgQ0kgJENJMiIsCiAgICApOwoKICAgICMgdXBkYXRlIGluY2lkZW50IHN0YXRlIG9mIENJMSB0byAnT3BlcmF0aW9uYWwnCiAgICAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDQzNzcgLSBDSS1BJywKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFZlcnNpb25JRCwKICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yIENJICRDSTEgLSBTZXQgdG8gJ09wZXJhdGlvbmFsJyIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgQ0kxCiAgICAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kxLAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnV2FybmluZycgKGJlY2F1c2Ugb2YgbGlua2VkIENJMiBpbiBzdGF0ZSAnaW5jaWRlbnQnKQogICAgJFNlbGYtPklzKAogICAgICAgICRWZXJzaW9uUmVmLT57Q3VySW5jaVN0YXRlfSwKICAgICAgICAnV2FybmluZycsCiAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBDSSAkQ0kxIiwKICAgICk7CgogICAgIyB1cGRhdGUgaW5jaWRlbnQgc3RhdGUgb2YgQ0kyIHRvICdPcGVyYXRpb25hbCcKICAgICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMiwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1VuaXRUZXN0IC0gQnVnZml4NDM3NyAtIENJLUInLAogICAgICAgIERlZmluaXRpb25JRCA9PiAkQ29uZmlnSXRlbURlZmluaXRpb25JRHNbMF0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBpZiB2ZXJzaW9uIGNvdWxkIGJlIGFkZGVkCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVmVyc2lvbklELAogICAgICAgICJUZXN0ICRUZXN0Q291bnQ6IFZlcnNpb25BZGQoKSBmb3IgQ0kgJENJMiAtIFNldCB0byAnT3BlcmF0aW9uYWwnIiwKICAgICk7CgogICAgIyBnZXQgdGhlIGxhdGVzdCB2ZXJzaW9uIGZvciBDSTEKICAgICRWZXJzaW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiAgICApOwoKICAgICMgY2hlY2sgaWYgaW5jaWRlbnQgc3RhdGUgb2YgQ0kxIGlzICdPcGVyYXRpb25hbCcKICAgICRTZWxmLT5JcygKICAgICAgICAkVmVyc2lvblJlZi0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgJ09wZXJhdGlvbmFsJywKICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBDdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIENJICRDSTEiLAogICAgKTsKCiAgICAjIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gZm9yIENJMgogICAgJFZlcnNpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENJMiwKICAgICk7CgogICAgIyBjaGVjayBpZiBpbmNpZGVudCBzdGF0ZSBvZiBDSTIgaXMgJ1dhcm5pbmcnCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAogICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBDSSAkQ0kyIiwKICAgICk7CgogICAgIyBpbmNyZWFzZSB0aGUgdGVzdCBjb3VudGVyCiAgICAkVGVzdENvdW50Kys7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0IGZvciBidWdmaXggMTAzNTYKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKewoKICAgIG15ICRDSTEgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRDb25maWdJdGVtTnVtYmVyc1s3Ml0sCiAgICApOwoKICAgICMgYWRkIGEgdmVyc2lvbiwgc2V0IGluY2lkZW50IHN0YXRlIHRvIGluY2lkZW50CiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdVbml0VGVzdCAtIEJ1Z2ZpeDEwMzU2JywKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzWzBdLAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgaWYgdmVyc2lvbiBjb3VsZCBiZSBhZGRlZAogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFZlcnNpb25JRCwKICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uQWRkKCkgZm9yICRDSTEgLSBTZXQgdG8gJ0luY2lkZW50JyIsCiAgICApOwoKICAgICMgZ2V0IHRoZSBsYXRlc3QgdmVyc2lvbiBmb3IgQ0kxCiAgICBteSAkVmVyc2lvblJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ0kxLAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGluY2lkZW50IHN0YXRlIG9mIENJMSBpcyAnSW5jaWRlbnQnCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFZlcnNpb25SZWYtPntDdXJJbmNpU3RhdGV9LAogICAgICAgICdJbmNpZGVudCcsCiAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogQ3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBDSSAkQ0kxIiwKICAgICk7CgogICAgIyBkZWxldGUgdGhlIGxhc3QgdmVyc2lvbgogICAgbXkgJFZlcnNpb25EZWxldGVTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25EZWxldGUoCiAgICAgICAgVmVyc2lvbklEID0+ICRWZXJzaW9uUmVmLT57VmVyc2lvbklEfSwKICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICk7CgogICAgIyBjaGVjayBpZiB2ZXJzaW9uIGNvdWxkIGJlIGRlbGV0ZWQKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRWZXJzaW9uRGVsZXRlU3VjY2VzcywKICAgICAgICAiVGVzdCAkVGVzdENvdW50OiBWZXJzaW9uRGVsZXRlKCkgZm9yICRDSTEnIiwKICAgICk7CgogICAgIyBnZXQgdGhlIGhpc3RvcnkKICAgIG15ICRIaXN0b3J5UmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkhpc3RvcnlHZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSTEsCiAgICApOwoKICAgIG15ICRMYXN0SGlzdG9yeUVudHJ5ID0gcG9wIEB7JEhpc3RvcnlSZWZ9OwoKICAgICMgY2hlY2sgaWYgbGFzdCBoaXN0b3J5IGVudHJ5IGhhcyB0aGUgY29ycmVjdCBoaXN0b3J5IHR5cGUKICAgICRTZWxmLT5JcygKICAgICAgICAkTGFzdEhpc3RvcnlFbnRyeS0+e0hpc3RvcnlUeXBlfSwKICAgICAgICAnVmVyc2lvbkRlbGV0ZScsCiAgICAgICAgIlRlc3QgJFRlc3RDb3VudDogSGlzdG9yeVR5cGUgb2YgbGFzdCB2ZXJzaW9uIG9mIENJICRDSTEiLAogICAgKTsKCiAgICAjIGluY3JlYXNlIHRoZSB0ZXN0IGNvdW50ZXIKICAgICRUZXN0Q291bnQrKzsKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIGRlZmluZSBnZW5lcmFsIGNvbmZpZyBpdGVtIHNlYXJjaCB0ZXN0cwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgpteSBAU2VhcmNoVGVzdHMgPSAoCgogICAgIyBzZWFyY2ggQUxMIGNvbmZpZyBpdGVtcyBpbiB0aGUgdHdvIHRlc3QgY2xhc3NlcwogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWyAnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJywgJ0NvbmZpZ0l0ZW1TZWFyY2gnIF0sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBudW1iZXIgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsgJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCcsICdDb25maWdJdGVtU2VhcmNoJyBdLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbnVtYmVyIHBhcmFtIHdpdGggd2lsZGNhcmRzCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbICdDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnLCAnQ29uZmlnSXRlbVNlYXJjaCcgXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTnVtYmVyID0+ICcqJyAuICRDb25maWdJdGVtTnVtYmVyc1s1MF0gLiAnKicsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG51bWJlciBwYXJhbSB3aXRoIHdpbGRjYXJkcyBidXQgd2l0aCBkZWFjdGl2YXRlZCB3aWxkY2FyZCBmZWF0dXJlCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbICdDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnLCAnQ29uZmlnSXRlbVNlYXJjaCcgXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTnVtYmVyICAgICAgICAgPT4gJyonIC4gJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSAuICcqJywKICAgICAgICAgICAgVXNpbmdXaWxkY2FyZHMgPT4gMCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gW10sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsgJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCcsICdDb25maWdJdGVtU2VhcmNoJyBdLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtIGluIGNvbWJpbmF0aW9uIG9mIHRoZSBjbGFzcyBpZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWyAnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJywgJ0NvbmZpZ0l0ZW1TZWFyY2gnIF0sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtIGluIGNvbWJpbmF0aW9uIG9mIHRoZSBjbGFzcyBpZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWyAnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJywgJ0NvbmZpZ0l0ZW1TZWFyY2gnIF0sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFsKICAgICAgICAgICAgICAgICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICAgICAgICAgICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtNYWludGVuYW5jZX0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIGluIGNvbWJpbmF0aW9uIG9mIHRoZSBjbGFzcyBpZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWyAnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJywgJ0NvbmZpZ0l0ZW1TZWFyY2gnIF0sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsgJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCcsICdDb25maWdJdGVtU2VhcmNoJyBdLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbICdDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnLCAnQ29uZmlnSXRlbVNlYXJjaCcgXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgICAgICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG9yZGVyIGJ5IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbICdDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnLCAnQ29uZmlnSXRlbVNlYXJjaCcgXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJ0NyZWF0ZUJ5J10sCiAgICAgICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWydVcCddLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWyAnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJywgJ0NvbmZpZ0l0ZW1TZWFyY2gnIF0sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAxMDAsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbICdDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnLCAnQ29uZmlnSXRlbVNlYXJjaCcgXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDMsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbICdDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnLCAnQ29uZmlnSXRlbVNlYXJjaCcgXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbICdDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnLCAnQ29uZmlnSXRlbVNlYXJjaCcgXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbICdDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnLCAnQ29uZmlnSXRlbVNlYXJjaCcgXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGNyZWF0ZSBieSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWyAnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJywgJ0NvbmZpZ0l0ZW1TZWFyY2gnIF0sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENyZWF0ZUJ5ID0+IFsgJFVzZXJJRHNbMl0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgY3JlYXRlIGJ5IHBhcmFtIGluIGNvbWJpbmF0aW9uIG9mIHRoZSBjbGFzcyBpZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWyAnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJywgJ0NvbmZpZ0l0ZW1TZWFyY2gnIF0sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBDcmVhdGVCeSA9PiBbICRVc2VySURzWzFdLCAgICAgICAgICAgICRVc2VySURzWzJdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGNoYW5nZSBieSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWyAnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJywgJ0NvbmZpZ0l0ZW1TZWFyY2gnIF0sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENoYW5nZUJ5ID0+IFsgJFVzZXJJRHNbMl0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgY2hhbmdlIGJ5IHBhcmFtIGluIGNvbWJpbmF0aW9uIG9mIHRoZSBjbGFzcyBpZAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWyAnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJywgJ0NvbmZpZ0l0ZW1TZWFyY2gnIF0sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBDaGFuZ2VCeSA9PiBbMV0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGNoYW5nZSBieSBwYXJhbSBpbiBjb21iaW5hdGlvbiBvZiB0aGUgY2xhc3MgaWQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsgJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCcsICdDb25maWdJdGVtU2VhcmNoJyBdLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgQ2hhbmdlQnkgPT4gWyAkVXNlcklEc1sxXSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBjaGFuZ2UgYnkgcGFyYW0gaW4gY29tYmluYXRpb24gb2YgdGhlIGNsYXNzIGlkCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbICdDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnLCAnQ29uZmlnSXRlbVNlYXJjaCcgXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIENoYW5nZUJ5ID0+IFsgJFVzZXJJRHNbMl0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgc2VhcmNoIEFMTCBjb25maWcgaXRlbXMgaW4gdGhlIHR3byB0ZXN0IGNsYXNzZXMgdXNpbmcgdGhlIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAzIENvbmZpZ0l0ZW0gMSBWZXJzaW9uIDEnLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgID0+ICdVbml0VGVzdCAtIENsYXNzIDMgQ29uZmlnSXRlbSAzIFZlcnNpb24gMScsCiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBuYW1lIHBhcmFtIHdpdGggYW4gd2lsZGNhcmQKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAnVW5pdFRlc3QgLSAqIDEnLAogICAgICAgICAgICBDbGFzc0lEcyA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgbmFtZSBwYXJhbSB3aXRoIGFuIHdpbGRjYXJkIGFuZCBhIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgID0+ICdVbml0VGVzdCAtICogMScsCiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIG5hbWUgcGFyYW0gd2l0aCB3aWxkY2FyZHMKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAzKicsCiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBuYW1lIHBhcmFtIHdpdGggd2lsZGNhcmRzIGJ1dCB3aXRoIGRlYWN0aXZhdGVkIHdpbGRjYXJkIGZlYXR1cmUKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAzKicsCiAgICAgICAgICAgIENsYXNzSURzICAgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBVc2luZ1dpbGRjYXJkcyA9PiAwLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsYXN0IHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgTmFtZSAgICAgPT4gJ1VuaXRUZXN0IC0gQ2xhc3MgMyBDb25maWdJdGVtIDIgVmVyc2lvbiAxJywKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFtdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIFByZXZpb3VzVmVyc2lvblNlYXJjaCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICA9PiAnVW5pdFRlc3QgLSBDbGFzcyAzIENvbmZpZ0l0ZW0gMiBWZXJzaW9uIDEnLAogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBsaW1pdCBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBMaW1pdCAgICA9PiAxMDAsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDMsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDIsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGxpbWl0IHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIExpbWl0ICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTGlzdFJldmVyc2V7TWFpbnRlbmFuY2V9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MF0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWyAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBkZXBsb3ltZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gWwogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGRlcGxveW1lbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIERlcGxTdGF0ZUlEcyAgICAgICAgICA9PiBbICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgZGVwbG95bWVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgRGVwbFN0YXRlSURzICAgICAgICAgID0+IFsgJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNjBdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0KICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtJbmNpZGVudH0gXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCB0aGUgaW5jaWRlbnQgc3RhdGUgcGFyYW0gd2l0aCBhY3RpdmF0ZWQgcHJldmlvdXMgdmVyc2lvbiBzZWFyY2gKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnVmVyc2lvblNlYXJjaCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIEluY2lTdGF0ZUlEcyA9PiBbCiAgICAgICAgICAgICAgICAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgICAgICAgICAgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICAgICAgXSwKICAgICAgICAgICAgUHJldmlvdXNWZXJzaW9uU2VhcmNoID0+IDEsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUwXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUxXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzYwXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgdGhlIGluY2lkZW50IHN0YXRlIHBhcmFtIHdpdGggYWN0aXZhdGVkIHByZXZpb3VzIHZlcnNpb24gc2VhcmNoCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ1ZlcnNpb25TZWFyY2gnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgICAgICAgICAgICAgID0+IFsgJENvbmZpZ0l0ZW1DbGFzc0lEc1syXSwgJENvbmZpZ0l0ZW1DbGFzc0lEc1szXSBdLAogICAgICAgICAgICBJbmNpU3RhdGVJRHMgICAgICAgICAgPT4gWyAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9IF0sCiAgICAgICAgICAgIFByZXZpb3VzVmVyc2lvblNlYXJjaCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1MV0sCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s2MF0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IHRoZSBpbmNpZGVudCBzdGF0ZSBwYXJhbSB3aXRoIGFjdGl2YXRlZCBwcmV2aW91cyB2ZXJzaW9uIHNlYXJjaAogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydWZXJzaW9uU2VhcmNoJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzICAgICAgICAgICAgICA9PiBbICRDb25maWdJdGVtQ2xhc3NJRHNbMl0sICRDb25maWdJdGVtQ2xhc3NJRHNbM10gXSwKICAgICAgICAgICAgSW5jaVN0YXRlSURzICAgICAgICAgID0+IFsgJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSBdLAogICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25TZWFyY2ggPT4gMSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTBdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTFdLAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoKSB3aXRoICdXaGF0JyAoQ3VzdG9tZXIxKQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gWyAkQ29uZmlnSXRlbUNsYXNzSURzWzJdLCAkQ29uZmlnSXRlbUNsYXNzSURzWzNdIF0sCiAgICAgICAgICAgIENoYW5nZUJ5ID0+IFsgJFVzZXJJRHNbMl0gXSwKICAgICAgICAgICAgV2hhdCAgICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnQ3VzdG9tZXIxJ31bMV17J0NvbnRlbnQnfSIgPT4gJ2R1bW15X2N1c3RvbWVyX2Zvcl91bml0ZXN0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCgogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlMSkKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICBXaGF0ICAgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIlsxXXsnVmVyc2lvbid9WzFdeydEYXRlMSd9WzFdeydDb250ZW50J30iID0+ICcyMDEwLTAyLTEyJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCgogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlVGltZTEpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgV2hhdCAgICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnRGF0ZVRpbWUxJ31bMV17J0NvbnRlbnQnfSIgPT4gJzIwMTAtMDItMTIgMDk6MTQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCkgd2l0aCAnV2hhdCcgKEN1c3RvbWVyMSwgRGF0ZTEsIERhdGVUaW1lMSkKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICBXaGF0ICAgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIlsxXXsnVmVyc2lvbid9WzFdeydDdXN0b21lcjEnfVsxXXsnQ29udGVudCd9IiA9PiAnZHVtbXlfY3VzdG9tZXJfZm9yX3VuaXRlc3QnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiWzFdeydWZXJzaW9uJ31bMV17J0RhdGUxJ31bMV17J0NvbnRlbnQnfSIgPT4gJzIwMTAtMDItMTInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiWzFdeydWZXJzaW9uJ31bMV17J0RhdGVUaW1lMSd9WzFdeydDb250ZW50J30iID0+ICcyMDEwLTAyLTEyIDA5OjE0JywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCgogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlMSwgPCwgZmFsc2UpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgV2hhdCAgICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnRGF0ZTEnfVsxXXsnQ29udGVudCd9IgogICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICc8JyA9PiAnMjAxMC0wMi0xMicsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCgogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlMSwgPCwgdHJ1ZSkKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICBXaGF0ICAgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIlsxXXsnVmVyc2lvbid9WzFdeydEYXRlMSd9WzFdeydDb250ZW50J30iCiAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJzwnID0+ICcyMDEwLTAyLTEzJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCkgd2l0aCAnV2hhdCcgKERhdGUxLCA8PSwgZmFsc2UpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgV2hhdCAgICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnRGF0ZTEnfVsxXXsnQ29udGVudCd9IgogICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICc8PScgPT4gJzIwMTAtMDItMTEnLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAoKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoKSB3aXRoICdXaGF0JyAoRGF0ZTEsIDw9LCB0cnVlKQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgIFdoYXQgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiWzFdeydWZXJzaW9uJ31bMV17J0RhdGUxJ31bMV17J0NvbnRlbnQnfSIKICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAnPD0nID0+ICcyMDEwLTAyLTEyJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCkgd2l0aCAnV2hhdCcgKERhdGUxLCA8PSwgdHJ1ZSkKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICBXaGF0ICAgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIlsxXXsnVmVyc2lvbid9WzFdeydEYXRlMSd9WzFdeydDb250ZW50J30iCiAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJzw9JyA9PiAnMjAxMC0wMi0xMycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCgogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlMSwgPSwgZmFsc2UpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgV2hhdCAgICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnRGF0ZTEnfVsxXXsnQ29udGVudCd9IgogICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICc9JyA9PiAnMjAxMC0wMi0xMScsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCkgd2l0aCAnV2hhdCcgKERhdGUxLCA9LCB0cnVlKQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgIFdoYXQgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiWzFdeydWZXJzaW9uJ31bMV17J0RhdGUxJ31bMV17J0NvbnRlbnQnfSIKICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAnPScgPT4gJzIwMTAtMDItMTInLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlMSwgIT0sIGZhbHNlKQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgIFdoYXQgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiWzFdeydWZXJzaW9uJ31bMV17J0RhdGUxJ31bMV17J0NvbnRlbnQnfSIKICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAnIT0nID0+ICcyMDEwLTAyLTEyJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoKSB3aXRoICdXaGF0JyAoRGF0ZTEsICE9LCB0cnVlKQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgIFdoYXQgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiWzFdeydWZXJzaW9uJ31bMV17J0RhdGUxJ31bMV17J0NvbnRlbnQnfSIKICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAnIT0nID0+ICcyMDEwLTAyLTEzJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgXSwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcnNbNTJdLAogICAgICAgIF0sCiAgICB9LAoKICAgICMgdGVzdCBDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQoKSB3aXRoICdXaGF0JyAoRGF0ZTEsID49LCBmYWxzZSkKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICBXaGF0ICAgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIlsxXXsnVmVyc2lvbid9WzFdeydEYXRlMSd9WzFdeydDb250ZW50J30iCiAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJz49JyA9PiAnMjAxMC0wMi0xMycsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCkgd2l0aCAnV2hhdCcgKERhdGUxLCA+PSwgdHJ1ZSkKICAgIHsKICAgICAgICBGdW5jdGlvbiAgID0+IFsnQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkJ10sCiAgICAgICAgU2VhcmNoRGF0YSA9PiB7CiAgICAgICAgICAgIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzLAogICAgICAgICAgICBXaGF0ICAgICA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIlsxXXsnVmVyc2lvbid9WzFdeydEYXRlMSd9WzFdeydDb250ZW50J30iCiAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJz49JyA9PiAnMjAxMC0wMi0xMicsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCgogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlMSwgPj0sIHRydWUpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgV2hhdCAgICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnRGF0ZTEnfVsxXXsnQ29udGVudCd9IgogICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICc+PScgPT4gJzIwMTAtMDItMTEnLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlMSwgPiwgZmFsc2UpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgV2hhdCAgICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnRGF0ZTEnfVsxXXsnQ29udGVudCd9IgogICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICc+JyA9PiAnMjAxMC0wMi0xMicsCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCkgd2l0aCAnV2hhdCcgKERhdGUxLCA+LCB0cnVlKQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgIFdoYXQgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiWzFdeydWZXJzaW9uJ31bMV17J0RhdGUxJ31bMV17J0NvbnRlbnQnfSIKICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAnPicgPT4gJzIwMTAtMDItMTEnLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyc1s1Ml0sCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlMSwgLWJldHdlZW4sIGZhbHNlKQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgIFdoYXQgICAgID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAiWzFdeydWZXJzaW9uJ31bMV17J0RhdGUxJ31bMV17J0NvbnRlbnQnfSIKICAgICAgICAgICAgICAgICAgICAgICAgPT4geyAnLWJldHdlZW4nID0+IFsgJzIwMTAtMDEtMDEnLCAnMjAxMC0wMS0zMScgXSB9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICAgICAgUmVmZXJlbmNlRGF0YSA9PiBbCiAgICAgICAgXSwKICAgIH0sCgogICAgIyB0ZXN0IENvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCgpIHdpdGggJ1doYXQnIChEYXRlMSwgLWJldHdlZW4sIHRydWUpCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgV2hhdCAgICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICJbMV17J1ZlcnNpb24nfVsxXXsnRGF0ZTEnfVsxXXsnQ29udGVudCd9IgogICAgICAgICAgICAgICAgICAgICAgICA9PiB7ICctYmV0d2VlbicgPT4gWyAnMjAxMC0wMi0wMScsICcyMDEwLTAyLTMxJyBdIH0KICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXJzWzUyXSwKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCkgd2l0aCBOYW1lID0gMCB3aXRob3V0IGFueSB3aWxkY2FyZHMKICAgICMgc2hvdWxkIHJldHVybiBubyByZXN1bHRzCiAgICAjIEJ1Z2ZpeCMgODg4MQogICAgewogICAgICAgIEZ1bmN0aW9uICAgPT4gWydDb25maWdJdGVtU2VhcmNoRXh0ZW5kZWQnXSwKICAgICAgICBTZWFyY2hEYXRhID0+IHsKICAgICAgICAgICAgQ2xhc3NJRHMgPT4gXEBDb25maWdJdGVtQ2xhc3NJRHMsCiAgICAgICAgICAgIE5hbWUgICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICBSZWZlcmVuY2VEYXRhID0+IFsKICAgICAgICBdLAogICAgfSwKCiAgICAjIHRlc3QgQ29uZmlnSXRlbVNlYXJjaEV4dGVuZGVkKCkgd2l0aCBOdW1iZXIgPSAwIHdpdGhvdXQgYW55IHdpbGRjYXJkcwogICAgIyBzaG91bGQgcmV0dXJuIG5vIHJlc3VsdHMKICAgICMgQnVnZml4IyA4ODgxCiAgICB7CiAgICAgICAgRnVuY3Rpb24gICA9PiBbJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCddLAogICAgICAgIFNlYXJjaERhdGEgPT4gewogICAgICAgICAgICBDbGFzc0lEcyA9PiBcQENvbmZpZ0l0ZW1DbGFzc0lEcywKICAgICAgICAgICAgTnVtYmVyICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIFJlZmVyZW5jZURhdGEgPT4gWwogICAgICAgIF0sCiAgICB9LAopOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHJ1biBnZW5lcmFsIGNvbmZpZyBpdGVtIHNlYXJjaCB0ZXN0cwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojICRTZWFyY2hUZXN0Q291bnQgcHJvdmlkZXMgZ3JvdXBpbmcgb2YgdGVzdCBjYXNlcwpteSAkU2VhcmNoVGVzdENvdW50ID0gMTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFNlYXJjaFRlc3RzKSB7CgogICAgIyBjaGVjayBTZWFyY2hEYXRhIGF0dHJpYnV0ZQogICAgaWYgKCAhJFRlc3QtPntTZWFyY2hEYXRhfSB8fCByZWYgJFRlc3QtPntTZWFyY2hEYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAwLAogICAgICAgICAgICAiU2VhcmNoVGVzdCAkU2VhcmNoVGVzdENvdW50OiBObyBTZWFyY2hEYXRhIGZvdW5kIGZvciB0aGlzIHRlc3QuIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgaWYgKCAhJFRlc3QtPntGdW5jdGlvbn0gfHwgcmVmICRUZXN0LT57RnVuY3Rpb259IG5lICdBUlJBWScgfHwgIUB7ICRUZXN0LT57RnVuY3Rpb259IH0gKSB7CiAgICAgICAgJFRlc3QtPntGdW5jdGlvbn0gPSBbJ0NvbmZpZ0l0ZW1TZWFyY2hFeHRlbmRlZCddOwogICAgfQoKICAgIGZvciBteSAkRnVuY3Rpb24gKCBAeyAkVGVzdC0+e0Z1bmN0aW9ufSB9ICkgewoKICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgIG15ICRDb25maWdJdGVtTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT4kRnVuY3Rpb24oCiAgICAgICAgICAgICV7ICRUZXN0LT57U2VhcmNoRGF0YX0gfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHRoZSBjb25maWcgaXRlbSBsaXN0CiAgICAgICAgaWYgKCAkVGVzdC0+e1JlZmVyZW5jZURhdGF9ICkgewoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUxpc3QgJiYgcmVmICRDb25maWdJdGVtTGlzdCBlcSAnQVJSQVknLAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBMaXN0IGlzIGFuIGFycmF5IHJlZmVyZW5jZS4iLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBURVNUIGlmICEkQ29uZmlnSXRlbUxpc3Q7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICAgICAgIlNlYXJjaFRlc3QgJFNlYXJjaFRlc3RDb3VudDogJEZ1bmN0aW9uKCkgLSBSZXR1cm4gZmFsc2UuIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgVEVTVCBpZiAhJENvbmZpZ0l0ZW1MaXN0OwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBudW1iZXIgb2YgZm91bmQgY29uZmlnIGl0ZW1zCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICBzY2FsYXIgQHskQ29uZmlnSXRlbUxpc3R9LAogICAgICAgICAgICBzY2FsYXIgQHsgJFRlc3QtPntSZWZlcmVuY2VEYXRhfSB9LAogICAgICAgICAgICAiU2VhcmNoVGVzdCAkU2VhcmNoVGVzdENvdW50OiAkRnVuY3Rpb24oKSAtIGNvcnJlY3QgbnVtYmVyIG9mIGZvdW5kIGNvbmZpZyBpdGVtcyIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFJlZmVyZW5jZUxpc3Q7CiAgICAgICAgZm9yIG15ICROdW1iZXIgKCBAeyAkVGVzdC0+e1JlZmVyZW5jZURhdGF9IH0gKSB7CgogICAgICAgICAgICAjIGZpbmQgaWQgb2YgdGhlIGl0ZW0KICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICJTRUxFQ1QgaWQgRlJPTSBjb25maWdpdGVtIFdIRVJFICIKICAgICAgICAgICAgICAgICAgICAuICJjb25maWdpdGVtX251bWJlciA9ICckTnVtYmVyJyAiCiAgICAgICAgICAgICAgICAgICAgLiAiT1JERVIgQlkgaWQgREVTQyIsCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQFJlZmVyZW5jZUxpc3QsICRDb25maWdJdGVtSUQ7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGFycmF5cwogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1MaXN0LAogICAgICAgICAgICBcQFJlZmVyZW5jZUxpc3QsCiAgICAgICAgICAgICJTZWFyY2hUZXN0ICRTZWFyY2hUZXN0Q291bnQ6ICRGdW5jdGlvbigpIC0gTGlzdCIsCiAgICAgICAgKTsKICAgIH0KfQpjb250aW51ZSB7CiAgICAkU2VhcmNoVGVzdENvdW50Kys7Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyB0ZXN0aW5nIGFkZGluZyBvZiBpbnZhbGlkIGRlZmluaXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCnsKICAgICMgZGVmaW5lIHNvbWUgaW52YWxpZCBkZWZpbml0aW9ucwoKICAgIG15IEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zOwoKICAgICMgRGF0YSBzY3RydWN0dXJlIGlzIG5vIGFycmF5IHJlZmVyZW5jZS4KICAgIHB1c2ggQEludmFsaWRDb25maWdJdGVtRGVmaW5pdGlvbnMsICIKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyMScsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0N1c3RvbWVyIDEnLAogICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICB9LAogICAgICAgIH0KICAgICI7CgogICAgIyBEYXRhIHNjdHJ1Y3R1cmUgaGFzaCBlbGVtZW50cyBjb250YWluIG5vIGRhdGEuCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIFsKICAgICAgICB7CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgfSwKICAgIF0iOwoKICAgICMgTWlzc2luZyBjb21tYSBiZXR3ZWVuIHRoZSAyIGVsZW1lbnRzCiAgICBwdXNoIEBJbnZhbGlkQ29uZmlnSXRlbURlZmluaXRpb25zLCAiIFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyMScsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0N1c3RvbWVyIDEnLAogICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICB9LAogICAgICAgIH0KICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ0RhdGUxJywKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRGF0ZSAxJywKICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0RhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICBdIjsKCiAgICAjIEtleSAiQ3VzdG9tZXIgMSIgY29udGFpbmluZyBhIHNwYWNlLgogICAgcHVzaCBASW52YWxpZENvbmZpZ0l0ZW1EZWZpbml0aW9ucywgIiBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgID0+ICdDdXN0b21lciAxJywgICAjIEtleSBjb250YWluaW5nIGEgc3BhY2UhCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0N1c3RvbWVyIDEnLAogICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgVHlwZSA9PiAnQ3VzdG9tZXInLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICBdIjsKCiAgICAjIEtleSAiQ3VzdG9tZXIxzqPVjs6tIiBjb250YWluaW5nIG5vbi1hc2NpaSBjaGFyYWN0ZXJzLgogICAgcHVzaCBASW52YWxpZENvbmZpZ0l0ZW1EZWZpbml0aW9ucywgIiBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgID0+ICdDdXN0b21lcjHOo9WOzq0nLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdDdXN0b21lciAxJywKICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgXSI7CgogICAgIyBJbnZhbGlkIGVtcHR5IHN1YiBlbGVtZW50LgogICAgcHVzaCBASW52YWxpZENvbmZpZ0l0ZW1EZWZpbml0aW9ucywgIiBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgID0+ICdDdXN0b21lcjEnLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdDdXN0b21lciAxJywKICAgICAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ0N1c3RvbWVyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU3ViID0+IFsKICAgICAgICAgICAgICAgIHt9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICBdIjsKCiAgICAjIGdlbmVyYXRlIGEgcmFuZG9tIG5hbWUKICAgIG15ICRDbGFzc05hbWUgPSAnVW5pdFRlc3QnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAjIGFkZCBhbiB1bml0dGVzdCBjb25maWcgaXRlbSBjbGFzcwogICAgbXkgJENsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgIE5hbWUgICAgPT4gJENsYXNzTmFtZSwKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIGNsYXNzIGlkCiAgICBpZiAoICEkQ2xhc3NJRCApIHsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgMCwKICAgICAgICAgICAgIkNhbid0IGFkZCBuZXcgY29uZmlnIGl0ZW0gY2xhc3MuIiwKICAgICAgICApOwogICAgfQoKICAgIGZvciBteSAkRGVmaW5pdGlvbiAoQEludmFsaWRDb25maWdJdGVtRGVmaW5pdGlvbnMpIHsKCiAgICAgICAgIyBhZGQgYSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcwogICAgICAgIG15ICREZWZpbml0aW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZGVmaW5pdGlvbiBpZCwgbXVzdCBiZSBmYWxzZSwgYmVjYXVzZSBhbGwgZGVmaW5pdGlvbnMgaGF2ZSBlcnJvcnMKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGRlZmluaXRpb24uIiwKICAgICAgICApOwogICAgfQoKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHRlc3Rpbmcgc3VwcG9ydCBmb3IgYXR0YWNobWVudHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKbXkgJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1JRHNbMF07CgojIHZlcmlmeSB0aGF0IGluaXRpYWxseSBubyBhdHRhY2htZW50IGV4aXN0cwpteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgQ29uZmlnSXRlbUlEID0+ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCwKKTsKCiRTZWxmLT5JcygKICAgIHNjYWxhciBAQXR0YWNobWVudExpc3QsCiAgICAwLAogICAgJ05vIGF0dGFjaG1lbnRzIGluaXRpYWxseScsCik7CgpteSBAVGVzdEZpbGVMaXN0ID0gKAogICAgewogICAgICAgIEZpbGVuYW1lICAgID0+ICdmaXJzdCBhdHRhY2htZW50JywKICAgICAgICBDb250ZW50ICAgICA9PiAnRmlyc3QgYXR0YWNobWVudCBmcm9tIElUU01Db25maWdJdGVtLnQnLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgIH0sCiAgICB7CiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ3NlY29uZCBhdHRhY2htZW50JywKICAgICAgICBDb250ZW50ICAgICA9PiAnU2Vjb25kIGF0dGFjaG1lbnQgZnJvbSBJVFNNQ29uZmlnSXRlbS50JywKICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9wbGFpbicsCiAgICB9LAopOwoKbXkgJEZpbGVDb3VudDsKZm9yIG15ICRUZXN0RmlsZSAoQFRlc3RGaWxlTGlzdCkgewoKICAgICRGaWxlQ291bnQrKzsKCiAgICBteSAkQWRkT2sgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoCiAgICAgICAgJXskVGVzdEZpbGV9LAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEFkZE9rLAogICAgICAgICJBdHRhY2htZW50ICRGaWxlQ291bnQ6IGF0dGFjaG1lbnQgYWRkZWQiLAogICAgKTsKCiAgICBteSBAQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPklzKAogICAgICAgIHNjYWxhciBAQXR0YWNobWVudExpc3QsCiAgICAgICAgJEZpbGVDb3VudCwKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBudW1iZXIgb2YgYXR0YWNobWVudHMgYWZ0ZXIgYWRkaW5nIiwKICAgICk7CgogICAgIyBjaGVjayB3aGV0aGVyIHRoZSBsYXN0IGFkZGVkIGF0dGFjaG1lbnQgaXMgaW4gdGhlIGxpc3QKICAgIG15ICVBdHRhY2htZW50TG9va3VwID0gbWFwIHsgJF8gPT4gMSB9IEBBdHRhY2htZW50TGlzdDsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRBdHRhY2htZW50TG9va3VweyAkVGVzdEZpbGUtPntGaWxlbmFtZX0gfSwKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBmaWxlbmFtZSBmcm9tIENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgpIiwKICAgICk7CgogICAgIyBnZXQgdGhlIGF0dGFjaG1lbnQKICAgIG15ICRBdHRhY2htZW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQXR0YWNobWVudCwKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBDb25maWdJdGVtQXR0YWNobWVudEdldCgpIHJldHVybmVkIHRydWUiLAogICAgKTsKCiAgICAjIGNoZWNrIGF0dGFjaG1lbnQgZmlsZSBhdHRyaWJ1dGVzCiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAocXcoRmlsZW5hbWUgQ29udGVudCBDb250ZW50VHlwZSkpIHsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRBdHRhY2htZW50LT57JEF0dHJpYnV0ZX0sCiAgICAgICAgICAgICRUZXN0RmlsZS0+eyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiAkQXR0cmlidXRlIGZyb20gQ29uZmlnSXRlbUF0dGFjaG1lbnRHZXQiLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBleGlzdGVuY2Ugb2YgYXR0YWNobWVudAogICAgbXkgJEF0dGFjaG1lbnRFeGlzdHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRFeGlzdHMoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRBdHRhY2htZW50VGVzdENvbmZpZ0l0ZW1JRCwKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJFRlc3RGaWxlLT57RmlsZW5hbWV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRBdHRhY2htZW50RXhpc3RzLAogICAgICAgICJBdHRhY2htZW50ICRGaWxlQ291bnQ6IGF0dGFjaG1lbnQgZXhpc3RzIiwKICAgICk7Cgp9CgojIG5vdyBkZWxldGUgdGhlIGF0dGFjaG1lbnRzCiRGaWxlQ291bnQgPSAwOwpteSAkTWF4VGVzdEZpbGVzID0gc2NhbGFyIEBUZXN0RmlsZUxpc3Q7CmZvciBteSAkVGVzdEZpbGUgKEBUZXN0RmlsZUxpc3QpIHsKCiAgICAkRmlsZUNvdW50Kys7CgogICAgbXkgJERlbGV0ZU9rID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCiAgICAgICAgRmlsZW5hbWUgICAgID0+ICRUZXN0RmlsZS0+e0ZpbGVuYW1lfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkRGVsZXRlT2ssCiAgICAgICAgIkF0dGFjaG1lbnQgJEZpbGVDb3VudDogYXR0YWNobWVudCBkZWxldGVkIiwKICAgICk7CgogICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJEF0dGFjaG1lbnRUZXN0Q29uZmlnSXRlbUlELAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgc2NhbGFyIEBBdHRhY2htZW50TGlzdCwKICAgICAgICAkTWF4VGVzdEZpbGVzIC0gJEZpbGVDb3VudCwKICAgICAgICAiQXR0YWNobWVudCAkRmlsZUNvdW50OiBudW1iZXIgb2YgYXR0YWNobWVudHMgYWZ0ZXIgZGVsZXRpb24iLAogICAgKTsKCiAgICBteSAkQXR0YWNobWVudEV4aXN0cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEV4aXN0cygKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJFRlc3RGaWxlLT57RmlsZW5hbWV9LAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQXR0YWNobWVudFRlc3RDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPkZhbHNlKAogICAgICAgICRBdHRhY2htZW50RXhpc3RzLAogICAgICAgICJBdHRhY2htZW50ICRGaWxlQ291bnQ6IGF0dGFjaG1lbnQgaXMgZ29uZSIsCiAgICApOwp9CgojIGNoZWNrIGNvbmZpZyBpdGVtIGRlbGV0ZQpteSAkRGVsZXRlVGVzdENvdW50ID0gMTsKZm9yIG15ICRDb25maWdJdGVtSUQgKEBDb25maWdJdGVtSURzKSB7CiAgICBteSAkRGVsZXRlT2sgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkRGVsZXRlT2ssCiAgICAgICAgIkRlbGV0ZVRlc3QgJERlbGV0ZVRlc3RDb3VudCAtIENvbmZpZ0l0ZW1EZWxldGUoKSAoQ29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQpIgogICAgKTsKCiAgICAjIGRvdWJsZSBjaGVjayBpZiBjb25maWcgaXRlbSBpcyByZWFsbHkgZGVsZXRlZAogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgQ2FjaGUgICAgICAgID0+IDAsCiAgICApOwogICAgJFNlbGYtPkZhbHNlKAogICAgICAgICRDb25maWdJdGVtRGF0YS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgIkRlbGV0ZVRlc3QgJERlbGV0ZVRlc3RDb3VudCAtIGRvdWJsZSBjaGVjayAoQ29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQpIiwKICAgICk7CgogICAgJERlbGV0ZVRlc3RDb3VudCsrOwp9CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/ITSMConfigItem/CIAttachment.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm15ICRIZWxwZXJPYmplY3QgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJENJQXR0YWNobWVudE9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNJQXR0YWNobWVudCcpOwpteSAkVW5pdFRlc3RJVFNNQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCm15ICRDb25maWdJdGVtID0gJFVuaXRUZXN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1DcmVhdGUoCiAgICBOYW1lICAgICAgICAgID0+ICdNYWMnLAogICAgQ2xhc3NOYW1lICAgICA9PiAnQ29tcHV0ZXInLAogICAgRGVwbFN0YXRlTmFtZSA9PiAnUHJvZHVjdGlvbicsCiAgICBJbmNpU3RhdGVOYW1lID0+ICdPcGVyYXRpb25hbCcsCik7CgpteSAkQXR0YWNobWVudElEID0gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCm15ICRTdWNjZXNzID0gJENJQXR0YWNobWVudE9iamVjdC0+Q0lBdHRhY2htZW50QWRkKAogICAgQXR0YWNobWVudElEICAgID0+ICRBdHRhY2htZW50SUQsCiAgICBDb25maWdJdGVtRmllbGQgPT4gJ1Rlc3RGaWVsZCcsCiAgICBDb25maWdJdGVtSUQgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgVmVyc2lvbklEICAgICAgID0+IDEsCiAgICBGaWxlbmFtZSAgICAgICAgPT4gJ2FzZGYudHh0JywKICAgIENvbnRlbnQgICAgICAgICA9PiAnY29udGVudCBibHVicycsCiAgICBDb250ZW50VHlwZSAgICAgPT4gJ3RleHQvcGxhaW4nLAopOwoKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICdDSUF0dGFjaG1lbnRBZGQgc3VjY2Vzc2Z1bGwuJywKKTsKCm15ICVBdHRhY2htZW50ID0gJENJQXR0YWNobWVudE9iamVjdC0+Q0lBdHRhY2htZW50R2V0KAogICAgQXR0YWNobWVudElEID0+ICRBdHRhY2htZW50SUQsCik7CgpteSAlRXhwZWN0ZWRBdHRhY2htZW50ID0gKAogICAgQ29udGVudCAgICAgPT4gJ2NvbnRlbnQgYmx1YnMnLAogICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgRmlsZW5hbWUgICAgPT4gJ2FzZGYudHh0JywKICAgIEZpbGVzaXplUmF3ID0+ICcxMycsCiAgICBUeXBlICAgICAgICA9PiAnYXR0YWNobWVudCcsCiAgICBGaWxlc2l6ZSAgICA9PiAnMTMgQicsCik7CgokU2VsZi0+SXNEZWVwbHkoCiAgICBcJUF0dGFjaG1lbnQsCiAgICBcJUV4cGVjdGVkQXR0YWNobWVudCwKICAgICdDSUF0dGFjaG1lbnRHZXQgd2FzIHN1Y2Nlc3NmdWxsLicsCik7CgpteSBARXhwZWN0ZWRDSUF0dGFjaG1lbnRMaXN0ID0gKCRBdHRhY2htZW50SUQpOwoKbXkgQENJQXR0YWNobWVudExpc3QgPSAkQ0lBdHRhY2htZW50T2JqZWN0LT5DSUF0dGFjaG1lbnRMaXN0KAogICAgQ29uZmlnSXRlbUZpZWxkID0+ICdUZXN0RmllbGQnLAogICAgQ29uZmlnSXRlbUlEICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgIFZlcnNpb25JRCAgICAgICA9PiAxLAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgXEBDSUF0dGFjaG1lbnRMaXN0LAogICAgXEBFeHBlY3RlZENJQXR0YWNobWVudExpc3QsCiAgICAiQ0lBdHRhY2htZW50TGlzdCB3YXMgc3VjY2Vzc2Z1bGwuIChhZnRlciBDSUF0dGFjaG1lbnRBZGQpIiwKKTsKCm15IEBDb25maWdJdGVtQXR0YWNobWVudExpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgIFxAQ29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0LAogICAgW10sCiAgICAiQ29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0IHdhcyBzdWNjZXNzZnVsbC4iLAopOwoKJFN1Y2Nlc3MgPSAkQ0lBdHRhY2htZW50T2JqZWN0LT5DSUF0dGFjaG1lbnREZWxldGUoCiAgICBBdHRhY2htZW50SUQgPT4gJEF0dGFjaG1lbnRJRCwKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAnQ0lBdHRhY2htZW50RGVsZXRlIHN1Y2Nlc3NmdWxsLicsCik7CgpAQ0lBdHRhY2htZW50TGlzdCA9ICRDSUF0dGFjaG1lbnRPYmplY3QtPkNJQXR0YWNobWVudExpc3QoCiAgICBDb25maWdJdGVtRmllbGQgPT4gJ1Rlc3RGaWVsZCcsCiAgICBDb25maWdJdGVtSUQgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgVmVyc2lvbklEICAgICAgID0+IDEsCik7CgokU2VsZi0+SXNEZWVwbHkoCiAgICBcQENJQXR0YWNobWVudExpc3QsCiAgICBbXSwKICAgICdDSUF0dGFjaG1lbnRHZXQgd2FzIHN1Y2Nlc3NmdWxsLiAoYWZ0ZXIgQ0lBdHRhY2htZW50RGVsZXRlKScsCik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/ITSMConfigItem/Definition/DefinitionAdd.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKIyMgbm8gY3JpdGljIChNb2R1bGVzOjpSZXF1aXJlRXhwbGljaXRQYWNrYWdlKQp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgcXcoJFNlbGYpOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJENsYXNzSUQsCiAgICAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciLAopOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgPT4gJ0VtcHR5JywKICAgICAgICBDb25maWcgID0+IHt9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgID0+ICdNaXNzaW5nIENsYXNzc0lEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKRU9GCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgRGVmaW5pdGlvbicsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ01pc3NpbmcgVXNlcklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKRU9GCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnV3JvbmcgRGVmaW5pdGlvbiAoTGVnYWN5IFBlcmwpJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsClsKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdWZW5kb3InLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1ZlbmRvcicsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MAogICAgICAgIH0sCiAgICB9LApdOwpFT0YKICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnV3JvbmcgRGVmaW5pdGlvbiAoSW52YWxpZCBZQU1MKScsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiA8PCdFT0YnLAotLS0KVGVzdAogSW52YWxpZAotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKRU9GCiAgICAgICAgICAgIFVzZXJJRCA9PiAkVXNlcklELAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0NvcnJlY3QgQVNDSUknLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gPDwnRU9GJywKLS0tCi0gS2V5OiBWZW5kb3IKICBOYW1lOiBWZW5kb3IKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBUZXh0CiAgICBTaXplOiA1MAogICAgTWF4TGVuZ3RoOiA1MApFT0YKICAgICAgICAgICAgVXNlcklEID0+ICRVc2VySUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9LAoKKTsKCm15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15ICREZWZpbml0aW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJERlZmluaXRpb25JRCwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gRGVmaW5pdGlvbkFkZCgpIC0gV2l0aCBmYWxzZSIsCiAgICAgICAgKTsKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgJFNlbGYtPklzTm90KAogICAgICAgICREZWZpbml0aW9uSUQgLy8gMCwKICAgICAgICAwLAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25BZGQoKSAtIERlZmluaXRpb25JRCIKICAgICk7Cgp9CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/ITSMConfigItem/Definition/DefinitionGet.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKIyMgbm8gY3JpdGljIChNb2R1bGVzOjpSZXF1aXJlRXhwbGljaXRQYWNrYWdlKQp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgcXcoJFNlbGYpOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJENsYXNzSUQsCiAgICAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciLAopOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAlRGVmaW5pdGlvblRlbXBsYXRlID0gKAogICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgIENsYXNzICAgICAgPT4gJFJhbmRvbUlELAogICAgQ3JlYXRlQnkgICA9PiAkVXNlcklELAogICAgVmVyc2lvbiAgICA9PiAxLAogICAgRGVmaW5pdGlvbiA9PiA8PCdFT0YnLAotLS0KLSBLZXk6IFZlbmRvcgogIE5hbWU6IFZlbmRvcgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHQKICAgIFNpemU6IDUwCiAgICBNYXhMZW5ndGg6IDUwCkVPRgogICAgRGVmaW5pdGlvblJlZiA9PiBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICAgID0+ICdWZW5kb3InLAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdWZW5kb3InLAogICAgICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgQ291bnRNaW4gICAgID0+IDEsCiAgICAgICAgICAgIENvdW50TWF4ICAgICA9PiAxLAogICAgICAgICAgICBDb3VudERlZmF1bHQgPT4gMSwKICAgICAgICB9LAogICAgXSwKKTsKbXkgJERlZmluaXRpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgJURlZmluaXRpb25UZW1wbGF0ZSwKICAgIFVzZXJJRCA9PiAkVXNlcklELAopOwokU2VsZi0+VHJ1ZSgKICAgICREZWZpbml0aW9uSUQsCiAgICAiRGVmaW5pdGlvbkFkZCgpIiwKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdFbXB0eScsCiAgICAgICAgQ29uZmlnICA9PiB7fSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgRGVmaW5pdGlvbklEJywKICAgICAgICBDb25maWcgPT4gewogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnQnkgQ2xhc3NJRCcsCiAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiB7CiAgICAgICAgICAgICVEZWZpbml0aW9uVGVtcGxhdGUsCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgIH0sCiAgICB9LAopOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KCAleyAkVGVzdC0+e0NvbmZpZ30gfSApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkRGVmaW5pdGlvbiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gRGVmaW5pdGlvbkdldCgpIC0gV2l0aCBmYWxzZSIsCiAgICAgICAgKTsKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZGVsZXRlICREZWZpbml0aW9uLT57Q3JlYXRlVGltZX07CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICREZWZpbml0aW9uLAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRSZXN1bHRzfSwKICAgICAgICAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uR2V0KCkgLSBEZWZpbml0aW9uIgogICAgKTsKfQoKMTsK</File>
        <File Permission="660" Location="scripts/test/ITSMConfigItem/Definition/DefinitionList.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKIyMgbm8gY3JpdGljIChNb2R1bGVzOjpSZXF1aXJlRXhwbGljaXRQYWNrYWdlKQp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgcXcoJFNlbGYpOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCm15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCik7Cm15ICRVc2VySUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5Vc2VyTG9va3VwKCBVc2VyTG9naW4gPT4gJFRlc3RVc2VyTG9naW4gKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkUmFuZG9tSUQsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7CiRTZWxmLT5UcnVlKAogICAgJENsYXNzSUQsCiAgICAiQ2xhc3MgYWRkZWQgdG8gR2VuZXJhbENhdGFsb2ciLAopOwoKbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJERlZmluaXRpb25JRDEgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKRU9GCik7CiRTZWxmLT5UcnVlKAogICAgJERlZmluaXRpb25JRDEsCiAgICAiRGVmaW5pdGlvbkFkZCgpIiwKKTsKbXkgJERlZmluaXRpb25JRDIgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICBVc2VySUQgICAgID0+ICRVc2VySUQsCiAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMAogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKRU9GCik7CgokU2VsZi0+VHJ1ZSgKICAgICREZWZpbml0aW9uSUQyLAogICAgIkRlZmluaXRpb25BZGQoKSIsCik7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICA9PiAnRW1wdHknLAogICAgICAgIENvbmZpZyAgPT4ge30sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJ0J5IENsYXNzSUQnLAogICAgICAgIENvbmZpZyA9PiB7CiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDcmVhdGVCeSAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8J0VPRicsCi0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKRU9GCiAgICAgICAgICAgICAgICBWZXJzaW9uICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklEMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ3JlYXRlQnkgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiA8PCdFT0YnLAotLS0KLSBLZXk6IFZlbmRvcgogIE5hbWU6IFZlbmRvcgogIFNlYXJjaGFibGU6IDAKICBJbnB1dDoKICAgIFR5cGU6IFRleHQKICAgIFNpemU6IDUwCiAgICBNYXhMZW5ndGg6IDUwCkVPRgogICAgICAgICAgICAgICAgVmVyc2lvbiAgICAgID0+IDIsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25JRDIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgpURVNUOgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIG15ICREZWZpbml0aW9uTGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uTGlzdCggJXsgJFRlc3QtPntDb25maWd9IH0gKTsKCiAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJERlZmluaXRpb25MaXN0LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBEZWZpbml0aW9uTGlzdCgpIC0gV2l0aCBmYWxzZSIsCiAgICAgICAgKTsKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CgogICAgZm9yIG15ICREZWZpbml0aW9uICggQHskRGVmaW5pdGlvbkxpc3R9ICkgewogICAgICAgIGRlbGV0ZSAkRGVmaW5pdGlvbi0+e0NyZWF0ZVRpbWV9OwogICAgfQoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAkRGVmaW5pdGlvbkxpc3QsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IERlZmluaXRpb25MaXN0KCkgLSBEZWZpbml0aW9uIgogICAgKTsKfQoKMTsK</File>
        <File Permission="660" Location="scripts/test/ITSMConfigItem/Event/CIAttachment.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRDSUF0dGFjaG1lbnRPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDSUF0dGFjaG1lbnQnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJEhlbHBlck9iamVjdCAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkTGF5b3V0Q0lBdHRhY2htZW50T2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6TGF5b3V0Q0lBdHRhY2htZW50Jyk7Cm15ICRVbml0VGVzdElUU01Db25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbScpOwpteSAkVW5pdFRlc3RQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UGFyYW0nKTsKbXkgJFVwbG9hZENhY2hlT2JqZWN0ICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpVcGxvYWRDYWNoZScpOwoKbXkgJEF0dGFjaG1lbnRJRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7Cm15ICRGb3JtSUQgICAgICAgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JRENyZWF0ZSgpOwoKbXkgJVRlc3RBdHRhY2htZW50ID0gKAogICAgRmlsZW5hbWUgICAgPT4gJ3Rlc3QudHh0JywKICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L3BsYWluJywKICAgIENvbnRlbnQgICAgID0+ICdibHViIGJsdWInLAopOwoKJFVuaXRUZXN0UGFyYW1PYmplY3QtPlBhcmFtU2V0KAogICAgTmFtZSAgPT4gJ1Rlc3RGaWVsZDo6MScsCiAgICBWYWx1ZSA9PiAkQXR0YWNobWVudElELAopOwokVW5pdFRlc3RQYXJhbU9iamVjdC0+UGFyYW1TZXQoCiAgICBOYW1lICA9PiAnVGVzdEZpZWxkOjoxOjpDSUF0dGFjaG1lbnQnLAogICAgVmFsdWUgPT4gMSwKKTsKJFVuaXRUZXN0UGFyYW1PYmplY3QtPlBhcmFtU2V0KAogICAgTmFtZSAgPT4gJ0Zvcm1JRCcsCiAgICBWYWx1ZSA9PiAkRm9ybUlELAopOwoKbXkgJEZvcm1JREF0dGFjaG1lbnQgPSAkTGF5b3V0Q0lBdHRhY2htZW50T2JqZWN0LT5Gb3JtSURHZXQoCiAgICBBdHRhY2htZW50S2V5ID0+ICdUZXN0RmllbGQnLAopOwoKJFVwbG9hZENhY2hlT2JqZWN0LT5Gb3JtSURBZGRGaWxlKAogICAgJVRlc3RBdHRhY2htZW50LAogICAgRm9ybUlEID0+ICRGb3JtSURBdHRhY2htZW50LAopOwoKbXkgJENvbmZpZ0l0ZW0gPSAkVW5pdFRlc3RJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUNyZWF0ZSgKICAgIE5hbWUgICAgICAgICAgPT4gJ01hYycsCiAgICBDbGFzc05hbWUgICAgID0+ICdDb21wdXRlcicsCiAgICBEZXBsU3RhdGVOYW1lID0+ICdQcm9kdWN0aW9uJywKICAgIEluY2lTdGF0ZU5hbWUgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15IEBBdHRhY2htZW50cyA9ICRDSUF0dGFjaG1lbnRPYmplY3QtPkNJQXR0YWNobWVudExpc3QoCiAgICBDb25maWdJdGVtRmllbGQgPT4gJ1Rlc3RGaWVsZCcsCiAgICBDb25maWdJdGVtSUQgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgVmVyc2lvbklEICAgICAgID0+ICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH0sCik7CgokU2VsZi0+SXMoCiAgICAkQXR0YWNobWVudHNbMF0sCiAgICAkQXR0YWNobWVudElELAogICAgJ0ZvdW5kIGF0dGFjaG1lbnQgaW4gQ0lBdHRhY2htZW50TGlzdCcsCik7CgpteSAlQXR0YWNobWVudCA9ICRDSUF0dGFjaG1lbnRPYmplY3QtPkNJQXR0YWNobWVudEdldCgKICAgIEF0dGFjaG1lbnRJRCA9PiAkQXR0YWNobWVudElELAopOwoKJFNlbGYtPlRydWUoCiAgICAoICVBdHRhY2htZW50ID8gMSA6IDAgKSwKICAgICdGb3VuZCBhdHRhY2htZW50IGluIENJQXR0YWNobWVudEdldCcsCik7CgokQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkRlbGV0ZSgKICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9LAogICAgVXNlcklEICAgID0+IDEsCik7CgpAQXR0YWNobWVudHMgPSAkQ0lBdHRhY2htZW50T2JqZWN0LT5DSUF0dGFjaG1lbnRMaXN0KAogICAgQ29uZmlnSXRlbUZpZWxkID0+ICdUZXN0RmllbGQnLAogICAgQ29uZmlnSXRlbUlEICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgIFZlcnNpb25JRCAgICAgICA9PiAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9LAopOwoKJFNlbGYtPkZhbHNlKAogICAgQEF0dGFjaG1lbnRzID8gMSA6IDAsCiAgICAkQXR0YWNobWVudElELAogICAgJ0ZvdW5kIG5vIGF0dGFjaG1lbnQgaW4gQ0lBdHRhY2htZW50TGlzdCcsCik7CgolQXR0YWNobWVudCA9ICRDSUF0dGFjaG1lbnRPYmplY3QtPkNJQXR0YWNobWVudEdldCgKICAgIEF0dGFjaG1lbnRJRCA9PiAkQXR0YWNobWVudElELAopOwoKJFNlbGYtPkZhbHNlKAogICAgJUF0dGFjaG1lbnQgPyAxIDogMCwKICAgICdGb3VuZCBubyBhdHRhY2htZW50IGluIENJQXR0YWNobWVudEdldCcsCik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/ITSMConfigItemLinkTest.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkU2VydmljZU9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwpteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRMaW5rT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBkZWZpbmUgbmVlZGVkIHZhcmlhYmxlCm15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgpteSAkQ29uZmlnSXRlbU5hbWUgPSAnVW5pdFRlc3RDb25maWdJdGVtVGVzdCcgLiAkUmFuZG9tSUQ7Cm15ICRTZXJ2aWNlTmFtZSAgICA9ICdVbml0VGVzdFNlcnZpY2VUZXN0JyAuICRSYW5kb21JRDsKCm15IEBDb25maWdJdGVtSURzOwpteSBAU2VydmljZUlEczsKCm15ICRDaGVja0V4cGVjdGVkUmVzdWx0czsKJENoZWNrRXhwZWN0ZWRSZXN1bHRzID0gc3ViIHsKCiAgICAjIGdldCBwYXJhbWV0ZXJzCiAgICBteSAoJVBhcmFtKSA9IEBfOwoKICAgIG15ICVFeHBlY3RlZEluY2lkZW50U3RhdGVzID0gJXsgJFBhcmFte0V4cGVjdGVkSW5jaWRlbnRTdGF0ZXN9IH07CiAgICBteSAlT2JqZWN0TmFtZVN1ZmZpeDJJRCAgICA9ICV7ICRQYXJhbXtPYmplY3ROYW1lU3VmZml4MklEfSB9OwoKICAgICMgY2hlY2sgdGhlIHJlc3VsdHMKICAgIGZvciBteSAkT2JqZWN0ICggc29ydCBrZXlzICVFeHBlY3RlZEluY2lkZW50U3RhdGVzICkgewoKICAgICAgICBpZiAoICRPYmplY3QgZXEgJ0lUU01Db25maWdJdGVtJyApIHsKCiAgICAgICAgICAgIGZvciBteSAkTmFtZVN1ZmZpeCAoIHNvcnQga2V5cyAleyAkRXhwZWN0ZWRJbmNpZGVudFN0YXRlc3skT2JqZWN0fSB9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEKICAgICAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRPYmplY3ROYW1lU3VmZml4MklEeyRPYmplY3R9LT57JE5hbWVTdWZmaXh9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIHRoZSByZXN1bHQKICAgICAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgIkNoZWNrIGluY2lkZW50IHN0YXRlIG9mIGNvbmZpZyBpdGVtICROYW1lU3VmZml4LiIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJE9iamVjdCBlcSAnU2VydmljZScgKSB7CgogICAgICAgICAgICBmb3IgbXkgJE5hbWVTdWZmaXggKCBzb3J0IGtleXMgJXsgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBzZXJ2aWNlIGRhdGEgKGluY2x1ZGluZyB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSkKICAgICAgICAgICAgICAgIG15ICVTZXJ2aWNlRGF0YSA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlR2V0KAogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VJRCAgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgSW5jaWRlbnRTdGF0ZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayB0aGUgcmVzdWx0CiAgICAgICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAgICAgJFNlcnZpY2VEYXRhe0N1ckluY2lTdGF0ZX0sCiAgICAgICAgICAgICAgICAgICAgJEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXN7JE9iamVjdH0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgICAgICAgICAgICAgIkNoZWNrIGluY2lkZW50IHN0YXRlIG9mIHNlcnZpY2UgJE5hbWVTdWZmaXguIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBEb25lIGZvciBzZWNvbmQgcnVuIChhZnRlciByZWNhbGN1bGF0aW9uKS4KICAgIHJldHVybiAxIGlmICRQYXJhbXtSZWNhbGN1bGF0ZX07CgogICAgIyBUcmlnZ2VyIHJlY2FsY3VsYXRpb24gb2YgaW5jaWRlbnQgc3RhdGVzIGZvciBlYWNoIGNvbmZpZyBpdGVtLgogICAgbXkgJEV4aXRDb2RlCiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlJyktPkV4ZWN1dGUoKTsKICAgICRTZWxmLT5JcygKICAgICAgICAkRXhpdENvZGUsCiAgICAgICAgMCwKICAgICAgICAiQWRtaW46OklUU006OkluY2lkZW50U3RhdGU6OlJlY2FsY3VsYXRlIGV4aXQgY29kZSIsCiAgICApOwoKICAgICMgQ2hlY2sgcmVzdWx0cyBhZ2FpbiBhZnRlciByZWNhbGN1bGF0aW9uIChjYWxsIG15c2VsZiByZWN1cnNpdmVseSkuCiAgICAkQ2hlY2tFeHBlY3RlZFJlc3VsdHMtPigKICAgICAgICAlUGFyYW0sCiAgICAgICAgUmVjYWxjdWxhdGUgPT4gMSwKICAgICk7CgogICAgIyBEb25lIGZvciBmaXJzdCBydW4gKGJlZm9yZSByZWNhbGN1bGF0aW9uKS4KICAgIHJldHVybiAxOwp9OwoKIyBnZXQgY2xhc3MgbGlzdApteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCik7Cm15ICVDbGFzc0xpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyRDbGFzc0xpc3R9OwoKIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0Cm15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAopOwpteSAlRGVwbFN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JERlcGxTdGF0ZUxpc3R9OwoKIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdApteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCik7Cm15ICVJbmNpU3RhdGVMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJXskSW5jaVN0YXRlTGlzdH07CgojIGdldCBkZWZpbml0aW9uIGZvciAnSGFyZHdhcmUnIGNsYXNzCm15ICREZWZpbml0aW9uUmVmID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICBDbGFzc0lEID0+ICRDbGFzc0xpc3RSZXZlcnNle0hhcmR3YXJlfSwKKTsKCm15ICVPYmplY3ROYW1lU3VmZml4MklEOwoKIyBjcmVhdGUgY29uZmlnIGl0ZW1zCmZvciBteSAkTmFtZVN1ZmZpeCAoIDEgLi4gNywgcXcoQSBCIEMgRCBFIEYgRykgKSB7CgogICAgIyBhZGQgYSBjb25maWdpdGVtCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NMaXN0UmV2ZXJzZXtIYXJkd2FyZX0sCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICJBZGRlZCBjb25maWdpdGVtIGlkICRDb25maWdJdGVtSUQuIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgY29uZmlnIGl0ZW0gaWQKICAgICRPYmplY3ROYW1lU3VmZml4MklEe0lUU01Db25maWdJdGVtfS0+eyROYW1lU3VmZml4fSA9ICRDb25maWdJdGVtSUQ7CgogICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAjIHNldCBhIG5hbWUgZm9yIGVhY2ggY29uZmlnaXRlbQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX0hhcmR3YXJlXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25SZWYtPntEZWZpbml0aW9uSUR9LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgVmVuZG9yID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3RWZW5kb3InLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVmVyc2lvbklELAogICAgICAgICJBZGRlZCBhIHZlcnNpb24gZm9yIHRoZSBjb25maWdpdGVtIGlkICRDb25maWdJdGVtSUQiLAogICAgKTsKfQoKIyBjcmVhdGUgc2VydmljZXMKZm9yIG15ICROYW1lU3VmZml4ICggMSAuLiAyICkgewoKICAgIG15ICRTZXJ2aWNlSUQgPSAkU2VydmljZU9iamVjdC0+U2VydmljZUFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAkU2VydmljZU5hbWUgLiAnXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgIFVzZXJJRCAgICAgID0+IDEsCiAgICAgICAgVHlwZUlEICAgICAgPT4gMSwKICAgICAgICBDcml0aWNhbGl0eSA9PiAnMyBub3JtYWwnLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkU2VydmljZUlELAogICAgICAgICJBZGRlZCBzZXJ2aWNlIGlkICRTZXJ2aWNlSUQuIiwKICAgICk7CgogICAgIyByZW1lbWJlciB0aGUgc2VydmljZSBpZAogICAgJE9iamVjdE5hbWVTdWZmaXgySUR7U2VydmljZX0tPnskTmFtZVN1ZmZpeH0gPSAkU2VydmljZUlEOwoKICAgIHB1c2ggQFNlcnZpY2VJRHMsICRTZXJ2aWNlSUQ7Cn0KCiMgcmVhZCB0aGUgb3JpZ2luYWwgc2V0dGluZyBmb3IgSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbgpteSAkT3JpZ0luY2lkZW50TGlua1R5cGVEaXJlY3Rpb25TZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJyk7CgojIHNldCBuZXcgY29uZmlnIGZvciBJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uJywKICAgIFZhbHVlID0+IHsKICAgICAgICBEZXBlbmRzT24gPT4gJ1NvdXJjZScsCiAgICAgICAgSW5jbHVkZXMgID0+ICdTb3VyY2UnLAogICAgfSwKKTsKCiMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rIERpYWdyYW0KIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiMKIwojCiMgICAgICAgICAgICAgICAgICAgICA2ICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2UgMQojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgICAgICAgICAgICAgdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAojICAgICAgICAgQyA8KioqKioqKiogNSAtLS0tLS0+IDQgLS0tLS0tPiAzIC0tLS0tLT4gMSAqKioqKioqKio+IEEgKioqKioqKj4gRiAqKioqKioqKioqPiBHCiMgICAgICAgICAqICAgICAgICAgICBeICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgXiAgICAgICAgICBeCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICBCICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICAqICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAqICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICB2ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB2ICAgICAgICAgICAgKiAgICAgICAgICAqCiMgICAgICAgICBEICoqKioqKioqPiA3ICAgICAgICAgICAgICAgICAgICstLS0tLS0tPiAyICoqKioqKioqKioqKiAgICAgICAgICBFCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlIDIKIwojCiMKIwojICBFeHBsYW5hdGlvbjoKIyAgICAgICAgICAgICAgIDEgLi4gNyBhbmQgQSAuLiBHIGFyZSBJVFNNQ29uZmlnSXRlbXMKIwojICAgICAgICAgICAgICAgRGVwZW5kc09uIExpbmtzIGFyZSBzaG93biBhcyAtLS0tLT4KIyAgICAgICAgICAgICAgIEluY2x1ZGVzICBMaW5rcyBhcmUgc2hvd24gYXMgKioqKio+CiMKIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIGRlZmluZSB0aGUgbGlua3MgYmV0d2VlbiBDSXMgYW5kIFNlcnZpY2VzCm15ICVMaW5rcyA9ICgKICAgIERlcGVuZHNPbiA9PiB7CiAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAnNycgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyc1J10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICc2JyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzUnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJzUnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnNCddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnNCcgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWyczJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICczJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbICcxJywgJzInIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICcxJyA9PiB7CiAgICAgICAgICAgICAgICBTZXJ2aWNlID0+IFsnMSddLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICcyJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzInXSwKICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICB9LAogICAgSW5jbHVkZXMgPT4gewogICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgJzUnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnQyddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnQycgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydEJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdEJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJzcnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0InID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnMiddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnMicgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydBJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICcxJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0EnXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgJ0EnID0+IHsKICAgICAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IFsnRiddLAogICAgICAgICAgICB9LAogICAgICAgICAgICAnRicgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gWydHJ10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICdFJyA9PiB7CiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiBbJ0YnXSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKKTsKCiMgbGluayB0aGUgY29uZmlnIGl0ZW1zIGFuZCBzZXJ2aWNlcyBhcyBzaG93biBpbiB0aGUgZGlhZ3JhbQpmb3IgbXkgJExpbmtUeXBlICggc29ydCBrZXlzICVMaW5rcyApIHsKICAgIGZvciBteSAkVGFyZ2V0T2JqZWN0ICggc29ydCBrZXlzICV7ICRMaW5rc3skTGlua1R5cGV9IH0gKSB7CiAgICAgICAgZm9yIG15ICRUYXJnZXRLZXkgKCBzb3J0IGtleXMgJXsgJExpbmtzeyRMaW5rVHlwZX0tPnskVGFyZ2V0T2JqZWN0fSB9ICkgewogICAgICAgICAgICBmb3IgbXkgJFNvdXJjZU9iamVjdCAoIHNvcnQga2V5cyAleyAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0gfSApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvciBteSAkU291cmNlS2V5ICgKICAgICAgICAgICAgICAgICAgICBAeyAkTGlua3N7JExpbmtUeXBlfS0+eyRUYXJnZXRPYmplY3R9LT57JFRhcmdldEtleX0tPnskU291cmNlT2JqZWN0fSB9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIGFkZCB0aGUgbGlua3MKICAgICAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJFNvdXJjZU9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgICAgU291cmNlS2V5ICAgID0+ICRPYmplY3ROYW1lU3VmZml4MklEeyRTb3VyY2VPYmplY3R9LT57JFNvdXJjZUtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAkVGFyZ2V0T2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXRLZXkgICAgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7JFRhcmdldE9iamVjdH0tPnskVGFyZ2V0S2V5fSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICAgICAgICAgIkxpbmtBZGQoKSAtICRTb3VyY2VPYmplY3Q6JFNvdXJjZUtleSBsaW5rZWQgd2l0aCAkVGFyZ2V0T2JqZWN0OiRUYXJnZXRLZXkgd2l0aCBMaW5rVHlwZSAnJExpbmtUeXBlJy4iLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBzZXQgQ0k2IHRvICJJbmNpZGVudCIgYW5kIGNoZWNrIHRoZSByZXN1bHRzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCnsKCiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDY7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdJbmNpZGVudCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX0hhcmR3YXJlXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25SZWYtPntEZWZpbml0aW9uSUR9LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIsCiAgICApOwoKICAgICRDaGVja0V4cGVjdGVkUmVzdWx0cy0+KAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzInID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICczJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzUnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICc2JyA9PiAnSW5jaWRlbnQnLAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdCJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0MnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPYmplY3ROYW1lU3VmZml4MklEID0+IFwlT2JqZWN0TmFtZVN1ZmZpeDJJRCwKICAgICk7Cgp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgc2V0IENJNiBiYWNrIHRvICJPcGVyYXRpb25hbCIgYW5kIGNoZWNrIHRoZSByZXN1bHRzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCnsKCiAgICBteSAkTmFtZVN1ZmZpeCAgICA9IDY7CiAgICBteSAkSW5jaWRlbnRTdGF0ZSA9ICdPcGVyYXRpb25hbCc7CgogICAgIyBjaGFuZ2UgaW5jaWRlbnQgc3RhdGUKICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJE9iamVjdE5hbWVTdWZmaXgySUR7SVRTTUNvbmZpZ0l0ZW19LT57JE5hbWVTdWZmaXh9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUgLiAnX0hhcmR3YXJlXycgLiAkTmFtZVN1ZmZpeCwKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb25SZWYtPntEZWZpbml0aW9uSUR9LAogICAgICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXskSW5jaWRlbnRTdGF0ZX0sCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwoKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgIlNldCBjb25maWcgaXRlbSBpZCAkTmFtZVN1ZmZpeCB0byBzdGF0ZSAnJEluY2lkZW50U3RhdGUnLiIsCiAgICApOwoKICAgICRDaGVja0V4cGVjdGVkUmVzdWx0cy0+KAogICAgICAgIEV4cGVjdGVkSW5jaWRlbnRTdGF0ZXMgPT4gewogICAgICAgICAgICBJVFNNQ29uZmlnSXRlbSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzMnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNCcgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc1JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzYnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdBJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdHJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgICAgICBTZXJ2aWNlID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPYmplY3ROYW1lU3VmZml4MklEID0+IFwlT2JqZWN0TmFtZVN1ZmZpeDJJRCwKICAgICk7Cgp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgc2V0IENJMSB0byAiSW5jaWRlbnQiIGFuZCBjaGVjayB0aGUgcmVzdWx0cwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgp7CgogICAgbXkgJE5hbWVTdWZmaXggICAgPSAxOwogICAgbXkgJEluY2lkZW50U3RhdGUgPSAnSW5jaWRlbnQnOwoKICAgICMgY2hhbmdlIGluY2lkZW50IHN0YXRlCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRPYmplY3ROYW1lU3VmZml4MklEe0lUU01Db25maWdJdGVtfS0+eyROYW1lU3VmZml4fSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lIC4gJ19IYXJkd2FyZV8nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uUmVmLT57RGVmaW5pdGlvbklEfSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVmVyc2lvbklELAogICAgICAgICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iLAogICAgKTsKCiAgICAkQ2hlY2tFeHBlY3RlZFJlc3VsdHMtPigKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICczJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzQnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc2JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzcnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQScgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdEJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0cnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwoKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIHNldCBDSTUgdG8gIkluY2lkZW50IiBhbmQgY2hlY2sgdGhlIHJlc3VsdHMgKENJMSBpcyBzdGlsbCBpbiAiSW5jaWRlbnQiKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgp7CgogICAgbXkgJE5hbWVTdWZmaXggICAgPSA1OwogICAgbXkgJEluY2lkZW50U3RhdGUgPSAnSW5jaWRlbnQnOwoKICAgICMgY2hhbmdlIGluY2lkZW50IHN0YXRlCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRPYmplY3ROYW1lU3VmZml4MklEe0lUU01Db25maWdJdGVtfS0+eyROYW1lU3VmZml4fSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lIC4gJ19IYXJkd2FyZV8nIC4gJE5hbWVTdWZmaXgsCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uUmVmLT57RGVmaW5pdGlvbklEfSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7JEluY2lkZW50U3RhdGV9LAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVmVyc2lvbklELAogICAgICAgICJTZXQgY29uZmlnIGl0ZW0gaWQgJE5hbWVTdWZmaXggdG8gc3RhdGUgJyRJbmNpZGVudFN0YXRlJy4iLAogICAgKTsKCiAgICAkQ2hlY2tFeHBlY3RlZFJlc3VsdHMtPigKICAgICAgICBFeHBlY3RlZEluY2lkZW50U3RhdGVzID0+IHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdJbmNpZGVudCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzMnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICc0JyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnNScgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICc2JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzcnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdBJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnQicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnRCcgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0UnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRicgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0cnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICcyJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgT2JqZWN0TmFtZVN1ZmZpeDJJRCA9PiBcJU9iamVjdE5hbWVTdWZmaXgySUQsCiAgICApOwoKfQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgc2V0IENJMSB0byAiT3BlcmF0aW9uYWwiIGFuZCBjaGVjayB0aGUgcmVzdWx0cyAoQ0k1IGlzIHN0aWxsIGluICJJbmNpZGVudCIpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKewoKICAgIG15ICROYW1lU3VmZml4ICAgID0gMTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfSGFyZHdhcmVfJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvblJlZi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFZlcnNpb25JRCwKICAgICAgICAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiwKICAgICk7CgogICAgJENoZWNrRXhwZWN0ZWRSZXN1bHRzLT4oCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnMicgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzMnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICc0JyA9PiAnV2FybmluZycsCiAgICAgICAgICAgICAgICAnNScgPT4gJ0luY2lkZW50JywKICAgICAgICAgICAgICAgICc2JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzcnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdBJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0InID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQycgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJ0QnID0+ICdXYXJuaW5nJywKICAgICAgICAgICAgICAgICdFJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0YnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VydmljZSA9PiB7CiAgICAgICAgICAgICAgICAnMScgPT4gJ1dhcm5pbmcnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICBPYmplY3ROYW1lU3VmZml4MklEID0+IFwlT2JqZWN0TmFtZVN1ZmZpeDJJRCwKICAgICk7Cgp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBzZXQgQ0k1IHRvICJPcGVyYXRpb25hbCIgYW5kIGNoZWNrIHRoZSByZXN1bHRzCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKewoKICAgIG15ICROYW1lU3VmZml4ICAgID0gNTsKICAgIG15ICRJbmNpZGVudFN0YXRlID0gJ09wZXJhdGlvbmFsJzsKCiAgICAjIGNoYW5nZSBpbmNpZGVudCBzdGF0ZQogICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkT2JqZWN0TmFtZVN1ZmZpeDJJRHtJVFNNQ29uZmlnSXRlbX0tPnskTmFtZVN1ZmZpeH0sCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSAuICdfSGFyZHdhcmVfJyAuICROYW1lU3VmZml4LAogICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvblJlZi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNleyRJbmNpZGVudFN0YXRlfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFZlcnNpb25JRCwKICAgICAgICAiU2V0IGNvbmZpZyBpdGVtIGlkICROYW1lU3VmZml4IHRvIHN0YXRlICckSW5jaWRlbnRTdGF0ZScuIiwKICAgICk7CgogICAgJENoZWNrRXhwZWN0ZWRSZXN1bHRzLT4oCiAgICAgICAgRXhwZWN0ZWRJbmNpZGVudFN0YXRlcyA9PiB7CiAgICAgICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgICcxJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzInID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMycgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc0JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJzUnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnNicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICc3JyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0EnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnQicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdDJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0QnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnRScgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgICAgICdGJyA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0cnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlcnZpY2UgPT4gewogICAgICAgICAgICAgICAgJzEnID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICAnMicgPT4gJ09wZXJhdGlvbmFsJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIE9iamVjdE5hbWVTdWZmaXgySUQgPT4gXCVPYmplY3ROYW1lU3VmZml4MklELAogICAgKTsKCn0KCiMgcmVzZXQgdGhlIGVuYWJsZWQgc2V0dGluZyBmb3IgSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbiB0byBpdHMgb3JpZ2luYWwgdmFsdWUKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24nLAogICAgVmFsdWUgPT4gJE9yaWdJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uU2V0dGluZywKKTsKCiMgQ2hlY2sgQ0kncyBpbmNpZGVudCBzdGF0ZSB1cGRhdGUgYWZ0ZXIgJ0xpbmtBZGQnIGFjdGlvbiAoc2VlIGJ1ZyMxNDM4MikuCiMgU2V0IHNvbWUgY29uZmlncyBmb3IgbGluayBzdGF0dXMuCiRDb25maWdPYmplY3QtPlNldCgKICAgIFZhbGlkID0+IDEsCiAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OlNldEluY2lkZW50U3RhdGVPbkxpbmsnLAogICAgVmFsdWUgPT4gMSwKKTsKJENvbmZpZ09iamVjdC0+U2V0KAogICAgVmFsaWQgPT4gMSwKICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6RGVwbG95bWVudFN0YXRlcycsCiAgICBWYWx1ZSA9PiBbJ1Byb2R1Y3Rpb24nXSwKKTsKJENvbmZpZ09iamVjdC0+U2V0KAogICAgVmFsaWQgPT4gMSwKICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6SW5jaWRlbnRTdGF0ZXMnLAogICAgVmFsdWUgPT4gWyAnSW5jaWRlbnQnLCAnV2FybmluZycsICdPcGVyYXRpb25hbCcgXSwKKTsKJENvbmZpZ09iamVjdC0+U2V0KAogICAgVmFsaWQgPT4gMSwKICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbTo6TGlua1N0YXR1czo6TGlua1R5cGVzJywKICAgIFZhbHVlID0+IHsKICAgICAgICBSZWxldmFudFRvID0+ICdJbmNpZGVudCcsCiAgICB9LAopOwokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpMaW5rU3RhdHVzOjpUaWNrZXRUeXBlcycsCiAgICBWYWx1ZSA9PiBbJ0luY2lkZW50J10sCik7CgokUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwoKbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCm15ICVUeXBlcyA9IHJldmVyc2UgJFRpY2tldE9iamVjdC0+VGlja2V0VHlwZUxpc3QoCiAgICBVc2VySUQgPT4gMSwKKTsKCmlmICggISRUeXBlc3tJbmNpZGVudH0gKSB7CiAgICBteSAkVHlwZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyk7CiAgICBteSAkSUQgICAgICAgICA9ICRUeXBlT2JqZWN0LT5UeXBlQWRkKAogICAgICAgIE5hbWUgICAgPT4gJ0luY2lkZW50JywKICAgICAgICBWYWxpZElEID0+IDEsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKfQoKIyBDcmVhdGUgdGVzdCB0aWNrZXQuCm15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFRpdGxlICAgICAgICA9PiAiVE4tJFJhbmRvbUlEIiwKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgIFR5cGUgICAgICAgICA9PiAnSW5jaWRlbnQnLAogICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckBleGFtcGxlLmNvbScsCiAgICBPd25lcklEICAgICAgPT4gMSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRUaWNrZXRJRCwKICAgICJUaWNrZXRJRCAkVGlja2V0SUQgaXMgY3JlYXRlZCIsCik7CgpteSAkWE1MRGF0YSA9IFsKICAgIHVuZGVmLAogICAgewogICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmVuZG9yID0+IFsKICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ1Rlc3RWZW5kb3InLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LApdOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgID0+ICJDSS0wMS0kUmFuZG9tSUQiLAogICAgICAgIERlcGxTdGF0ZUlEICAgICAgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnSW5jaWRlbnQnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDItJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICA9PiAiQ0ktMDMtJFJhbmRvbUlEIiwKICAgICAgICBEZXBsU3RhdGVJRCAgICAgICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICAgICAgSW5jaVN0YXRlSUQgICAgICAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle0luY2lkZW50fSwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICA9PiAnUmVsZXZhbnRUbycsCiAgICAgICAgRXhwZWN0ZWRJbmNpU3RhdGUgPT4gJ0luY2lkZW50JywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgPT4gIkNJLTA0LSRSYW5kb21JRCIsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgICAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle01haW50ZW5hbmNlfSwKICAgICAgICBJbmNpU3RhdGVJRCAgICAgICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgICAgIExpbmtUeXBlICAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgICAgICBFeHBlY3RlZEluY2lTdGF0ZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgfSwKKTsKCm15IEBDSUlEczsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBDcmVhdGUgQ0kuCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NMaXN0UmV2ZXJzZXtIYXJkd2FyZX0sCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGlzIGNyZWF0ZWQiLAogICAgKTsKCiAgICBwdXNoIEBDSUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAjIEFkZCBhIHZlcnNpb24uCiAgICBteSAkVmVyc2lvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICRUZXN0LT57TmFtZX0sCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uUmVmLT57RGVmaW5pdGlvbklEfSwKICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFRlc3QtPntEZXBsU3RhdGVJRH0sCiAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRUZXN0LT57SW5jaVN0YXRlSUR9LAogICAgICAgIFhNTERhdGEgICAgICA9PiAkWE1MRGF0YSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVmVyc2lvbklELAogICAgICAgICJWZXJzaW9uSUQgJFZlcnNpb25JRCBpcyBjcmVhdGVkIiwKICAgICk7CgogICAgIyBBZGQgYSBsaW5rLgogICAgbXkgJFN1Y2Nlc3MgPSAkTGlua09iamVjdC0+TGlua0FkZCgKICAgICAgICBTb3VyY2VPYmplY3QgPT4gJ1RpY2tldCcsCiAgICAgICAgU291cmNlS2V5ICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBUYXJnZXRPYmplY3QgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBUeXBlICAgICAgICAgPT4gJFRlc3QtPntMaW5rVHlwZX0sCiAgICAgICAgU3RhdGUgICAgICAgID0+ICdWYWxpZCcsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgIlRpY2tldElEICRUaWNrZXRJRCBsaW5rZWQgd2l0aCBDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRCB3aXRoIExpbmtUeXBlICckVGVzdC0+e0xpbmtUeXBlfSciLAogICAgKTsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICAjIENoZWNrIENJJ3MgaW5jaWRlbnQgc3RhdGUuCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGV9LAogICAgICAgICRUZXN0LT57RXhwZWN0ZWRJbmNpU3RhdGV9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gQ3VySW5jaVN0YXRlOiAkVGVzdC0+e0V4cGVjdGVkSW5jaVN0YXRlfSIsCiAgICApOwp9CgojIFNldCB0aWNrZXQgdHlwZSB0byBzb21ldGhpbmcgZGlmZmVyZW50IHRoYW4gJ0luY2lkZW50JyB0byB2ZXJpZnkgQ0kncyBpbmNpZGVudCBzdGF0ZSB1cGRhdGUuCm15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0VHlwZVNldCgKICAgIFR5cGUgICAgID0+ICdVbmNsYXNzaWZpZWQnLAogICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJUeXBlIGZvciBUaWNrZXRJRCAkVGlja2V0SUQgaXMgY2hhbmdlZCB0byAnVW5jbGFzc2lmaWVkJyIsCik7Cgpmb3IgbXkgJENJSUQgKEBDSUlEcykgewogICAgbXkgJENJID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDSUlELAogICAgKTsKICAgICRTZWxmLT5JcygKICAgICAgICAkQ0ktPntDdXJJbmNpU3RhdGV9LAogICAgICAgICdPcGVyYXRpb25hbCcsCiAgICAgICAgIkNJSUQgJENJSUQgaXMgaW4gJ09wZXJhdGlvbmFsJyBzdGF0ZSBhZnRlciB0aWNrZXQgdHlwZSB1cGRhdGUiLAogICAgKTsKfQoKIyBjbGVhbnVwIGlzIGRvbmUgYnkgUmVzdG9yZURhdGFiYXNlCgoxOwo=</File>
        <File Permission="660" Location="scripts/test/ITSMConfigItemUniqueCIName.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCm15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwpteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIGRlZmluZSBuZWVkZWQgdmFyaWFibGUKbXkgJFJhbmRvbUlEID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKIyBtYWtlIHByZXBhcmF0aW9ucwojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgojIGFkZCB0aGUgdGVzdCBjbGFzc2VzCm15IEBDb25maWdJdGVtQ2xhc3NJRHM7Cm15IEBDb25maWdJdGVtQ2xhc3NlczsKbXkgQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzOwoKIyBnZW5lcmF0ZSBhIHJhbmRvbSBuYW1lCm15ICRGaXJzdENsYXNzTmFtZSAgPSAnVW5pdFRlc3RDbGFzczEnIC4gJFJhbmRvbUlEOwpteSAkU2Vjb25kQ2xhc3NOYW1lID0gJ1VuaXRUZXN0Q2xhc3MyJyAuICRSYW5kb21JRDsKCiMgc2V0IGEgbmFtZSBwcmVmaXgKbXkgJE5hbWVQcmVmaXggPSAnVW5pdFRlc3ROYW1lJyAuICRSYW5kb21JRDsKCiMgYWRkIGJvdGggdW5pdHRlc3QgY29uZmlnIGl0ZW0gY2xhc3NlcwpteSAkRmlyc3RDbGFzc0lEID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgTmFtZSAgICA9PiAkRmlyc3RDbGFzc05hbWUsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CgojIGNoZWNrIGZpcnN0IGNsYXNzIGlkCmlmICggISRGaXJzdENsYXNzSUQgKSB7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiQ2FuJ3QgYWRkIGZpcnN0IGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICApOwp9CgpwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRGaXJzdENsYXNzSUQ7CnB1c2ggQENvbmZpZ0l0ZW1DbGFzc2VzLCAgJEZpcnN0Q2xhc3NOYW1lOwoKbXkgJFNlY29uZENsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1BZGQoCiAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICBOYW1lICAgID0+ICRTZWNvbmRDbGFzc05hbWUsCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CgojIGNoZWNrIHNlY29uZCBjbGFzcyBpZAppZiAoICEkU2Vjb25kQ2xhc3NJRCApIHsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJDYW4ndCBhZGQgc2Vjb25kIGNvbmZpZyBpdGVtIGNsYXNzLiIsCiAgICApOwp9CgpwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRTZWNvbmRDbGFzc0lEOwpwdXNoIEBDb25maWdJdGVtQ2xhc3NlcywgICRTZWNvbmRDbGFzc05hbWU7CgojIGFkZCBhbiBlbXB0eSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcy4gdGhlIGRlZmluaXRpb24gZG9lc24ndCBuZWVkIGFueSBlbGVtZW50cywgYXMgd2UncmUgb25seQojIHRlc3RpbmcgdGhlIG5hbWUgd2hpY2ggaXNuJ3QgcGFydCBvZiB0aGUgZGVmaW5pdGlvbiwgYnV0IG9mIHRoZSBjb25maWcgaXRlbSBpdHNlbGYKbXkgJEZpcnN0RGVmaW5pdGlvbklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICBDbGFzc0lEICAgID0+ICRGaXJzdENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+ICItLS0gW10iLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKIyBjaGVjayBkZWZpbml0aW9uIGlkCmlmICggISRGaXJzdERlZmluaXRpb25JRCApIHsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJDYW4ndCBhZGQgZmlyc3QgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbi4iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbURlZmluaXRpb25JRHMsICRGaXJzdERlZmluaXRpb25JRDsKCm15ICRTZWNvbmREZWZpbml0aW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgIENsYXNzSUQgICAgPT4gJFNlY29uZENsYXNzSUQsCiAgICBEZWZpbml0aW9uID0+ICItLS0gW10iLAogICAgVXNlcklEICAgICA9PiAxLAopOwoKIyBjaGVjayBkZWZpbml0aW9uIGlkCmlmICggISRTZWNvbmREZWZpbml0aW9uSUQgKSB7CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiQ2FuJ3QgYWRkIHNlY29uZCBjb25maWcgaXRlbSBkZWZpbml0aW9uLiIsCiAgICApOwp9CgpwdXNoIEBDb25maWdJdGVtRGVmaW5pdGlvbklEcywgJFNlY29uZERlZmluaXRpb25JRDsKCm15IEBDb25maWdJdGVtSURzOwoKIyBhZGQgYSBjb25maWdpdGVtIHRvIGVhY2ggY2xhc3MKbXkgJEZpcnN0Q29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBDbGFzc0lEID0+ICRGaXJzdENsYXNzSUQsCiAgICBVc2VySUQgID0+IDEsCik7CgppZiAoICEkRmlyc3RDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSBmaXJzdCBjb25maWdpdGVtIiwKICAgICk7Cn0KCnB1c2ggQENvbmZpZ0l0ZW1JRHMsICRGaXJzdENvbmZpZ0l0ZW1JRDsKCm15ICRTZWNvbmRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgIENsYXNzSUQgPT4gJFNlY29uZENsYXNzSUQsCiAgICBVc2VySUQgID0+IDEsCik7CgppZiAoICEkU2Vjb25kQ29uZmlnSXRlbUlEICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiRmFpbGVkIHRvIGFkZCB0aGUgc2Vjb25kIGNvbmZpZ2l0ZW0iLAogICAgKTsKfQoKcHVzaCBAQ29uZmlnSXRlbUlEcywgJFNlY29uZENvbmZpZ0l0ZW1JRDsKCiMgY3JlYXRlIGEgM3JkIGNvbmZpZ2l0ZW0gaW4gdGhlIDJuZCBjbGFzcwpteSAkVGhpcmRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgIENsYXNzSUQgPT4gJFNlY29uZENsYXNzSUQsCiAgICBVc2VySUQgID0+IDEsCik7CgppZiAoICEkVGhpcmRDb25maWdJdGVtSUQgKSB7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAwLAogICAgICAgICJGYWlsZWQgdG8gYWRkIHRoZSB0aGlyZCBjb25maWdpdGVtIiwKICAgICk7Cn0KCnB1c2ggQENvbmZpZ0l0ZW1JRHMsICRUaGlyZENvbmZpZ0l0ZW1JRDsKCiMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgbGlzdApteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKKTsKbXkgJURlcGxTdGF0ZUxpc3RSZXZlcnNlID0gcmV2ZXJzZSAleyREZXBsU3RhdGVMaXN0fTsKCiMgZ2V0IGluY2lkZW50IHN0YXRlIGxpc3QKbXkgJEluY2lTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAopOwpteSAlSW5jaVN0YXRlTGlzdFJldmVyc2UgPSByZXZlcnNlICV7JEluY2lTdGF0ZUxpc3R9OwoKIyBzZXQgYSBuYW1lIGZvciBlYWNoIGNvbmZpZ2l0ZW0KbXkgJEZpcnN0SW5pdGlhbFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgQ29uZmlnSXRlbUlEID0+ICRGaXJzdENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdGaXJzdCMwMDEnLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdERlZmluaXRpb25JRCwKICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwoKaWYgKCAhJEZpcnN0SW5pdGlhbFZlcnNpb25JRCApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDAsCiAgICAgICAgIkZhaWxlZCB0byBhZGQgdGhlIGluaXRpYWwgdmVyc2lvbiBmb3IgdGhlIGZpcnN0IGNvbmZpZ2l0ZW0iLAogICAgKTsKfQoKbXkgJFNlY29uZEluaXRpYWxWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2Vjb25kQ29uZmlnSXRlbUlELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDEnLAogICAgRGVmaW5pdGlvbklEID0+ICRTZWNvbmREZWZpbml0aW9uSUQsCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCmlmICggISRTZWNvbmRJbml0aWFsVmVyc2lvbklEICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiRmFpbGVkIHRvIGFkZCB0aGUgaW5pdGlhbCB2ZXJzaW9uIGZvciB0aGUgc2Vjb25kIGNvbmZpZ2l0ZW0iLAogICAgKTsKfQoKbXkgJFRoaXJkSW5pdGlhbFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgQ29uZmlnSXRlbUlEID0+ICRUaGlyZENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAyJywKICAgIERlZmluaXRpb25JRCA9PiAkU2Vjb25kRGVmaW5pdGlvbklELAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgppZiAoICEkVGhpcmRJbml0aWFsVmVyc2lvbklEICkgewogICAgJFNlbGYtPlRydWUoCiAgICAgICAgMCwKICAgICAgICAiRmFpbGVkIHRvIGFkZCB0aGUgaW5pdGlhbCB2ZXJzaW9uIGZvciB0aGUgdGhpcmQgY29uZmlnaXRlbSIsCiAgICApOwp9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiMgcnVuIHRoZSBhY3R1YWwgdGVzdHMKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKIyByZWFkIHRoZSBvcmlnaW5hbCBzZXR0aW5nIGZvciB0aGUgc2V0dGluZyBFbmFibGVVbmlxdWVuZXNzQ2hlY2sKbXkgJE9yaWdFbmFibGVTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OkVuYWJsZVVuaXF1ZW5lc3NDaGVjaycpOwoKIyBlbmFibGUgdGhlIHVuaXF1ZW5lc3MgY2hlY2sKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJywKICAgIFZhbHVlID0+IDEsCik7CgojIHJlYWQgdGhlIG9yaWdpbmFsIHNldHRpbmcgZm9yIHRoZSBzY29wZSBvZiB0aGUgdW5pcXVlbmVzcyBjaGVjawpteSAkT3JpZ1Njb3BlID0gJENvbmZpZ09iamVjdC0+R2V0KCdVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlJyk7CgojIG1ha2Ugc3VyZSwgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayBpcyBzZXQgdG8gJ2dsb2JhbCcKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnLAogICAgVmFsdWUgPT4gJ2dsb2JhbCcsCik7CgpteSAkUmVuYW1lU3VjY2VzczsKCiMgdHJ5IHRvIGdpdmUgdGhlIDFzdCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDJuZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkRmlyc3RDb25maWdJdGVtSUQsCiAgICBOYW1lICAgICAgICAgPT4gJE5hbWVQcmVmaXggLiAnU2Vjb25kIzAwMScsCiAgICBEZWZpbml0aW9uSUQgPT4gJEZpcnN0RGVmaW5pdGlvbklELAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkUmVuYW1lU3VjY2VzcywKICAgICJTY29wZSA9PiBnbG9iYWw6IFJlbmFtaW5nIEZpcnN0IzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDEgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgdHJ5IHRvIGdpdmUgdGhlIDJuZCBjb25maWdpdGVtIHRoZSBzYW1lIG5hbWUgYXMgdGhlIDNyZCBvbmUKJFJlbmFtZVN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkU2Vjb25kQ29uZmlnSXRlbUlELAogICAgTmFtZSAgICAgICAgID0+ICROYW1lUHJlZml4IC4gJ1NlY29uZCMwMDInLAogICAgRGVmaW5pdGlvbklEID0+ICRGaXJzdERlZmluaXRpb25JRCwKICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlTGlzdFJldmVyc2V7UHJvZHVjdGlvbn0sCiAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUxpc3RSZXZlcnNle09wZXJhdGlvbmFsfSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwoKJFNlbGYtPkZhbHNlKAogICAgJFJlbmFtZVN1Y2Nlc3MsCiAgICAiU2NvcGUgPT4gZ2xvYmFsOiBSZW5hbWluZyBTZWNvbmQjMDAxIHRvIGFscmVhZHkgZXhpc3RpbmcgU2Vjb25kIzAwMiBzdWNjZXNzZnVsbHkgcHJldmVudGVkIgopOwoKIyBzZXQgdGhlIHNjb3BlIGZvciB0aGUgdW5pcXVlbmVzcyBjaGVjayB0byAnY2xhc3MnCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlJywKICAgIFZhbHVlID0+ICdjbGFzcycsCik7CgojIHRyeSB0byByZW5hbWUgRmlyc3QjMDAxIGFnYWluIHRvIFNlY29uZCMwMDEgd2hpY2ggc2hvdWxkIHdvcmsgbm93LCBkdWUgdG8gdGhlIGRpZmZlcmVudCBjbGFzcwokUmVuYW1lU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgQ29uZmlnSXRlbUlEID0+ICRGaXJzdENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAxJywKICAgIERlZmluaXRpb25JRCA9PiAkRmlyc3REZWZpbml0aW9uSUQsCiAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUxpc3RSZXZlcnNle1Byb2R1Y3Rpb259LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVMaXN0UmV2ZXJzZXtPcGVyYXRpb25hbH0sCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgJFJlbmFtZVN1Y2Nlc3MsCiAgICAiU2NvcGUgPT4gY2xhc3M6IFJlbmFtaW5nIEZpcnN0IzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDEgc3VjY2VlZGVkIgopOwoKIyB0cnlpbmcgbm93IHRvIGNyZWF0ZSBhIGR1cGxpY2F0ZSBuYW1lIHdpdGhpbiBhIGNsYXNzCiRSZW5hbWVTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BZGQoCiAgICBDb25maWdJdGVtSUQgPT4gJFNlY29uZENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICA9PiAkTmFtZVByZWZpeCAuICdTZWNvbmQjMDAyJywKICAgIERlZmluaXRpb25JRCA9PiAkU2Vjb25kRGVmaW5pdGlvbklELAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVMaXN0UmV2ZXJzZXtQcm9kdWN0aW9ufSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlTGlzdFJldmVyc2V7T3BlcmF0aW9uYWx9LAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgokU2VsZi0+RmFsc2UoCiAgICAkUmVuYW1lU3VjY2VzcywKICAgICJTY29wZSA9PiBjbGFzczogUmVuYW1pbmcgU2Vjb25kIzAwMSB0byBhbHJlYWR5IGV4aXN0aW5nIFNlY29uZCMwMDIgc3VjY2Vzc2Z1bGx5IHByZXZlbnRlZCIKKTsKCiMgcmVzZXQgdGhlIGVuYWJsZWQgc2V0dGluZyBmb3IgdGhlIHVuaXF1ZW5lc3MgY2hlY2sgdG8gaXRzIG9yaWdpbmFsIHZhbHVlCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdVbmlxdWVDSU5hbWU6OkVuYWJsZVVuaXF1ZW5lc3NDaGVjaycsCiAgICBWYWx1ZSA9PiAkT3JpZ0VuYWJsZVNldHRpbmcsCik7CgojIHJlc2V0IHRoZSBzY29wZSBmb3IgdGhlIHVuaXF1ZW5lc3MgY2hlY2sgdG8gaXRzIG9yaWdpbmFsIHZhbHVlCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdVbmlxdWVDSU5hbWU6OlVuaXF1ZW5lc3NDaGVja1Njb3BlJywKICAgIFZhbHVlID0+ICRPcmlnU2NvcGUsCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/Layout/ITSMConfigItem.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgpteSAkWE1MRGVmaW5pdGlvbiA9IFsKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdWZW5kb3InLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1ZlbmRvcicsCiAgICAgICAgU2VhcmNoYWJsZSA9PiAxLAogICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgIE1heExlbmd0aCA9PiA1MCwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdNb2RlbCcsCiAgICAgICAgTmFtZSAgICAgICA9PiAnTW9kZWwnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICBNYXhMZW5ndGggPT4gNTAsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgIE5hbWUgICAgICAgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRBcmVhJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdUeXBlJywKICAgICAgICBOYW1lICAgICAgID0+ICdUeXBlJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdHZW5lcmFsQ2F0YWxvZycsCiAgICAgICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDb21wdXRlcjo6VHlwZScsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnT3duZXInLAogICAgICAgIE5hbWUgICAgICAgPT4gJ093bmVyJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgPT4gJ0N1c3RvbWVyJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdTZXJpYWxOdW1iZXInLAogICAgICAgIE5hbWUgICAgICAgPT4gJ1NlcmlhbCBOdW1iZXInLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICBNYXhMZW5ndGggPT4gMTAwLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgID0+ICdPcGVyYXRpbmdTeXN0ZW0nLAogICAgICAgIE5hbWUgID0+ICdPcGVyYXRpbmcgU3lzdGVtJywKICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwMCwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICA9PiAnQ1BVJywKICAgICAgICBOYW1lICA9PiAnQ1BVJywKICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwMCwKICAgICAgICB9LAogICAgICAgIENvdW50TWF4ID0+IDE2LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICA9PiAnUmFtJywKICAgICAgICBOYW1lICA9PiAnUmFtJywKICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwMCwKICAgICAgICB9LAogICAgICAgIENvdW50TWF4ID0+IDEwLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICA9PiAnSGFyZERpc2snLAogICAgICAgIE5hbWUgID0+ICdIYXJkIERpc2snLAogICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgU2l6ZSAgICAgID0+IDUwLAogICAgICAgICAgICBNYXhMZW5ndGggPT4gMTAwLAogICAgICAgIH0sCiAgICAgICAgQ291bnRNYXggPT4gMTAwLAogICAgICAgIFN1YiAgICAgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NhcGFjaXR5JywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdDYXBhY2l0eScsCiAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICdUZXh0JywKICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gMjAsCiAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwMCwKICAgICAgICAgICAgICAgIFN1YiAgICAgID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDYXBhY2l0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICdDYXBhY2l0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIElucHV0ID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaXplICAgICAgPT4gMjAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXhMZW5ndGggPT4gMTAsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIENvdW50TWF4ID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgU3ViICAgICAgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDYXBhY2l0eScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgPT4gJ0NhcGFjaXR5JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpemUgICAgICA9PiAyMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRNYXggPT4gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdGUUROJywKICAgICAgICBOYW1lICAgICAgID0+ICdGUUROJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwMCwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICA9PiAnTklDJywKICAgICAgICBOYW1lICA9PiAnTmV0d29yayBBZGFwdGVyJywKICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgIFNpemUgICAgICA9PiA1MCwKICAgICAgICAgICAgTWF4TGVuZ3RoID0+IDEwMCwKICAgICAgICAgICAgUmVxdWlyZWQgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBDb3VudE1pbiAgICAgPT4gMCwKICAgICAgICBDb3VudE1heCAgICAgPT4gMTAsCiAgICAgICAgQ291bnREZWZhdWx0ID0+IDEsCiAgICAgICAgU3ViICAgICAgICAgID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lQb3ZlckRIQ1AnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ0lQIG92ZXIgREhDUCcsCiAgICAgICAgICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ0dlbmVyYWxDYXRhbG9nJywKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm8nLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWQgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ0lQQWRkcmVzcycsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgID0+ICdJUCBBZGRyZXNzJywKICAgICAgICAgICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICAgICAgICAgIElucHV0ICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAnVGV4dCcsCiAgICAgICAgICAgICAgICAgICAgU2l6ZSAgICAgID0+IDQwLAogICAgICAgICAgICAgICAgICAgIE1heExlbmd0aCA9PiA0MCwKICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZCAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBDb3VudE1pbiAgICAgPT4gMCwKICAgICAgICAgICAgICAgIENvdW50TWF4ICAgICA9PiAyMCwKICAgICAgICAgICAgICAgIENvdW50RGVmYXVsdCA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgID0+ICdHcmFwaGljQWRhcHRlcicsCiAgICAgICAgTmFtZSAgPT4gJ0dyYXBoaWMgQWRhcHRlcicsCiAgICAgICAgSW5wdXQgPT4gewogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1RleHQnLAogICAgICAgICAgICBTaXplICAgICAgPT4gNTAsCiAgICAgICAgICAgIE1heExlbmd0aCA9PiAxMDAsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgPT4gJ090aGVyRXF1aXBtZW50JywKICAgICAgICBOYW1lICA9PiAnT3RoZXIgRXF1aXBtZW50JywKICAgICAgICBJbnB1dCA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgID0+ICdUZXh0QXJlYScsCiAgICAgICAgICAgIFJlcXVpcmVkID0+IDEsCiAgICAgICAgfSwKICAgICAgICBDb3VudE1pbiAgICAgPT4gMCwKICAgICAgICBDb3VudERlZmF1bHQgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgS2V5ICAgICAgICA9PiAnV2FycmFudHlFeHBpcmF0aW9uRGF0ZScsCiAgICAgICAgTmFtZSAgICAgICA9PiAnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgPT4gJ0RhdGUnLAogICAgICAgICAgICBZZWFyUGVyaW9kUGFzdCAgID0+IDIwLAogICAgICAgICAgICBZZWFyUGVyaW9kRnV0dXJlID0+IDEwLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIEtleSAgICAgICAgPT4gJ0luc3RhbGxEYXRlJywKICAgICAgICBOYW1lICAgICAgID0+ICdJbnN0YWxsIERhdGUnLAogICAgICAgIFNlYXJjaGFibGUgPT4gMSwKICAgICAgICBJbnB1dCAgICAgID0+IHsKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICA9PiAnRGF0ZScsCiAgICAgICAgICAgIFJlcXVpcmVkICAgICAgICAgPT4gMSwKICAgICAgICAgICAgWWVhclBlcmlvZFBhc3QgICA9PiAyMCwKICAgICAgICAgICAgWWVhclBlcmlvZEZ1dHVyZSA9PiAxMCwKICAgICAgICB9LAogICAgICAgIENvdW50TWluICAgICA9PiAwLAogICAgICAgIENvdW50RGVmYXVsdCA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBLZXkgICAgICAgID0+ICdOb3RlJywKICAgICAgICBOYW1lICAgICAgID0+ICdOb3RlJywKICAgICAgICBTZWFyY2hhYmxlID0+IDEsCiAgICAgICAgSW5wdXQgICAgICA9PiB7CiAgICAgICAgICAgIFR5cGUgICAgID0+ICdUZXh0QXJlYScsCiAgICAgICAgICAgIFJlcXVpcmVkID0+IDEsCiAgICAgICAgfSwKICAgICAgICBDb3VudE1pbiAgICAgPT4gMCwKICAgICAgICBDb3VudERlZmF1bHQgPT4gMCwKICAgIH0sCl07CgpteSAkWE1MRGF0YSA9IHsKICAgIEhhcmREaXNrID0+IFsKICAgICAgICB1bmRlZiwKICAgICAgICB7CiAgICAgICAgICAgIENvbnRlbnQgID0+ICdIRDEnLAogICAgICAgICAgICBDYXBhY2l0eSA9PiBbCiAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICc0MiBHQicsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgQ29udGVudCAgPT4gJ0hEMicsCiAgICAgICAgICAgIENhcGFjaXR5ID0+IFsKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzc4MCBHQicsCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgXSwKfTsKCm15IEBTaG93Q29sdW1uc0J5Q2xhc3MgPSAoCiAgICAnTmFtZScsCiAgICAnQ3VyRGVwbFN0YXRlJywKICAgICdDUFU6OjEnLAogICAgJ0hhcmREaXNrOjoxOjpDYXBhY2l0eTo6MScsCiAgICAnSGFyZERpc2s6OjInLAogICAgJ0hhcmREaXNrOjoyOjpDYXBhY2l0eTo6MScsCiAgICAnV2FycmFudHlFeHBpcmF0aW9uRGF0ZTo6MScsCiAgICAnQ3JlYXRlVGltZScsCik7CgpteSAkUmVzdWx0ID0gJExheW91dE9iamVjdC0+WE1MRGF0YTJIYXNoKAogICAgWE1MRGVmaW5pdGlvbiA9PiAkWE1MRGVmaW5pdGlvbiwKICAgIFhNTERhdGEgICAgICAgPT4gJFhNTERhdGEsCiAgICBBdHRyaWJ1dGVzICAgID0+IFxAU2hvd0NvbHVtbnNCeUNsYXNzLAopOwoKbXkgJEV4cGVjdGVkID0gewogICAgJ0NQVTo6MScgPT4gewogICAgICAgIFZhbHVlID0+ICcnLAogICAgICAgIE5hbWUgID0+ICdDUFUnLAogICAgfSwKICAgICdIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEnID0+IHsKICAgICAgICBWYWx1ZSA9PiAnNDIgR0InLAogICAgICAgIE5hbWUgID0+ICdDYXBhY2l0eScsCiAgICB9LAogICAgJ0hhcmREaXNrOjoyJyA9PiB7CiAgICAgICAgVmFsdWUgPT4gJ0hEMicsCiAgICAgICAgTmFtZSAgPT4gJ0hhcmQgRGlzaycsCiAgICB9LAogICAgJ0hhcmREaXNrOjoyOjpDYXBhY2l0eTo6MScgPT4gewogICAgICAgIFZhbHVlID0+ICc3ODAgR0InLAogICAgICAgIE5hbWUgID0+ICdDYXBhY2l0eScsCiAgICB9LAogICAgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGU6OjEnID0+IHsKICAgICAgICBOYW1lICA9PiAnV2FycmFudHkgRXhwaXJhdGlvbiBEYXRlJywKICAgICAgICBWYWx1ZSA9PiAnJwogICAgfQp9OwoKJFNlbGYtPklzRGVlcGx5KAogICAgJFJlc3VsdCwKICAgICRFeHBlY3RlZCwKICAgICdYTUwgRGF0YSBjb252ZXJ0cyBpbnRvIEhhc2ggc3RydWN0dXJlJywKKTsKCiMgVGVzdCBJVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlKCkgdG8gY2hlY2sgYnVnIzE0MTc0IChodHRwczovL2J1Z3Mub3Rycy5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTc0KS4KIyBTZXQgT1RSU1RpbWVab25lIHRvIFVUQy4KJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgIFZhbGlkID0+IDEsCiAgICBLZXkgICA9PiAnT1RSU1RpbWVab25lJywKICAgIFZhbHVlID0+ICdVVEMnLAopOwoKIyBHZXQgTGF5b3V0IG9iamVjdCB3aXRoIEVTVCB1c2VyIHRpbWUgem9uZS4KJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgT2JqZWN0cyA9PiBbJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnXSwKKTsKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnID0+IHsKICAgICAgICBMYW5nICAgICAgICAgPT4gJ2VuJywKICAgICAgICBVc2VyVGltZVpvbmUgPT4gJ0VTVCcsCiAgICB9LAopOwokTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKbXkgJVBhcmFtID0gKAogICAgJ0l0ZW0nID0+IHsKICAgICAgICAnU2VhcmNoYWJsZScgPT4gMSwKICAgICAgICAnRm9ybScgICAgICAgPT4gewogICAgICAgICAgICAnSW5zdGFsbERhdGU6OjEnID0+IHt9CiAgICAgICAgfSwKICAgICAgICAnS2V5JyAgICAgID0+ICdJbnN0YWxsRGF0ZScsCiAgICAgICAgJ0NvdW50TWF4JyA9PiAxLAogICAgICAgICdOYW1lJyAgICAgPT4gJ0luc3RhbGwgRGF0ZScsCiAgICAgICAgJ0NvdW50TWluJyA9PiAwLAogICAgICAgICdJbnB1dCcgICAgPT4gewogICAgICAgICAgICAnVHlwZScgICAgICAgICAgICAgPT4gJ0RhdGUnLAogICAgICAgICAgICAnWWVhclBlcmlvZEZ1dHVyZScgPT4gMTAsCiAgICAgICAgICAgICdSZXF1aXJlZCcgICAgICAgICA9PiAxLAogICAgICAgICAgICAnWWVhclBlcmlvZFBhc3QnICAgPT4gMjAKICAgICAgICB9LAogICAgICAgICdDb3VudERlZmF1bHQnID0+IDAKICAgIH0sCiAgICAnSW52YWxpZCcgID0+IDAsCiAgICAnVmFsdWUnICAgID0+ICcyMDE4LTAxLTE2JywKICAgICdLZXknICAgICAgPT4gJ0luc3RhbGxEYXRlOjoxJywKICAgICdSZXF1aXJlZCcgPT4gMSwKICAgICdJdGVtSWQnICAgPT4gJ0l0ZW0xNDAnCik7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgT3ZlcnJpZGVUaW1lWm9uZSA9PiAwLAogICAgICAgIEV4cGVjdGVkICAgICAgICAgPT4gJzxvcHRpb24gXHMgdmFsdWU9IjE1IiBccyBzZWxlY3RlZD0ic2VsZWN0ZWQiPjE1PC9vcHRpb24+JywKICAgICAgICBDb21tZW50ICAgICAgICAgID0+ICdkYXRlIGlzIGNoYW5nZWQnLAogICAgfSwKICAgIHsKICAgICAgICBPdmVycmlkZVRpbWVab25lID0+IDEsCiAgICAgICAgRXhwZWN0ZWQgICAgICAgICA9PiAnPG9wdGlvbiBccyB2YWx1ZT0iMTYiIFxzIHNlbGVjdGVkPSJzZWxlY3RlZCI+MTY8XC9vcHRpb24+JywKICAgICAgICBDb21tZW50ICAgICAgICAgID0+ICdkYXRlIGlzIG5vdCBjaGFuZ2VkJywKICAgIH0sCik7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewogICAgbXkgJFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtSW5wdXRDcmVhdGUoCiAgICAgICAgJVBhcmFtLAogICAgICAgIE92ZXJyaWRlVGltZVpvbmUgPT4gJFRlc3QtPntPdmVycmlkZVRpbWVab25lfSwKICAgICk7CgogICAgbXkgJFN1Y2Nlc3M7CiAgICBpZiAoICRTdHJpbmcgPX4gbXsgJFRlc3QtPntFeHBlY3RlZH0gfW1zeCApIHsKICAgICAgICAkU3VjY2VzcyA9IDE7CiAgICB9CgogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgIk92ZXJyaWRlVGltZVpvbmUgPSAkVGVzdC0+e092ZXJyaWRlVGltZVpvbmV9IC0gJFRlc3QtPntDb21tZW50fSIsCiAgICApOwp9CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/Admin/AdminITSMConfigItem.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgIG15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZG1pbklUU01Db25maWdJdGVtLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFkbWluSVRTTUNvbmZpZ0l0ZW0iKTsKCiAgICAgICAgIyBUZXN0IGRlZmF1bHQgSVRTTUNvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgZm9yIG15ICRJdGVtIChxdyggQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSApKSB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICRJdGVtLCAnbGlua190ZXh0JyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIENoZWNrIGZvciB0YWJsZSBzdHJ1Y3R1cmUuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAidGFibGUiLCAgICAgICAgICAgICAnY3NzJyApOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICAgICAjIENsaWNrIG9uICdDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbicuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdBZGQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZm9yIGlucHV0IGFyZWEuCiAgICAgICAgICAgIG15ICRJbnB1dEZpZWxkID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVmaW5pdGlvbiIsICdjc3MnICk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRJbnB1dEZpZWxkLT5pc19kaXNwbGF5ZWQoKTsKCiAgICAgICAgICAgICMgUmV0dXJuIGJhY2sgdG8gb3ZlcnZpZXcgc2NyZWVuLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWRtaW5JVFNNQ29uZmlnSXRlbScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgIH0KCiAgICAgICAgIyBBZGQgaW50ZWdlciBmaWVsZCB0byBuZXcgSVRTTUNvbmZpZ0l0ZW0gY2xhc3MgdG8gdmVyaWZ5IGV4aXN0ZW5jZSBvZiAwLgogICAgICAgICMgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBidWcjNjAwNSAtIGh0dHBzOi8vYnVncy5vdHJzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjAwNS4KICAgICAgICBteSAkQ2xhc3MgICA9ICJDbGFzcyRSYW5kb21JRCI7CiAgICAgICAgbXkgJENsYXNzSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUFkZCgKICAgICAgICAgICAgQ2xhc3MgICA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICAgID0+ICRDbGFzcywKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICBDb21tZW50ID0+ICdDb21tZW50JywKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgR2V0ICdpdHNtLWNvbmZpZ2l0ZW0nIGdyb3VwIElELgogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUdyb3VwSUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBMb29rdXAoCiAgICAgICAgICAgIEdyb3VwID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgICk7CgogICAgICAgICMgU2V0IHBlcm1pc3Npb24gZm9yIHRlc3QgY2xhc3MuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWRtaW5HZW5lcmFsQ2F0YWxvZztTdWJhY3Rpb249SXRlbUVkaXQ7SXRlbUlEPSRDbGFzc0lEIik7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjUGVybWlzc2lvbicpLnZhbCgnJElUU01Db25maWdJdGVtR3JvdXBJRCcpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1N1Ym1pdCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFkbWluSVRTTUNvbmZpZ0l0ZW0uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWRtaW5JVFNNQ29uZmlnSXRlbSIpOwoKICAgICAgICAjIENsaWNrIG9uIHRlc3QgY2xhc3MuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICRDbGFzcywgJ2xpbmtfdGV4dCcgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENsaWNrIG9uICdDaGFuZ2UgY2xhc3MgZGVmaW5pdGlvbicuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0FkZCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICBteSAkSW50ZWdlcktleSAgICAgICAgPSAiVGVzdEludGVnZXIkUmFuZG9tSUQiOwogICAgICAgIG15ICRJbnRlZ2VyRGVmaW5pdGlvbiA9IDw8IkVPRiI7Ci0tLQotIEtleTogJEludGVnZXJLZXkKICBOYW1lOiBUZXN0IEludGVnZXIKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiAgSW50ZWdlcgogICAgVmFsdWVNaW46IDAKICAgIFZhbHVlTWF4OiAxMAogICAgVmFsdWVEZWZhdWx0OiAwCkVPRgoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEZWZpbml0aW9uIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCRJbnRlZ2VyRGVmaW5pdGlvbik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1N1Ym1pdCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFZlcmlmeSBvcHRpb24gd2l0aCAwIGluIGFkZCBjb25maWcgaXRlbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q2xhc3NJRD0kQ2xhc3NJRCIpOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9zZWxlY3RbY29udGFpbnMoXEBpZCwgXCckSW50ZWdlcktleScpXS9vcHRpb25bXEB2YWx1ZT0nMCddIiksCiAgICAgICAgICAgICJBZGQgc2NyZWVuIC0gT3B0aW9uIHdpdGggJzAnIHZhbHVlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIFZlcmlmeSBvcHRpb24gd2l0aCAwIGluIHNlYXJjaCBjb25maWcgaXRlbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hDbGFzc0lEJykubGVuZ3RoOyIgKTsKICAgICAgICBzbGVlcCAxOwoKICAgICAgICAjIFNlbGVjdCB0ZXN0IGNsYXNzLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoJyRDbGFzc0lEJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0F0dHJpYnV0ZSIpLmxlbmd0aDsnLAogICAgICAgICk7CiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBDaG9vc2UgdGVzdCBpbnRlZ2VyIGZpZWxkLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0F0dHJpYnV0ZScpLnZhbCgnJEludGVnZXJLZXknKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNTZWFyY2hJbnNlcnQgIyRJbnRlZ2VyS2V5JykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIFZlcmlmeSBvcHRpb24gd2l0aCAwIGV4aXN0cy4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vc2VsZWN0W1xAaWQ9JyRJbnRlZ2VyS2V5J10vb3B0aW9uW1xAdmFsdWU9JzAnXSIpLAogICAgICAgICAgICAiU2VhcmNoIHNjcmVlbiAtIE9wdGlvbiB3aXRoICcwJyB2YWx1ZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGVhbnVwLgogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBjbGFzc19pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDbGFzc0lEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJDb25maWdJdGVtIGRlZmluaXRpb25zIGZyb20gQ2xhc3NJRCAkQ2xhc3NJRCBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIGdlbmVyYWxfY2F0YWxvZ19wcmVmZXJlbmNlcyBXSEVSRSBnZW5lcmFsX2NhdGFsb2dfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ2xhc3NJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiQ2F0YWxvZ0l0ZW1JRCAkQ2xhc3NJRCBwcmVmZXJlbmNlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gZ2VuZXJhbF9jYXRhbG9nIFdIRVJFIGlkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENsYXNzSUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIkNhdGFsb2dJdGVtSUQgJENsYXNzSUQgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBNYWtlIHN1cmUgdGhlIGNhY2hlIGlzIGNvcnJlY3QuCiAgICAgICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICAgICAgZm9yIG15ICRDYWNoZSAocXcoQ29uZmlnSXRlbSBHZW5lcmFsQ2F0YWxvZykpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5DbGVhblVwKCBUeXBlID0+ICRDYWNoZSApOwogICAgICAgIH0KCiAgICB9Cik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItem.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICBteSAlU2hvd0NvbHVtbnNCeUNsYXNzU3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1uc0J5Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQHsgJFNob3dDb2x1bW5zQnlDbGFzc1N5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0gfSwgJ0NvbXB1dGVyOjpPd25lcjo6MSc7CgogICAgICAgICMgRW5hYmxlIEFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1uc0J5Q2xhc3Mgc3lzY29uZmlnIGl0ZW0uCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zQnlDbGFzcycsCiAgICAgICAgICAgIFZhbHVlID0+ICRTaG93Q29sdW1uc0J5Q2xhc3NTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LAogICAgICAgICk7CgogICAgICAgICMgR2V0IGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3MgKHF3KENvbXB1dGVyIEhhcmR3YXJlIExvY2F0aW9uIE5ldHdvcmsgU29mdHdhcmUpKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUNsYXNzLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgbXkgJE93bmVyICAgICAgICAgICA9ICciVGVzdCBUZXN0IiA8dGVzdEB0ZXN0LmNvbT4nOwogICAgICAgIG15ICRDb21wdXRlckNsYXNzSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgID0+ICdDb21wdXRlcicsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yJyksCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRJVFNNQ29uZmlnSXRlbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkQ29uZmlnSXRlbU51bWJlcjsKCiAgICAgICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICVYTUxEYXRhOwogICAgICAgICAgICBpZiAoICRDb21wdXRlckNsYXNzSUQtPntJdGVtSUR9ID09ICRJVFNNQ29uZmlnSXRlbSApIHsKICAgICAgICAgICAgICAgICVYTUxEYXRhID0gKAogICAgICAgICAgICAgICAgICAgIFhNTERhdGEgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25lciA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRPd25lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWRkIGEgbmV3IHZlcnNpb24uCiAgICAgICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVJRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICVYTUxEYXRhLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICAiVmVyc2lvbiBpcyBjcmVhdGVkIC0gSUQgJFZlcnNpb25JRCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtLCBzb3J0ZWQgYnkgY3JlYXRlZCB0aW1lLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO0ZpbHRlcj1BbGw7Vmlldz07O1NvcnRCeT1DaGFuZ2VUaW1lO09yZGVyQnk9RG93biIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgd2l0aCAnQWxsJyBmaWx0ZXIgYWN0aXZlCiAgICAgICAgZm9yIG15ICRBbGxDb25maWdJdGVtIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9kaXZbY29udGFpbnMoXEB0aXRsZSwgXCckQWxsQ29uZmlnSXRlbVwnICldIiksCiAgICAgICAgICAgICAgICAiVGVzdCBDb25maWdJdGVtIG51bWJlciAkQWxsQ29uZmlnSXRlbSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgZWFjaCBvZiBDb25maWdJdGVtIGNsYXNzIGZpbHRlcnMgZm9yIHRoZXJlIHJlc3BlY3RpdmUgdGVzdCBDb25maWdJdGVtCiAgICAgICAgbXkgJENvdW50ID0gMDsKICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbSAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1DaGFuZ2VUaW1lO09yZGVyQnk9RG93bjtWaWV3PTtGaWx0ZXI9JENvbmZpZ0l0ZW1DbGFzc0lEc1skQ291bnRdJyApXSIKICAgICAgICAgICAgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAgICAgIyBDaGVjayBmb3IgdGFibGUgc3RydWN0dXJlCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCIsICdjc3MnICk7CgogICAgICAgICAgICAjIENoZWNrIGZvciBDb25maWdJdGVtIG51bWJlcgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2Rpdltjb250YWlucyhcQHRpdGxlLCBcJyRDb25maWdJdGVtTnVtYmVyc1skQ291bnRdXCcgKV0iKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDb25maWdJdGVtTnVtYmVyc1skQ291bnRdIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ291bnQrKzsKCiAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlcmUgaXMgY29sdW1uIENyZWF0ZSBUaW1lIGZvciBDb21wdXRlciBjbGFzcwogICAgICAgICAgICAjIFNlZSBidWcjMTQwNDkKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENoZWNrQ29uZmlnSXRlbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbURhdGEtPntDbGFzc30gZXEgJ0NvbXB1dGVyJyApIHsKCiAgICAgICAgICAgICAgICAjIENoZWNrIGlmIEFnZW50SVRTTUNvbmZpZ0l0ZW0gT3duZXIgaXMgZGlzcGxheWVkIGNvcnJlY3RseS4gU2VlIGJ1ZyMxNDYzMy4KICAgICAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjQ29uZmlnSXRlbUlEXyRDaGVja0NvbmZpZ0l0ZW0gdGQ6Y29udGFpbnMoJE93bmVyKScpLnRleHQoKS50cmltKCk7IgogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgJE93bmVyLAogICAgICAgICAgICAgICAgICAgICdPd25lciBuYW1lIGFuZCBhZGRyZXNzIGlzIGRpc3BsYXllZCBjb3JyZWN0bHknLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKC4sJ0NyZWF0ZSBUaW1lJyldIiksCiAgICAgICAgICAgICAgICAgICAgIlRoZXJlIGlzIGNvbHVtbiAnQ3JlYXRlVGltZScsIGVuYWJsZWQgYnkgc3lzY29uZmlnIGl0ZW0gIEFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1uc0J5Q2xhc3MiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBWZXJpZnkgdGhlcmUgYXJlIGxpbmtzIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIG9uIENvbmZpZ0l0ZW0gTnVtYmVyIGFuZCBOYW1lIGNvbHVtbnMuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCd0cjplcShcIjFcIikgZGl2W3RpdGxlKj1cIiRDb25maWdJdGVtTnVtYmVyc1s0XVwiXSBhW2hyZWYqPVwiSXRlbUlEPSRDb25maWdJdGVtSURzWzRdXCJdJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIkxpbmsgb24gQ29uZmlnSXRlbSAnTnVtYmVyJyBjb2x1bW4gY29ycmVjdC4iCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJ3RyOmVxKFwiMVwiKSBkaXZbdGl0bGUqPVwiU2VsZW5pdW1UZXN0XCJdIGFbaHJlZio9XCJJdGVtSUQ9JENvbmZpZ0l0ZW1JRHNbNF1cIl0nKS5sZW5ndGg7IgogICAgICAgICAgICApLAogICAgICAgICAgICAiTGluayBvbiBDb25maWdJdGVtICdOYW1lJyBjb2x1bW4gY29ycmVjdC4iCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZSAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtRGVsZXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemAdd.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBnZXQgY2F0YWxvZyBjbGFzcyBJRHMKICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NOYW1lczsKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzcyAocXcoQ29tcHV0ZXIgSGFyZHdhcmUgTG9jYXRpb24gTmV0d29yayBTb2Z0d2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJENvbmZpZ0l0ZW1DbGFzcywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAgICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc05hbWVzLCAkQ29uZmlnSXRlbURhdGFSZWYtPntOYW1lfTsKICAgICAgICB9CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICMgY2hlY2sgZm9yIElUU01Db25maWdJdGVtIGNsYXNzZXMKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1DbGFzc05hbWUgKEBDb25maWdJdGVtQ2xhc3NOYW1lcykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbUNsYXNzTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBjbGFzcyAkQ29uZmlnSXRlbUNsYXNzTmFtZSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgZm9yIGxpbmtzIHRvICdBZGQnIG5ldyBpdGVtIGZvciBlYWNoIGNsYXNzCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ2xhc3NBZGQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENvbmZpZ0l0ZW1DbGFzc0FkZCcgKV0iCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUNsYXNzQWRkIGFkZCBsaW5rIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemBulk.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIEdldCAnQ29tcHV0ZXInIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0NvbXB1dGVyJywKICAgICAgICApOwogICAgICAgIG15ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBhbmQgJ1JlcGFpcicgZGVwbG95bWVudCBzdGF0ZSBJRHMuCiAgICAgICAgbXkgQERlcGxTdGF0ZUlEczsKICAgICAgICBmb3IgbXkgJERlcGxTdGF0ZSAocXcgKFByb2R1Y3Rpb24gUmVwYWlyKSkgewogICAgICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJERlcGxTdGF0ZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBARGVwbFN0YXRlSURzLCAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0aHJlZSB0ZXN0IENvbmZpZ0l0ZW1zIGZvciAnQ29tcHV0ZXInIENvbmZpZ0l0ZW0gY2xhc3MuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1zOwogICAgICAgIGZvciBteSAkSVRTTUNvbmZpZ0l0ZW0gKCAxIC4uIDMgKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yJyksCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRDb21wdXRlckNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29tcHV0ZXJDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbi4KICAgICAgICAgICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJERlcGxTdGF0ZUlEc1swXSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgIlZlcnNpb24gaXMgY3JlYXRlZCAtIElEICRWZXJzaW9uSUQiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtcywKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW0sIHNvcnRlZCBieSBjcmVhdGVkIHRpbWUuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW07RmlsdGVyPUFsbDtWaWV3PTs7U29ydEJ5PUNoYW5nZVRpbWU7T3JkZXJCeT1Eb3duIgogICAgICAgICk7CgogICAgICAgICMgU2VsZWN0IHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRTZWxlY3RDb25maWdJdGVtIChAQ29uZmlnSXRlbXMpIHsKCiAgICAgICAgICAgICMgRG9uJ3QgY2xpY2sgb24gdGhpcmQgdGVzdCBDb25maWdJdGVtLgogICAgICAgICAgICBpZiAoICRTZWxlY3RDb25maWdJdGVtLT57SUR9IG5lICRDb25maWdJdGVtc1syXS0+e0lEfSApIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9JyRTZWxlY3RDb25maWdJdGVtLT57SUR9J10iKS0+Y2xpY2soKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBDbGljayBvbiBidWxrIGFjdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW3RleHQoKT0nQnVsayddIiktPmNsaWNrKCk7CgogICAgICAgICMgU3dpdGNoIHRvICdCdWxrJyB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI0RlcGxTdGF0ZUlEIikubGVuZ3RoOycgKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgTGlua1RvZ2V0aGVyIExpbmtUb2dldGhlckxpbmtUeXBlIExpbmtUb2dldGhlckFub3RoZXIgTGlua1R5cGUgc3VibWl0UmljaFRleHQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBDaGFuZ2UgZGVwbG95bWVudCBzdGF0ZSB0byAnUmVwYWlyJyBmb3IgdGVzdCBDb25maWdJdGVtcwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjRGVwbFN0YXRlSUQnKS52YWwoJyREZXBsU3RhdGVJRHNbMV0nKTsiKTsKCiAgICAgICAgIyBsaW5rICdBbHRlcm5hdGl2ZSB0bycgdGVzdCBDb25maWdJdGVtcyB0b2dldGhlcgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0xpbmtUb2dldGhlciBvcHRpb25bdmFsdWU9JzEnXSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNMaW5rVG9nZXRoZXJMaW5rVHlwZSBvcHRpb25bdmFsdWU9J0Nvbm5lY3RlZFRvOjpTb3VyY2UnXSIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgbGluayB0aGlyZCB0ZXN0IENvbmZpZ0l0ZW0gYXMgcGFydCBvZiBmaXJzdCB0d28KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNMaW5rVG9nZXRoZXJBbm90aGVyIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkQ29uZmlnSXRlbXNbMl0tPntDb25maWdJdGVtTnVtYmVyfSApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0xpbmtUeXBlIG9wdGlvblt2YWx1ZT0nSW5jbHVkZXM6OlRhcmdldCddIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTdWJtaXQgYnVsayBjaGFuZ2VzCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjc3VibWl0UmljaFRleHQiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIFN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBOYXZpZ2F0ZSB0byBmaXJzdCBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMgem9vbSB2aWV3LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1zWzFdLT57SUR9IgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIG90aGVyIHR3byBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbXMuCiAgICAgICAgIyBWZXJpZnkgdGhhdCBsaW5rIGFjdGlvbiBpbiBidWxrIHNjcmVlbiB3YXMgc3VjY2Vzcy4KICAgICAgICBteSAkQ291bnQgPSAxOwogICAgICAgIElURU06CiAgICAgICAgZm9yIG15ICRDaGVja0NvbmZpZ0l0ZW0gKEBDb25maWdJdGVtcykgewoKICAgICAgICAgICAgbmV4dCBJVEVNIGlmICRDb25maWdJdGVtc1sxXS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9ID09ICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgICAgICAgICAiLy9hW1xAY2xhc3M9XCdBc0Jsb2NrIExpbmtPYmplY3RMaW5rXCddW2NvbnRhaW5zKC4sXCckQ2hlY2tDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn1cJyldIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gbnVtYmVyICRDaGVja0NvbmZpZ0l0ZW0tPntDb25maWdJdGVtTnVtYmVyfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLk1hc3RlckFjdGlvbiB0ZDplcSgxKSBzcGFuJykudGV4dCgpOyIpLAogICAgICAgICAgICAnUmVwYWlyJywKICAgICAgICAgICAgIkRlcGxveW1lbnQgc3RhdGUgaXMgUmVwYWlyLiIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbURlbGV0ZSAoQENvbmZpZ0l0ZW1zKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1EZWxldGUtPntJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJDb25maWcgaXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1EZWxldGUtPntJRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemDuplicate.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIEdldCAnSGFyZHdhcmUnIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgQ29uZmlnSXRlbSBudW1iZXIuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgVHlwZSAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpOdW1iZXJHZW5lcmF0b3InKSwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgdGhlIG5ldyBDb25maWdJdGVtLgogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICApOwoKICAgICAgICAjIEFkZCBhIG5ldyB2ZXJzaW9uLgogICAgICAgIG15ICRDb25maWdJdGVtTmFtZSA9ICdIYXJkd2FyZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRWZXJzaW9uSUQgICAgICA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gMSwKICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQsCiAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFZlcnNpb25JRCwKICAgICAgICAgICAgIlZlcnNpb24gaXMgY3JlYXRlZCAtIElEICRWZXJzaW9uSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQ7VmVyc2lvbj0kVmVyc2lvbklEIgogICAgICAgICk7CgogICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zLgogICAgICAgIG15IEBDb25maWdJdGVtVmFsdWVzID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ3AuVmFsdWU6Y29udGFpbnMoSGFyZHdhcmUpJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gImgxOmNvbnRhaW5zKCRDb25maWdJdGVtTmFtZSkiLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgQ29uZmlnSXRlbSB2YWx1ZXMgb24gc2NyZWVuCiAgICAgICAgZm9yIG15ICRDaGVja0NvbmZpZ0l0ZW1WYWx1ZSAoQENvbmZpZ0l0ZW1WYWx1ZXMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyRDaGVja0NvbmZpZ0l0ZW1WYWx1ZS0+e0NoZWNrfScpLmxlbmd0aDsiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntWYWx1ZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENsaWNrIG9uICdEdXBsaWNhdGUnIG1lbnUgaXRlbSBhbmQgc3dpdGNoIHdpbmRvdwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KAogICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7RHVwbGljYXRlSUQ9JENvbmZpZ0l0ZW1JRDtWZXJzaW9uSUQ9JFZlcnNpb25JRFwnICldIgogICAgICAgICktPmNsaWNrKCk7CgogICAgICAgICMgc3dpdGNoIHdpbmRvdwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNEZXBsU3RhdGVJRCIpLmxlbmd0aDsnICk7CgogICAgICAgICMgQ2hlY2sgZm9yIGNyZWF0ZWQgQ29uZmlnSXRlbSB2YWx1ZXMKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI05hbWUnLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAiI05hbWUgc3RvcmVkIHZhbHVlIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjRGVwbFN0YXRlSUQnLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgIiNEZXBsU3RhdGVJRCBzdG9yZWQgdmFsdWUiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyNJbmNpU3RhdGVJRCcsICdjc3MnICktPmdldF92YWx1ZSgpLAogICAgICAgICAgICAxLAogICAgICAgICAgICAiI0luY2lTdGF0ZUlEIHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBFZGl0IG5hbWUgZm9yIGR1cGxpY2F0ZSB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgbXkgJER1cGxpY2F0ZUNvbmZpZ0l0ZW1OYW1lID0gIkR1cGxpY2F0ZSIgLiAkQ29uZmlnSXRlbU5hbWU7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpOwogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J1N1Ym1pdCddW1xAdHlwZT0nc3VibWl0J10iKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTd2l0Y2ggYmFjayB0byB6b29tIHZpZXcuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAxICk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzBdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICdyZXR1cm4gdHlwZW9mKENvcmUpID09ICJvYmplY3QiICYmIHR5cGVvZihDb3JlLkFwcCkgPT0gIm9iamVjdCIgJiYgQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZTsnCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBkdXBsaWNhdGVkIENvbmZpZ0l0ZW0gdmFsdWUuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCdoMTpjb250YWlucygkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoOyIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkRHVwbGljYXRlQ29uZmlnSXRlbU5hbWUgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW1zLgogICAgICAgIGZvciBteSAkRGVsZXRlQ29uZmlnSXRlbSAoIDEgLi4gMiApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQrKzsKICAgICAgICB9CiAgICB9Cik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemEdit.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgbXkgQFRlc3QgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnTW9kZWwnLCAnRGVzY3JpcHRpb24nLCAnVHlwZScsICdPd25lcicsCiAgICAgICAgICAgICAgICAgICAgJ1NlcmlhbE51bWJlcicsCiAgICAgICAgICAgICAgICAgICAgJ09wZXJhdGluZ1N5c3RlbScsICdDUFUnLCAnUmFtJywgJ0hhcmREaXNrJywgJ0NhcGFjaXR5JywgJ0ZRRE4nLCAnTklDJywgJ1BvdmVyREhDUCcsCiAgICAgICAgICAgICAgICAgICAgJ0dyYXBoaWNBZGFwdGVyJywKICAgICAgICAgICAgICAgICAgICAnT3RoZXJFcXVpcG1lbnQnLCAnV2FycmFudHlFeHBpcmF0aW9uRGF0ZScsICdJbnN0YWxsRGF0ZScsICdOb3RlJywgJ0ZpbGVVcGxvYWQnLCAnU3VibWl0U2F2ZScKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnSGFyZHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnTW9kZWwnLCAnRGVzY3JpcHRpb24nLCAnVHlwZScsICdPd25lcicsCiAgICAgICAgICAgICAgICAgICAgJ1NlcmlhbE51bWJlcicsCiAgICAgICAgICAgICAgICAgICAgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLCAnSW5zdGFsbERhdGUnLCAnTm90ZScsICdGaWxlVXBsb2FkJywgJ1N1Ym1pdFNhdmUnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgPT4gJ0xvY2F0aW9uJywKICAgICAgICAgICAgICAgIENoZWNrRWRpdEZpZWxkcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ05hbWUnLCAnRGVwbFN0YXRlSUQnLCAnSW5jaVN0YXRlSUQnLCAnVHlwZScsICdQaG9uZTEnLCAnUGhvbmUyJywgJ0ZheCcsICdFLU1haWwnLCAnQWRkcmVzcycsCiAgICAgICAgICAgICAgICAgICAgJ05vdGUnLCAnRmlsZVVwbG9hZCcsICAnU3VibWl0U2F2ZScKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnTmV0d29yaycsCiAgICAgICAgICAgICAgICBDaGVja0VkaXRGaWVsZHMgPT4gWwogICAgICAgICAgICAgICAgICAgICdOYW1lJywgJ0RlcGxTdGF0ZUlEJywgJ0luY2lTdGF0ZUlEJywgJ0Rlc2NyaXB0aW9uJywgJ1R5cGUnLCAnTmV0d29ya0FkZHJlc3MnLCAnU3VibmV0TWFzaycsCiAgICAgICAgICAgICAgICAgICAgJ0dhdGV3YXknLAogICAgICAgICAgICAgICAgICAgICdOb3RlJywgJ0ZpbGVVcGxvYWQnLCAnU3VibWl0U2F2ZScKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1DbGFzcyA9PiAnU29mdHdhcmUnLAogICAgICAgICAgICAgICAgQ2hlY2tFZGl0RmllbGRzID0+IFsKICAgICAgICAgICAgICAgICAgICAnTmFtZScsICdEZXBsU3RhdGVJRCcsICdJbmNpU3RhdGVJRCcsICdWZW5kb3InLCAnVmVyc2lvbicsICdEZXNjcmlwdGlvbicsICdUeXBlJywgJ093bmVyJywKICAgICAgICAgICAgICAgICAgICAnU2VyaWFsTnVtYmVyJywKICAgICAgICAgICAgICAgICAgICAnTGljZW5jZVR5cGUnLCAnTGljZW5jZUtleScsICdNZWRpYScsICdOb3RlJywgJ1N1Ym1pdFNhdmUnCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElELgogICAgICAgIG15ICREZXBsU3RhdGVEYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgTmFtZSAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICk7CiAgICAgICAgbXkgJERlcGxTdGF0ZUlEID0gJERlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CiAgICAgICAgbXkgJFJhbmRvbUlEICAgID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRWRpdCAoQFRlc3QpIHsKCiAgICAgICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRJVFNNQ29uZmlnSXRlbUFkZCBzY3JlZW4uCiAgICAgICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQiKTsKCiAgICAgICAgICAgICMgR2V0IENvbmZpZ0l0ZW0gY2xhc3MgSUQuCiAgICAgICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICBOYW1lICA9PiAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9LAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUNsYXNzSUQgPSAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnYVtocmVmKj1cIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtDbGFzc0lEPSRDb25maWdJdGVtQ2xhc3NJRFwiXScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q2xhc3NJRD0kQ29uZmlnSXRlbUNsYXNzSURcJyApXSIKICAgICAgICAgICAgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyNOYW1lJykubGVuZ3RoICYmIFwkKCcjU3VibWl0QnV0dG9uJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBDaGVjayBmb3IgQ29uZmlnSXRlbUVkaXQgZmllbGRzLgogICAgICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbUZpZWxkICggQHsgJENvbmZpZ0l0ZW1FZGl0LT57Q2hlY2tFZGl0RmllbGRzfSB9ICkgewoKICAgICAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnJENoZWNrQ29uZmlnSXRlbUZpZWxkXCcgKV0iKTsKICAgICAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ3JlYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSAuICRSYW5kb21JRDsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU5hbWUpOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCkgPT09ICckRGVwbFN0YXRlSUQnIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNJbmNpU3RhdGVJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0luY2lTdGF0ZUlEJykudmFsKCkgPT09ICcxJyIgKTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnQ29tcHV0ZXInICkgewoKICAgICAgICAgICAgICAgICMgR2V0IEdlbmVyYWwgQ2F0YWxvZyBJRCBmb3IgJ1llcycuCiAgICAgICAgICAgICAgICBteSAkWWVzRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm8nLAogICAgICAgICAgICAgICAgICAgIE5hbWUgID0+ICdZZXMnLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15ICRZZXNJRCA9ICRZZXNEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgICAgICAgICAjIEVudGVyIE5JQyBuYW1lLgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vKltjb250YWlucyhcQG5hbWUsIFwnTklDOjoxXCcgKV0iKS0+c2VuZF9rZXlzKCdTZWxlbml1bU5ldHdvcmsnKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCBZZXMgZm9yIERIQ1BPdmVySVAuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJcJCgnIycgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcignSXRlbTFOSUM6OjExJykpLnZhbCgnJFllc0lEJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1FZGl0LT57Q29uZmlnSXRlbUNsYXNzfSBlcSAnTmV0d29yaycgKSB7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy8qW2NvbnRhaW5zKFxAbmFtZSwgXCdOZXR3b3JrQWRkcmVzc1wnICldIiktPnNlbmRfa2V5cygnU2VsZW5pdW1OZXR3b3JrJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTdWJtaXQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgQ29uZmlnSXRlbSB2YWx1ZS4KICAgICAgICAgICAgbXkgQENvbmZpZ0l0ZW1WYWx1ZXMgPSAoCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgICAgICAgICAgICAgIENoZWNrICAgICAgID0+ICJoMTpjb250YWlucygkQ29uZmlnSXRlbU5hbWUpIiwKICAgICAgICAgICAgICAgICAgICBDaGVja1Jlc3VsdCA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICA9PiAkQ29uZmlnSXRlbUVkaXQtPntDb25maWdJdGVtQ2xhc3N9LAogICAgICAgICAgICAgICAgICAgIENoZWNrICAgICAgID0+ICJwLlZhbHVlOmNvbnRhaW5zKCRDb25maWdJdGVtRWRpdC0+e0NvbmZpZ0l0ZW1DbGFzc30pIiwKICAgICAgICAgICAgICAgICAgICBDaGVja1Jlc3VsdCA9PiAyLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2hlY2sgc3VibWl0dGVkIHZhbHVlcyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGggPT09ICRDaGVja0NvbmZpZ0l0ZW1WYWx1ZS0+e0NoZWNrUmVzdWx0fSIKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgICJUZXN0IENvbmZpZ0l0ZW0gdmFsdWUgJENoZWNrQ29uZmlnSXRlbVZhbHVlLT57VmFsdWV9IC0gZm91bmQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBHZXQgQ29uZmlnSXRlbUlELgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25TZWFyY2goCiAgICAgICAgICAgICAgICBOYW1lID0+ICRDb25maWdJdGVtTmFtZQogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRC0+WzBdLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRC0+WzBdIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ2hlY2sgbXVsdGlwbGUgQ3VzdG9tZXIgdHlwZSBmaWVsZHMgKHNlZSBidWcjMTQyMTggLSBodHRwczovL2J1Z3Mub3Rycy5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjE4KS4KICAgICAgICAjIENyZWF0ZSB0ZXN0IENJIGNsYXNzLgogICAgICAgIG15ICRDbGFzc05hbWUgPSAnQ2xhc3MnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkQ2xhc3NJRCAgID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtQWRkKAogICAgICAgICAgICBDbGFzcyAgID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgICAgPT4gJENsYXNzTmFtZSwKICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJENsYXNzSUQsCiAgICAgICAgICAgICJDbGFzc0lEICRDbGFzc0lEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgIG15ICRHcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgU2V0IHBlcm1pc3Npb24uCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgS2V5ICAgID0+ICdQZXJtaXNzaW9uJywKICAgICAgICAgICAgVmFsdWUgID0+ICRHcm91cElELAogICAgICAgICk7CgogICAgICAgIG15ICREZWZpbml0aW9uID0gPDwiRU9GIjsKLS0tCi0gS2V5OiBDdXN0b21lcklEMQogIE5hbWU6IEN1c3RvbWVyQ29tcGFueSAxCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgU3ViOgogIC0gS2V5OiBDdXN0b21lcjEKICAgIE5hbWU6IEN1c3RvbWVyIDEKICAgIFNlYXJjaGFibGU6IDEKICAgIElucHV0OgogICAgICBUeXBlOiBDdXN0b21lcgoKLSBLZXk6IEN1c3RvbWVySUQyCiAgTmFtZTogQ3VzdG9tZXJDb21wYW55IDIKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBDdXN0b21lckNvbXBhbnkKICBTdWI6CiAgLSBLZXk6IEN1c3RvbWVyMgogICAgTmFtZTogQ3VzdG9tZXIgMgogICAgU2VhcmNoYWJsZTogMQogICAgSW5wdXQ6CiAgICAgIFR5cGU6IEN1c3RvbWVyCgotIEtleTogQ3VzdG9tZXJJRDMKICBOYW1lOiBDdXN0b21lckNvbXBhbnkgMwogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyQ29tcGFueQogIFN1YjoKICAtIEtleTogQ3VzdG9tZXIzCiAgICBOYW1lOiBDdXN0b21lciAzCiAgICBTZWFyY2hhYmxlOiAxCiAgICBJbnB1dDoKICAgICAgVHlwZTogQ3VzdG9tZXIKRU9GCgogICAgICAgICMgQWRkIHRlc3QgZGVmaW5pdGlvbiB0byB0ZXN0IENJIGNsYXNzLgogICAgICAgIG15ICREZWZpbml0aW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkFkZCgKICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbiwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICREZWZpbml0aW9uSUQsCiAgICAgICAgICAgICJEZWZpbml0aW9uSUQgJERlZmluaXRpb25JRCBpcyBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JENsYXNzSUQiKTsKCiAgICAgICAgIyBWZXJpZnkgYWxsIG9mIHRocmVlIHN1YiBlbGVtZW50cyBhcmUgYXV0b2NvbXBsZXRlIGlucHV0IGZpZWxkcy4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcuU3ViRWxlbWVudCAuSVRTTUN1c3RvbWVyU2VhcmNoLnVpLWF1dG9jb21wbGV0ZS1pbnB1dCcpLmxlbmd0aDsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgIDMsCiAgICAgICAgICAgICJBbGwgc3ViIGVsZW1lbnRzIHdvcmsgY29ycmVjdGx5IC0gdGhleSBhcmUgYXV0b2NvbXBsZXRlIGlucHV0IGZpZWxkcyIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGVhbnVwLgogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGRlZmluaXRpb24uCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBjb25maWdpdGVtX2RlZmluaXRpb24gV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRGVmaW5pdGlvbklEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJDb25maWcgaXRlbSBkZWZpbml0aW9uIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gZ2VuZXJhbF9jYXRhbG9nX3ByZWZlcmVuY2VzIFdIRVJFIGdlbmVyYWxfY2F0YWxvZ19pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDbGFzc0lEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJHZW5lcmFsIGNhdGFsb2cgcHJlZmVyZW5jZXMgZm9yIENsYXNzSUQgJENsYXNzSUQgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2cgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ2xhc3NJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiQ2xhc3NJRCAkQ2xhc3NJRCBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgIH0KKTsKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemHistory.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgIyBnZXQgJ0hhcmR3YXJlJyBjYXRhbG9nIGNsYXNzIElEcwogICAgICAgIG15ICRDb25maWdJdGVtRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0hhcmR3YXJlJywKICAgICAgICApOwogICAgICAgIG15ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CgogICAgICAgICMgZ2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yJyksCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoZSBuZXcgQ29uZmlnSXRlbQogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICApOwoKICAgICAgICAjIGFkZCBhIG5ldyB2ZXJzaW9uCiAgICAgICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1NlbGVuaXVtVGVzdCcsCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAxLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkVmVyc2lvbklELAogICAgICAgICAgICAiVmVyc2lvbiBpcyBjcmVhdGVkIC0gSUQgJFZlcnNpb25JRCIKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ2l0c20tY29uZmlnaXRlbScgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHRlc3QgdXNlciBJRAogICAgICAgIG15ICRUZXN0VXNlcklEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+VXNlckxvb2t1cCgKICAgICAgICAgICAgVXNlckxvZ2luID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRDb25maWdPYmplY3QtPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBjaGVjayBmb3IgZXJyb3IgbWVzc2FnZSB3aGVuIG5vIENvbmZpZ0l0ZW1JRCBpcyBwcm92aWRlZCBpbiBoaXN0b3J5IHNjcmVlbgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5Iik7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAicmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5FcnJvclNjcmVlbicpOyIKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgInZhciBlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5FcnJvclNjcmVlbicpOyIKICAgICAgICAgICAgICAgICAgICAuICJyZXR1cm4gZSAmJiBlLnRleHRDb250ZW50ICYmIGUudGV4dENvbnRlbnQubGVuZ3RoID4gMDsiCiAgICAgICAgICAgICksCiAgICAgICAgICAgICJFcnJvciBzY3JlZW4gLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgaGlzdG9yeSBtZXNzYWdlcyBsaXN0CiAgICAgICAgbXkgQEhpc3RvcnlNZXNzYWdlcyA9ICgKICAgICAgICAgICAgJ05ldyBDb25maWdJdGVtIChJRD0nIC4gJENvbmZpZ0l0ZW1JRCAuICcpJywKICAgICAgICAgICAgJ05ldyB2ZXJzaW9uIChJRD0nIC4gJFZlcnNpb25JRCAuICcpJywKICAgICAgICAgICAgJ0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0xKScsCiAgICAgICAgICAgICdOYW1lIHVwZGF0ZWQgKG5ldz1TZWxlbml1bVRlc3QsIG9sZD0pJywKICAgICAgICAgICAgJ0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz1PcGVyYXRpb25hbCwgb2xkPSknLAogICAgICAgICAgICAnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9UHJvZHVjdGlvbiwgb2xkPSknLAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgZm9yIGhpc3RvcnkgbWVzc2FnZXMgaW4gaGlzdG9yeSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQ7VmVyc2lvbklEPSRWZXJzaW9uSUQiCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRIaXN0b3J5TWVzc2FnZSAoQEhpc3RvcnlNZXNzYWdlcykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkSGlzdG9yeU1lc3NhZ2UgKSA+IC0xLAogICAgICAgICAgICAgICAgIkhpc3RvcnkgbWVzc2FnZSAkSGlzdG9yeU1lc3NhZ2UgLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIHJlbW92ZSBpdHNtLWNvbmZpZ2l0ZW0gJ3JvJyBhY2Nlc3MgcmlnaHQgZm9yIHRlc3QgdXNlcgogICAgICAgICMgZ2V0IGdyb3VwIG9iamVjdAogICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICAgICAjIGdldCAnaXRzbS1jb25maWdpdGVtJyBncm91cCBJRAogICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbUdyb3VwSUQgPSAkR3JvdXBPYmplY3QtPkdyb3VwTG9va3VwKAogICAgICAgICAgICBHcm91cCA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgICAgICApOwoKICAgICAgICAjIHJlbW92ZSBhY2Nlc3MgcmlnaHRzIHRvIHRlc3QgdXNlcgogICAgICAgICRHcm91cE9iamVjdC0+R3JvdXBNZW1iZXJBZGQoCiAgICAgICAgICAgIEdJRCAgICAgICAgPT4gJElUU01Db25maWdJdGVtR3JvdXBJRCwKICAgICAgICAgICAgVUlEICAgICAgICA9PiAkVGVzdFVzZXJJRCwKICAgICAgICAgICAgUGVybWlzc2lvbiA9PiB7CiAgICAgICAgICAgICAgICBybyA9PiAwLAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGZvciBlcnJvciBtZXNzYWdlIHdoZW4gdXNlciBoYXZlIG5vIGFjY2VzcyByaWdodHMgaW4gaGlzdG9yeSBzY3JlZW4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQ7VmVyc2lvbklEPSRWZXJzaW9uSUQiCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEVycm9yTWVzc2FnZU5vUGVybWlzc2lvbiA9ICdObyBQZXJtaXNzaW9uIHRvIHVzZSB0aGlzIGZyb250ZW5kIG1vZHVsZSEnOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJEVycm9yTWVzc2FnZU5vUGVybWlzc2lvbiApID4gLTEsCiAgICAgICAgICAgICJFcnJvciBtZXNzYWdlICRFcnJvck1lc3NhZ2VOb1Blcm1pc3Npb24gLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgY3JlYXRlZCB0ZXN0IENvbmZpZ0l0ZW0KICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIiwKICAgICAgICApOwogICAgfQopOwoKMTsK</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemPrint.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKaWYgKCAkU2VsZW5pdW0tPnticm93c2VyX25hbWV9IG5lICdmaXJlZm94JyApIHsKICAgICRTZWxmLT5UcnVlKAogICAgICAgIDEsCiAgICAgICAgIlBERiB0ZXN0IGN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIEZpcmVmb3giLAogICAgKTsKICAgIHJldHVybiAxOwp9CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgR2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMuCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICBOYW1lICA9PiAnSGFyZHdhcmUnLAogICAgICAgICk7CiAgICAgICAgbXkgJEhhcmR3YXJlQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBHZXQgJ1Byb2R1Y3Rpb24nIGRlcGxveW1lbnQgc3RhdGUgSURzLgogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICRQcm9kdWN0aW9uRGVwbFN0YXRlSUQgPSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICBUeXBlICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06Ok51bWJlckdlbmVyYXRvcicpLAogICAgICAgICAgICBDbGFzc0lEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gbnVtYmVyIGlzIGNyZWF0ZWQgLSAkQ29uZmlnSXRlbU51bWJlciIKICAgICAgICApOwoKICAgICAgICAjIEFkZCB0aGUgbmV3IENvbmZpZ0l0ZW0uCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICBDbGFzc0lEID0+ICRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGNyZWF0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIgogICAgICAgICk7CgogICAgICAgICMgQWRkIGEgbmV3IHZlcnNpb24uCiAgICAgICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1NlbGVuaXVtVGVzdCcsCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAxLAogICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkVmVyc2lvbklELAogICAgICAgICAgICAiVmVyc2lvbiBpcyBjcmVhdGVkIC0gSUQgJFZlcnNpb25JRCIKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRJVFNDb25maWdJdGVtWm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQiKTsKCiAgICAgICAgIyBDaGVjayBpZiB0aGVyZSBpcyB0aGUgbGluayB0byBBZ2VudElUU01Db25maWdJdGVtUHJpbnQgc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludDtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW1JRFwiXScpLmxlbmd0aDsiCiAgICAgICAgKTsKCiAgICAgICAgIyBHbyB0byBBZ2VudElUU01Db25maWdJdGVtUHJpbnQgc2NyZWVuIGZvciB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgJFNlbGVuaXVtLT5nZXQoCiAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtUHJpbnQ7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQ7VmVyc2lvbklEPSRWZXJzaW9uSUQiCiAgICAgICAgKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHByaW50IHNjcmVlbiBpcyBsb2FkZWQuCiAgICAgICAgQUNUSVZFU0xFRVA6CiAgICAgICAgZm9yIG15ICRTZWNvbmQgKCAxIC4uIDMwICkgewogICAgICAgICAgICBpZiAoIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAicHJpbnRlZCBieSIgKSA+IC0xLCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAicHJpbnRlZCBieSIgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICJQcmludCBzY3JlZW4gaXMgbG9hZGVkIiwKICAgICAgICAgICAgICAgICkgfHwgZGllOwogICAgICAgICAgICAgICAgbGFzdCBBQ1RJVkVTTEVFUDsKICAgICAgICAgICAgfQogICAgICAgICAgICBzbGVlcCAxOwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgdGVzdCBwcmludCB2YWx1ZXMuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1QcmludCA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkNvbmZpZ0l0ZW0jICRDb25maWdJdGVtTnVtYmVyIC0gZm91bmQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ29uZmlnSXRlbTogU2VsZW5pdW1UZXN0IC0gZm91bmQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICdIYXJkd2FyZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDbGFzczogSGFyZHdhcmUgLSBmb3VuZCIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAiQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlOiBQcm9kdWN0aW9uIC0gZm91bmQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSAgID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICJDdXJyZW50IEluY2lkZW50IFN0YXRlOiBPcGVyYXRpb25hbCAtIGZvdW5kIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWUgICA9PiAnVmVyc2lvbiAxJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gIkN1cnJlbnQgVmVyc2lvbjogVmVyc2lvbiAxIC0gZm91bmQiLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgZm9yIHByaW50ZWQgdmFsdWVzLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbVZhbHVlIChAQ29uZmlnSXRlbVByaW50KSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb25maWdJdGVtVmFsdWUtPntWYWx1ZX0gKSA+IC0xLAogICAgICAgICAgICAgICAgIiRDb25maWdJdGVtVmFsdWUtPntNZXNzYWdlfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJDb25maWdJdGVtIGlzIGRlbGV0ZWQgLSBJRCAkQ29uZmlnSXRlbUlEIiwKICAgICAgICApOwogICAgfQopOwoKMTsK</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemSearch.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkRGlzbWlzc01lc3NhZ2VzICAgICAgPSBzdWIgewoKICAgICAgICAgICAgIyBDbG9zZSBmbG9hdGluZyBhbGVydCBtZXNzYWdlcyB0aGF0IGNhbiBibG9jayBjbGlja3MuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAiaWYgKHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicpIHsgXCQoJy5tb2RNZXNzYWdlcyAubWVzc2FnZUNsb3NlJykudHJpZ2dlcignY2xpY2snKTsgXCQoJy5tb2RNZXNzYWdlcyAubWVzc2FnZScpLnJlbW92ZSgpOyB9IgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgR2V0ICdDb21wdXRlcicgQ29uZmlnSXRlbSBJRC4KICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUNsYXNzIChxdyhDb21wdXRlcikpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtQ2xhc3MsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1DbGFzc0lEcywgJENvbmZpZ0l0ZW1EYXRhUmVmLT57SXRlbUlEfTsKICAgICAgICB9CgogICAgICAgICMgR2V0ICdQcm9kdWN0aW9uJyBkZXBsb3ltZW50IHN0YXRlIElEcy4KICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCiAgICAgICAgKTsKICAgICAgICBteSAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlEID0gJFByb2R1Y3Rpb25EZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgICAgICBteSAkQ29uZmlnT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVycy4KICAgICAgICBteSBAQ29uZmlnSXRlbU51bWJlcnM7CiAgICAgICAgZm9yIG15ICRDb25maWdOdW1iZXJDcmVhdGUgKCAxIC4uIDIgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06Ok51bWJlckdlbmVyYXRvcicpLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1OdW1iZXIgbnVtYmVyIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkQ29uZmlnSXRlbU51bWJlcjsKICAgICAgICB9CgogICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbXMuCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ3JlYXRlTnVtYmVyIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbUNyZWF0ZU51bWJlciwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICAgICAgfQoKICAgICAgICBteSAkSW5jaVN0YXRlSUQgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0luY2lkZW50JywKICAgICAgICApOwoKICAgICAgICAjIEFkZCBhIG5ldyB2ZXJzaW9uIGZvciBlYWNoIENvbmZpZ0l0ZW0uCiAgICAgICAgbXkgQFZlcnNpb25JRHM7CiAgICAgICAgbXkgJENvdW50ICAgID0gMTsKICAgICAgICBteSAkUmFuZG9tSUQgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbVZlcnNpb24gKEBDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ291bnQgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gMSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVJRC0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbVZlcnNpb24sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICJWZXJzaW9uSUQgJFZlcnNpb25JRCBpcyBjcmVhdGVkIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBWZXJzaW9uSURzLCAkVmVyc2lvbklEOwoKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoIik7CiAgICAgICAgJERpc21pc3NNZXNzYWdlcy0+KCk7CgogICAgICAgICMgV2FpdCB1bnRpbCBmb3JtIGFuZCBvdmVybGF5IGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjU2VhcmNoQ2xhc3NJRCcpLmxlbmd0aCIgKTsKCiAgICAgICAgIyBDaGVjayBmb3IgJ0NsYXNzJyBsYWJlbC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCdsYWJlbFtmb3I9XCJDbGFzc1wiXScpLmxlbmd0aCIpLAogICAgICAgICAgICAiQ2xhc3MgbGFiZWwgLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBmb3IgJ0NsYXNzJyBzZWxlY3QgYm94LgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWFyY2hDbGFzc0lEIiwgJ2NzcycgKSwKICAgICAgICAgICAgIkNsYXNzIHNlbGVjdCBib3ggLSBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBCZSBzdXJlIG1vZGVybml6ZWQgZmllbGQgaGFzIGxvYWRlZC4KICAgICAgICBzbGVlcCAxOwoKICAgICAgICAjIFNlbGVjdCAnQ29tcHV0ZXInIGNsYXNzLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoJyRDb25maWdJdGVtQ2xhc3NJRHNbMF0nKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwoKICAgICAgICAjIEJlIHN1cmUgYWxsIGZpZWxkcyBhcmUgbG9hZGVkLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjU2VhcmNoRm9ybVN1Ym1pdCIpLmxlbmd0aDsnLAogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgQ29uZmlnSXRlbSBzZWFyY2ggcGFnZS4KICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoU2VhcmNoQ2xhc3NJRCBTZWFyY2hQcm9maWxlIFNlYXJjaFByb2ZpbGVOZXcgQXR0cmlidXRlIFByZXZpb3VzVmVyc2lvblNlYXJjaCBSZXN1bHRGb3JtIFNlYXJjaEZvcm1TdWJtaXQpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIHNsZWVwIDE7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyMkSUQnKS5sZW5ndGgiICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJyMkSUQnKS5sZW5ndGg7IiksCiAgICAgICAgICAgICAgICAiRWxlbWVudCBpcyBmb3VuZCAtICRJRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENoZWNrIGlmIElUU01DaGFuZ2UgU2VhcmNoIGZvcm0gY29udGFpbiBFeGNlbCBvdXRwdXQgb3B0aW9uLCBzZWUgYnVnIzEyNzY5LgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNSZXN1bHRGb3JtIG9wdGlvbjpjb250YWlucyhcIkV4Y2VsXCIpJykubGVuZ3RoIgogICAgICAgICAgICApLAogICAgICAgICAgICAnMScsCiAgICAgICAgICAgICdJVFNNQ29uZmlnSXRlbSBTZWFyY2ggY29udGFpbiBFeGNlbCBvdXRwdXQnLAogICAgICAgICk7CgogICAgICAgICMgU2VhcmNoIENvbmZpZ0l0ZW1zIGJ5IHRlc3QgQ29uZmlnSXRlbSBudW1iZXIgYW5kIG5hbWVzLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjQXR0cmlidXRlJykudmFsKCdOYW1lJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjU2VhcmNoSW5zZXJ0IGlucHV0W25hbWU9XCJOYW1lXCJdJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTnVtYmVyJ10iKS0+c2VuZF9rZXlzKCcqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+c2VuZF9rZXlzKCAnKicgLiAkUmFuZG9tSUQgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWFyY2hGb3JtU3VibWl0IiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiAhXCQoJ0RpYWxvZy5Nb2RhbCcpLmxlbmd0aCAmJiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCcpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBleHBlY3RlZCByZXN1bHQuCiAgICAgICAgZm9yIG15ICRDaGVja0NvbmZpZ0l0ZW0gKEBDb25maWdJdGVtTnVtYmVycykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgInJldHVybiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCB0ZDpjb250YWlucygkQ2hlY2tDb25maWdJdGVtKScpLmxlbmd0aCIKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSAkQ2hlY2tDb25maWdJdGVtIG51bWJlciBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIFZlcmlmeSBzb3J0aW5nIGluIHRhYmxlLCBieSBkZWZhdWx0IHNvcnRpbmcgaXMgZG9uZSBieSBDb25maWdJdGVtTnVtYmVyIC0gc29ydCBhc2NlbmRpbmcuCiAgICAgICAgIyBMb3dlciBJRCB3aWxsIG9uIHRoZSB0b3Agb2YgdGFibGUuCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDApJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1sxXSBpcyBvbiB0b3Agb2YgdGFibGUgc29ydCBieSBOdW1iZXIgYXNjZW5kaW5nIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1swXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1swXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOdW1iZXIgYXNjZW5kaW5nIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgdG8gc29ydCBieSBOYW1lLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2Zvcm0vdGFibGUvdGhlYWQvdHIvdGhbNV0vYSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIHJlc3VsdC4KICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbSAoQENvbmZpZ0l0ZW1OdW1iZXJzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRkOmNvbnRhaW5zKCRDaGVja0NvbmZpZ0l0ZW0pJykubGVuZ3RoIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtICRDaGVja0NvbmZpZ0l0ZW0gbnVtYmVyIGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU29ydCBpcyBieSBOYW1lIGRlc2NlbmRpbmcuCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDApJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1swXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1sxXSBpcyBvbiB0b3Agb2YgdGFibGUgc29ydCBieSBOYW1lIGRlc2NlbmRpbmciCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMSknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzFdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzBdIGlzIG9uIGJvdHRvbSBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgZGVzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAjIENsaWNrIHRvIHNvcnQgYnkgTmFtZSBhZ2Fpbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9mb3JtL3RhYmxlL3RoZWFkL3RyL3RoWzVdL2EiKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFZlcmlmeSBvcmRlciBpcyBjaGFuZ2VkLCBzb3J0IGJ5IE5hbWUgYXNjZW5kaW5nLgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCd0Ym9keSB0cjplcSgwKScpLmF0dHIoJ2lkJykiKSwKICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1JRF8nIC4gJENvbmZpZ0l0ZW1JRHNbMV0sCiAgICAgICAgICAgICJDb25maWdJdGVtSUQgJENvbmZpZ0l0ZW1JRHNbMF0gaXMgb24gdG9wIG9mIHRhYmxlIHNvcnQgYnkgTmFtZSBhc2NlbmRpbmciCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMSknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzBdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzFdIGlzIG9uIGJvdHRvbSBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgYXNjZW5kaW5nIgogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIENvbmZpZ0l0ZW0gbnVtYmVycyBhbmQgYWRkIHRoZSBuZXcgQ29uZmlnSXRlbXMuCiAgICAgICAgQENvbmZpZ0l0ZW1OdW1iZXJzID0gKCk7CiAgICAgICAgZm9yIG15ICRDb25maWdOdW1iZXJDcmVhdGUgKCAxIC4uIDM1ICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTnVtYmVyQ3JlYXRlKAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpOdW1iZXJHZW5lcmF0b3InKSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtICRDb25maWdJdGVtTnVtYmVyIG51bWJlciBpcyBjcmVhdGVkIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgICAgICBOdW1iZXIgID0+ICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKICAgICAgICB9CgogICAgICAgIG15IEBYTUxEYXRhQXJyYXkgPSBbCiAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAnVmVyc2lvbicgPT4gWwogICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICdXYXJyYW50eUV4cGlyYXRpb25EYXRlJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudCcgPT4gJzIwMTctMTAtMTAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAnTklDJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSVBvdmVyREhDUCcgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQnID0+ICczOCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lQQWRkcmVzcycgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQnID0+ICcxNzIuMC4wLjAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAndGVzdCAxNzIuMC4wLjAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICdWZXJzaW9uJyA9PiBbCiAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAgICAgJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50JyA9PiAnMjAxNy0xMS0xMScKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXTsKCiAgICAgICAgIyBBZGQgYSBuZXcgdmVyc2lvbiBmb3IgZWFjaCBDb25maWdJdGVtLgogICAgICAgICRDb3VudCA9IDE7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtVmVyc2lvbiAoQENvbmZpZ0l0ZW1JRHMpIHsKCiAgICAgICAgICAgIG15ICRYTUxEYXRhICAgPSAoICRDb3VudCA8PSAzMCApID8gJFhNTERhdGFBcnJheVswXSA6ICRYTUxEYXRhQXJyYXlbMV07CiAgICAgICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkQ291bnQgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uSUQgPT4gMSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVJRC0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFhNTERhdGEgICAgICA9PiAkWE1MRGF0YSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbVZlcnNpb24sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICJWZXJzaW9uSUQgJFZlcnNpb25JRCBpcyBjcmVhdGVkIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBWZXJzaW9uSURzLCAkVmVyc2lvbklEOwoKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAjIENoYW5nZSBzZWFyY2ggb3B0aW9uLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0lUU01Db25maWdJdGVtU2VhcmNoIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGZvcm0gaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcjQXR0cmlidXRlJykubGVuZ3RoIiApOwoKICAgICAgICAjIEFkZCBzZWFyY2ggZmlsdGVyIGJ5IFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgYW5kIHNldCBkYXRlIHJhbmdlICg4LTEwLTIwMTcgLSAxNS0xMC0yMDE3KS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNBdHRyaWJ1dGUnKS52YWwoJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdpbnB1dFtuYW1lPVwiV2FycmFudHlFeHBpcmF0aW9uRGF0ZVwiXScpLmxlbmd0aCIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJXYXJyYW50eUV4cGlyYXRpb25EYXRlOjpUaW1lU3RhcnQ6OkRheVwiXScpLnZhbCgnOCcpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJXYXJyYW50eUV4cGlyYXRpb25EYXRlOjpUaW1lU3RhcnQ6Ok1vbnRoXCJdJykudmFsKCcxMCcpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJXYXJyYW50eUV4cGlyYXRpb25EYXRlOjpUaW1lU3RhcnQ6OlllYXJcIl0nKS52YWwoJzIwMTcnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiV2FycmFudHlFeHBpcmF0aW9uRGF0ZTo6VGltZVN0b3A6OkRheVwiXScpLnZhbCgnMTUnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hJbnNlcnQgc2VsZWN0W2lkPVwiV2FycmFudHlFeHBpcmF0aW9uRGF0ZTo6VGltZVN0b3A6Ok1vbnRoXCJdJykudmFsKCcxMCcpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI1NlYXJjaEluc2VydCBzZWxlY3RbaWQ9XCJXYXJyYW50eUV4cGlyYXRpb25EYXRlOjpUaW1lU3RvcDo6WWVhclwiXScpLnZhbCgnMjAxNycpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTnVtYmVyJ10iKS0+Y2xlYXIoKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J051bWJlciddIiktPnNlbmRfa2V5cygnKicpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPmNsZWFyKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+c2VuZF9rZXlzKCAnKicgLiAkUmFuZG9tSUQgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCdEaWFsb2cuTW9kYWwnKS5sZW5ndGggJiYgXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwnKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlBhZ2luYXRpb24nKS50ZXh0KCkudHJpbSgpLmluZGV4T2YoJzEtMjUgb2YgMzAnKSA+IC0xOyIpLAogICAgICAgICAgICAiQ2hlY2sgcGFnaW5hdGlvbiBvbiB0aGUgZmlyc3QgcGFnZSIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwgdGJvZHkgdHInKS5sZW5ndGg7IiksCiAgICAgICAgICAgICcyNScsCiAgICAgICAgICAgICJOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIG9uIHRoZSBmaXJzdCBwYWdlIGlzIGNvcnJlY3QgLSAyNSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBHbyB0byB0aGUgc2Vjb25kIHBhZ2UuCiAgICAgICAgJERpc21pc3NNZXNzYWdlcy0+KCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjR2VuZXJpY1BhZ2UyIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcuUGFnaW5hdGlvbicpLnRleHQoKS50cmltKCkuaW5kZXhPZignMjYtMzAgb2YgMzAnKSA+IC0xOyIpLAogICAgICAgICAgICAiQ2hlY2sgcGFnaW5hdGlvbiBvbiB0aGUgc2Vjb25kIHBhZ2UiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnNScsCiAgICAgICAgICAgICJOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIG9uIHRoZSBzZWNvbmQgcGFnZSBpcyBjb3JyZWN0IC0gNSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGFuZ2Ugc2VhcmNoIG9wdGlvbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJVFNNQ29uZmlnSXRlbVNlYXJjaCIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICMgV2FpdCB1bnRpbCBmb3JtIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnI0F0dHJpYnV0ZScpLmxlbmd0aCAmJiBcJCgnI1NlYXJjaEluc2VydCBpbnB1dFtuYW1lPVwiTmFtZVwiXScpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIElucHV0IHdyb25nIHNlYXJjaCBwYXJhbWV0ZXJzLCByZXN1bHQgc2hvdWxkIGJlICdObyBkYXRhIGZvdW5kJy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQG5hbWU9J05hbWUnXSIpLT5jbGVhcigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTmFtZSddIiktPnNlbmRfa2V5cygnYXNkZmcnKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWFyY2hGb3JtU3VibWl0IiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiAhXCQoJ0RpYWxvZy5Nb2RhbCcpLmxlbmd0aCAmJiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCcpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGZvciBleHBlY3RlZCByZXN1bHQuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnTm8gZGF0YSBmb3VuZCcgKSA+IC0xLAogICAgICAgICAgICAiJ05vIGRhdGEgZm91bmQnIC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gIkNoYW5nZSBzZWFyY2ggb3B0aW9uIgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0lUU01Db25maWdJdGVtU2VhcmNoIiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjU2VhcmNoUHJvZmlsZU5ldycpLmxlbmd0aCIgKTsKICAgICAgICBzbGVlcCAyOwoKICAgICAgICAjIENoZWNrIGlmIGNvcnJlY3QgY29uZmlnIGl0ZW1zIGFyZSBzaG93biBhZnRlciBzdWIgYXR0cmlidXRlcyBhcmUgc2VhcmNoZWQuIFNlZSBidWcjMTI5OTguCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yJyksCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlcjIsCiAgICAgICAgICAgICJDb25maWdJdGVtICRDb25maWdJdGVtTnVtYmVyMiBudW1iZXIgaXMgY3JlYXRlZCIKICAgICAgICApOwogICAgICAgIG15ICRDb25maWdJdGVtSUQyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICAgICAgICAgIE51bWJlciAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIyLAogICAgICAgICAgICBDbGFzc0lEID0+ICRDb25maWdJdGVtQ2xhc3NJRHNbMF0sCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbUlEMiwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEMiBpcyBjcmVhdGVkIgogICAgICAgICk7CgogICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQyOwoKICAgICAgICAjIENyZWF0ZSBjb25maWcgdGhhdCBzaG91bGQgbm90IGFwcGVhciBpbiBzZWFyY2guCiAgICAgICAgbXkgJFZlcnNpb25JRDIgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICRDb3VudCAuICRSYW5kb21JRCwKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgIERlcGxTdGF0ZUlEICA9PiAkUHJvZHVjdGlvbkRlcGxTdGF0ZUlELAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZUlELT57SXRlbUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlEMiwKICAgICAgICAgICAgWE1MRGF0YSAgICAgID0+IFsKICAgICAgICAgICAgICAgIHVuZGVmLAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gWwogICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMzgnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElQQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMjIuMC4wLjAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ3Rlc3QgMjIyLjAuMC4wJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFZlcnNpb25JRDIsCiAgICAgICAgICAgICJWZXJzaW9uSUQgJFZlcnNpb25JRDIgaXMgY3JlYXRlZCIKICAgICAgICApOwoKICAgICAgICAjIENvbmZpZ3VyZSBJUEFkZHJlcyB0byBzaG93IGluIHNlYXJjaCByZXN1bHQuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1Nob3dDb2x1bW5zJywKICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgICAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgQ3VyRGVwbFNpZ25hbCAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlVHlwZSAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgQ3VySW5jaVNpZ25hbCAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ3VySW5jaVN0YXRlVHlwZSAgICAgICA9PiAwLAogICAgICAgICAgICAgICAgTGFzdENoYW5nZWQgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgJ05JQzo6MTo6SVBBZGRyZXNzOjoxJyA9PiAxLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLkRpYWxvZyAuQ2xvc2UiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCIpOwoKICAgICAgICAjIFdhaXQgdW50aWwgZm9ybSBhbmQgb3ZlcmxheSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaENsYXNzSUQnKS5sZW5ndGgiICk7CiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBTZWxlY3QgJ0NvbXB1dGVyJyBjbGFzcy4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCckQ29uZmlnSXRlbUNsYXNzSURzWzBdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGZvcm0gaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcjQXR0cmlidXRlJykubGVuZ3RoIiApOwoKICAgICAgICAjIEFkZCBzZWFyY2ggZmlsdGVyIGJ5IE5JQzo6SVBBZGRyZXNzIGFuZCBzZXQgMTcyKi4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNBdHRyaWJ1dGUnKS52YWwoJ05JQzo6SVBBZGRyZXNzJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiLAogICAgICAgICk7CgogICAgICAgICMgV2FpdCBmb3IgTmV0d29yayBBZGFwdGVyOjpJUCBBZGRyZXNzIHRvIGFwcGVhci4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI1NlYXJjaEluc2VydCBpbnB1dFtuYW1lPVwiTklDOjpJUEFkZHJlc3NcIl0nKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOSUM6OklQQWRkcmVzcyddIiktPnNlbmRfa2V5cygnMTcyKicpOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTZWFyY2hGb3JtU3VibWl0IiwgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiAhXCQoJ0RpYWxvZy5Nb2RhbCcpLmxlbmd0aCAmJiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCcpLmxlbmd0aCIKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIGlmIGNvcnJlY3QgbnVtYmVyIG9mIGl0ZW1zIGFyZSBzaG93biBvbiBwYWdpbmF0aW9uLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5QYWdpbmF0aW9uJykudGV4dCgpLnRyaW0oKS5pbmRleE9mKCcxLTI1IG9mIDMwJykgPiAtMTsiKSwKICAgICAgICAgICAgIkNoZWNrIHBhZ2luYXRpb24gb24gdGhlIGZpcnN0IHBhZ2UiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnMjUnLAogICAgICAgICAgICAiTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyBvbiB0aGUgZmlyc3QgcGFnZSBpcyBjb3JyZWN0IC0gMjUiLAogICAgICAgICk7CgogICAgICAgICMgR28gdG8gdGhlIHNlY29uZCBwYWdlLgogICAgICAgICREaXNtaXNzTWVzc2FnZXMtPigpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0dlbmVyaWNQYWdlMiIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDaGVjayBpZiBjb3JyZWN0IG51bWJlciBvZiBpdGVtcyBhcmUgc2hvd24gb24gcGFnaW5hdGlvbi4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcuUGFnaW5hdGlvbicpLnRleHQoKS50cmltKCkuaW5kZXhPZignMjYtMzAgb2YgMzAnKSA+IC0xOyIpLAogICAgICAgICAgICAiQ2hlY2sgcGFnaW5hdGlvbiBvbiB0aGUgc2Vjb25kIHBhZ2UiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRib2R5IHRyJykubGVuZ3RoOyIpLAogICAgICAgICAgICAnNScsCiAgICAgICAgICAgICJOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIG9uIHRoZSBzZWNvbmQgcGFnZSBpcyBjb3JyZWN0IC0gNSIsCiAgICAgICAgKTsKCiAgICAgICAgIyBWZXJpZnkgc2VhcmNoIHJlc3VsdCByZW1haW5lZCBpbnRhY3QgYWZ0ZXIgY2hhbmdpbmcgaXRlbXMgcGVyIHBhZ2UsIHNlZSBidWcjMTQ3MTcgZm9yIG1vcmUgZGV0YWlscy4KICAgICAgICAjIFNldCAxMCBjb25maWcgaXRlbXMgcGVyIHBhZ2UuCiAgICAgICAgJERpc21pc3NNZXNzYWdlcy0+KCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJhI1Nob3dDb250ZXh0U2V0dGluZ3NEaWFsb2ciLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIi5EaWFsb2cuTW9kYWwgI1VzZXJDb25maWdJdGVtT3ZlcnZpZXdTbWFsbFBhZ2VTaG93biIpLmxlbmd0aCcKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+SW5wdXRGaWVsZFZhbHVlU2V0KAogICAgICAgICAgICBFbGVtZW50ID0+ICcjVXNlckNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsUGFnZVNob3duJywKICAgICAgICAgICAgVmFsdWUgICA9PiAnMTAnLAogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGlhbG9nQnV0dG9uMSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gISQoIi5EaWFsb2cuTW9kYWwiKS5sZW5ndGgnCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiBjb3JyZWN0IG51bWJlciBvZiBpdGVtcyBhcmUgc2hvd24gb24gcGFnaW5hdGlvbi4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcuUGFnaW5hdGlvbicpLnRleHQoKS50cmltKCkuaW5kZXhPZignMS0xMCBvZiAzMCcpID4gLTE7IiksCiAgICAgICAgICAgICJDaGVjayBwYWdpbmF0aW9uIGFmdGVyIHN3aXRjaCIsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnI092ZXJ2aWV3Qm9keSAuVGFibGVTbWFsbCB0Ym9keSB0cicpLmxlbmd0aDsiKSwKICAgICAgICAgICAgJzEwJywKICAgICAgICAgICAgIk51bWJlciBvZiBjb25maWcgaXRlbXMgaXMgY29ycmVjdCAtIDEwIiwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1EZWxldGVJRCAoQENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbURlbGV0ZUlELAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtRGVsZXRlSUQgaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2FjaGUgaXMgY29ycmVjdC4KICAgICAgICBteSAkQ2FjaGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgICAgICBmb3IgbXkgJENhY2hlIChxdyhDb25maWdJdGVtIFZlcnNpb24pKSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+Q2xlYW5VcCggVHlwZSA9PiAkQ2FjaGUgKTsKICAgICAgICB9CiAgICB9Cik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentITSMConfigItemZoom.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkRGlzbWlzc01lc3NhZ2VzICAgICAgPSBzdWIgewoKICAgICAgICAgICAgIyBDbG9zZSBmbG9hdGluZyBhbGVydCBtZXNzYWdlcyB0aGF0IGNhbiBibG9jayBjbGlja3MuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAiaWYgKHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicpIHsgXCQoJy5tb2RNZXNzYWdlcyAubWVzc2FnZUNsb3NlJykudHJpZ2dlcignY2xpY2snKTsgXCQoJy5tb2RNZXNzYWdlcyAubWVzc2FnZScpLnJlbW92ZSgpOyB9IgogICAgICAgICAgICApOwogICAgICAgIH07CgogICAgICAgICMgZ2V0ICdIYXJkd2FyZScgY2F0YWxvZyBjbGFzcyBJRHMKICAgICAgICBteSAkQ29uZmlnSXRlbURhdGFSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgIE5hbWUgID0+ICdIYXJkd2FyZScsCiAgICAgICAgKTsKICAgICAgICBteSAkSGFyZHdhcmVDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbURhdGFSZWYtPntJdGVtSUR9OwoKICAgICAgICAjIGdldCAnUHJvZHVjdGlvbicgYW5kICdSZXBhaXInIGRlcGxveW1lbnQgc3RhdGUgSURzCiAgICAgICAgbXkgQERlcGxTdGF0ZUlEczsKICAgICAgICBteSBARGVwbFN0YXRlcyA9IChxdyhQcm9kdWN0aW9uIFJlcGFpcikpOwogICAgICAgIGZvciBteSAkRGVwbFN0YXRlIChARGVwbFN0YXRlcykgewogICAgICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICAgICAgICAgTmFtZSAgPT4gJERlcGxTdGF0ZSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBARGVwbFN0YXRlSURzLCAkRGVwbFN0YXRlRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICAgICAjIGNyZWF0ZSBDb25maWdJdGVtIG51bWJlcgogICAgICAgIG15ICRDb25maWdJdGVtTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yJyksCiAgICAgICAgICAgIENsYXNzSUQgPT4gJEhhcmR3YXJlQ29uZmlnSXRlbUlELAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRDb25maWdJdGVtTnVtYmVyLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBudW1iZXIgaXMgY3JlYXRlZCAtICRDb25maWdJdGVtTnVtYmVyIgogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoZSBuZXcgQ29uZmlnSXRlbQogICAgICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkSGFyZHdhcmVDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICApOwoKICAgICAgICAjIGFkZCB0d28gdmVyc2lvbnMKICAgICAgICBteSBAVmVyc2lvbklEczsKICAgICAgICBmb3IgbXkgJFZlcnNpb24gKEBEZXBsU3RhdGVJRHMpIHsKICAgICAgICAgICAgbXkgJFZlcnNpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQWRkKAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZWxlbml1bVRlc3QnLAogICAgICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+IDEsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgPT4gJFZlcnNpb24sCiAgICAgICAgICAgICAgICBJbmNpU3RhdGVJRCAgPT4gMSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFZlcnNpb25JRCwKICAgICAgICAgICAgICAgICJWZXJzaW9uIGlzIGNyZWF0ZWQgLSBJRCAkVmVyc2lvbklEIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBWZXJzaW9uSURzLCAkVmVyc2lvbklEOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICdpdHNtLWNvbmZpZ2l0ZW0nIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgKICAgICAgICAgICAgIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW07U29ydEJ5PU51bWJlcjtPcmRlckJ5PURvd247Vmlldz07RmlsdGVyPSRIYXJkd2FyZUNvbmZpZ0l0ZW1JRCIKICAgICAgICApOwogICAgICAgICREaXNtaXNzTWVzc2FnZXMtPigpOwoKICAgICAgICAjIENsaWNrIG9uIGNyZWF0ZWQgQ29uZmlnSXRlbS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9kaXZbY29udGFpbnMoXEB0aXRsZSwgJyRDb25maWdJdGVtTnVtYmVyJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgZ2V0IENvbmZpZ0l0ZW0gdmFsdWUgcGFyYW1zCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1WYWx1ZXMgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdIYXJkd2FyZScsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAncC5WYWx1ZTpjb250YWlucyhIYXJkd2FyZSknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdwLlZhbHVlOmNvbnRhaW5zKFNlbGVuaXVtVGVzdCknLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnUmVwYWlyJywKICAgICAgICAgICAgICAgIENoZWNrID0+ICdkaXYuVmFsdWU6Y29udGFpbnMoUmVwYWlyKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnZGl2LlZhbHVlOmNvbnRhaW5zKE9wZXJhdGlvbmFsKScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFZhbHVlID0+ICIkQ29uZmlnSXRlbU51bWJlciIsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAiaDE6Y29udGFpbnMoJENvbmZpZ0l0ZW1OdW1iZXIpIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIENvbmZpZ0l0ZW0gdmFsdWVzIG9uIHNjcmVlbgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtVmFsdWUgKEBDb25maWdJdGVtVmFsdWVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCckQ2hlY2tDb25maWdJdGVtVmFsdWUtPntDaGVja30nKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIlRlc3QgQ29uZmlnSXRlbSB2YWx1ZSAkQ2hlY2tDb25maWdJdGVtVmFsdWUtPntWYWx1ZX0gLSBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNsaWNrIHRvIHNob3cgYWxsIHZlcnNpb25zCiAgICAgICAgJERpc21pc3NNZXNzYWdlcy0+KCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIuQWxsSVRTTUl0ZW1zIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgIyB2ZXJpZnkgYm90aCB2ZXJzaW9ucyBhcmUgcHJlc2VudCBvbiBzY3JlZW4KICAgICAgICBmb3IgbXkgJFZlcnNpb25zQ2hlY2sgKEBEZXBsU3RhdGVzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICJTZWxlbml1bVRlc3QgKCRWZXJzaW9uc0NoZWNrKSIgKSA+IC0xLAogICAgICAgICAgICAgICAgIlNlbGVuaXVtVGVzdCAoJFZlcnNpb25zQ2hlY2spIC0gZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGVzdCBtZW51IGJ1dHRvbnMgcGFyYW1zCiAgICAgICAgbXkgQE1lbnVCdXR0b25zID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdCYWNrJywKICAgICAgICAgICAgICAgIExpbmsgPT4gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1Eb3duO1ZpZXc9O0ZpbHRlcj0kSGFyZHdhcmVDb25maWdJdGVtSUQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdIaXN0b3J5JywKICAgICAgICAgICAgICAgIExpbmsgPT4gIkFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5O0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEc1sxXSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0VkaXQnLAogICAgICAgICAgICAgICAgTGluayA9PiAiQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdQcmludCcsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBZ2VudElUU01Db25maWdJdGVtUHJpbnQ7Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSUQ7VmVyc2lvbklEPSRWZXJzaW9uSURzWzFdIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnTGluaycsCiAgICAgICAgICAgICAgICBMaW5rID0+ICJBZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUlUU01Db25maWdJdGVtO1NvdXJjZUtleT0kQ29uZmlnSXRlbUlEIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnRHVwbGljYXRlJywKICAgICAgICAgICAgICAgIExpbmsgPT4gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtRWRpdDtEdXBsaWNhdGVJRD0kQ29uZmlnSXRlbUlEO1ZlcnNpb25JRD0kVmVyc2lvbklEc1sxXSIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBtZW51IGJ1dHRvbnMKICAgICAgICBmb3IgbXkgJE1lbnVCdXR0b25DaGVjayAoQE1lbnVCdXR0b25zKSB7CiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnJE1lbnVCdXR0b25DaGVjay0+e0xpbmt9JyApXSIpOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIk1lbnUgYnV0dG9uICRNZW51QnV0dG9uQ2hlY2stPntOYW1lfSAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbURlbGV0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIsCiAgICAgICAgKTsKICAgIH0KCik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/AgentLinkObject.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkVGlja2V0T2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAgICAgIyBHZXQgQ29tcHV0ZXIgYW5kIEhhcmR3YXJlIGNhdGFsb2cgY2xhc3MgSURzLgogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NJRHM7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtIChxdyhDb21wdXRlciBIYXJkd2FyZSkpIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhUmVmID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgID0+ICRDb25maWdJdGVtLAogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtQ2xhc3NJRHMsICRDb25maWdJdGVtRGF0YVJlZi0+e0l0ZW1JRH07CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdHdvIHRlc3QgQ29uZmlnSXRlbXMgZm9yIENvbXB1dGVyIGFuZCBIYXJkd2FyZSBDb25maWdJdGVtIGNsYXNzLgogICAgICAgIG15IEBDb25maWdJdGVtTnVtYmVyczsKICAgICAgICBteSBAQ29uZmlnSXRlbUlEczsKICAgICAgICBteSBAVmVyc2lvbklEczsKICAgICAgICBmb3IgbXkgJElUU01Db25maWdJdGVtIChAQ29uZmlnSXRlbUNsYXNzSURzKSB7CgogICAgICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlci4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6TnVtYmVyR2VuZXJhdG9yJyksCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRJVFNNQ29uZmlnSXRlbSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtIG51bWJlciBpcyBjcmVhdGVkIC0gJENvbmZpZ0l0ZW1OdW1iZXIiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1OdW1iZXJzLCAkQ29uZmlnSXRlbU51bWJlcjsKCiAgICAgICAgICAgICMgQWRkIHRoZSBuZXcgQ29uZmlnSXRlbS4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICA9PiAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJElUU01Db25maWdJdGVtLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBjcmVhdGVkIC0gSUQgJENvbmZpZ0l0ZW1JRCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJENvbmZpZ0l0ZW1JRDsKCiAgICAgICAgICAgICMgQWRkIGEgbmV3IHZlcnNpb24uCiAgICAgICAgICAgIG15ICRWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VsZW5pdW1UZXN0JywKICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVJRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkVmVyc2lvbklELAogICAgICAgICAgICAgICAgIlZlcnNpb24gaXMgY3JlYXRlZCAtIElEICRWZXJzaW9uSUQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQFZlcnNpb25JRHMsICRWZXJzaW9uSUQ7CgogICAgICAgIH0KCiAgICAgICAgIyBDcmVhdGUgdGVzdCBzZXJ2aWNlLgogICAgICAgIG15ICRTZXJ2aWNlTmFtZSA9ICJTZXJ2aWNlIiAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJFNlcnZpY2VJRCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZUFkZCgKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJFNlcnZpY2VOYW1lLAogICAgICAgICAgICBWYWxpZElEICAgICA9PiAxLAogICAgICAgICAgICBDb21tZW50ICAgICA9PiAnU2VsZW5pdW0gVGVzdCBTZXJ2aWNlJywKICAgICAgICAgICAgVXNlcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZUlEICAgICAgPT4gMiwKICAgICAgICAgICAgQ3JpdGljYWxpdHkgPT4gJzMgbm9ybWFsJywKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VydmljZUlELAogICAgICAgICAgICAiU2VydmljZSBpcyBjcmVhdGVkIC0gSUQgJFNlcnZpY2VJRCIKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHRpY2tldC4KICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICAgICAgbXkgJFRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICAgICAgVE4gICAgICAgICAgID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU2VsZW5pdW1UZXN0VGlja2V0JywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICAgICAgICAgIEN1c3RvbWVySUQgICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckBleGFtcGxlLmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkVGlja2V0SUQsCiAgICAgICAgICAgICJUaWNrZXQgaXMgY3JlYXRlZCAtIElEICRUaWNrZXRJRCIKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycsICdpdHNtLWNvbmZpZ2l0ZW0nLCAnaXRzbS1zZXJ2aWNlJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtSURzWzBdO1ZlcnNpb249JFZlcnNpb25JRHNbMF0iCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiAnTGluaycgbWVudS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgKICAgICAgICAgICAgIi8vYVtjb250YWlucyhcQGhyZWYsIFwnQWN0aW9uPUFnZW50TGlua09iamVjdDtTb3VyY2VPYmplY3Q9SVRTTUNvbmZpZ0l0ZW07U291cmNlS2V5PSRDb25maWdJdGVtSURzWzBdXCcgKV0iCiAgICAgICAgKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTd2l0Y2ggdG8gJ0xpbmsnIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoQ29yZSkgPT0gIm9iamVjdCIgJiYgdHlwZW9mKENvcmUuQXBwKSA9PSAib2JqZWN0IiAmJiBDb3JlLkFwcC5QYWdlTG9hZENvbXBsZXRlJwogICAgICAgICk7CgogICAgICAgICMgU2VsZWN0IHRvIGxpbmsgd2l0aCB0ZXN0IEhhcmR3YXJlIENvbmZpZ0l0ZW0uCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjVGFyZ2V0SWRlbnRpZmllcicpLnZhbCgnSVRTTUNvbmZpZ0l0ZW06OiRDb25maWdJdGVtQ2xhc3NJRHNbMV0nKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwoKICAgICAgICBzbGVlcCAyOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjU0VBUkNIXFxcXDpcXFxcOk51bWJlciIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayAnTGluaycgc2NyZWVuIGZvciB0d28gQ29uZmlnSXRlbXMuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KFRhcmdldElkZW50aWZpZXIgU3VibWl0U2VhcmNoKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgU2VhcmNoIENvbmZpZ0l0ZW0gYnkgaXRzIG51bWJlciBhbmQgc2VsZWN0IHJlc3VsdC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQGlkPSdTRUFSQ0g6Ok51bWJlciddIiktPnNlbmRfa2V5cyggJENvbmZpZ0l0ZW1OdW1iZXJzWzFdICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU3VibWl0U2VhcmNoIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyNMaW5rVGFyZ2V0S2V5cycsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBTZWxlY3QgJ0FsdGVybmF0aXZlVG8nIGxpbmsgdHlwZS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBpZD0nQWRkTGlua3MnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgU2VsZWN0IHRvIGxpbmsgd2l0aCB0ZXN0IFNlcnZpY2UuCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjVGFyZ2V0SWRlbnRpZmllcicpLnZhbCgnU2VydmljZScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICk7CgogICAgICAgIHNsZWVwIDI7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTRUFSQ0hcXFxcOlxcXFw6TmFtZSIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWFyY2ggU2VydmljZSBieSBuYW1lIGFuZCBzZWxlY3QgcmVzdWx0LgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J1NFQVJDSDo6TmFtZSddIiktPnNlbmRfa2V5cygkU2VydmljZU5hbWUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1N1Ym1pdFNlYXJjaCIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQGlkPSdMaW5rVGFyZ2V0S2V5cyddW1xAdmFsdWU9JyRTZXJ2aWNlSUQnXSIpLT5jbGljaygpOwoKICAgICAgICAjIFNlbGVjdCAnUmVsZXZhbnQgdG8nIGxpbmsgdHlwZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUeXBlSWRlbnRpZmllcicpLnZhbCgnUmVsZXZhbnRUbzo6U291cmNlJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEBpZD0nQWRkTGlua3MnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgU2VsZWN0IHRvIGxpbmsgd2l0aCB0ZXN0IFRpY2tldC4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUYXJnZXRJZGVudGlmaWVyJykudmFsKCdUaWNrZXQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwoKICAgICAgICBzbGVlcCAyOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjU0VBUkNIXFxcXDpcXFxcOlRpY2tldE51bWJlciIpLmxlbmd0aDsnCiAgICAgICAgKTsKCiAgICAgICAgIyBTZWFyY2ggVGlja2V0IGJ5IG51bWJlciBhbmQgc2VsZWN0IHJlc3VsdC4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQGlkPSdTRUFSQ0g6OlRpY2tldE51bWJlciddIiktPnNlbmRfa2V5cygkVGlja2V0TnVtYmVyKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNTdWJtaXRTZWFyY2giLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAaWQ9J0xpbmtUYXJnZXRLZXlzJ11bXEB2YWx1ZT0nJFRpY2tldElEJ10iKS0+Y2xpY2soKTsKCiAgICAgICAgIyBTZWxlY3QgJ0RlcGVuZHMgdG8nIGxpbmsgdHlwZS4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNUeXBlSWRlbnRpZmllcicpLnZhbCgnRGVwZW5kc09uOjpTb3VyY2UnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpOyIKICAgICAgICApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQGlkPSdBZGRMaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDbG9zZSBsaW5rIHdpbmRvdywgcmV0dXJuIHRvIFpvb20gdmlldyBhbmQgcmVmcmVzaCBwYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0xpbmtBZGRDbG9zZUxpbmsiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwoKICAgICAgICAjIENoZWNrIGZvciBsaW5rZWQgdmFsdWVzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIHNjcmVlbi4KICAgICAgICBmb3IgbXkgJENoZWNrVmFsdWVzICggJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLCAkU2VydmljZU5hbWUsICRUaWNrZXROdW1iZXIgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDaGVja1ZhbHVlcyApID4gLTEsCiAgICAgICAgICAgICAgICAiTGlua2VkIHZhbHVlICRDaGVja1ZhbHVlcyAtIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgQ2xpY2sgb24gJ0xpbmsnIG1lbnUgYW5kIHN3aXRjaCB3aW5kb3cuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICIvL2FbY29udGFpbnMoXEBocmVmLCBcJ0FjdGlvbj1BZ2VudExpbmtPYmplY3Q7U291cmNlT2JqZWN0PUlUU01Db25maWdJdGVtO1NvdXJjZUtleT0kQ29uZmlnSXRlbUlEc1swXVwnICldIgogICAgICAgICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZihDb3JlKSA9PSAib2JqZWN0IiAmJiB0eXBlb2YoQ29yZS5BcHApID09ICJvYmplY3QiICYmIENvcmUuQXBwLlBhZ2VMb2FkQ29tcGxldGUnCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayAnZ28gdG8gbWFuYWdlIGxpbmtzIHNjcmVlbicuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsIFwnI01hbmFnZUxpbmtzXCcgKV0iKS0+Y2xpY2soKTsKCiAgICAgICAgIyBXYWl0IGZvciB0aGUgbWFuYWdlIGxpbmtzIHRhYiB0byBzaG93IHVwLgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiZGl2W2RhdGEtaWQ9TWFuYWdlTGlua3NdOnZpc2libGUiKS5sZW5ndGggJiYgcGFyc2VJbnQoJCgiZGl2W2RhdGEtaWQ9TWFuYWdlTGlua3NdIikuY3NzKCJvcGFjaXR5IiksIDEwKSA9PSAxJwogICAgICAgICk7CgogICAgICAgICMgU2VsZWN0IGFsbCBsaW5rZWQgaXRlbXMgYW5kIGRlbGV0ZSBsaW5rcy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQHZhbHVlPSdJVFNNQ29uZmlnSXRlbTo6JENvbmZpZ0l0ZW1JRHNbMV06OkFsdGVybmF0aXZlVG8nXSIpLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHRpdGxlPSdEZWxldGUgbGlua3MnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAdmFsdWU9J1NlcnZpY2U6OiRTZXJ2aWNlSURcOjpSZWxldmFudFRvJ10iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB0aXRsZT0nRGVsZXRlIGxpbmtzJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQHZhbHVlPSdUaWNrZXQ6OiRUaWNrZXRJRFw6OkRlcGVuZHNPbiddIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdGl0bGU9J0RlbGV0ZSBsaW5rcyddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBDbG9zZSBsaW5rIHdpbmRvdywgcmV0dXJuIHRvIFpvb20gdmlldyBhbmQgcmVmcmVzaCBwYWdlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0xpbmtBZGRDbG9zZUxpbmsiLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwoKICAgICAgICAjIENoZWNrIGZvciBubyBsaW5rZWQgdmFsdWVzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIHNjcmVlbi4KICAgICAgICBmb3IgbXkgJENoZWNrVmFsdWVzICggJENvbmZpZ0l0ZW1OdW1iZXJzWzFdLCAkU2VydmljZU5hbWUsICRUaWNrZXROdW1iZXIgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDaGVja1ZhbHVlcyApID09IC0xLAogICAgICAgICAgICAgICAgIkxpbmtlZCB2YWx1ZSAkQ2hlY2tWYWx1ZXMgLSBub3QgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBEZWxldGUgdGVzdCBUaWNrZXQuCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlRpY2tldCBpcyBkZWxldGVkIC0gSUQgJFRpY2tldElEICIKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSB0ZXN0IENvbmZpZ0l0ZW0uCiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtRGVsZXRlIChAQ29uZmlnSXRlbUlEcykgewogICAgICAgICAgICAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtRGVsZXRlKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtRGVsZXRlLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbSBpcyBkZWxldGVkIC0gSUQgJENvbmZpZ0l0ZW1EZWxldGUiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgRGVsZXRlIHRlc3Qgc2VydmljZSBhbmQgaXRzIHByZWZlcmVuY2VzLgogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBzZXJ2aWNlX3ByZWZlcmVuY2VzIFdIRVJFIHNlcnZpY2VfaWQgPSAkU2VydmljZUlEIiwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlNlcnZpY2UgcHJlZmVyZW5jZXMgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAiREVMRVRFIEZST00gc2VydmljZSBXSEVSRSBpZCA9ICRTZXJ2aWNlSUQiLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU2VydmljZSBpcyBkZWxldGVkIC0gSUQgJFNlcnZpY2VJRCIsCiAgICAgICAgKTsKICAgIH0KKTsKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/Selenium/Agent/ITSMConfigurationManagement/DashboardITSMConfigItemGeneric.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgJFNlbGVuaXVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpTZWxlbml1bScpOwoKJFNlbGVuaXVtLT5SdW5UZXN0KAogICAgc3ViIHsKCiAgICAgICAgbXkgJEhlbHBlciAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBjdXN0b21lciB1c2VyIGxvZ2luLgogICAgICAgIG15ICRUZXN0Q3VzdG9tZXJVc2VyID0gJEhlbHBlci0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCBjdXN0b21lciB1c2VyIjsKCiAgICAgICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKICAgICAgICBteSAkQ3VzdG9tZXJDb21wYW55T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyQ29tcGFueScpOwoKICAgICAgICAjIEdldCBjdXN0b21lciB1c2VyIGRhdGEuCiAgICAgICAgbXkgJUN1c3RvbWVyVXNlciA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgIFVzZXIgPT4gJFRlc3RDdXN0b21lclVzZXIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgcmFuZG9tIGlkLgogICAgICAgIG15ICRSYW5kb21JRCA9ICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CgogICAgICAgIG15ICRDdXN0b21lckNvbXBhbnlJRCA9ICRDdXN0b21lckNvbXBhbnlPYmplY3QtPkN1c3RvbWVyQ29tcGFueUFkZCgKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgICAgICA9PiAiJFRlc3RDdXN0b21lclVzZXItJFJhbmRvbUlEIiwKICAgICAgICAgICAgQ3VzdG9tZXJDb21wYW55TmFtZSA9PiAiJFRlc3RDdXN0b21lclVzZXItJFJhbmRvbUlEIiwKICAgICAgICAgICAgVmFsaWRJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJEN1c3RvbWVyQ29tcGFueUlELAogICAgICAgICAgICAiQ3JlYXRlZCB0ZXN0IGN1c3RvbWVyIGNvbXBhbnkgJEN1c3RvbWVyQ29tcGFueUlEIiwKICAgICAgICApOwoKICAgICAgICAjIERlZmluZSB0ZXN0IGFycmF5LgogICAgICAgIG15IEBUZXN0ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDbGFzc05hbWUgID0+ICdDdXN0b21lcicgLiAkUmFuZG9tSUQsCiAgICAgICAgICAgICAgICBLZXkgICAgICAgID0+ICdDdXN0b21lcicsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8IkVPRiIsCi0tLQotIEtleTogQ3VzdG9tZXIKICBOYW1lOiBDdXN0b21lcgogIFNlYXJjaGFibGU6IDEsCiAgSW5wdXQ6CiAgICBUeXBlOiBDdXN0b21lcgpFT0YKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ2xhc3NOYW1lICA9PiAnQ3VzdG9tZXJDb21wYW55JyAuICRSYW5kb21JRCwKICAgICAgICAgICAgICAgIEtleSAgICAgICAgPT4gJ0N1c3RvbWVyQ29tcGFueScsCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+IDw8IkVPRiIsCi0tLQotIEtleTogQ3VzdG9tZXJDb21wYW55CiAgTmFtZTogQ3VzdG9tZXJDb21wYW55CiAgU2VhcmNoYWJsZTogMSwKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyQ29tcGFueQpFT0YKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIENoYW5nZSBjb25maWcgc2V0dGluZ3MuCiAgICAgICAgbXkgJUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyU3lzQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpLT5TZXR0aW5nR2V0KAogICAgICAgICAgICBOYW1lID0+ICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyJywKICAgICAgICApOwoKICAgICAgICBkZWxldGUgJElUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfS0+e0NvbmZpZ0l0ZW1LZXl9OwogICAgICAgICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyVXNlclN5c0NvbmZpZ3tFZmZlY3RpdmVWYWx1ZX0tPntDb25maWdJdGVtS2V5fSA9IHsKICAgICAgICAgICAgJ0N1c3RvbWVyJyAuICRSYW5kb21JRCA9PiAnQ3VzdG9tZXInLAogICAgICAgIH07CgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyJywKICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgJXsgJElUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyU3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfSB9LAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICVJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueVN5c0NvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKS0+U2V0dGluZ0dldCgKICAgICAgICAgICAgTmFtZSA9PiAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnknLAogICAgICAgICk7CgogICAgICAgIGRlbGV0ZSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnlTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9LT57Q29uZmlnSXRlbUtleX07CiAgICAgICAgJElUU01Db25maWdJdGVtQ3VzdG9tZXJDb21wYW55U3lzQ29uZmlne0VmZmVjdGl2ZVZhbHVlfS0+e0NvbmZpZ0l0ZW1LZXl9ID0gewogICAgICAgICAgICAnQ3VzdG9tZXJDb21wYW55JyAuICRSYW5kb21JRCA9PiAnQ3VzdG9tZXJDb21wYW55JywKICAgICAgICB9OwoKICAgICAgICAjIENoYW5nZSBjb25maWcgc2V0dGluZy4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnknLAogICAgICAgICAgICBWYWx1ZSA9PiB7CiAgICAgICAgICAgICAgICAleyAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnlTeXNDb25maWd7RWZmZWN0aXZlVmFsdWV9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAgICAgIyBBZGQgdGhlIHRlc3QgY2xhc3Nlcy4KICAgICAgICBteSBAQ29uZmlnSXRlbUNsYXNzSURzOwogICAgICAgIG15IEBDb25maWdJdGVtQ2xhc3NlczsKICAgICAgICBteSBAQ29uZmlnSXRlbURlZmluaXRpb25JRHM7CgogICAgICAgIGZvciBteSAkRGVmaW5pdGlvbiAoQFRlc3QpIHsKCiAgICAgICAgICAgICMgQWRkIGFuIHVuaXR0ZXN0IGNvbmZpZyBpdGVtIGNsYXNzLgogICAgICAgICAgICBteSAkQ2xhc3NJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUFkZCgKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJERlZmluaXRpb24tPntDbGFzc05hbWV9LAogICAgICAgICAgICAgICAgVmFsaWRJRCA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBDaGVjayBjbGFzcyBpZC4KICAgICAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAiQ2FuJ3QgYWRkIG5ldyBjb25maWcgaXRlbSBjbGFzcy4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzSURzLCAkQ2xhc3NJRDsKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUNsYXNzZXMsICAkRGVmaW5pdGlvbi0+e0NsYXNzTmFtZX07CgogICAgICAgICAgICAjIENoZWNrIGlmIGdyb3VwIGFscmVhZHkgZXhpc3RzLgogICAgICAgICAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICAgICAgICAgIEdyb3VwICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBTZXQgcGVybWlzc2lvbi4KICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ1Blcm1pc3Npb24nLAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRHcm91cElELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBBZGQgYSBkZWZpbml0aW9uIHRvIHRoZSBjbGFzcy4KICAgICAgICAgICAgbXkgJERlZmluaXRpb25JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uQWRkKAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9ufSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2hlY2sgZGVmaW5pdGlvbiBpZC4KICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb25JRCApIHsKCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICJDYW4ndCBhZGQgbmV3IGNvbmZpZyBpdGVtIGRlZmluaXRpb24uIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1EZWZpbml0aW9uSURzLCAkRGVmaW5pdGlvbklEOwoKICAgICAgICAgICAgIyBBZGQgZGF0YSB0byB0ZXN0IGFycmF5LgogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0NsYXNzSUR9ID0gJENsYXNzSUQ7CiAgICAgICAgfQoKICAgICAgICAjIEdldCAnUHJvZHVjdGlvbicgZGVwbG95bWVudCBzdGF0ZSBJRC4KICAgICAgICBteSAkRGVwbFN0YXRlRGF0YVJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKICAgICAgICApOwogICAgICAgIG15ICREZXBsU3RhdGVJRCA9ICREZXBsU3RhdGVEYXRhUmVmLT57SXRlbUlEfTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAnaXRzbS1jb25maWdpdGVtJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgc2NyaXB0IGFsaWFzLgogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgZm9yIG15ICRUZXN0IChAVGVzdCkgewoKICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudElUU01Db25maWdJdGVtQWRkLgogICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQWRkIik7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdhW2hyZWYqPVwiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0NsYXNzSUQ9JFRlc3QtPntDbGFzc0lEfVwiXScpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ2xpY2sgb24gQ29uZmlnSXRlbSBjbGFzcy4KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoCiAgICAgICAgICAgICAgICAiLy9hW2NvbnRhaW5zKFxAaHJlZiwgXCdBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQ7Q2xhc3NJRD0kVGVzdC0+e0NsYXNzSUR9XCcgKV0iCiAgICAgICAgICAgICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjTmFtZScpLmxlbmd0aCAmJiBcJCgnI1N1Ym1pdEJ1dHRvbicpLmxlbmd0aCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgQ3JlYXRlIHRlc3QgQ29uZmlnSXRlbS4KICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OYW1lID0gJ1NlbGVuaXVtVGVzdC0nIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTmFtZSIsICdjc3MnICktPnNlbmRfa2V5cygkQ29uZmlnSXRlbU5hbWUpOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCckRGVwbFN0YXRlSUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0RlcGxTdGF0ZUlEJykudmFsKCkgPT09ICckRGVwbFN0YXRlSUQnIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNJbmNpU3RhdGVJRCcpLnZhbCgnMScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJykiKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0luY2lTdGF0ZUlEJykudmFsKCkgPT09ICcxJyIgKTsKCiAgICAgICAgICAgIGlmICggJFRlc3QtPntLZXl9IGVxICdDdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNJdGVtMTAiLCAnY3NzJyApLT5jbGVhcigpOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSXRlbTEwIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkQ3VzdG9tZXJVc2Vye1VzZXJJRH0gKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoImxpLnVpLW1lbnUtaXRlbTp2aXNpYmxlIikubGVuZ3RoJwogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCdsaS51aS1tZW51LWl0ZW06Y29udGFpbnMoJEN1c3RvbWVyVXNlcntVc2VySUR9KScpLmNsaWNrKCkiKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAgICAgIlwkKCcjSXRlbTEwJykudmFsKCckQ3VzdG9tZXJDb21wYW55SUQnKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpLnRyaWdnZXIoJ2NoYW5nZScpIgogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gdHlwZW9mKFwkKSA9PT0gJ2Z1bmN0aW9uJyAmJiBcJCgnI0l0ZW0xMCcpLnZhbCgpID09PSAnJEN1c3RvbWVyQ29tcGFueUlEJyIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdTdWJtaXQnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCdoMTpjb250YWlucygkQ29uZmlnSXRlbU5hbWUpJykubGVuZ3RoIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyJyApIHsKCiAgICAgICAgICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyO0N1c3RvbWVyVXNlcklEPSRDdXN0b21lclVzZXJ7VXNlcklEfSIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb25maWdJdGVtTmFtZSApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRDb25maWdJdGVtTmFtZSBmb3VuZCBvbiBwYWdlIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkVGVzdC0+e0tleX0gZXEgJ0N1c3RvbWVyQ29tcGFueScgKSB7CgogICAgICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KAogICAgICAgICAgICAgICAgICAgICIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI7Q3VzdG9tZXJJRD0kQ3VzdG9tZXJDb21wYW55SUQiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkQ29uZmlnSXRlbU5hbWUgKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkQ29uZmlnSXRlbU5hbWUgZm91bmQgb24gcGFnZSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENsZWFudXAuCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gY3VzdG9tZXJfY29tcGFueSBXSEVSRSBjdXN0b21lcl9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDdXN0b21lckNvbXBhbnlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiRGVsZXRlZCBDdXN0b21lckNvbXBhbnkiLAogICAgICAgICk7CgogICAgICAgIG15ICRDb25maWdJdGVtSURzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goIENsYXNzSURzID0+IFxAQ29uZmlnSXRlbUNsYXNzSURzICk7CgogICAgICAgICMgRGVsZXRlIGNyZWF0ZWQgdGVzdCBDb25maWdJdGVtLgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggQHskQ29uZmlnSXRlbUlEc30gKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gaXMgZGVsZXRlZCAtIElEICRDb25maWdJdGVtSUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uSUQgKEBDb25maWdJdGVtRGVmaW5pdGlvbklEcykgewogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fZGVmaW5pdGlvbiBXSEVSRSBpZCA9ICREZWZpbml0aW9uSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIkNvbmZpZyBpdGVtIGRlZmluaXRpb24gaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKEBDb25maWdJdGVtQ2xhc3NJRHMpIHsKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2dfcHJlZmVyZW5jZXMgV0hFUkUgZ2VuZXJhbF9jYXRhbG9nX2lkID0gJENsYXNzSUQiLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIlByZWZlcmVuY2VzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSBnZW5lcmFsX2NhdGFsb2cgV0hFUkUgaWQgPSAkQ2xhc3NJRCIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiQ2xhc3MgaXRlbSBpcyBkZWxldGVkIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgTWFrZSBzdXJlIHRoZSBjYWNoZSBpcyBjb3JyZWN0LgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpLT5DbGVhblVwKCk7CiAgICB9Cik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/System/ITSMConfigItemCustomerCIs.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRDb25maWdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJEhlbHBlck9iamVjdCAgICAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkTGlua09iamVjdCAgICAgICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7Cm15ICRVbml0VGVzdElUU01Db25maWdJdGVtT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbScpOwpteSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzJyk7CgpteSAlQ29uZmlnSXRlbUtleSA9ICV7CiAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQnKS0+eycwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInfQogICAgICAgIC0+e0NvbmZpZ0l0ZW1LZXl9IHx8IHt9Cn07CgpteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCm15IEBFeHBlY3RlZENvbmZpZ0l0ZW1JRHM7Cm15ICRWZXJzaW9uUmVmOwpteSAkUmFuZG9tSUQ7Cm15ICRDb25maWdJdGVtTmFtZTsKCmZvciBteSAkSW5kZXggKCAwIC4uIDMgKSB7CiAgICAkUmFuZG9tSUQgICAgICAgPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwogICAgJENvbmZpZ0l0ZW1OYW1lID0gIlVuaXRUZXN0UEMgJFJhbmRvbUlEIjsKICAgICRWZXJzaW9uUmVmICAgICA9ICRVbml0VGVzdElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQ3JlYXRlKAogICAgICAgIE5hbWUgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgIENsYXNzTmFtZSAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICBEZXBsU3RhdGVOYW1lID0+ICdQcm9kdWN0aW9uJywKICAgICAgICBJbmNpU3RhdGVOYW1lID0+ICdPcGVyYXRpb25hbCcsCiAgICAgICAgWE1MRGF0YSAgICAgICA9PiB7CiAgICAgICAgICAgIE90aGVyRXF1aXBtZW50ICAgICAgICAgICA9PiAnLi4uJywKICAgICAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICAgID0+ICcuLi4nLAogICAgICAgICAgICBTZXJpYWxOdW1iZXIgICAgICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgICA9PiAnMjAxNi0wMS0wMScsCiAgICAgICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgICA9PiAnMjAxNi0wMS0wMScsCiAgICAgICAgICAgICRDb25maWdJdGVtS2V5e0NvbXB1dGVyfSA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICB9LAogICAgKTsKCiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVmVyc2lvblJlZi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgIkNvbmZpZ0l0ZW1DcmVhdGUgd2FzIHN1Y2Nlc3NmdWxsIC0gJFZlcnNpb25SZWYtPntDb25maWdJdGVtSUR9IiwKICAgICk7CgogICAgcHVzaCBARXhwZWN0ZWRDb25maWdJdGVtSURzLCAkVmVyc2lvblJlZi0+e0NvbmZpZ0l0ZW1JRH07Cgp9CgpteSBAQ3VzdG9tZXJVc2VyQ0lzID0gJElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNPYmplY3QtPkdldEN1c3RvbWVyVXNlckNJcygKICAgIEN1c3RvbWVyVXNlcklEID0+ICRUZXN0VXNlckxvZ2luLAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgXEBDdXN0b21lclVzZXJDSXMsCiAgICBcQEV4cGVjdGVkQ29uZmlnSXRlbUlEcywKICAgICJHZXRDdXN0b21lckNJcyB3YXMgc3VjY2Vzc2Z1bGwgZm9yIEN1c3RvbWVyVXNlciAtICRUZXN0VXNlckxvZ2luIiwKKTsKCiMgd2l0aCBvdGhlciB1c2VyCm15IEBFeHBlY3RlZENvbmZpZ0l0ZW1JRHMyOwoKJFJhbmRvbUlEID0gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCm15ICRUZXN0VXNlckxvZ2luMiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiRWZXJzaW9uUmVmID0gJFVuaXRUZXN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1DcmVhdGUoCiAgICBOYW1lICAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzTmFtZSAgICAgPT4gJ0NvbXB1dGVyJywKICAgIERlcGxTdGF0ZU5hbWUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgSW5jaVN0YXRlTmFtZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgWE1MRGF0YSAgICAgICA9PiB7CiAgICAgICAgT3RoZXJFcXVpcG1lbnQgICAgICAgICAgID0+ICcuLi4nLAogICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgICA9PiAnLi4uJywKICAgICAgICBTZXJpYWxOdW1iZXIgICAgICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSAgID0+ICcyMDE2LTAxLTAxJywKICAgICAgICBJbnN0YWxsRGF0ZSAgICAgICAgICAgICAgPT4gJzIwMTYtMDEtMDEnLAogICAgICAgICRDb25maWdJdGVtS2V5e0NvbXB1dGVyfSA9PiAkVGVzdFVzZXJMb2dpbjIsCiAgICB9LAopOwoKJFNlbGYtPlRydWUoCiAgICAkVmVyc2lvblJlZi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAiQ29uZmlnSXRlbUNyZWF0ZSB3YXMgc3VjY2Vzc2Z1bGwgLSAkVmVyc2lvblJlZi0+e0NvbmZpZ0l0ZW1JRH0iLAopOwoKcHVzaCBARXhwZWN0ZWRDb25maWdJdGVtSURzMiwgJFZlcnNpb25SZWYtPntDb25maWdJdGVtSUR9OwoKJFJhbmRvbUlEID0gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKCiRWZXJzaW9uUmVmID0gJFVuaXRUZXN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1DcmVhdGUoCiAgICBOYW1lICAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgIENsYXNzTmFtZSAgICAgPT4gJ0NvbXB1dGVyJywKICAgIERlcGxTdGF0ZU5hbWUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgSW5jaVN0YXRlTmFtZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgWE1MRGF0YSAgICAgICA9PiB7CiAgICAgICAgT3RoZXJFcXVpcG1lbnQgICAgICAgICAgID0+ICcuLi4nLAogICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgICA9PiAnLi4uJywKICAgICAgICBTZXJpYWxOdW1iZXIgICAgICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSAgID0+ICcyMDE2LTAxLTAxJywKICAgICAgICBJbnN0YWxsRGF0ZSAgICAgICAgICAgICAgPT4gJzIwMTYtMDEtMDEnLAogICAgICAgICRDb25maWdJdGVtS2V5e0NvbXB1dGVyfSA9PiAiRHVtbXlVc2VyIiwKICAgIH0sCik7CgpAQ3VzdG9tZXJVc2VyQ0lzID0gJElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNPYmplY3QtPkdldEN1c3RvbWVyVXNlckNJcygKICAgIEN1c3RvbWVyVXNlcklEID0+ICRUZXN0VXNlckxvZ2luMiwKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgIFxAQ3VzdG9tZXJVc2VyQ0lzLAogICAgXEBFeHBlY3RlZENvbmZpZ0l0ZW1JRHMyLAogICAgIkdldEN1c3RvbWVyQ0lzIHdhcyBzdWNjZXNzZnVsbCBmb3IgQ3VzdG9tZXJVc2VyIC0gJFRlc3RVc2VyTG9naW4yIiwKKTsKCiMgR2V0UG9zc2libGVDdXN0b21lckNJcwoKJFJhbmRvbUlEICAgICAgID0gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKJENvbmZpZ0l0ZW1OYW1lID0gIlVuaXRUZXN0UEMgJFJhbmRvbUlEIjsKCm15ICRUZXN0VXNlckxvZ2luMyA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKJFZlcnNpb25SZWYgPSAkVW5pdFRlc3RJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUNyZWF0ZSgKICAgIE5hbWUgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgQ2xhc3NOYW1lICAgICA9PiAnQ29tcHV0ZXInLAogICAgRGVwbFN0YXRlTmFtZSA9PiAnUHJvZHVjdGlvbicsCiAgICBJbmNpU3RhdGVOYW1lID0+ICdPcGVyYXRpb25hbCcsCiAgICBYTUxEYXRhICAgICAgID0+IHsKICAgICAgICBPdGhlckVxdWlwbWVudCAgICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICAgID0+ICcuLi4nLAogICAgICAgIFNlcmlhbE51bWJlciAgICAgICAgICAgICA9PiAnLi4uJywKICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlICAgPT4gJzIwMTYtMDEtMDEnLAogICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgICA9PiAnMjAxNi0wMS0wMScsCiAgICAgICAgJENvbmZpZ0l0ZW1LZXl7Q29tcHV0ZXJ9ID0+ICRUZXN0VXNlckxvZ2luMywKICAgIH0sCik7CgpteSBAQ29uZmlnSXRlbXMgPSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc09iamVjdC0+R2V0UG9zc2libGVDdXN0b21lckNJcygKICAgIEN1c3RvbWVyVXNlcklEID0+ICRUZXN0VXNlckxvZ2luMywKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgIFxAQ29uZmlnSXRlbXMsCiAgICBbCiAgICAgICAgewogICAgICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAnSWNvbicgICAgICAgICA9PiAnJywKICAgICAgICAgICAgJ0xpbmtlZCcgICAgICAgPT4gJzAnLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEJyA9PiAkVmVyc2lvblJlZi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICdOdW1iZXInICAgICAgID0+ICRWZXJzaW9uUmVmLT57TnVtYmVyfSwKICAgICAgICAgICAgJ05hbWUnICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgIH0KICAgIF0sCiAgICAiR2V0UG9zc2libGVDdXN0b21lckNJcyIsCik7CgpteSAkVGlja2V0SUQgPSAkSGVscGVyT2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBDdXN0b21lclVzZXIgPT4gJFRlc3RVc2VyTG9naW4zLAopOwoKJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICBTb3VyY2VPYmplY3QgPT4gJ1RpY2tldCcsCiAgICBTb3VyY2VLZXkgICAgPT4gJFRpY2tldElELAogICAgVGFyZ2V0T2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICBUYXJnZXRLZXkgICAgPT4gJFZlcnNpb25SZWYtPntDb25maWdJdGVtSUR9LAogICAgVHlwZSAgICAgICAgID0+ICdSZWxldmFudFRvJywKICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgVXNlcklEICAgICAgID0+IDEsCik7CgpAQ29uZmlnSXRlbXMgPSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc09iamVjdC0+R2V0UG9zc2libGVDdXN0b21lckNJcygKICAgIEN1c3RvbWVyVXNlcklEID0+ICRUZXN0VXNlckxvZ2luMywKICAgIFRpY2tldElEICAgICAgID0+ICRUaWNrZXRJRCwKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgIFxAQ29uZmlnSXRlbXMsCiAgICBbCiAgICAgICAgewogICAgICAgICAgICAnQ2xhc3MnICAgICAgICA9PiAnQ29tcHV0ZXInLAogICAgICAgICAgICAnSWNvbicgICAgICAgICA9PiAnJywKICAgICAgICAgICAgJ0xpbmtlZCcgICAgICAgPT4gJzEnLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEJyA9PiAkVmVyc2lvblJlZi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICdOdW1iZXInICAgICAgID0+ICRWZXJzaW9uUmVmLT57TnVtYmVyfSwKICAgICAgICAgICAgJ05hbWUnICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgICAgIH0KICAgIF0sCiAgICAiR2V0UG9zc2libGVDdXN0b21lckNJcyB3aXRoIFRpY2tldCBsaW5rIiwKKTsKCjE7Cg==</File>
        <File Permission="660" Location="scripts/test/System/ITSMConfigItemInvoker.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXJPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJFZhbGlkT2JqZWN0ICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwpteSAkSVRTTUNvbmZpZ0l0ZW1JbnZva2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtSW52b2tlcicpOwpteSAkWm51bnlIZWxwZXJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7CgpteSAkVXNlcklEID0gMTsKCiMKIyBQcmVwYXJlIGEgY29uZmlnIGl0ZW0KIwpteSAkVmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICBWYWxpZCA9PiAndmFsaWQnLAopOwoKbXkgJENsYXNzZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIFZhbGlkID0+ICRWYWxpZElELAopOwpteSAlQ2xhc3NlcyA9IHJldmVyc2UgJXsgJENsYXNzZXMgLy8ge30gfTsKCiRTZWxmLT5UcnVlKAogICAgc2NhbGFyICRDbGFzc2Vze0NvbXB1dGVyfSwKICAgICdDbGFzcyAiQ29tcHV0ZXIiIG11c3QgYmUgcHJlc2VudC4nLAopOwoKbXkgJFllc05vID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpZZXNObycsCiAgICBWYWxpZCA9PiAkVmFsaWRJRCwKKTsKbXkgJVllc05vID0gcmV2ZXJzZSAleyAkWWVzTm8gLy8ge30gfTsKCm15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgIENsYXNzSUQgPT4gJENsYXNzZXN7Q29tcHV0ZXJ9LAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgJENvbmZpZ0l0ZW1JRCwKICAgICdDb25maWcgaXRlbSBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4nLAopIHx8IHJldHVybjsKCm15ICRDb21wdXRlck5hbWVGaXJzdFZlcnNpb24gID0gJ1VuaXRUZXN0Q29tcHV0ZXInIC4gJEhlbHBlck9iamVjdC0+R2V0UmFuZG9tSUQoKTsKbXkgJENvbXB1dGVyTmFtZVNlY29uZFZlcnNpb24gPSAnVW5pdFRlc3RDb21wdXRlcicgLiAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwpteSAkQ2xhc3MgICAgICAgICAgICAgICAgICAgICA9ICdDb21wdXRlcic7Cm15ICRDbGFzc0lEICAgICAgICAgICAgICAgICAgID0gJENsYXNzZXN7Q29tcHV0ZXJ9OwoKbXkgJERlcGxTdGF0ZVByb2R1Y3Rpb24gPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdQcm9kdWN0aW9uJywKKTsKCm15ICREZXBsU3RhdGVSZXBhaXIgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgIE5hbWUgID0+ICdSZXBhaXInLAopOwoKbXkgJEluY2lTdGF0ZU9wZXJhdGlvbmFsID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgTmFtZSAgPT4gJ09wZXJhdGlvbmFsJywKKTsKCm15ICRJbmNpU3RhdGVJbmNpZGVudCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgIE5hbWUgID0+ICdJbmNpZGVudCcsCik7CgpteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKKTsKCm15ICRGaXJzdFZlcnNpb25JRCA9ICRabnVueUhlbHBlck9iamVjdC0+X0lUU01Db25maWdJdGVtVmVyc2lvbkFkZCgKICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgIE5hbWUgICAgICAgICAgPT4gJENvbXB1dGVyTmFtZUZpcnN0VmVyc2lvbiwKICAgIENsYXNzTmFtZSAgICAgPT4gJENsYXNzLAogICAgRGVwbFN0YXRlTmFtZSA9PiAnUHJvZHVjdGlvbicsCiAgICBJbmNpU3RhdGVOYW1lID0+ICdPcGVyYXRpb25hbCcsCiAgICBYTUxEYXRhICAgICAgID0+IHsKICAgICAgICBDUFUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdBTUQgUnl6ZW4nLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMjAyMS0wNy0xNicsCiAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMjAyMS0wNy0xNicsCiAgICAgICAgTklDICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgPT4gJ05JQycsCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFllc05ve1llc30sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBJUEFkZHJlc3MgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMTI3LjAuMC4xJwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAopOwoKIwojIEludmFsaWQgY29uZmlnIGl0ZW0gSUQKIwpteSAkQ29uZmlnSXRlbURhdGEgPSAkSVRTTUNvbmZpZ0l0ZW1JbnZva2VyT2JqZWN0LT5HZXRDb25maWdJdGVtRGF0YSgKICAgIENvbmZpZ0l0ZW1JRCA9PiA5OTk5OTk5OTk5OTksCiAgICBFdmVudCAgICAgICAgPT4gdW5kZWYsCik7CgokU2VsZi0+RmFsc2UoCiAgICBzY2FsYXIgJENvbmZpZ0l0ZW1EYXRhLAogICAgJ0dldENvbmZpZ0l0ZW1EYXRhKCk6IENvbmZpZyBpdGVtIGRhdGEgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmUgZm9yIGludmFsaWQgY29uZmlnIGl0ZW0gSUQuJywKKTsKCiMKIyBWYWxpZCBjb25maWcgaXRlbSBJRCB3aXRob3V0IGV2ZW50CiMKJENvbmZpZ0l0ZW1EYXRhID0gJElUU01Db25maWdJdGVtSW52b2tlck9iamVjdC0+R2V0Q29uZmlnSXRlbURhdGEoCiAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgIEV2ZW50ICAgICAgICA9PiB1bmRlZiwKKTsKCm15ICVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhRmlyc3RWZXJzaW9uID0gKAogICAgWE1MRGF0YSA9PiB7CiAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSVBBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyNy4wLjAuMScsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUmVhZGFibGVWYWx1ZSA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkWWVzTm97WWVzfSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTklDJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDIxLTA3LTE2JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIENQVSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0FNRCBSeXplbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICAgICBJbnN0YWxsRGF0ZSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMjEtMDctMTYnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAogICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICBEZWZpbml0aW9uSUQgPT4gJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9LAogICAgSW5jaVN0YXRlSUQgID0+ICRJbmNpU3RhdGVPcGVyYXRpb25hbC0+e0l0ZW1JRH0sCiAgICBOYW1lICAgICAgICAgPT4gJENvbXB1dGVyTmFtZUZpcnN0VmVyc2lvbiwKICAgIERlcGxTdGF0ZUlEICA9PiAkRGVwbFN0YXRlUHJvZHVjdGlvbi0+e0l0ZW1JRH0sCiAgICBEZXBsU3RhdGUgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgQ2xhc3NJRCAgICAgID0+ICRDbGFzc0lELAogICAgSW5jaVN0YXRlICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJENvbmZpZ0l0ZW1EYXRhLAogICAgXCVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhRmlyc3RWZXJzaW9uLAogICAgJ0dldENvbmZpZ0l0ZW1EYXRhKCk6IENvbmZpZyBpdGVtIGRhdGEgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmUgZm9yIHZhbGlkIGNvbmZpZyBpdGVtIElEIChmaXJzdCB2ZXJzaW9uKSB3aXRob3V0IGV2ZW50LicsCik7CgpteSAkU2Vjb25kVmVyc2lvbklEID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uQWRkKAogICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgTmFtZSAgICAgICAgICA9PiAkQ29tcHV0ZXJOYW1lU2Vjb25kVmVyc2lvbiwKICAgIENsYXNzTmFtZSAgICAgPT4gJENsYXNzLAogICAgRGVwbFN0YXRlTmFtZSA9PiAnUmVwYWlyJywKICAgIEluY2lTdGF0ZU5hbWUgPT4gJ0luY2lkZW50JywKICAgIFhNTERhdGEgICAgICAgPT4gewogICAgICAgIENQVSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0ludGVsIENvcmUnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMjAyMy0wNy0xNScsCiAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMjAyMS0wNy0xNicsCiAgICAgICAgTklDICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgPT4gJ05JQzEnLAogICAgICAgICAgICAgICAgSVBvdmVyREhDUCA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRZZXNOb3tZZXN9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgSVBBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyNy4wLjAuMScKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICA9PiAnTklDMicsCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFllc05ve05vfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIElQQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjcuMS4wLjEnCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgokQ29uZmlnSXRlbURhdGEgPSAkSVRTTUNvbmZpZ0l0ZW1JbnZva2VyT2JqZWN0LT5HZXRDb25maWdJdGVtRGF0YSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgRXZlbnQgICAgICAgID0+IHVuZGVmLAopOwoKbXkgJUV4cGVjdGVkQ29uZmlnSXRlbURhdGFTZWNvbmRWZXJzaW9uID0gKAogICAgWE1MRGF0YSA9PiB7CiAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSVBBZGRyZXNzID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyNy4wLjAuMScsCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgUmVhZGFibGVWYWx1ZSA9PiAnWWVzJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkWWVzTm97WWVzfSwKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnTklDMScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElQQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjcuMS4wLjEnLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBJUG92ZXJESENQID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgPT4gJ05vJywKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkWWVzTm97Tm99LAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOSUMyJywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDIzLTA3LTE1JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgICAgIENQVSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0ludGVsIENvcmUnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgSW5zdGFsbERhdGUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDIxLTA3LTE2JywKICAgICAgICAgICAgfSwKICAgICAgICBdLAogICAgfSwKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbklEfSwKICAgIEluY2lTdGF0ZUlEICA9PiAkSW5jaVN0YXRlSW5jaWRlbnQtPntJdGVtSUR9LAogICAgTmFtZSAgICAgICAgID0+ICRDb21wdXRlck5hbWVTZWNvbmRWZXJzaW9uLAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVSZXBhaXItPntJdGVtSUR9LAogICAgRGVwbFN0YXRlICAgID0+ICdSZXBhaXInLAogICAgQ2xhc3NJRCAgICAgID0+ICRDbGFzc0lELAogICAgSW5jaVN0YXRlICAgID0+ICdJbmNpZGVudCcsCiAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJENvbmZpZ0l0ZW1EYXRhLAogICAgXCVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhU2Vjb25kVmVyc2lvbiwKICAgICdHZXRDb25maWdJdGVtRGF0YSgpOiBDb25maWcgaXRlbSBkYXRhIG11c3QgbWF0Y2ggZXhwZWN0ZWQgb25lIGZvciB2YWxpZCBjb25maWcgaXRlbSBJRCAoc2Vjb25kIHZlcnNpb24pIHdpdGhvdXQgZXZlbnQuJywKKTsKCiMKIyBWYWxpZCBjb25maWcgaXRlbSBJRCB3aXRoIGV2ZW50IENvbmZpZ0l0ZW1DcmVhdGUKIyBUaGlzIHNob3VsZCBub3QgcmV0dXJuIHRoZSBkYXRhIG9mIHRoZSBwcmV2aW91cyBjb25maWcgaXRlbSB2ZXJzaW9uLgojCiRDb25maWdJdGVtRGF0YSA9ICRJVFNNQ29uZmlnSXRlbUludm9rZXJPYmplY3QtPkdldENvbmZpZ0l0ZW1EYXRhKAogICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICBFdmVudCAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1DcmVhdGUnLAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJENvbmZpZ0l0ZW1EYXRhLAogICAgXCVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhU2Vjb25kVmVyc2lvbiwKICAgICdHZXRDb25maWdJdGVtRGF0YSgpOiBDb25maWcgaXRlbSBkYXRhIG11c3QgbWF0Y2ggZXhwZWN0ZWQgb25lIGZvciB2YWxpZCBjb25maWcgaXRlbSBJRCAoc2Vjb25kIHZlcnNpb24pIHdpdGggZXZlbnQgQ29uZmlnSXRlbUNyZWF0ZS4nLAopOwoKIwojIFZhbGlkIGNvbmZpZyBpdGVtIElEIHdpdGggZXZlbnQgQ29uZmlnSXRlbURlbGV0ZQojIFRoaXMgc2hvdWxkIG5vdCByZXR1cm4gdGhlIGRhdGEgb2YgdGhlIHByZXZpb3VzIGNvbmZpZyBpdGVtIHZlcnNpb24uCiMKJENvbmZpZ0l0ZW1EYXRhID0gJElUU01Db25maWdJdGVtSW52b2tlck9iamVjdC0+R2V0Q29uZmlnSXRlbURhdGEoCiAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgIEV2ZW50ICAgICAgICA9PiAnQ29uZmlnSXRlbURlbGV0ZScsCik7CgokU2VsZi0+SXNEZWVwbHkoCiAgICAkQ29uZmlnSXRlbURhdGEsCiAgICBcJUV4cGVjdGVkQ29uZmlnSXRlbURhdGFTZWNvbmRWZXJzaW9uLAogICAgJ0dldENvbmZpZ0l0ZW1EYXRhKCk6IENvbmZpZyBpdGVtIGRhdGEgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmUgZm9yIHZhbGlkIGNvbmZpZyBpdGVtIElEIChzZWNvbmQgdmVyc2lvbikgd2l0aCBldmVudCBDb25maWdJdGVtRGVsZXRlLicsCik7CgojCiMgVmFsaWQgY29uZmlnIGl0ZW0gSUQgd2l0aCBldmVudCBEZXBsb3ltZW50U3RhdGVVcGRhdGUKIyBUaGlzIHNob3VsZCByZXR1cm4gdGhlIGRhdGEgb2YgdGhlIHByZXZpb3VzIGNvbmZpZyBpdGVtIHZlcnNpb24gYW5kIGFzIHNlcGFyYXRlIGluZm9ybWF0aW9uCiMgdGhlIGNoYW5nZWQgZGVwbG95bWVudCBzdGF0dXMuCiMKJENvbmZpZ0l0ZW1EYXRhID0gJElUU01Db25maWdJdGVtSW52b2tlck9iamVjdC0+R2V0Q29uZmlnSXRlbURhdGEoCiAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgIEV2ZW50ICAgICAgICA9PiAnRGVwbG95bWVudFN0YXRlVXBkYXRlJywKKTsKCm15ICVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhID0gKAogICAgJUV4cGVjdGVkQ29uZmlnSXRlbURhdGFTZWNvbmRWZXJzaW9uLAogICAgUHJldmlvdXNDb25maWdJdGVtVmVyc2lvbiA9PiB7CiAgICAgICAgJUV4cGVjdGVkQ29uZmlnSXRlbURhdGFGaXJzdFZlcnNpb24sCiAgICB9LAogICAgRGVwbG95bWVudFN0YXRlVXBkYXRlID0+IHsKICAgICAgICBPbGQgPT4gewogICAgICAgICAgICBJRCAgICAgID0+ICRFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhRmlyc3RWZXJzaW9ue0RlcGxTdGF0ZUlEfSwKICAgICAgICAgICAgQ29udGVudCA9PiAkRXhwZWN0ZWRDb25maWdJdGVtRGF0YUZpcnN0VmVyc2lvbntEZXBsU3RhdGV9LAogICAgICAgIH0sCiAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgSUQgICAgICA9PiAkRXhwZWN0ZWRDb25maWdJdGVtRGF0YVNlY29uZFZlcnNpb257RGVwbFN0YXRlSUR9LAogICAgICAgICAgICBDb250ZW50ID0+ICRFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhU2Vjb25kVmVyc2lvbntEZXBsU3RhdGV9LAogICAgICAgIH0sCiAgICB9LAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJENvbmZpZ0l0ZW1EYXRhLAogICAgXCVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhLAogICAgJ0dldENvbmZpZ0l0ZW1EYXRhKCk6IENvbmZpZyBpdGVtIGRhdGEgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmUgZm9yIHZhbGlkIGNvbmZpZyBpdGVtIElEIChzZWNvbmQgdmVyc2lvbikgd2l0aCBldmVudCBEZXBsb3ltZW50U3RhdGVVcGRhdGUuJywKKTsKCiMKIyBWYWxpZCBjb25maWcgaXRlbSBJRCB3aXRoIGV2ZW50IEluY2lkZW50U3RhdGVVcGRhdGUKIyBUaGlzIHNob3VsZCByZXR1cm4gdGhlIGRhdGEgb2YgdGhlIHByZXZpb3VzIGNvbmZpZyBpdGVtIHZlcnNpb24gYW5kIGFzIHNlcGFyYXRlIGluZm9ybWF0aW9uCiMgdGhlIGNoYW5nZWQgaW5jaWRlbnQgc3RhdHVzLgojCiRDb25maWdJdGVtRGF0YSA9ICRJVFNNQ29uZmlnSXRlbUludm9rZXJPYmplY3QtPkdldENvbmZpZ0l0ZW1EYXRhKAogICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICBFdmVudCAgICAgICAgPT4gJ0luY2lkZW50U3RhdGVVcGRhdGUnLAopOwoKJUV4cGVjdGVkQ29uZmlnSXRlbURhdGEgPSAoCiAgICAlRXhwZWN0ZWRDb25maWdJdGVtRGF0YVNlY29uZFZlcnNpb24sCiAgICBQcmV2aW91c0NvbmZpZ0l0ZW1WZXJzaW9uID0+IHsKICAgICAgICAlRXhwZWN0ZWRDb25maWdJdGVtRGF0YUZpcnN0VmVyc2lvbiwKICAgIH0sCiAgICBJbmNpZGVudFN0YXRlVXBkYXRlID0+IHsKICAgICAgICBPbGQgPT4gewogICAgICAgICAgICBJRCAgICAgID0+ICRFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhRmlyc3RWZXJzaW9ue0luY2lTdGF0ZUlEfSwKICAgICAgICAgICAgQ29udGVudCA9PiAkRXhwZWN0ZWRDb25maWdJdGVtRGF0YUZpcnN0VmVyc2lvbntJbmNpU3RhdGV9LAogICAgICAgIH0sCiAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgSUQgICAgICA9PiAkRXhwZWN0ZWRDb25maWdJdGVtRGF0YVNlY29uZFZlcnNpb257SW5jaVN0YXRlSUR9LAogICAgICAgICAgICBDb250ZW50ID0+ICRFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhU2Vjb25kVmVyc2lvbntJbmNpU3RhdGV9LAogICAgICAgIH0sCiAgICB9LAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJENvbmZpZ0l0ZW1EYXRhLAogICAgXCVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhLAogICAgJ0dldENvbmZpZ0l0ZW1EYXRhKCk6IENvbmZpZyBpdGVtIGRhdGEgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmUgZm9yIHZhbGlkIGNvbmZpZyBpdGVtIElEIChzZWNvbmQgdmVyc2lvbikgd2l0aCBldmVudCBJbmNpZGVudFN0YXRlVXBkYXRlLicsCik7CgojCiMgVmFsaWQgY29uZmlnIGl0ZW0gSUQgd2l0aCBldmVudCBOYW1lVXBkYXRlCiMgVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBkYXRhIG9mIHRoZSBwcmV2aW91cyBjb25maWcgaXRlbSB2ZXJzaW9uIGFuZCBhcyBzZXBhcmF0ZSBpbmZvcm1hdGlvbgojIHRoZSBjaGFuZ2VkIG5hbWUuCiMKJENvbmZpZ0l0ZW1EYXRhID0gJElUU01Db25maWdJdGVtSW52b2tlck9iamVjdC0+R2V0Q29uZmlnSXRlbURhdGEoCiAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgIEV2ZW50ICAgICAgICA9PiAnTmFtZVVwZGF0ZScsCik7CgolRXhwZWN0ZWRDb25maWdJdGVtRGF0YSA9ICgKICAgICVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhU2Vjb25kVmVyc2lvbiwKICAgIFByZXZpb3VzQ29uZmlnSXRlbVZlcnNpb24gPT4gewogICAgICAgICVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhRmlyc3RWZXJzaW9uLAogICAgfSwKICAgIE5hbWVVcGRhdGUgPT4gewogICAgICAgIE9sZCA9PiB7CiAgICAgICAgICAgIENvbnRlbnQgPT4gJEV4cGVjdGVkQ29uZmlnSXRlbURhdGFGaXJzdFZlcnNpb257TmFtZX0sCiAgICAgICAgfSwKICAgICAgICBOZXcgPT4gewogICAgICAgICAgICBDb250ZW50ID0+ICRFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhU2Vjb25kVmVyc2lvbntOYW1lfSwKICAgICAgICB9LAogICAgfSwKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICRDb25maWdJdGVtRGF0YSwKICAgIFwlRXhwZWN0ZWRDb25maWdJdGVtRGF0YSwKICAgICdHZXRDb25maWdJdGVtRGF0YSgpOiBDb25maWcgaXRlbSBkYXRhIG11c3QgbWF0Y2ggZXhwZWN0ZWQgb25lIGZvciB2YWxpZCBjb25maWcgaXRlbSBJRCAoc2Vjb25kIHZlcnNpb24pIHdpdGggZXZlbnQgTmFtZVVwZGF0ZS4nLAopOwoKIwojIFZhbGlkIGNvbmZpZyBpdGVtIElEIHdpdGggZXZlbnQgVmFsdWVVcGRhdGUKIyBUaGlzIHNob3VsZCByZXR1cm4gdGhlIGRhdGEgb2YgdGhlIHByZXZpb3VzIGNvbmZpZyBpdGVtIHZlcnNpb24gYW5kIGFzIHNlcGFyYXRlIGluZm9ybWF0aW9uCiMgdGhlIGNoYW5nZWQgdmFsdWVzIG9mIGZpZWxkIENQVS4KIwokQ29uZmlnSXRlbURhdGEgPSAkSVRTTUNvbmZpZ0l0ZW1JbnZva2VyT2JqZWN0LT5HZXRDb25maWdJdGVtRGF0YSgKICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgRXZlbnQgICAgICAgID0+ICdWYWx1ZVVwZGF0ZScsCik7CgolRXhwZWN0ZWRDb25maWdJdGVtRGF0YSA9ICgKICAgICVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhU2Vjb25kVmVyc2lvbiwKICAgIFByZXZpb3VzQ29uZmlnSXRlbVZlcnNpb24gPT4gewogICAgICAgICVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhRmlyc3RWZXJzaW9uLAogICAgfSwKICAgIFZhbHVlVXBkYXRlID0+IHsKICAgICAgICAnQ1BVOjoxJyA9PiB7CiAgICAgICAgICAgIE5ldyA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdJbnRlbCBDb3JlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0FNRCBSeXplbicsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICAnTklDOjoxJyA9PiB7CiAgICAgICAgICAgIE5ldyA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOSUMxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ05JQycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICAnTklDOjoyJyA9PiB7CiAgICAgICAgICAgIE5ldyA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICdOSUMyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICAgICAnTklDOjoyOjpJUEFkZHJlc3M6OjEnID0+IHsKICAgICAgICAgICAgTmV3ID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzEyNy4xLjAuMScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIE9sZCA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgJ05JQzo6Mjo6SVBvdmVyREhDUDo6MScgPT4gewogICAgICAgICAgICBOZXcgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCAgICAgICA9PiAkWWVzTm97Tm99LAogICAgICAgICAgICAgICAgUmVhZGFibGVWYWx1ZSA9PiAnTm8nLAogICAgICAgICAgICB9LAogICAgICAgICAgICBPbGQgPT4gewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgICdXYXJyYW50eUV4cGlyYXRpb25EYXRlOjoxJyA9PiB7CiAgICAgICAgICAgIE5ldyA9PiB7CiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcyMDIzLTA3LTE1JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgT2xkID0+IHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJzIwMjEtMDctMTYnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJENvbmZpZ0l0ZW1EYXRhLAogICAgXCVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhLAogICAgJ0dldENvbmZpZ0l0ZW1EYXRhKCk6IENvbmZpZyBpdGVtIGRhdGEgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmUgZm9yIHZhbGlkIGNvbmZpZyBpdGVtIElEIChzZWNvbmQgdmVyc2lvbikgd2l0aCBldmVudCBWYWx1ZVVwZGF0ZS4nLAopOwoKMTsK</File>
        <File Permission="660" Location="scripts/test/System/ITSMConfigItemInvokerReadableValue.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXJPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7Cm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJFZhbGlkT2JqZWN0ICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwpteSAkSVRTTUNvbmZpZ0l0ZW1JbnZva2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtSW52b2tlcicpOwpteSAkWm51bnlIZWxwZXJPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7Cm15ICRDdXN0b21lclVzZXJPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyk7Cm15ICRDdXN0b21lckNvbXBhbnlPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJDb21wYW55Jyk7Cm15ICRDb25maWdPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKbXkgJFVzZXJJRCA9IDE7CgokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0NoZWNrTVhSZWNvcmQnLAogICAgVmFsdWUgPT4gMCwKKTsKCm15ICRWYWxpZElEID0gJFZhbGlkT2JqZWN0LT5WYWxpZExvb2t1cCgKICAgIFZhbGlkID0+ICd2YWxpZCcsCik7CgojCiMgUHJlcGFyZSBjdXN0b21lciBjb21wYW55IGFuZCB1c2VyCiMKbXkgJEN1c3RvbWVySUQgPSAkQ3VzdG9tZXJDb21wYW55T2JqZWN0LT5DdXN0b21lckNvbXBhbnlBZGQoCiAgICBDdXN0b21lcklEICAgICAgICAgICAgID0+ICdVbml0VGVzdEN1c3RvbWVyQ29tcGFueScgLiAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpLAogICAgQ3VzdG9tZXJDb21wYW55TmFtZSAgICA9PiAnVW5pdFRlc3RDdXN0b21lckNvbXBhbnkgbmFtZScsCiAgICBDdXN0b21lckNvbXBhbnlTdHJlZXQgID0+ICdVbml0VGVzdEN1c3RvbWVyQ29tcGFueSBzdHJlZXQnLAogICAgQ3VzdG9tZXJDb21wYW55WklQICAgICA9PiAnVW5pdFRlc3RDdXN0b21lckNvbXBhbnkgcG9zdGFsIGNvZGUnLAogICAgQ3VzdG9tZXJDb21wYW55Q2l0eSAgICA9PiAnVW5pdFRlc3RDdXN0b21lckNvbXBhbnkgY2l0eScsCiAgICBDdXN0b21lckNvbXBhbnlDb3VudHJ5ID0+ICdHZXJtYW55JywKICAgIEN1c3RvbWVyQ29tcGFueVVSTCAgICAgPT4gJ2h0dHA6Ly93d3cuZXhhbXBsZS5vcmcnLAogICAgQ3VzdG9tZXJDb21wYW55Q29tbWVudCA9PiAnVW5pdFRlc3RDdXN0b21lckNvbXBhbnkgY29tbWVudCcsCiAgICBWYWxpZElEICAgICAgICAgICAgICAgID0+ICRWYWxpZElELAogICAgVXNlcklEICAgICAgICAgICAgICAgICA9PiAkVXNlcklELAopOwoKbXkgJUN1c3RvbWVyQ29tcGFueSA9ICRDdXN0b21lckNvbXBhbnlPYmplY3QtPkN1c3RvbWVyQ29tcGFueUdldCgKICAgIEN1c3RvbWVySUQgPT4gJEN1c3RvbWVySUQsCik7CgpkZWxldGUgJEN1c3RvbWVyQ29tcGFueXtDb25maWd9OwpkZWxldGUgJEN1c3RvbWVyQ29tcGFueXtDb21wYW55Q29uZmlnfTsKCm15ICRDdXN0b21lclVzZXJMb2dpbiA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyVXNlckFkZCgKICAgIFNvdXJjZSAgICAgICAgID0+ICdDdXN0b21lclVzZXInLAogICAgVXNlckZpcnN0bmFtZSAgPT4gJ1VuaXRUZXN0Q3VzdG9tZXJVc2VyIGZpcnN0IG5hbWUnLAogICAgVXNlckxhc3RuYW1lICAgPT4gJ1VuaXRUZXN0Q3VzdG9tZXJDb21wYW55IGxhc3QgbmFtZScsCiAgICBVc2VyQ3VzdG9tZXJJRCA9PiAkQ3VzdG9tZXJJRCwKICAgIFVzZXJMb2dpbiAgICAgID0+ICdVbml0VGVzdEN1c3RvbWVyQ29tcGFueScgLiAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpLAogICAgVXNlclBhc3N3b3JkICAgPT4gJzEyMzQ1Njc4JywKICAgIFVzZXJFbWFpbCAgICAgID0+ICdlbWFpbEBleGFtcGxlLmNvbScsCiAgICBWYWxpZElEICAgICAgICA9PiAkVmFsaWRJRCwKICAgIFVzZXJJRCAgICAgICAgID0+ICRVc2VySUQsCik7CgpteSAlQ3VzdG9tZXJVc2VyID0gJEN1c3RvbWVyVXNlck9iamVjdC0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgIFVzZXIgPT4gJEN1c3RvbWVyVXNlckxvZ2luLAopOwoKZGVsZXRlICRDdXN0b21lclVzZXJ7Q29uZmlnfTsKZGVsZXRlICRDdXN0b21lclVzZXJ7Q29tcGFueUNvbmZpZ307CgojCiMgUHJlcGFyZSBhIGNvbmZpZyBpdGVtCiMKbXkgJENsYXNzZXMgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIFZhbGlkID0+ICRWYWxpZElELAopOwpteSAlQ2xhc3NlcyA9IHJldmVyc2UgJXsgJENsYXNzZXMgLy8ge30gfTsKCiRTZWxmLT5UcnVlKAogICAgc2NhbGFyICRDbGFzc2Vze0xvY2F0aW9ufSwKICAgICdDbGFzcyAiTG9jYXRpb24iIG11c3QgYmUgcHJlc2VudC4nLAopOwoKbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgQ2xhc3NJRCA9PiAkQ2xhc3Nlc3tMb2NhdGlvbn0sCiAgICBVc2VySUQgID0+ICRVc2VySUQsCik7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciAkQ29uZmlnSXRlbUlELAogICAgJ0NvbmZpZyBpdGVtIG11c3QgaGF2ZSBiZWVuIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5LicsCikgfHwgcmV0dXJuOwoKbXkgJExvY2F0aW9uVHlwZSA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUdldCgKICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpMb2NhdGlvbjo6VHlwZScsCiAgICBOYW1lICA9PiAnT2ZmaWNlJywKKTsKCm15ICREZXBsU3RhdGVQcm9kdWN0aW9uID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICBOYW1lICA9PiAnUHJvZHVjdGlvbicsCik7CgpteSAkSW5jaVN0YXRlT3BlcmF0aW9uYWwgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1HZXQoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScsCiAgICBOYW1lICA9PiAnT3BlcmF0aW9uYWwnLAopOwoKbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgIENsYXNzSUQgPT4gJENsYXNzZXN7TG9jYXRpb259LAopOwoKbXkgJExvY2F0aW9uTmFtZSA9ICdVbml0VGVzdExvY2F0aW9uJyAuICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgpteSAkVmVyc2lvbklEID0gJFpudW55SGVscGVyT2JqZWN0LT5fSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uQWRkKAogICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgTmFtZSAgICAgICAgICA9PiAkTG9jYXRpb25OYW1lLAogICAgQ2xhc3NOYW1lICAgICA9PiAnTG9jYXRpb24nLAogICAgRGVwbFN0YXRlTmFtZSA9PiAnUHJvZHVjdGlvbicsCiAgICBJbmNpU3RhdGVOYW1lID0+ICdPcGVyYXRpb25hbCcsCiAgICBYTUxEYXRhICAgICAgID0+IHsKICAgICAgICBUeXBlICAgICAgID0+ICRMb2NhdGlvblR5cGUtPntJdGVtSUR9LAogICAgICAgIEN1c3RvbWVySUQgPT4gJEN1c3RvbWVySUQsCiAgICAgICAgT3duZXIgICAgICA9PiAkQ3VzdG9tZXJVc2VyTG9naW4sCiAgICB9LAopOwoKbXkgJENvbmZpZ0l0ZW1EYXRhID0gJElUU01Db25maWdJdGVtSW52b2tlck9iamVjdC0+R2V0Q29uZmlnSXRlbURhdGEoCiAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgIEV2ZW50ICAgICAgICA9PiB1bmRlZiwKKTsKCm15ICVFeHBlY3RlZENvbmZpZ0l0ZW1EYXRhID0gKAogICAgWE1MRGF0YSA9PiB7CiAgICAgICAgVHlwZSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgPT4gJExvY2F0aW9uVHlwZS0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBSZWFkYWJsZVZhbHVlID0+ICdPZmZpY2UnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgQ3VzdG9tZXJJRCA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgICAgICAgPT4gJEN1c3RvbWVySUQsCiAgICAgICAgICAgICAgICBSZWFkYWJsZVZhbHVlID0+IFwlQ3VzdG9tZXJDb21wYW55LAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgT3duZXIgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb250ZW50ICAgICAgID0+ICRDdXN0b21lclVzZXJMb2dpbiwKICAgICAgICAgICAgICAgIFJlYWRhYmxlVmFsdWUgPT4gXCVDdXN0b21lclVzZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCiAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICBJbmNpU3RhdGVJRCAgPT4gJEluY2lTdGF0ZU9wZXJhdGlvbmFsLT57SXRlbUlEfSwKICAgIE5hbWUgICAgICAgICA9PiAkTG9jYXRpb25OYW1lLAogICAgRGVwbFN0YXRlSUQgID0+ICREZXBsU3RhdGVQcm9kdWN0aW9uLT57SXRlbUlEfSwKICAgIERlcGxTdGF0ZSAgICA9PiAnUHJvZHVjdGlvbicsCiAgICBDbGFzc0lEICAgICAgPT4gJENsYXNzZXN7TG9jYXRpb259LAogICAgSW5jaVN0YXRlICAgID0+ICdPcGVyYXRpb25hbCcsCiAgICBDbGFzcyAgICAgICAgPT4gJ0xvY2F0aW9uJywKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICRDb25maWdJdGVtRGF0YSwKICAgIFwlRXhwZWN0ZWRDb25maWdJdGVtRGF0YSwKICAgICdHZXRDb25maWdJdGVtRGF0YSgpOiBDb25maWcgaXRlbSBkYXRhIG11c3QgbWF0Y2ggZXhwZWN0ZWQgb25lLicsCik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/test/System/Ticket/Event/ITSMConfigItemCustomerCIs.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRDb25maWdPYmplY3QgICAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJEhlbHBlck9iamVjdCAgICAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkVGlja2V0T2JqZWN0ICAgICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJFVuaXRUZXN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OklUU01Db25maWdJdGVtJyk7Cm15ICRVbml0VGVzdFBhcmFtT2JqZWN0ICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpQYXJhbScpOwpteSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzJyk7CgpteSAlQ29uZmlnSXRlbUtleSA9ICV7CiAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ0FnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQnKS0+eycwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXInfQogICAgICAgIC0+e0NvbmZpZ0l0ZW1LZXl9IHx8IHt9Cn07CgpteSAkUmFuZG9tSUQgICAgICAgPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwpteSAkQ29uZmlnSXRlbU5hbWUgPSAiVW5pdFRlc3RQQyAkUmFuZG9tSUQiOwoKbXkgJFRlc3RVc2VyTG9naW4zID0gJEhlbHBlck9iamVjdC0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpOwpteSAkVmVyc2lvblJlZiAgICAgPSAkVW5pdFRlc3RJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUNyZWF0ZSgKICAgIE5hbWUgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1OYW1lLAogICAgQ2xhc3NOYW1lICAgICA9PiAnQ29tcHV0ZXInLAogICAgRGVwbFN0YXRlTmFtZSA9PiAnUHJvZHVjdGlvbicsCiAgICBJbmNpU3RhdGVOYW1lID0+ICdPcGVyYXRpb25hbCcsCiAgICBYTUxEYXRhICAgICAgID0+IHsKICAgICAgICBPdGhlckVxdWlwbWVudCAgICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICAgID0+ICcuLi4nLAogICAgICAgIFNlcmlhbE51bWJlciAgICAgICAgICAgICA9PiAnLi4uJywKICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlICAgPT4gJzIwMTYtMDEtMDEnLAogICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgICA9PiAnMjAxNi0wMS0wMScsCiAgICAgICAgJENvbmZpZ0l0ZW1LZXl7Q29tcHV0ZXJ9ID0+ICRUZXN0VXNlckxvZ2luMywKICAgIH0sCik7CgpteSBAQ29uZmlnSXRlbXMgPSAkSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc09iamVjdC0+R2V0UG9zc2libGVDdXN0b21lckNJcygKICAgIEN1c3RvbWVyVXNlcklEID0+ICRUZXN0VXNlckxvZ2luMywKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgIFxAQ29uZmlnSXRlbXMsCiAgICBbCiAgICAgICAgewogICAgICAgICAgICAnTGlua2VkJyAgICAgICA9PiAnMCcsCiAgICAgICAgICAgICdDb25maWdJdGVtSUQnID0+ICRWZXJzaW9uUmVmLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgJ051bWJlcicgICAgICAgPT4gJFZlcnNpb25SZWYtPntOdW1iZXJ9LAogICAgICAgICAgICAnTmFtZScgICAgICAgICA9PiAkQ29uZmlnSXRlbU5hbWUsCiAgICAgICAgICAgICdDbGFzcycgICAgICAgID0+ICdDb21wdXRlcicsCiAgICAgICAgICAgICdJY29uJyAgICAgICAgID0+ICcnLAogICAgICAgIH0KICAgIF0sCiAgICAiR2V0UG9zc2libGVDdXN0b21lckNJcyIsCik7CgokVW5pdFRlc3RQYXJhbU9iamVjdC0+UGFyYW1TZXQoCiAgICBOYW1lICA9PiAnSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJTGlzdCcsCiAgICBWYWx1ZSA9PiAkVmVyc2lvblJlZi0+e0NvbmZpZ0l0ZW1JRH0sCik7CgpteSAkVGlja2V0SUQgPSAkSGVscGVyT2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBDdXN0b21lclVzZXIgPT4gJFRlc3RVc2VyTG9naW4zLAopOwoKJFRpY2tldE9iamVjdC0+RXZlbnRIYW5kbGVyVHJhbnNhY3Rpb24oKTsKCkBDb25maWdJdGVtcyA9ICRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzT2JqZWN0LT5HZXRQb3NzaWJsZUN1c3RvbWVyQ0lzKAogICAgQ3VzdG9tZXJVc2VySUQgPT4gJFRlc3RVc2VyTG9naW4zLAogICAgVGlja2V0SUQgICAgICAgPT4gJFRpY2tldElELAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgXEBDb25maWdJdGVtcywKICAgIFsKICAgICAgICB7CiAgICAgICAgICAgICdMaW5rZWQnICAgICAgID0+ICcxJywKICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1JRCcgPT4gJFZlcnNpb25SZWYtPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAnTnVtYmVyJyAgICAgICA9PiAkVmVyc2lvblJlZi0+e051bWJlcn0sCiAgICAgICAgICAgICdOYW1lJyAgICAgICAgID0+ICRDb25maWdJdGVtTmFtZSwKICAgICAgICAgICAgJ0NsYXNzJyAgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgJ0ljb24nICAgICAgICAgPT4gJycsCiAgICAgICAgfQogICAgXSwKICAgICJHZXRQb3NzaWJsZUN1c3RvbWVyQ0lzIHdpdGggVGlja2V0IGxpbmsiLAopOwoKMTsK</File>
        <File Permission="660" Location="scripts/test/Ticket/Event/DynamicFieldConfigItemAdditionalDFStorage.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlcjsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXJPYmplY3QgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7Cm15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwpteSAkVmFsaWRPYmplY3QgICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpOwpteSAkVGlja2V0T2JqZWN0ICAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJFpudW55SGVscGVyT2JqZWN0ICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Wm51bnlIZWxwZXInKTsKbXkgJER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpDb25maWdJdGVtJyk7CgpteSAkVmFsaWRJRCA9ICRWYWxpZE9iamVjdC0+VmFsaWRMb29rdXAoCiAgICBWYWxpZCA9PiAndmFsaWQnLAopOwoKbXkgJFVzZXJJRCA9IDE7CgojCiMgUHJlcGFyZSBjb25maWcgaXRlbQojCm15ICRDbGFzc0xpc3RSZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgIFZhbGlkID0+ICRWYWxpZElELAopOwpteSAlQ2xhc3NMaXN0ID0gcmV2ZXJzZSAleyAkQ2xhc3NMaXN0UmVmIHx8IHt9IH07CgpteSAkWWVzTm9SZWYgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06Olllc05vJywKICAgIFZhbGlkID0+ICRWYWxpZElELAopOwpteSAlWWVzTm9MaXN0ID0gcmV2ZXJzZSAleyAkWWVzTm9SZWYgfHwge30gfTsKCm15ICRDb25maWdJdGVtMUlEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBDbGFzc0lEID0+ICRDbGFzc0xpc3R7Q29tcHV0ZXJ9LAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgJENvbmZpZ0l0ZW0xSUQsCiAgICAnQ29uZmlnIGl0ZW0gbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuJywKKTsKCm15ICRDb25maWdJdGVtMVZlcnNpb25JRCA9ICRabnVueUhlbHBlck9iamVjdC0+X0lUU01Db25maWdJdGVtVmVyc2lvbkFkZCgKICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW0xSUQsCiAgICBOYW1lICAgICAgICAgID0+ICdVbml0IHRlc3QgY29tcHV0ZXIgMScsCiAgICBDbGFzc05hbWUgICAgID0+ICdDb21wdXRlcicsCiAgICBEZXBsU3RhdGVOYW1lID0+ICdQcm9kdWN0aW9uJywKICAgIEluY2lTdGF0ZU5hbWUgPT4gJ09wZXJhdGlvbmFsJywKICAgIFhNTERhdGEgICAgICAgPT4gewogICAgICAgIE90aGVyRXF1aXBtZW50ICAgICAgICAgPT4gJ01vdXNlJywKICAgICAgICBOb3RlICAgICAgICAgICAgICAgICAgID0+ICdVbml0IHRlc3QgY29tcHV0ZXIgMSBub3RlLicsCiAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMjA0MC0wMS0wMScsCiAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMjA0MC0wMS0wMScsCiAgICAgICAgQ1BVICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NQVSAxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ1BVIDInLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICA9PiAnTklDJywKICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkWWVzTm9MaXN0e1llc30sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgICBJUEFkZHJlc3MgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAnMTI3LjAuMC4xJwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAopOwoKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgJENvbmZpZ0l0ZW0xVmVyc2lvbklELAogICAgJ0NvbmZpZyBpdGVtIHZlcnNpb24gbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuJywKKTsKCm15ICRDb25maWdJdGVtMklEID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BZGQoCiAgICBDbGFzc0lEID0+ICRDbGFzc0xpc3R7Q29tcHV0ZXJ9LAogICAgVXNlcklEICA9PiAkVXNlcklELAopOwoKJFNlbGYtPlRydWUoCiAgICBzY2FsYXIgJENvbmZpZ0l0ZW0ySUQsCiAgICAnQ29uZmlnIGl0ZW0gbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuJywKKTsKCm15ICRDb25maWdJdGVtMlZlcnNpb25JRCA9ICRabnVueUhlbHBlck9iamVjdC0+X0lUU01Db25maWdJdGVtVmVyc2lvbkFkZCgKICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW0ySUQsCiAgICBOYW1lICAgICAgICAgID0+ICdVbml0IHRlc3QgY29tcHV0ZXIgMicsCiAgICBDbGFzc05hbWUgICAgID0+ICdDb21wdXRlcicsCiAgICBEZXBsU3RhdGVOYW1lID0+ICdQcm9kdWN0aW9uJywKICAgIEluY2lTdGF0ZU5hbWUgPT4gJ09wZXJhdGlvbmFsJywKICAgIFhNTERhdGEgICAgICAgPT4gewogICAgICAgIE90aGVyRXF1aXBtZW50ICAgICAgICAgPT4gJ01vdXNlJywKICAgICAgICBOb3RlICAgICAgICAgICAgICAgICAgID0+ICdVbml0IHRlc3QgY29tcHV0ZXIgMiBub3RlLicsCiAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMjA0MS0wMS0wMScsCiAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMjA0MS0wMS0wMScsCiAgICAgICAgQ1BVICAgICAgICAgICAgICAgICAgICA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJ0NQVSAxJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCA9PiAnQ1BVIDQnLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICAgICAgTklDID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29udGVudCAgICA9PiAnTklDJywKICAgICAgICAgICAgICAgIElQb3ZlckRIQ1AgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkWWVzTm9MaXN0e05vfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIElQQWRkcmVzcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICcxMjcuMC4wLjInCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciAkQ29uZmlnSXRlbTJWZXJzaW9uSUQsCiAgICAnQ29uZmlnIGl0ZW0gdmVyc2lvbiBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4nLAopOwoKIwojIFByZXBhcmUgZHluYW1pYyBmaWVsZHMuCiMKbXkgQER5bmFtaWNGaWVsZHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDEnLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQxJywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdUZXh0JywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICcnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQyJywKICAgICAgICBMYWJlbCAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MicsCiAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAnVGV4dCcsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAnJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MycsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDMnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ1RleHQnLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gJycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDQnLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ0JywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdUZXh0JywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICcnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ1JywKICAgICAgICBMYWJlbCAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0NScsCiAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAnVGV4dCcsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSA9PiAnJywKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlVGltZScsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RGF0ZVRpbWUnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ0RhdGVUaW1lJywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlID0+ICcnLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUnLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ0RhdGUnLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgPT4gJycsCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QxJywKICAgICAgICBMYWJlbCAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RNdWx0aXNlbGVjdDEnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ011bHRpc2VsZWN0JywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgPT4gJycsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgID0+IDEsCiAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzID0+IHsKICAgICAgICAgICAgICAgICdDUFUgMScgPT4gJ0NQVSAxJywKICAgICAgICAgICAgICAgICdDUFUgMicgPT4gJ0NQVSAyJywKICAgICAgICAgICAgICAgICdDUFUgMycgPT4gJ0NQVSAzJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RNdWx0aXNlbGVjdDInLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MicsCiAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAnTXVsdGlzZWxlY3QnLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgICA9PiAnJywKICAgICAgICAgICAgUG9zc2libGVOb25lICAgPT4gMSwKICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gewogICAgICAgICAgICAgICAgJ0NQVSAxJyA9PiAnQ1BVIDEnLAogICAgICAgICAgICAgICAgJ0NQVSAyJyA9PiAnQ1BVIDInLAogICAgICAgICAgICAgICAgJ0NQVSAzJyA9PiAnQ1BVIDMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MycsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QzJywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdNdWx0aXNlbGVjdCcsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgID0+ICcnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgICA9PiAxLAogICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiB7CiAgICAgICAgICAgICAgICAnQ1BVIDEnID0+ICdDUFUgMScsCiAgICAgICAgICAgICAgICAnQ1BVIDInID0+ICdDUFUgMicsCiAgICAgICAgICAgICAgICAnQ1BVIDMnID0+ICdDUFUgMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24xJywKICAgICAgICBMYWJlbCAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjEnLAogICAgICAgIEludGVybmFsRmllbGQgPT4gMCwKICAgICAgICBPYmplY3RUeXBlICAgID0+ICdUaWNrZXQnLAogICAgICAgIEZpZWxkVHlwZSAgICAgPT4gJ0Ryb3Bkb3duJywKICAgICAgICBDb25maWcgICAgICAgID0+IHsKICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgPT4gJycsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgID0+IDEsCiAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzID0+IHsKICAgICAgICAgICAgICAgICdDUFUgMScgPT4gJ0NQVSAxJywKICAgICAgICAgICAgICAgICdDUFUgMicgPT4gJ0NQVSAyJywKICAgICAgICAgICAgICAgICdDUFUgMycgPT4gJ0NQVSAzJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjInLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERyb3Bkb3duMicsCiAgICAgICAgSW50ZXJuYWxGaWVsZCA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgICAgPT4gJ1RpY2tldCcsCiAgICAgICAgRmllbGRUeXBlICAgICA9PiAnRHJvcGRvd24nLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBEZWZhdWx0VmFsdWUgICA9PiAnJywKICAgICAgICAgICAgUG9zc2libGVOb25lICAgPT4gMSwKICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gewogICAgICAgICAgICAgICAgJ0NQVSAxJyA9PiAnQ1BVIDEnLAogICAgICAgICAgICAgICAgJ0NQVSAyJyA9PiAnQ1BVIDInLAogICAgICAgICAgICAgICAgJ0NQVSAzJyA9PiAnQ1BVIDMnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERyb3Bkb3duMycsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24zJywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdEcm9wZG93bicsCiAgICAgICAgQ29uZmlnICAgICAgICA9PiB7CiAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgID0+ICcnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgICA9PiAxLAogICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiB7CiAgICAgICAgICAgICAgICAnQ1BVIDEnID0+ICdDUFUgMScsCiAgICAgICAgICAgICAgICAnQ1BVIDInID0+ICdDUFUgMicsCiAgICAgICAgICAgICAgICAnQ1BVIDMnID0+ICdDUFUgMycsCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCgogICAgIyBDb25maWdJdGVtRHJvcGRvd24gKHNpbmdsZSBzZWxlY3QpCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0Q29uZmlnSXRlbTEnLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0xJywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdDb25maWdJdGVtRHJvcGRvd24nLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtUeXBlICAgID0+IHVuZGVmLAogICAgICAgICAgICBDb25maWdJdGVtTGlua1NvdXJjZSAgPT4gdW5kZWYsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCA9PiAwLAogICAgICAgICAgICBBZGRpdGlvbmFsREZTdG9yYWdlICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQxJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDInLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NQVTo6MicsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDMnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ05hbWUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kQmFja2VuZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdOSUM6OjE6OklQQWRkcmVzczo6MScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDUnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NsYXNzSUQnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0JhY2tlbmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5vdGljZSB0aGF0IHRoaXMgb25lIGlzIGJhY2tlbmQgb25seQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdXYXJyYW50eUV4cGlyYXRpb25EYXRlJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdGcm9udGVuZEJhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlVGltZScsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnV2FycmFudHlFeHBpcmF0aW9uRGF0ZScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24xJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFU6OjEnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24yJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0JhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RNdWx0aXNlbGVjdDEnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NQVTo6MicsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QyJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0Zyb250ZW5kQmFja2VuZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAoKICAgICMgQ29uZmlnSXRlbU11bHRpc2VsZWN0CiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0Q29uZmlnSXRlbTInLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0yJywKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdDb25maWdJdGVtTXVsdGlzZWxlY3QnLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtUeXBlICAgID0+IHVuZGVmLAogICAgICAgICAgICBDb25maWdJdGVtTGlua1NvdXJjZSAgPT4gdW5kZWYsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCA9PiAwLAogICAgICAgICAgICBBZGRpdGlvbmFsREZTdG9yYWdlICAgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQxJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0JhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MicsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnQ1BVOjoyJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdGcm9udGVuZEJhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MycsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnTmFtZScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmRCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDQnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ05JQzo6MTo6SVBBZGRyZXNzOjoxJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdGcm9udGVuZEJhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0NScsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnQ2xhc3NJRCcsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnRnJvbnRlbmQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTm90aWNlIHRoYXQgdGhpcyBvbmUgaXMgZnJvbnRlbmQgb25seQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdXYXJyYW50eUV4cGlyYXRpb25EYXRlJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ1dhcnJhbnR5RXhwaXJhdGlvbkRhdGUnLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0JhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjEnLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NQVTo6MScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZCAgPT4gJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERyb3Bkb3duMicsCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUtleSA9PiAnQ1BVJywKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgID0+ICdCYWNrZW5kJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkICA9PiAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QxJywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtS2V5ID0+ICdDUFU6OjInLAogICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgPT4gJ0JhY2tlbmQnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RNdWx0aXNlbGVjdDInLAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1LZXkgPT4gJ0NQVScsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICA9PiAnQmFja2VuZCcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgIH0sCiAgICB9LAopOwoKbXkgJER5bmFtaWNGaWVsZHNDcmVhdGVkID0gJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0NyZWF0ZShARHluYW1pY0ZpZWxkcyk7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciAkRHluYW1pY0ZpZWxkc0NyZWF0ZWQsCiAgICAnRHluYW1pYyBmaWVsZHMgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBzdWNjZXNzZnVsbHkuJywKKTsKCiMKIyBDb25maWdJdGVtRHJvcGRvd24gKER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0xKQojCgpteSAkVGlja2V0SUQgPSAkSGVscGVyT2JqZWN0LT5UaWNrZXRDcmVhdGUoKTsKCm15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICBOYW1lID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RDb25maWdJdGVtMScsCik7CgojIFRyaWdnZXJzIGV2ZW50IEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpEeW5hbWljRmllbGRDb25maWdJdGVtQWRkaXRpb25hbERGU3RvcmFnZQokRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0xSUQsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFVzZXJJRCwKKTsKCiMgT25seSBhZGRpdGlvbmFsIGR5bmFtaWMgZmllbGRzIHNldCB0byB0eXBlICJiYWNrZW5kIiBhcmUgZXhwZWN0ZWQgdG8gYmUgc2V0IGJ5IHRoZSBldmVudC4KbXkgJUV4cGVjdGVkRHluYW1pY0ZpZWxkRGF0YSA9ICgKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQxICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgICMgY29uZmlndXJlZCBmb3IgZnJvbnRlbmQsIG5vdCBiYWNrZW5kCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MiAgICAgICAgPT4gJ0NQVSAyJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQzICAgICAgICA9PiAnVW5pdCB0ZXN0IGNvbXB1dGVyIDEnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDQgICAgICAgID0+ICcxMjcuMC4wLjEnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDUgICAgICAgID0+ICRDbGFzc0xpc3R7Q29tcHV0ZXJ9LAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RGF0ZSAgICAgICAgID0+ICcyMDQwLTAxLTAxJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGVUaW1lICAgICA9PiAnMjA0MC0wMS0wMSAwMDowMDowMCcsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjEgICAgPT4gdW5kZWYsICAgICAgICAgICAgICAgICAgICAjIGNvbmZpZ3VyZWQgZm9yIGZyb250ZW5kLCBub3QgYmFja2VuZAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24yICAgID0+ICdDUFUgMScsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RNdWx0aXNlbGVjdDEgPT4gWwogICAgICAgICdDUFUgMicsCiAgICBdLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0TXVsdGlzZWxlY3QyID0+IFsKICAgICAgICAnQ1BVIDEnLAogICAgICAgICdDUFUgMicsCiAgICBdLAopOwoKbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICAgICA9PiAkVXNlcklELAopOwoKZm9yIG15ICREeW5hbWljRmllbGROYW1lICggc29ydCBrZXlzICVFeHBlY3RlZER5bmFtaWNGaWVsZERhdGEgKSB7CiAgICBteSAkRXhwZWN0ZWRWYWx1ZSA9ICRFeHBlY3RlZER5bmFtaWNGaWVsZERhdGF7JER5bmFtaWNGaWVsZE5hbWV9OwoKICAgIGlmICggJER5bmFtaWNGaWVsZE5hbWUgZXEgJ0R5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUnICkgewogICAgICAgICRFeHBlY3RlZFZhbHVlIC49ICcgMDA6MDA6MDAnOwogICAgfQoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkTmFtZSB9LAogICAgICAgICRFeHBlY3RlZFZhbHVlLAogICAgICAgICJDb25maWdJdGVtRHJvcGRvd24gLSBDb250ZW50IG9mIGR5bmFtaWMgZmllbGQgJER5bmFtaWNGaWVsZE5hbWUgbXVzdCBtYXRjaCBleHBlY3RlZCBvbmUuIiwKICAgICk7Cn0KCiMKIyBDb25maWdJdGVtTXVsdGlzZWxlY3QgKER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdENvbmZpZ0l0ZW0yKQojCgokVGlja2V0SUQgPSAkSGVscGVyT2JqZWN0LT5UaWNrZXRDcmVhdGUoKTsKCiREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICBOYW1lID0+ICdEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RDb25maWdJdGVtMicsCik7CgojIFRyaWdnZXJzIGV2ZW50IEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpEeW5hbWljRmllbGRDb25maWdJdGVtQWRkaXRpb25hbERGU3RvcmFnZQokRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkQ29uZmlnSXRlbTFJRCwgJENvbmZpZ0l0ZW0ySUQsIF0sCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFVzZXJJRCwKKTsKCiMgIyBPbmx5IGFkZGl0aW9uYWwgZHluYW1pYyBmaWVsZHMgc2V0IHRvIHR5cGUgImJhY2tlbmQiIGFyZSBleHBlY3RlZCB0byBiZSBzZXQgYnkgdGhlIGV2ZW50LgolRXhwZWN0ZWREeW5hbWljRmllbGREYXRhID0gKAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0VGV4dDEgICAgICAgID0+ICdDUFUgMSwgQ1BVIDIsIENQVSAxLCBDUFUgNCcsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MiAgICAgICAgPT4gJ0NQVSAyLCBDUFUgNCcsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0MyAgICAgICAgPT4gJ1VuaXQgdGVzdCBjb21wdXRlciAxLCBVbml0IHRlc3QgY29tcHV0ZXIgMicsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3RUZXh0NCAgICAgICAgPT4gJzEyNy4wLjAuMSwgMTI3LjAuMC4yJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdFRleHQ1ICAgICAgICA9PiB1bmRlZiwgICAgICAgICAgICAgICAgICAgIyBjb25maWd1cmVkIGZvciBmcm9udGVuZCwgbm90IGJhY2tlbmQKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdERhdGUgICAgICAgICA9PiAnMjA0MC0wMS0wMScsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REYXRlVGltZSAgICAgPT4gJzIwNDAtMDEtMDEgMDA6MDA6MDAnLAogICAgRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RHJvcGRvd24xICAgID0+ICdDUFUgMScsCiAgICBEeW5hbWljRmllbGRDb25maWdJdGVtVW5pdFRlc3REcm9wZG93bjIgICAgPT4gJ0NQVSAxJywKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MSA9PiBbCiAgICAgICAgJ0NQVSAyJywKICAgICAgICAnQ1BVIDQnLAogICAgXSwKICAgIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW1Vbml0VGVzdE11bHRpc2VsZWN0MiA9PiBbCiAgICAgICAgJ0NQVSAxJywKICAgICAgICAnQ1BVIDInLAogICAgICAgICdDUFUgMScsCiAgICAgICAgJ0NQVSA0JywKICAgIF0sCik7CgolVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgICAgID0+ICRVc2VySUQsCik7Cgpmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCBzb3J0IGtleXMgJUV4cGVjdGVkRHluYW1pY0ZpZWxkRGF0YSApIHsKICAgIG15ICRFeHBlY3RlZFZhbHVlID0gJEV4cGVjdGVkRHluYW1pY0ZpZWxkRGF0YXskRHluYW1pY0ZpZWxkTmFtZX07CgogICAgaWYgKCAkRHluYW1pY0ZpZWxkTmFtZSBlcSAnRHluYW1pY0ZpZWxkQ29uZmlnSXRlbVVuaXRUZXN0RGF0ZScgKSB7CiAgICAgICAgJEV4cGVjdGVkVmFsdWUgLj0gJyAwMDowMDowMCc7CiAgICB9CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICRUaWNrZXR7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGROYW1lIH0sCiAgICAgICAgJEV4cGVjdGVkVmFsdWUsCiAgICAgICAgIkNvbmZpZ0l0ZW1NdWx0aXNlbGVjdCAtIENvbnRlbnQgb2YgZHluYW1pYyBmaWVsZCAkRHluYW1pY0ZpZWxkTmFtZSBtdXN0IG1hdGNoIGV4cGVjdGVkIG9uZS4iLAogICAgKTsKfQoKMTsK</File>
        <File Permission="660" Location="scripts/test/Ticket/Event/DynamicFieldConfigItemTicketLink.t" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAyMSBabnVueSBHbWJILCBodHRwczovL3pudW55Lm9yZy8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKCm15ICRIZWxwZXJPYmplY3QgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKbXkgJFRpY2tldE9iamVjdCAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7Cm15ICRabnVueUhlbHBlck9iamVjdCAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlpudW55SGVscGVyJyk7Cm15ICRVbml0VGVzdElUU01Db25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpJVFNNQ29uZmlnSXRlbScpOwpteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7Cm15ICRMaW5rT2JqZWN0ICAgICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCm15IEBEeW5hbWljRmllbGRzID0gKAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1Ecm9wZG93bicsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAiQ29uZmlnSXRlbURyb3Bkb3duIiwKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdDb25maWdJdGVtRHJvcGRvd24nLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtUeXBlICAgID0+ICdEZXBlbmRzT24nLAogICAgICAgICAgICBDb25maWdJdGVtTGlua1NvdXJjZSAgPT4gJ1RpY2tldCcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCA9PiAwLAogICAgICAgIH0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0NvbmZpZ0l0ZW1NdWx0aXNlbGVjdCcsCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAiQ29uZmlnSXRlbU11bHRpc2VsZWN0IiwKICAgICAgICBJbnRlcm5hbEZpZWxkID0+IDAsCiAgICAgICAgT2JqZWN0VHlwZSAgICA9PiAnVGlja2V0JywKICAgICAgICBGaWVsZFR5cGUgICAgID0+ICdDb25maWdJdGVtTXVsdGlzZWxlY3QnLAogICAgICAgIENvbmZpZyAgICAgICAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtQ2xhc3MgICAgICAgPT4gJ0NvbXB1dGVyJywKICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtUeXBlICAgID0+ICdBbHRlcm5hdGl2ZVRvJywKICAgICAgICAgICAgQ29uZmlnSXRlbUxpbmtTb3VyY2UgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1MaW5rUmVtb3ZhbCA9PiAxLAogICAgICAgIH0sCiAgICB9LAopOwoKJFpudW55SGVscGVyT2JqZWN0LT5fRHluYW1pY0ZpZWxkc0NyZWF0ZShARHluYW1pY0ZpZWxkcyk7CgpteSAlRHluYW1pY0ZpZWxkQ29uZmlnOwpmb3IgbXkgJER5bmFtaWNGaWVsZCAocXcoQ29uZmlnSXRlbURyb3Bkb3duIENvbmZpZ0l0ZW1NdWx0aXNlbGVjdCkpIHsKICAgICREeW5hbWljRmllbGRDb25maWd7JER5bmFtaWNGaWVsZH0gPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAkRHluYW1pY0ZpZWxkLAogICAgKTsKCn0KCm15ICRUaWNrZXRJRCA9ICRIZWxwZXJPYmplY3QtPlRpY2tldENyZWF0ZSgpOwoKbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICAgICA9PiAxLAopOwoKJFNlbGYtPklzKAogICAgJFRpY2tldHtEeW5hbWljRmllbGRfQ29uZmlnSXRlbURyb3Bkb3dufSwKICAgIHVuZGVmLAogICAgJ0NvbmZpZ0l0ZW1Ecm9wZG93bicsCik7CgokU2VsZi0+SXMoCiAgICAkVGlja2V0e0R5bmFtaWNGaWVsZF9Db25maWdJdGVtTXVsdGlzZWxlY3R9LAogICAgdW5kZWYsCiAgICAnQ29uZmlnSXRlbU11bHRpc2VsZWN0JywKKTsKCm15ICRWZXJzaW9uMSA9ICRVbml0VGVzdElUU01Db25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQ3JlYXRlKAogICAgTmFtZSAgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkIENvbmZpZ0l0ZW1Ecm9wZG93biBUZXN0IDEnLAogICAgQ2xhc3NOYW1lICAgICA9PiAnQ29tcHV0ZXInLAogICAgRGVwbFN0YXRlTmFtZSA9PiAnUHJvZHVjdGlvbicsCiAgICBJbmNpU3RhdGVOYW1lID0+ICdPcGVyYXRpb25hbCcsCiAgICBYTUxEYXRhICAgICAgID0+IHsKICAgICAgICBPdGhlckVxdWlwbWVudCAgICAgICAgID0+ICcuLi4nLAogICAgICAgIE5vdGUgICAgICAgICAgICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgU2VyaWFsTnVtYmVyICAgICAgICAgICA9PiAnLi4uJywKICAgICAgICBXYXJyYW50eUV4cGlyYXRpb25EYXRlID0+ICcyMDE2LTAxLTAxJywKICAgICAgICBJbnN0YWxsRGF0ZSAgICAgICAgICAgID0+ICcyMDE2LTAxLTAxJywKICAgIH0sCik7CgpteSAkVmVyc2lvbjIgPSAkVW5pdFRlc3RJVFNNQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUNyZWF0ZSgKICAgIE5hbWUgICAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZCBDb25maWdJdGVtTXVsdGlzZWxlY3QgVGVzdCAyJywKICAgIENsYXNzTmFtZSAgICAgPT4gJ0NvbXB1dGVyJywKICAgIERlcGxTdGF0ZU5hbWUgPT4gJ1Byb2R1Y3Rpb24nLAogICAgSW5jaVN0YXRlTmFtZSA9PiAnT3BlcmF0aW9uYWwnLAogICAgWE1MRGF0YSAgICAgICA9PiB7CiAgICAgICAgT3RoZXJFcXVpcG1lbnQgICAgICAgICA9PiAnLi4uJywKICAgICAgICBOb3RlICAgICAgICAgICAgICAgICAgID0+ICcuLi4nLAogICAgICAgIFNlcmlhbE51bWJlciAgICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiAnMjAxNi0wMS0wMScsCiAgICAgICAgSW5zdGFsbERhdGUgICAgICAgICAgICA9PiAnMjAxNi0wMS0wMScsCiAgICB9LAopOwoKbXkgJFZlcnNpb24zID0gJFVuaXRUZXN0SVRTTUNvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1DcmVhdGUoCiAgICBOYW1lICAgICAgICAgID0+ICdEeW5hbWljRmllbGQgQ29uZmlnSXRlbU11bHRpc2VsZWN0IFRlc3QgMycsCiAgICBDbGFzc05hbWUgICAgID0+ICdDb21wdXRlcicsCiAgICBEZXBsU3RhdGVOYW1lID0+ICdQcm9kdWN0aW9uJywKICAgIEluY2lTdGF0ZU5hbWUgPT4gJ09wZXJhdGlvbmFsJywKICAgIFhNTERhdGEgICAgICAgPT4gewogICAgICAgIE90aGVyRXF1aXBtZW50ICAgICAgICAgPT4gJy4uLicsCiAgICAgICAgTm90ZSAgICAgICAgICAgICAgICAgICA9PiAnLi4uJywKICAgICAgICBTZXJpYWxOdW1iZXIgICAgICAgICAgID0+ICcuLi4nLAogICAgICAgIFdhcnJhbnR5RXhwaXJhdGlvbkRhdGUgPT4gJzIwMTYtMDEtMDEnLAogICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgPT4gJzIwMTYtMDEtMDEnLAogICAgfSwKKTsKCiREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlneydDb25maWdJdGVtRHJvcGRvd24nfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZlcnNpb24xLT57Q29uZmlnSXRlbUlEfSwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAopOwoKbXkgQFZhbHVlcyA9ICgKICAgICRWZXJzaW9uMS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAkVmVyc2lvbjItPntDb25maWdJdGVtSUR9LAopOwoKJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWd7J0NvbmZpZ0l0ZW1NdWx0aXNlbGVjdCd9LAogICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgVmFsdWUgICAgICAgICAgICAgID0+IFxAVmFsdWVzLAopOwoKJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgT2JqZWN0cyA9PiBbJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnXSwKKTsKCiRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgolVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgVGlja2V0SUQgICAgICA9PiAkVGlja2V0SUQsCiAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICBVc2VySUQgICAgICAgID0+IDEsCik7CgokU2VsZi0+SXMoCiAgICAkVGlja2V0e0R5bmFtaWNGaWVsZF9Db25maWdJdGVtRHJvcGRvd259LAogICAgJFZlcnNpb24xLT57Q29uZmlnSXRlbUlEfSwKICAgICdDb25maWdJdGVtRHJvcGRvd24nLAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJFRpY2tldHtEeW5hbWljRmllbGRfQ29uZmlnSXRlbU11bHRpc2VsZWN0fSwKICAgIFxAVmFsdWVzLAogICAgJ0NvbmZpZ0l0ZW1NdWx0aXNlbGVjdCcsCik7CgpteSAkTGlua0xpc3QgPSAkTGlua09iamVjdC0+TGlua0xpc3QoCiAgICBPYmplY3QgID0+ICdUaWNrZXQnLAogICAgS2V5ICAgICA9PiAkVGlja2V0SUQsCiAgICBPYmplY3QyID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICBTdGF0ZSAgID0+ICdWYWxpZCcsCiAgICBVc2VySUQgID0+IDEsCik7CgokU2VsZi0+SXNEZWVwbHkoCiAgICAkTGlua0xpc3QsCiAgICB7CiAgICAgICAgSVRTTUNvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICBEZXBlbmRzT24gPT4gewogICAgICAgICAgICAgICAgVGFyZ2V0ID0+IHsKICAgICAgICAgICAgICAgICAgICAkVmVyc2lvbjEtPntDb25maWdJdGVtSUR9ID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBBbHRlcm5hdGl2ZVRvID0+IHsKICAgICAgICAgICAgICAgIFNvdXJjZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJFZlcnNpb24xLT57Q29uZmlnSXRlbUlEfSA9PiAxLAogICAgICAgICAgICAgICAgICAgICRWZXJzaW9uMi0+e0NvbmZpZ0l0ZW1JRH0gPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgIH0sCiAgICAnTGlua0xpc3QnLAopOwoKJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgT2JqZWN0cyA9PiBbJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnXSwKKTsKCiRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIGNoYW5nZSBDb25maWdJdGVtcyBhZ2FpbgokRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZ3snQ29uZmlnSXRlbURyb3Bkb3duJ30sCiAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWZXJzaW9uMi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKCkBWYWx1ZXMgPSAoCiAgICAkVmVyc2lvbjEtPntDb25maWdJdGVtSUR9LAogICAgJFZlcnNpb24zLT57Q29uZmlnSXRlbUlEfSwKKTsKCiREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZVNldCgKICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlneydDb25maWdJdGVtTXVsdGlzZWxlY3QnfSwKICAgIE9iamVjdElEICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgIFZhbHVlICAgICAgICAgICAgICA9PiBcQFZhbHVlcywKKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RzRGlzY2FyZCgKICAgIE9iamVjdHMgPT4gWydLZXJuZWw6OlN5c3RlbTo6VGlja2V0J10sCik7CgokVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgIFRpY2tldElEICAgICAgPT4gJFRpY2tldElELAogICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgVXNlcklEICAgICAgICA9PiAxLAopOwoKJFNlbGYtPklzKAogICAgJFRpY2tldHtEeW5hbWljRmllbGRfQ29uZmlnSXRlbURyb3Bkb3dufSwKICAgICRWZXJzaW9uMi0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAnQ29uZmlnSXRlbURyb3Bkb3duJywKKTsKCiRTZWxmLT5Jc0RlZXBseSgKICAgICRUaWNrZXR7RHluYW1pY0ZpZWxkX0NvbmZpZ0l0ZW1NdWx0aXNlbGVjdH0sCiAgICBcQFZhbHVlcywKICAgICdDb25maWdJdGVtTXVsdGlzZWxlY3QnLAopOwoKJExpbmtMaXN0ID0gJExpbmtPYmplY3QtPkxpbmtMaXN0KAogICAgT2JqZWN0ICA9PiAnVGlja2V0JywKICAgIEtleSAgICAgPT4gJFRpY2tldElELAogICAgT2JqZWN0MiA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgU3RhdGUgICA9PiAnVmFsaWQnLAogICAgVXNlcklEICA9PiAxLAopOwoKJFNlbGYtPklzRGVlcGx5KAogICAgJExpbmtMaXN0LAogICAgewogICAgICAgIElUU01Db25maWdJdGVtID0+IHsKICAgICAgICAgICAgRGVwZW5kc09uID0+IHsKICAgICAgICAgICAgICAgIFRhcmdldCA9PiB7CiAgICAgICAgICAgICAgICAgICAgJFZlcnNpb24yLT57Q29uZmlnSXRlbUlEfSA9PiAxLAoKICAgICAgICAgICAgICAgICAgICAjIEJlY2F1c2UgZHJvcGRvd24gZmllbGQgaXMgY29uZmlndXJlZCB0byBub3QgcmVtb3ZlIGxpbmtzIHRvIHJlbW92ZWQgY29uZmlnIGl0ZW1zLgogICAgICAgICAgICAgICAgICAgICRWZXJzaW9uMS0+e0NvbmZpZ0l0ZW1JRH0gPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEFsdGVybmF0aXZlVG8gPT4gewogICAgICAgICAgICAgICAgU291cmNlID0+IHsKICAgICAgICAgICAgICAgICAgICAkVmVyc2lvbjEtPntDb25maWdJdGVtSUR9ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgJFZlcnNpb24zLT57Q29uZmlnSXRlbUlEfSA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgfSwKICAgICdMaW5rTGlzdCcsCik7CgoxOwo=</File>
        <File Permission="660" Location="scripts/webservices/GenericConfigItemConnectorSOAP.yml" Encode="Base64">LS0tCkRlYnVnZ2VyOgogIERlYnVnVGhyZXNob2xkOiBkZWJ1ZwogIFRlc3RNb2RlOiAwCkRlc2NyaXB0aW9uOiBJVFNNIENvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBDb25uZWN0b3IgU2FtcGxlCkZyYW1ld29ya1ZlcnNpb246IDUuMC54IGdpdApQcm92aWRlcjoKICBPcGVyYXRpb246CiAgICBDb25maWdJdGVtQ3JlYXRlOgogICAgICBEZXNjcmlwdGlvbjogQ3JlYXRlcyBuZXcgQ29uZmlndXJhdGlvbiBJdGVtcyBmcm9tIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICBNYXBwaW5nSW5ib3VuZDoge30KICAgICAgTWFwcGluZ091dGJvdW5kOiB7fQogICAgICBUeXBlOiBDb25maWdJdGVtOjpDb25maWdJdGVtQ3JlYXRlCiAgICBDb25maWdJdGVtRGVsZXRlOgogICAgICBEZXNjcmlwdGlvbjogRGVsZXRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1EZWxldGUKICAgIENvbmZpZ0l0ZW1HZXQ6CiAgICAgIERlc2NyaXB0aW9uOiBHZXQgdGhlIGRldGFpbHMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUdldAogICAgQ29uZmlnSXRlbVNlYXJjaDoKICAgICAgRGVzY3JpcHRpb246IFNlYXJjaCBDb25maWd1cmF0aW9uIEl0ZW1zIGZyb20gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAgIE1hcHBpbmdJbmJvdW5kOiB7fQogICAgICBNYXBwaW5nT3V0Ym91bmQ6IHt9CiAgICAgIFR5cGU6IENvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1TZWFyY2gKICAgIENvbmZpZ0l0ZW1VcGRhdGU6CiAgICAgIERlc2NyaXB0aW9uOiBVcGRhdGVzIENvbmZpZ3VyYXRpb24gSXRlbXMgZnJvbSBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgTWFwcGluZ0luYm91bmQ6IHt9CiAgICAgIE1hcHBpbmdPdXRib3VuZDoge30KICAgICAgVHlwZTogQ29uZmlnSXRlbTo6Q29uZmlnSXRlbVVwZGF0ZQogIFRyYW5zcG9ydDoKICAgIENvbmZpZzoKICAgICAgTWF4TGVuZ3RoOiAxMDAwMDAwMDAKICAgICAgTmFtZVNwYWNlOiBodHRwOi8vd3d3Lm90cnMub3JnL0NvbmZpZ0l0ZW1Db25uZWN0b3IKICAgICAgUmVxdWVzdE5hbWVGcmVlVGV4dDogJycKICAgICAgUmVxdWVzdE5hbWVTY2hlbWU6IFBsYWluCiAgICAgIFJlc3BvbnNlTmFtZUZyZWVUZXh0OiAnJwogICAgICBSZXNwb25zZU5hbWVTY2hlbWU6IFJlc3BvbnNlCiAgICBUeXBlOiBIVFRQOjpTT0FQClJlbW90ZVN5c3RlbTogJycKUmVxdWVzdGVyOgogIFRyYW5zcG9ydDoKICAgIFR5cGU6ICcnCg==</File>
        <File Permission="660" Location="var/httpd/htdocs/js/Core.Agent.Admin.DynamicFieldConfigItem.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSAgID0gQ29yZSB8fCB7fTsKCkNvcmUuQWdlbnQgPSBDb3JlLkFnZW50IHx8IHt9OwpDb3JlLkFnZW50LkFkbWluID0gQ29yZS5BZ2VudC5BZG1pbiB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIENvcmUuQWdlbnQuQWRtaW4uRHluYW1pY0ZpZWxkQ29uZmlnSXRlbQogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBmdW5jdGlvbnMgZm9yIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW0uCiAqLwpDb3JlLkFnZW50LkFkbWluLkR5bmFtaWNGaWVsZENvbmZpZ0l0ZW0gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICBJbml0TGlua1R5cGVTZWxlY3Rpb24oKTsKICAgIH0KCiAgICBmdW5jdGlvbiBJbml0TGlua1R5cGVTZWxlY3Rpb24oKSB7CiAgICAgICAgJCgnI0NvbmZpZ0l0ZW1MaW5rVHlwZScpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgdmFyIENvbmZpZ0l0ZW1MaW5rVHlwZSA9ICQodGhpcykudmFsKCk7CgogICAgICAgICAgICBpZiAoQ29uZmlnSXRlbUxpbmtUeXBlKSB7CiAgICAgICAgICAgICAgICBTaG93TGlua1NvdXJjZVNlbGVjdGlvbigpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBIaWRlTGlua1NvdXJjZVNlbGVjdGlvbigpOwogICAgICAgIH0pCiAgICAgICAgLnRyaWdnZXIoJ2NoYW5nZScpOwogICAgfQoKICAgIGZ1bmN0aW9uIFNob3dMaW5rU291cmNlU2VsZWN0aW9uKCkgewogICAgICAgICQoJyNDb25maWdJdGVtTGlua1NvdXJjZScpLmNsb3Nlc3QoJ2RpdicpLnNob3coKTsKICAgICAgICAkKCdsYWJlbFtmb3I9IkNvbmZpZ0l0ZW1MaW5rU291cmNlIl0nKS5zaG93KCk7CgogICAgICAgICQoJyNDb25maWdJdGVtTGlua1JlbW92YWwnKS5jbG9zZXN0KCdkaXYnKS5zaG93KCk7CiAgICAgICAgJCgnbGFiZWxbZm9yPSJDb25maWdJdGVtTGlua1JlbW92YWwiXScpLnNob3coKTsKCiAgICAgICAgQ29yZS5VSS5JbnB1dEZpZWxkcy5BY3RpdmF0ZSgpOwogICAgfQoKICAgIGZ1bmN0aW9uIEhpZGVMaW5rU291cmNlU2VsZWN0aW9uKCkgewogICAgICAgICQoJyNDb25maWdJdGVtTGlua1NvdXJjZScpLmNsb3Nlc3QoJ2RpdicpLmhpZGUoKTsKICAgICAgICAkKCdsYWJlbFtmb3I9IkNvbmZpZ0l0ZW1MaW5rU291cmNlIl0nKS5oaWRlKCk7CgogICAgICAgICQoJyNDb25maWdJdGVtTGlua1JlbW92YWwnKS5jbG9zZXN0KCdkaXYnKS5oaWRlKCk7CiAgICAgICAgJCgnbGFiZWxbZm9yPSJDb25maWdJdGVtTGlua1JlbW92YWwiXScpLmhpZGUoKTsKICAgIH0KCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oQ29yZS5BZ2VudC5BZG1pbi5EeW5hbWljRmllbGRDb25maWdJdGVtIHx8IHt9KSk7Cg==</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Add.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBPVFJTIEFHCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBhZGQuCiAqLwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQWRkID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5BZGQKICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGFibGUgZmlsdGVyLgogICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgQ29yZS5VSS5UYWJsZS5Jbml0VGFibGVGaWx0ZXIoJCgnI0ZpbHRlckNsYXNzZXMnKSwgJCgnI0NsYXNzZXMnKSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLkFkZCB8fCB7fSkpOwo=</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.CustomerCIsWidget.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgQ29yZSAgID0gQ29yZSB8fCB7fSwKSVRTTSA9IElUU00gfHwge307CgpDb3JlLkFnZW50ID0gQ29yZS5BZ2VudCB8fCB7fTsKSVRTTS5BZ2VudCA9IElUU00uQWdlbnQgfHwge307CklUU00uQWdlbnQuQ29uZmlnSXRlbSA9IElUU00uQWdlbnQuQ29uZmlnSXRlbSB8fCB7fTsKCi8qKgogKiBAbmFtZXNwYWNlCiAqIEBleHBvcnRzIFRhcmdldE5TIGFzIElUU00uQWdlbnQuQ29uZmlnSXRlbS5DdXN0b21lckNJc1dpZGdldAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBmdW5jdGlvbnMgZm9yIEFnZW50Q29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0LgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyQ0lzV2lkZ2V0ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewogICAgdmFyIEdldEN1c3RvbWVySW5mb0hhbmRsZXIsCiAgICAgICAgTGFzdEN1c3RvbWVyVXNlckNvdW50OwoKICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoUGFyYW0pIHsKICAgICAgICBUYXJnZXROUy5DcmVhdGVXaWRnZXQoUGFyYW0pOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KCiAgICBUYXJnZXROUy5TaG93V2lkZ2V0TG9hZGluZyA9IGZ1bmN0aW9uICgkV2lkZ2V0KSB7CiAgICAgICAgJFdpZGdldC5zaG93KCk7CiAgICAgICAgJFdpZGdldC5maW5kKCcuV2lkZ2V0SXNMb2FkaW5nJykuc2hvdygpOwogICAgICAgICRXaWRnZXQuZmluZCgnLnNpZGViYXJXaWRnZXRUaXRsZScpLmFkZENsYXNzKCdIaWRkZW4nKTsKICAgICAgICAkV2lkZ2V0LmZpbmQoJy5zaWRlYmFyV2lkZ2V0Q29udGVudCcpLmFkZENsYXNzKCdIaWRkZW4nKTsKICAgICAgICAkV2lkZ2V0LmZpbmQoJy5Db250ZW50JykuYWRkQ2xhc3MoJ0hpZGRlbicpOwogICAgICAgICRXaWRnZXQuZmFkZUluKCk7CiAgICB9CgogICAgVGFyZ2V0TlMuU2hvd1dpZGdldFJlc3VsdHMgPSBmdW5jdGlvbiAoJFdpZGdldCkgewogICAgICAgICRXaWRnZXQuaGlkZSgpOwogICAgICAgICRXaWRnZXQuZmluZCgnLldpZGdldElzTG9hZGluZycpLmhpZGUoKTsKICAgICAgICAkV2lkZ2V0LmZpbmQoJy5zaWRlYmFyV2lkZ2V0VGl0bGUnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgJFdpZGdldC5maW5kKCcuc2lkZWJhcldpZGdldENvbnRlbnQnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgJFdpZGdldC5maW5kKCcuQ29udGVudCcpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAkV2lkZ2V0LmZhZGVJbigpOwogICAgfQoKICAgIFRhcmdldE5TLkNyZWF0ZVdpZGdldCA9IGZ1bmN0aW9uIChQYXJhbSkgewogICAgICAgIHZhciBBY3Rpb24gPSBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpLAogICAgICAgICAgICBDb25maWdJdGVtSURzID0gJycsCiAgICAgICAgICAgIFVSTCA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSArIFRhcmdldE5TLlNlcmlhbGl6ZURhdGEoewogICAgICAgICAgICAgICAgQWN0aW9uOiAnQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0JywKICAgICAgICAgICAgICAgIFN1YmFjdGlvbjogJ0xvYWRXaWRnZXQnLAogICAgICAgICAgICAgICAgVGlja2V0SUQ6IFBhcmFtLlRpY2tldElELAogICAgICAgICAgICB9KSwKICAgICAgICAgICAgJEVsZW1lbnQsCiAgICAgICAgICAgICRXaWRnZXRFbGVtZW50OwoKICAgICAgICAvLyBjaGVjayBpZiB3aWRnZXQgZXhpc3RzCiAgICAgICAgaWYgKCQoJyNBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQnKS5sZW5ndGggPiAwKSByZXR1cm47CgogICAgICAgIC8vIGFwcGVuZCB3aWRnZXQgdG8gc2lkZWJhcgogICAgICAgICQoJy5zaWRlYmFyQ29udGVudCcpLmFwcGVuZChQYXJhbS5XaWRnZXQpOwoKICAgICAgICAkRWxlbWVudCA9ICQoJyNBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMnKTsKICAgICAgICAkV2lkZ2V0RWxlbWVudCA9ICQoJyNBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQnKTsKCiAgICAgICAgaWYgKCRFbGVtZW50Lmxlbmd0aCA9PT0gMCl7CiAgICAgICAgICAgIFRhcmdldE5TLlNob3dXaWRnZXRSZXN1bHRzKCRXaWRnZXRFbGVtZW50KTsKICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgfQoKICAgICAgICBUYXJnZXROUy5TaG93V2lkZ2V0TG9hZGluZygkV2lkZ2V0RWxlbWVudCk7CgogICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCRFbGVtZW50LCBVUkwsIGZ1bmN0aW9uKCkgewoKICAgICAgICAgICAgLy8gd2FpdCBmb3IgY29udGVudCB1cGRhdGUKICAgICAgICAgICAgJCgkRWxlbWVudCkuZmluZCgiYS5Bc1BvcHVwIikub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIE1hdGNoZXMsCiAgICAgICAgICAgICAgICAgICAgUG9wdXBUeXBlID0gJ1RpY2tldEFjdGlvbic7CgogICAgICAgICAgICAgICAgTWF0Y2hlcyA9ICQodGhpcykuYXR0cignY2xhc3MnKS5tYXRjaCgvUG9wdXBUeXBlXyhcdyspLyk7CiAgICAgICAgICAgICAgICBpZiAoTWF0Y2hlcykgewogICAgICAgICAgICAgICAgICAgIFBvcHVwVHlwZSA9IE1hdGNoZXNbMV07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAoJCh0aGlzKS5hdHRyKCdocmVmJyksIFBvcHVwVHlwZSk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgaWYgKEFjdGlvbiA9PSAnQWdlbnRUaWNrZXRQaG9uZScgfHwgQWN0aW9uID09ICdBZ2VudFRpY2tldEVtYWlsJykgewogICAgICAgICAgICAgICAgJCgnZm9ybVtuYW1lPWNvbXBvc2VdJykuYXBwZW5kKCc8aW5wdXQgdHlwZT0iaGlkZGVuIiBpZD0iSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJTGlzdCIgbmFtZT0iSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJTGlzdCIgLz4nKTsKCiAgICAgICAgICAgICAgICAkLmVhY2goJCgiLkNvbmZpZ0l0ZW1MaW5rOmNoZWNrZWQiKSwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKENvbmZpZ0l0ZW1JRHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyArPSAnLCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgKz0gJCh0aGlzKS52YWwoKTsKICAgICAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgICAgICQoJyNJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lMaXN0JykudmFsKENvbmZpZ0l0ZW1JRHMpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBUYXJnZXROUy5TaG93V2lkZ2V0UmVzdWx0cygkV2lkZ2V0RWxlbWVudCk7CiAgICAgICAgICAgIENvcmUuVUkuSW5pdFdpZGdldEFjdGlvblRvZ2dsZSgpOwogICAgICAgICAgICBMYXN0Q3VzdG9tZXJVc2VyQ291bnQgPSAxOwogICAgICAgICAgICBUYXJnZXROUy5TZXRFdmVudEhhbmRsZXIoKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CgogICAgVGFyZ2V0TlMuU2V0RXZlbnRIYW5kbGVyID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciBBY3Rpb24gPSBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpOwoKICAgICAgICBpZiAoQWN0aW9uID09ICdBZ2VudFRpY2tldFpvb20nKSB7CiAgICAgICAgICAgICQoJy5Db25maWdJdGVtTGluaycpLm9mZignY2hhbmdlJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIFRpY2tldElEICAgICA9IENvcmUuQ29uZmlnLkdldCgnVGlja2V0SUQnKSwKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPSAkKHRoaXMpLnZhbCgpLAogICAgICAgICAgICAgICAgICAgIFN1YmFjdGlvbiAgICA9ICdMaW5rRGVsZXRlJywKICAgICAgICAgICAgICAgICAgICBEYXRhOwoKICAgICAgICAgICAgICAgIGlmICgkKHRoaXMpLmlzKCI6Y2hlY2tlZCIpKSB7CiAgICAgICAgICAgICAgICAgICAgU3ViYWN0aW9uID0gJ0xpbmtBZGQnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIERhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgQWN0aW9uOiAgICAgICAnQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0JywKICAgICAgICAgICAgICAgICAgICBTdWJhY3Rpb246ICAgIFN1YmFjdGlvbiwKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRDogICAgIFRpY2tldElELAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRDogQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICAgICAvLyBzaG93IGFqYXggbG9hZGVyCiAgICAgICAgICAgICAgICAkKHRoaXMpLnBhcmVudCgpLmFwcGVuZCgnPHNwYW4gaWQ9IkFKQVhMb2FkZXIiIGNsYXNzPSJBSkFYTG9hZGVyIj48L3NwYW4+Jyk7CgogICAgICAgICAgICAgICAgLy8gZGlzYWJsZSBhbGwgY2hlY2tib3hlcwogICAgICAgICAgICAgICAgJCgnLkNvbmZpZ0l0ZW1MaW5rJykuYXR0cignZGlzYWJsZWQnLCAnZGlzYWJsZWQnKTsKCiAgICAgICAgICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICAgICAgICAgIENvcmUuQ29uZmlnLkdldCgnQ0dJSGFuZGxlJyksCiAgICAgICAgICAgICAgICAgICAgRGF0YSwKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgJ2pzb24nCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGlmICghR2V0Q3VzdG9tZXJJbmZvSGFuZGxlcikgewogICAgICAgICAgICAgICAgR2V0Q3VzdG9tZXJJbmZvSGFuZGxlciA9IENvcmUuQXBwLlN1YnNjcmliZSgKICAgICAgICAgICAgICAgICAgICAnRXZlbnQuQWdlbnQuQ3VzdG9tZXJTZWFyY2guR2V0Q3VzdG9tZXJJbmZvLkNhbGxiYWNrJywKICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lMaXN0JykudmFsKCcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuR2V0Q3VzdG9tZXJDSXMoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KAogICAgICAgICAgICAgICAgICAgIFVwZGF0ZUN1c3RvbWVyQ0lzT25SZW1vdmFsT2ZMYXN0Q3VzdG9tZXJVc2VyLAogICAgICAgICAgICAgICAgICAgIDEwMDAKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICQoJy5Db25maWdJdGVtTGluaycpLm9mZignY2hhbmdlJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIENvbmZpZ0l0ZW1JRHMgPSAnJzsKCiAgICAgICAgICAgICAgICAkKCcjSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJTGlzdCcpLnZhbCgnJyk7CgogICAgICAgICAgICAgICAgJC5lYWNoKCQoIi5Db25maWdJdGVtTGluazpjaGVja2VkIiksIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIGlmIChDb25maWdJdGVtSURzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgKz0gJywnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzICs9ICQodGhpcykudmFsKCk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAkKCcjSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJTGlzdCcpLnZhbChDb25maWdJdGVtSURzKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CgogICAgVGFyZ2V0TlMuR2V0Q3VzdG9tZXJDSXMgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIEN1c3RvbWVyVXNlcklEID0gJCgnI1NlbGVjdGVkQ3VzdG9tZXJVc2VyJykudmFsKCk7CiAgICAgICAgdmFyIEN1c3RvbWVySUQgPSAkKCcjQ3VzdG9tZXJJRCcpLnZhbCgpLAogICAgICAgICAgICBEYXRhID0gewogICAgICAgICAgICBBY3Rpb246ICAgICAgICAgJ0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldCcsCiAgICAgICAgICAgIFN1YmFjdGlvbjogICAgICAnQ3VzdG9tZXJVcGRhdGUnLAogICAgICAgICAgICBDdXN0b21lclVzZXJJRDogQ3VzdG9tZXJVc2VySUQsCiAgICAgICAgICAgIEN1c3RvbWVySUQ6ICAgICBDdXN0b21lcklELAogICAgICAgIH07CiAgICAgICAgdmFyICRXaWRnZXRPYmogPSAkKCcjQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0Jyk7CgogICAgICAgIFRhcmdldE5TLlNob3dXaWRnZXRMb2FkaW5nKCRXaWRnZXRPYmopOwoKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoUGFyYW0pIHsKICAgICAgICAgICAgICAgICQoJyNBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMnKS5lbXB0eSgpOwoKICAgICAgICAgICAgICAgIGlmIChQYXJhbS5Db25maWdJdGVtcykgewogICAgICAgICAgICAgICAgICAgICQoJyNBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMnKS5hcHBlbmQoUGFyYW0uQ29uZmlnSXRlbXMpOwogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlNldEV2ZW50SGFuZGxlcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJcycpLmFwcGVuZChDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnbm9uZScpKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIFRhcmdldE5TLlNob3dXaWRnZXRSZXN1bHRzKCRXaWRnZXRPYmopOwogICAgICAgICAgICB9LAogICAgICAgICAgICAnanNvbicKICAgICAgICApOwoKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH07CgogICAgLy8gV29ya2Fyb3VuZCBmb3IgY2xlYXJpbmcgY29uZmlnIGl0ZW0gbGlzdCBpZiB0aGUgbGFzdCBjdXN0b21lciB1c2VyIHdhcyByZW1vdmVkCiAgICAvLyBmcm9tIHRoZSBkaWFsb2cuIFRoZSBvbmUgcmVtYWluaW5nICJDdXN0b21lclNlbGVjdGVkIiBlbGVtZW50IGlzIGZyb20gdGhlCiAgICAvLyB0ZW1wbGF0ZSB0aGF0IGlzIGJlaW5nIHVzZWQgdG8gYWRkIGN1c3RvbWVyIHVzZXJzIHRvIHRoZSBkaWFsb2cuCiAgICBmdW5jdGlvbiBVcGRhdGVDdXN0b21lckNJc09uUmVtb3ZhbE9mTGFzdEN1c3RvbWVyVXNlcigpIHsKICAgICAgICB2YXIgQ3VycmVudEN1c3RvbWVyVXNlckNvdW50ID0gJCgnaW5wdXRbbmFtZT0iQ3VzdG9tZXJTZWxlY3RlZCJdJykubGVuZ3RoOwoKICAgICAgICBpZiAoQ3VycmVudEN1c3RvbWVyVXNlckNvdW50ID09IDEgJiYgQ3VycmVudEN1c3RvbWVyVXNlckNvdW50ICE9IExhc3RDdXN0b21lclVzZXJDb3VudCkgewogICAgICAgICAgICAkKCcjSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJTGlzdCcpLnZhbCgnJyk7CiAgICAgICAgICAgIFRhcmdldE5TLkdldEN1c3RvbWVyQ0lzKCk7CiAgICAgICAgfQoKICAgICAgICBMYXN0Q3VzdG9tZXJVc2VyQ291bnQgPSBDdXJyZW50Q3VzdG9tZXJVc2VyQ291bnQ7CgogICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KAogICAgICAgICAgICBVcGRhdGVDdXN0b21lckNJc09uUmVtb3ZhbE9mTGFzdEN1c3RvbWVyVXNlciwKICAgICAgICAgICAgMTAwMAogICAgICAgICk7CiAgICB9CgogICAgLy8gVE9ETyBjaGVjazogbWF5YmUgYmV0dGVyIHRvIGxvYWQgWm51bnkuQXBwLmpzIGludG8gQWdlbnRUaWNrZXRab29tL0FnZW50VGlja2V0UGhvbmUvQWdlbnRUaWNrZXRFbWFpbCBzb21laG93PwogICAgLy8gQnV0IHRoZW4sIHNvbWV0aGluZyBlbHNlIGNhbiBhbHNvIGxvYWQgaXQgd2l0aCBvdGhlciBwcmlvcml0eSAobGlrZSAwOTktWm51bnlNaWdyYXRvciksIHRoYXQncyB3aHkgaSBkaWQKICAgIC8vIG5vdCBnbyBpbiB0aGF0IGRpcmVjdGlvbiwgcmF0aGVyIGp1c3QgY29waWVkIHRoaXMgZnVuY3Rpb24KCiAgICBUYXJnZXROUy5TZXJpYWxpemVEYXRhID0gZnVuY3Rpb24gKERhdGEpIHsKCiAgICAgICAgdmFyIFF1ZXJ5U3RyaW5nID0gJyc7CgogICAgICAgICQuZWFjaChEYXRhLCBmdW5jdGlvbiAoS2V5LCBWYWx1ZSkgewogICAgICAgICAgICBRdWVyeVN0cmluZyArPSBlbmNvZGVVUklDb21wb25lbnQoS2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChWYWx1ZSkgKyAnOyc7CiAgICAgICAgfSk7CgogICAgICAgIHJldHVybiBRdWVyeVN0cmluZzsKICAgIH0KCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyQ0lzV2lkZ2V0IHx8IHt9KSk7Cg==</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.CustomerSearch.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBzZWFyY2guCiAqLwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uQ3VzdG9tZXJTZWFyY2ggPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0CiAgICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5DdXN0b21lclNlYXJjaAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQgLSBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgaW5wdXQgZmllbGQgd2l0aCBhdXRvY29tcGxldGUuCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgSW5pdGlhbGl6ZXMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucy4KICAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgdmFyIEN1c3RvbWVyU2VhcmNoSXRlbUlEcyA9IENvcmUuQ29uZmlnLkdldCgnQ3VzdG9tZXJTZWFyY2hJdGVtSURzJyksCiAgICAgICAgICAgIGk7CgogICAgICAgIGlmICh0eXBlb2YgQ3VzdG9tZXJTZWFyY2hJdGVtSURzICE9PSAndW5kZWZpbmVkJyAmJiBBcnJheS5pc0FycmF5KEN1c3RvbWVyU2VhcmNoSXRlbUlEcykgJiYgQ3VzdG9tZXJTZWFyY2hJdGVtSURzLmxlbmd0aCkgewoKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IEN1c3RvbWVyU2VhcmNoSXRlbUlEcy5sZW5ndGg7IGkrKykgewogICAgICAgICAgICAgICAgLy8gZXNjYXBlIHBvc3NpYmxlIGNvbG9ucyAoOikgaW4gZWxlbWVudCBpZCBiZWNhdXNlIGpRdWVyeSBjYW4gbm90IGhhbmRsZSBpdCBpbiBpZCBhdHRyaWJ1dGUgc2VsZWN0b3JzCiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoJCgiIyIgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihDdXN0b21lclNlYXJjaEl0ZW1JRHNbaV0pKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLkN1c3RvbWVyU2VhcmNoIHx8IHt9KSk7Cg==</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Dashboard.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkCiAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0KICogQGF1dGhvciBPVFJTIEFHCiAqIEBkZXNjcmlwdGlvbgogKiAgICAgIFRoaXMgbmFtZXNwYWNlIGNvbnRhaW5zIHRoZSBzcGVjaWFsIG1vZHVsZSBmdW5jdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBuYXZiYXIuCiAqLwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQKICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIG92ZXJ2aWV3IGJlaGF2aW91cnMuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKCiAgICAgICAgdmFyIERhc2hsZXREYXRhID0gQ29yZS5Db25maWcuR2V0KCdJVFNNQ29uZmlnSXRlbUdlbmVyaWMnKTsKCiAgICAgICAgaWYgKHR5cGVvZiBEYXNobGV0RGF0YSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1HZW5lcmljKERhc2hsZXREYXRhKTsKICAgICAgICAgICAgV2lkZ2V0RmlsdGVyKERhc2hsZXREYXRhKTsKCiAgICAgICAgICAgIC8vIFN1YnNjcmliZSB0byBDb250ZW50VXBkYXRlIGV2ZW50IHRvIGluaXRpYXRlIHRpY2tldCBnZW5lcmljIGV2ZW50cyBvbiB3aWRnZXQgdXBkYXRlCiAgICAgICAgICAgIENvcmUuQXBwLlN1YnNjcmliZSgnRXZlbnQuQUpBWC5Db250ZW50VXBkYXRlLkNhbGxiYWNrJywgZnVuY3Rpb24oJFdpZGdldEVsZW1lbnQpIHsKICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgJFdpZGdldEVsZW1lbnQgIT09ICd1bmRlZmluZWQnICYmICRXaWRnZXRFbGVtZW50LnNlYXJjaChEYXNobGV0RGF0YS5OYW1lKSAhPT0gcGFyc2VJbnQoJy0xJywgMTApKSB7CiAgICAgICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1HZW5lcmljKERhc2hsZXREYXRhKTsKICAgICAgICAgICAgICAgICAgICBXaWRnZXRGaWx0ZXIoRGFzaGxldERhdGEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5EYXNoYm9hcmQKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtPYmplY3R9IERhc2hsZXREYXRhIC0gSGFzaCB3aXRoIGNvbnRhaW5lciBuYW1lIGFuZCBIVE1MIG5hbWUKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyBkYXNoYm9hcmQgd2lkZ2V0IElUU01Db25maWdJdGVtR2VuZXJpYwogICAgICovCiAgICBmdW5jdGlvbiBJVFNNQ29uZmlnSXRlbUdlbmVyaWMgKERhc2hsZXREYXRhKSB7CiAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmZpbmQoJy5UYWIuQWN0aW9ucyBsaSBhJykub2ZmKCdjbGljaycpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgdmFyIEN1c3RvbWVySUQsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQsCiAgICAgICAgICAgICAgICAgICAgRmlsdGVyOwoKICAgICAgICAgICAgICAgIEN1c3RvbWVySUQgICAgICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJJRF0nKS52YWwoKSB8fCAnJzsKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEICA9ICQoJ2lucHV0W25hbWU9Q3VzdG9tZXJVc2VySURdJykudmFsKCkgfHwgJyc7CiAgICAgICAgICAgICAgICBGaWx0ZXIgICAgICAgICAgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtZmlsdGVyJyk7CgogICAgICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuYWRkQ2xhc3MoJ0xvYWRpbmcnKTsKICAgICAgICAgICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkpLCBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAnQWN0aW9uPScgKyBDb3JlLkNvbmZpZy5HZXQoJ0FjdGlvbicpICsgJztTdWJhY3Rpb249RWxlbWVudDtOYW1lPScgKyBEYXNobGV0RGF0YS5OYW1lICsgJztDdXN0b21lcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJJRCkgKyAnO0N1c3RvbWVyVXNlcklEPScgKyBlbmNvZGVVUklDb21wb25lbnQoQ3VzdG9tZXJVc2VySUQpICsgJztGaWx0ZXI9JyArIEZpbHRlciwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLnJlbW92ZUNsYXNzKCdMb2FkaW5nJyk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5maW5kKCcuRGF0YVRhYmxlIHRoIGEnKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICB2YXIgQ3VzdG9tZXJJRCwKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJJRCwKICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtY29sdW1uJyksCiAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgID0gJycsCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnlPYmogICAgID0gJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuZmluZCgndGguU29ydERlc2NlbmRpbmdMYXJnZSwgdGguU29ydEFzY2VuZGluZ0xhcmdlJyk7CgogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgICAgID0gJCgnaW5wdXRbbmFtZT1DdXN0b21lcklEXScpLnZhbCgpIHx8ICcnOwogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgID0gJCgnaW5wdXRbbmFtZT1DdXN0b21lclVzZXJJRF0nKS52YWwoKSB8fCAnJzsKCiAgICAgICAgICAgICAgICBpZiAoJE9yZGVyQnlPYmogJiYgJE9yZGVyQnlPYmouaGFzQ2xhc3MoJ1NvcnREZXNjZW5kaW5nTGFyZ2UnKSkgewogICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIGlmICgkT3JkZXJCeU9iaiAmJiAkT3JkZXJCeU9iai5oYXNDbGFzcygnU29ydEFzY2VuZGluZ0xhcmdlJykpIHsKICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0gJ1VwJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5hZGRDbGFzcygnTG9hZGluZycpOwogICAgICAgICAgICAgICAgQ29yZS5BSkFYLkNvbnRlbnRVcGRhdGUoJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSksIENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSArICdBY3Rpb249JyArIENvcmUuQ29uZmlnLkdldCgnQWN0aW9uJykgKyAnO1N1YmFjdGlvbj1FbGVtZW50O05hbWU9JyArIERhc2hsZXREYXRhLk5hbWUgKyAnO0N1c3RvbWVySUQ9JyArIGVuY29kZVVSSUNvbXBvbmVudChDdXN0b21lcklEKSArICc7Q3VzdG9tZXJVc2VySUQ9JyArIGVuY29kZVVSSUNvbXBvbmVudChDdXN0b21lclVzZXJJRCkgKyAnO1NvcnRCeT0nICsgU29ydEJ5ICsgJztPcmRlckJ5PScgKyBPcmRlckJ5LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykucmVtb3ZlQ2xhc3MoJ0xvYWRpbmcnKTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBwcml2YXRlCiAgICAgKiBAbmFtZSBXaWRnZXRGaWx0ZXIKICAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkCiAgICAgKiBAcGFyYW0ge09iamVjdH0gRGFzaGxldERhdGEgLSBIYXNoIHdpdGggY29udGFpbmVyIG5hbWUgYW5kIEhUTUwgbmFtZQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgSW5pdGlhbGl6ZXMgdGhlIGRhc2hib2FyZCB3aWRnZXQgZmlsdGVyIGV2ZW50LgogICAgICovCiAgICBmdW5jdGlvbiBXaWRnZXRGaWx0ZXIgKERhc2hsZXREYXRhKSB7CiAgICAgICAgdmFyICREYXNoYm9hcmRBY3Rpb25zLAogICAgICAgICAgICAkRmlsdGVyQ29udGFpbmVyOwoKICAgICAgICAvLyBtb3ZlIERhc2hib2FyZEFjdGlvbnMgdG8gdGhlIDxkaXYgY2xhc3M9IkhlYWRlciI+IGFmdGVyIDxoMj4KICAgICAgICAkRGFzaGJvYXJkQWN0aW9ucyA9ICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkpLmZpbmQoJy5EYXNoYm9hcmRBY3Rpb25zJykuZGV0YWNoKCk7CgogICAgICAgIC8vIGNyZWF0ZWQgJEZpbHRlckNvbnRhaW5lciB2YXIsIGFkZGVkIGl0IHRvIEhlYWRlciBhbmQgcHJlcGVuZGVkICREYXNoYm9hcmRBY3Rpb25zIHRvIGl0CiAgICAgICAgaWYoJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuZmluZCgnLkhlYWRlckZpbHRlcicpLmxlbmd0aCkgewogICAgICAgICAgICAkKCcjRGFzaGJvYXJkJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKERhc2hsZXREYXRhLk5hbWUpICsgJy1ib3gnKS5maW5kKCcuSGVhZGVyRmlsdGVyJykuZGV0YWNoKCk7CiAgICAgICAgfQogICAgICAgICRGaWx0ZXJDb250YWluZXIgPSAiPGRpdiBjbGFzcz0nSGVhZGVyRmlsdGVyJz48L2Rpdj4iOwogICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmZpbmQoJ2gyJykuYWZ0ZXIoJEZpbHRlckNvbnRhaW5lcik7CiAgICAgICAgJCgnI0Rhc2hib2FyZCcgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihEYXNobGV0RGF0YS5OYW1lKSArICctYm94JykuZmluZCgnLkhlYWRlckZpbHRlcicpLnByZXBlbmQoJERhc2hib2FyZEFjdGlvbnMpOwoKICAgICAgICAvLyBhZGRpdGlvbmFsIGNsaWNrIGV2ZW50IGZvciBkcm9wZG93bi1tZW51IHRvIHNob3cvaGlkZQogICAgICAgICQoJyNEYXNoYm9hcmQnICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRGFzaGxldERhdGEuTmFtZSkgKyAnLWJveCcpLmZpbmQoJy5EYXNoYm9hcmRBY3Rpb25zJykub2ZmKCdjbGljay5EYXNoYm9hcmRBY3Rpb25zJykub24oJ2NsaWNrLkRhc2hib2FyZEFjdGlvbnMnLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuVGFiLkFjdGlvbnMnKS50b2dnbGUoKTsKICAgICAgICB9KTsKICAgIH0KCgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRGFzaGJvYXJkIHx8IHt9KSk7Cg==</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Edit.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdAogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudAogKiBAYXV0aG9yIE9UUlMgQUcKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIGVkaXQuCiAqLwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKgogICAgKiBAbmFtZSBJbml0CiAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdAogICAgKiBAZnVuY3Rpb24KICAgICogQGRlc2NyaXB0aW9uCiAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpbml0aWFsaXplcyB0aGUgZm9ybSBzdWJtaXR0aW9uLgogICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgnI1N1Ym1pdEJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgJCgnaW5wdXRbbmFtZT1TdWJtaXRTYXZlXScpLnZhbCgnMScpOwogICAgICAgIH0pOwoKICAgICAgICAkKCcjQ2FuY2VsQnV0dG9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAoQ29yZS5VSS5Qb3B1cC5DdXJyZW50SXNQb3B1cFdpbmRvdygpKSB7CiAgICAgICAgICAgICAgICBDb3JlLlVJLlBvcHVwLkNsb3NlUG9wdXAoKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkKCcuRGlzYWJsZVZhbGlkYXRpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICQoJ2lucHV0W25hbWU9U3VibWl0U2F2ZV0nKS52YWwoJzAnKTsKICAgICAgICAgICAgQ29yZS5Gb3JtLlZhbGlkYXRlLkRpc2FibGVWYWxpZGF0aW9uKCQoJyNDbGFzc0l0ZW0nKSk7CiAgICAgICAgICAgIC8vIGZpeCBmb3IgU2FmYXJpOiByYWNlIGNvbmRpdGlvbiB3aXRoIHN1Ym1pdCBpbiBDb3JlLkZvcm0uVmFsaWRhdGUuanMKICAgICAgICAgICAgLy8gZml4ZWQgaW4gT1RSUyAzLjAuNSwgdGhpcyBsaW5lIHJlbWFpbnMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucwogICAgICAgICAgICAkKCcjQ2xhc3NJdGVtJykucmVtb3ZlQ2xhc3MoJ1ByZXZlbnRNdWx0aXBsZVN1Ym1pdHMnKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gUmVnaXN0ZXIgcmV0dXJuIGtleS4gQnV0IG5vdCBpbiB0ZXh0YXJlYXMuCiAgICAgICAgJCgnI0NsYXNzSXRlbScpLm9mZigna2V5cHJlc3MuRmlsdGVySW5wdXQnKS5vbigna2V5cHJlc3MuRmlsdGVySW5wdXQnLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgaWYgKChFdmVudC5jaGFyQ29kZSB8fCBFdmVudC5rZXlDb2RlKSA9PT0gMTMgJiYgKCQoRXZlbnQudGFyZ2V0KS5wcm9wKCd0YWdOYW1lJykgIT09ICdURVhUQVJFQScpKSB7CiAgICAgICAgICAgICAgICAkKCcjU3VibWl0QnV0dG9uJykuY2xpY2soKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0IHx8IHt9KSk7Cg==</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.History.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgovKmVzbGludC1kaXNhYmxlIG5vLXdpbmRvdyovCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uSGlzdG9yeQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgT1RSUyBBRwogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeS4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5IaXN0b3J5ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5IaXN0b3J5CiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBwb3B1cC4KICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJ2EuTGlua1pvb21WaWV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB3aW5kb3cub3BlbmVyLkNvcmUuVUkuUG9wdXAuRmlyZVBvcHVwRXZlbnQoJ1VSTCcsIHsgVVJMOiAkKHRoaXMpLmF0dHIoJ2hyZWYnKX0pOwogICAgICAgICAgICBDb3JlLlVJLlBvcHVwLkNsb3NlUG9wdXAoKTsKICAgICAgICB9KTsKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uSGlzdG9yeSB8fCB7fSkpOwo=</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Overview.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbQogKiBAYXV0aG9yIE9UUlMgQUcKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG5hdmJhci4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldyA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKgogICAgKiBAbmFtZSBJbml0CiAgICAqIEBtZW1iZXJvZiBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uT3ZlcnZpZXcKICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIG92ZXJ2aWV3IGJlaGF2aW91cnMuCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICB2YXIgSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggICAgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01Db25maWdJdGVtU2VhcmNoJyk7CiAgICAgICAgdmFyIElUU01Db25maWdJdGVtQWN0aW9uUm93ID0gQ29yZS5Db25maWcuR2V0KCdJVFNNQ29uZmlnSXRlbUFjdGlvblJvdycpIHx8IHt9OwoKICAgICAgICAkKCcjU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTZXR0aW5ncyIpLCAnMjAlJywgJ0NlbnRlcicsIHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbCiAgICAgICAgICAgICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlN1Ym1pdCIpLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlOiAnU3VibWl0JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3M6ICdQcmltYXJ5JwogICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIGlmIChJVFNNQ29uZmlnSXRlbVNlYXJjaCkgewogICAgICAgICAgICAkKCcjSVRTTUNvbmZpZ0l0ZW1TZWFyY2gnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coCiAgICAgICAgICAgICAgICAgICAgJ0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICAgICAgICAgIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKElUU01Db25maWdJdGVtU2VhcmNoLlByb2ZpbGUpLAogICAgICAgICAgICAgICAgICAgIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKElUU01Db25maWdJdGVtU2VhcmNoLkNsYXNzSUQpCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgICQuZWFjaChJVFNNQ29uZmlnSXRlbUFjdGlvblJvdywgZnVuY3Rpb24oS2V5LCBEYXRhKSB7CiAgICAgICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5BZGRBY3Rpb25zKCQoJyNDb25maWdJdGVtSURfJyArIEtleSksIERhdGEpOwogICAgICAgIH0pOwoKICAgICAgICBJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cuSW5pdCgpOwoKICAgICAgICBDb3JlLlVJLkluaXRDaGVja2JveFNlbGVjdGlvbigkKCd0YWJsZSB0ZC5DaGVja2JveCcpKTsKCiAgICAgICAgJCgnLk1hc3RlckFjdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwogICAgfTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWdlbnQuQ29uZmlnSXRlbS5PdmVydmlldyB8fCB7fSkpOwo=</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Search.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpabnVueTo6SmF2YVNjcmlwdDo6RVNMaW50KQoKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpabnVueTo6Q29kZVN0eWxlOjpDb2RlTWFya2VyUGFja2FnZU5hbWUpCi8vIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6Wm51bnk6OkNvbW1vbjo6T3JpZ2luKQoKInVzZSBzdHJpY3QiOwoKdmFyIElUU00gPSBJVFNNIHx8IHt9OwpJVFNNLkFnZW50ID0gSVRTTS5BZ2VudCB8fCB7fTsKSVRTTS5BZ2VudC5Db25maWdJdGVtID0gSVRTTS5BZ2VudC5Db25maWdJdGVtIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgc2VhcmNoLgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaCA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgdGhlIHNlYXJjaCBzY3JlZW4uCiAgICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIElUU01Db25maWdJdGVtT3BlblNlYXJjaERpYWxvZyA9IENvcmUuQ29uZmlnLkdldCgnSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nJyk7CiAgICAgICAgaWYgKElUU01Db25maWdJdGVtT3BlblNlYXJjaERpYWxvZykgewogICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLk9wZW5TZWFyY2hEaWFsb2coCiAgICAgICAgICAgICAgICBJVFNNQ29uZmlnSXRlbU9wZW5TZWFyY2hEaWFsb2cuQWN0aW9uLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLlByb2ZpbGUpLAogICAgICAgICAgICAgICAgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoSVRTTUNvbmZpZ0l0ZW1PcGVuU2VhcmNoRGlhbG9nLkNsYXNzSUQpCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gcmVidWlsZCBhdHRyaWJ1dGUgc2VsZWN0aW9uLCBvbmx5IHNob3cgYXZhaWxhYmxlIGF0dHJpYnV0ZXMuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkID0gZnVuY3Rpb24gKCkgewoKICAgICAgICAvLyBnZXQgb3JpZ2luYWwgc2VsZWN0aW9uIHdpdGggYWxsIHBvc3NpYmxlIGZpZWxkcyBhbmQgY2xvbmUgaXQKICAgICAgICB2YXIgJEF0dHJpYnV0ZUNsb25lID0gJCgnI0F0dHJpYnV0ZU9yaWcgb3B0aW9uJykuY2xvbmUoKSwKICAgICAgICAgICAgJEF0dHJpYnV0ZVNlbGVjdGlvbiA9ICQoJyNBdHRyaWJ1dGUnKS5lbXB0eSgpLAogICAgICAgICAgICBWYWx1ZTsKCiAgICAgICAgLy8gc3RyaXAgYWxsIGFscmVhZHkgdXNlZCBhdHRyaWJ1dGVzCiAgICAgICAgJEF0dHJpYnV0ZUNsb25lLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICBWYWx1ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKCQodGhpcykuYXR0cigndmFsdWUnKSk7CiAgICAgICAgICAgIGlmICghJCgnI1NlYXJjaEluc2VydCBsYWJlbCNMYWJlbCcgKyBWYWx1ZSkubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLmFwcGVuZCgkKHRoaXMpKTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAkQXR0cmlidXRlU2VsZWN0aW9uLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJyk7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IG9mIGF0dHJpYnV0ZSB0byBhZGQuCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBhZGRzIG9uZSBhdHRyaWJ1dGUgZm9yIHNlYXJjaAogICAgICovCiAgICBUYXJnZXROUy5TZWFyY2hBdHRyaWJ1dGVBZGQgPSBmdW5jdGlvbiAoQXR0cmlidXRlKSB7CgogICAgICAgIC8vIGVzY2FwZSBwb3NzaWJsZSBjb2xvbnMgKDopIGluIGVsZW1lbnQgaWQgYmVjYXVzZSBqUXVlcnkgY2FuIG5vdCBoYW5kbGUgaXQgaW4gaWQgYXR0cmlidXRlIHNlbGVjdG9ycwogICAgICAgIEF0dHJpYnV0ZSA9IENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKEF0dHJpYnV0ZSk7CgogICAgICAgIHZhciAkTGFiZWwgPSAkKCcjU2VhcmNoQXR0cmlidXRlc0hpZGRlbiBsYWJlbCNMYWJlbCcgKyBBdHRyaWJ1dGUpLAogICAgICAgICAgICAkQ2xvbmU7CgogICAgICAgIGlmICgkTGFiZWwubGVuZ3RoKSB7CgogICAgICAgICAgICBpZiAoJExhYmVsLnBhcmVudHMoJy5maWVsZC13cmFwcGVyJykubGVuZ3RoKXsKICAgICAgICAgICAgICAgICRDbG9uZSA9ICRMYWJlbC5wYXJlbnRzKCcuZmllbGQtd3JhcHBlcicpLmNsb25lKCk7CiAgICAgICAgICAgIH1lbHNlewogICAgICAgICAgICAgICAgLy8gdXNlIG9sZCBjbG9uZSBjYWxscwogICAgICAgICAgICAgICAgJExhYmVsLnByZXYoKS5jbG9uZSgpLmFwcGVuZFRvKCcjU2VhcmNoSW5zZXJ0Jyk7CiAgICAgICAgICAgICAgICAkTGFiZWwuY2xvbmUoKS5hcHBlbmRUbygnI1NlYXJjaEluc2VydCcpOwogICAgICAgICAgICAgICAgJENsb25lID0gJExhYmVsLm5leHQoKS5jbG9uZSgpLmFwcGVuZFRvKCcjU2VhcmNoSW5zZXJ0JykKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJENsb25lLmFwcGVuZFRvKCcjU2VhcmNoSW5zZXJ0JykKCiAgICAgICAgICAgICAgICAvLyBiaW5kIGNsaWNrIGZ1bmN0aW9uIHRvIHJlbW92ZSBidXR0b24gbm93CiAgICAgICAgICAgICAgICAuZmluZCgnLlJlbW92ZUJ1dHRvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLnBhcmVudCgpOwogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSgkRWxlbWVudCk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlYnVpbGQgc2VsZWN0aW9uCiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgLy8gc2V0IGF1dG9jb21wbGV0ZSB0byBjdXN0b21lciB0eXBlIGZpZWxkcwogICAgICAgICAgICAgICAgJCgnI1NlYXJjaEluc2VydCcpLmZpbmQoJy5JVFNNQ3VzdG9tZXJTZWFyY2gnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBJbnB1dElEID0gJCh0aGlzKS5hdHRyKCdpZCcpICsgJ0F1dG9jb21wbGV0ZSc7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnSVRTTUN1c3RvbWVyU2VhcmNoJyk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdpZCcsIElucHV0SUQpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykucHJldigpLmF0dHIoJ2lkJywgSW5wdXRJRCArICdTZWxlY3RlZCcpOwoKICAgICAgICAgICAgICAgICAgICAvLyBlc2NhcGUgcG9zc2libGUgY29sb25zICg6KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNhbiBub3QgaGFuZGxlIGl0IGluIGlkIGF0dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkN1c3RvbWVyU2VhcmNoLkluaXQoJCgnIycgKyBDb3JlLkFwcC5Fc2NhcGVTZWxlY3RvcihJbnB1dElEKSkpOwoKICAgICAgICAgICAgICAgICAgICAvLyBwcmV2ZW50IGRpYWxvZyBjbG9zdXJlIHdoZW4gc2VsZWN0IGEgY3VzdG9tZXIgZnJvbSB0aGUgbGlzdAogICAgICAgICAgICAgICAgICAgICQoJ3VsLnVpLWF1dG9jb21wbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICAvLyBzZXQgYXV0b2NvbXBsZXRlIHRvIHVzZXIgdHlwZSBmaWVsZHMKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hJbnNlcnQnKS5maW5kKCcuSVRTTVVzZXJTZWFyY2gnKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICAgICAgICAgIHZhciBJbnB1dElEID0gJCh0aGlzKS5hdHRyKCdpZCcpICsgJ0F1dG9jb21wbGV0ZSc7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnSVRTTVVzZXJTZWFyY2gnKTsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ2lkJywgSW5wdXRJRCk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5wcmV2KCkuYXR0cignaWQnLCBJbnB1dElEICsgJ1NlbGVjdGVkJyk7CgogICAgICAgICAgICAgICAgICAgIC8vIGVzY2FwZSBwb3NzaWJsZSBjb2xvbnMgKDopIGluIGVsZW1lbnQgaWQgYmVjYXVzZSBqUXVlcnkgY2FuIG5vdCBoYW5kbGUgaXQgaW4gaWQgYXR0cmlidXRlIHNlbGVjdG9ycwogICAgICAgICAgICAgICAgICAgIElUU00uQWdlbnQuVXNlclNlYXJjaC5Jbml0KCAkKCcjJyArIENvcmUuQXBwLkVzY2FwZVNlbGVjdG9yKElucHV0SUQpICkgKTsKCiAgICAgICAgICAgICAgICAgICAgLy8gcHJldmVudCBkaWFsb2cgY2xvc3VyZSB3aGVuIHNlbGVjdCBhIGN1c3RvbWVyIGZyb20gdGhlIGxpc3QKICAgICAgICAgICAgICAgICAgICAkKCd1bC51aS1hdXRvY29tcGxldGUnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uKEV2ZW50KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQoKICAgICAgICBDb3JlLlVJLklucHV0RmllbGRzLkFjdGl2YXRlKCQoJyNTZWFyY2hJbnNlcnQnKSk7CgogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCBUaGUgalF1ZXJ5IG9iamVjdCBvZiB0aGUgZm9ybSAgb3IgYW55IGVsZW1lbnQKICAgICAqICAgICAgd2l0aGluIHRoaXMgZm9ybSBjaGVjay4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIHJlbW92ZSBhdHRyaWJ1dGVzIGZyb20gYW4gZWxlbWVudC4KICAgICAqLwoKICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZVJlbW92ZSA9IGZ1bmN0aW9uICgkRWxlbWVudCkgewogICAgICAgICRFbGVtZW50LnByZXYoKS5wcmV2KCkucmVtb3ZlKCk7CiAgICAgICAgJEVsZW1lbnQucHJldigpLnJlbW92ZSgpOwogICAgICAgICRFbGVtZW50LnJlbW92ZSgpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQHByaXZhdGUKICAgICAqIEBwYXJhbSB7U3RyaW5nfSBQcm9maWxlIFRoZSBwcm9maWxlIG5hbWUgdGhhdCB3aWxsIGJlIGRlbGV0ZS4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICogQGRlc2NyaXB0aW9uIERlbGV0ZSBhIHByb2ZpbGUgdmlhIGFuIGFqYXggcmVxdWVzdHMuCiAgICAgKi8KICAgIGZ1bmN0aW9uIFNlYXJjaFByb2ZpbGVEZWxldGUoUHJvZmlsZSkgewogICAgICAgIHZhciBEYXRhID0gewogICAgICAgICAgICBBY3Rpb246ICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgU3ViYWN0aW9uOiAnQUpBWFByb2ZpbGVEZWxldGUnLAogICAgICAgICAgICBQcm9maWxlOiBQcm9maWxlLAogICAgICAgICAgICBDbGFzc0lEOiAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpCiAgICAgICAgfTsKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICBEYXRhLAogICAgICAgICAgICBmdW5jdGlvbiAoKSB7fQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqIEBkZXNjcmlwdGlvbiBTaG93cyB3YWl0aW5nIGRpYWxvZyB1bnRpbCBzZWFyY2ggc2NyZWVuIGlzIHJlYWR5LgogICAgICovCiAgICBmdW5jdGlvbiBTaG93V2FpdGluZ0RpYWxvZygpIHsKICAgICAgICB2YXIgQ29udGVudCA9IENvcmUuVGVtcGxhdGUuUmVuZGVyKAogICAgICAgICAgICAnQWdlbnQvSVRTTUNvcmUvTG9hZGluZ0RpYWxvZycsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNwYW5UaXRsZTogQ29yZS5Db25maWcuR2V0KCdMb2FkaW5nTXNnJykKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKAogICAgICAgICAgICBDb250ZW50LAogICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0xvYWRpbmdNc2cnKSwKICAgICAgICAgICAgJzEwcHgnLAogICAgICAgICAgICAnQ2VudGVyJywKICAgICAgICAgICAgdHJ1ZQogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSBub25lCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBzZXRzIGFsbCBzZWFyY2ggZGlhbG9nIHNldHRpbmdzCiAgICAgKi8KCiAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2cgPSBmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gaGlkZSBhZGQgdGVtcGxhdGUgYmxvY2sKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykuaGlkZSgpOwoKICAgICAgICAvLyBoaWRlIHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnBhcmVudCgpLmhpZGUoKS5wcmV2KCkuaGlkZSgpLnByZXYoKS5oaWRlKCk7CgogICAgICAgIC8vIHNlYXJjaCBwcm9maWxlIGlzIHNlbGVjdGVkCiAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgJiYgJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSAhPT0gJ2xhc3Qtc2VhcmNoJykgewoKICAgICAgICAgICAgLy8gc2hvdyBkZWxldGUgYnV0dG9uCiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlRGVsZXRlJykuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2hvdyBwcm9maWxlIGxpbmsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBc0xpbmsnKS5zaG93KCk7CgogICAgICAgICAgICAvLyBzaG93IHNhdmUgY2hhbmdlcyBpbiB0ZW1wbGF0ZSBibG9jawogICAgICAgICAgICAkKCcjU2F2ZVByb2ZpbGUnKS5wYXJlbnQoKS5zaG93KCkucHJldigpLnNob3coKS5wcmV2KCkuc2hvdygpOwoKICAgICAgICAgICAgLy8gc2V0IFNhdmVQcm9maWxlIHRvIDAKICAgICAgICAgICAgJCgnI1NhdmVQcm9maWxlJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKICAgICAgICB9CgogICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJCgnLkRpYWxvZzp2aXNpYmxlJykpOwoKICAgICAgICAvLyByZWdpc3RlciBhZGQgb2YgYXR0cmlidXRlCiAgICAgICAgJCgnI0F0dHJpYnV0ZScpLm9uKCdjaGFuZ2UnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBBdHRyaWJ1dGUgPSAkKCcjQXR0cmlidXRlJykudmFsKCk7CiAgICAgICAgICAgIFRhcmdldE5TLlNlYXJjaEF0dHJpYnV0ZUFkZChBdHRyaWJ1dGUpOwogICAgICAgICAgICBUYXJnZXROUy5BZGRpdGlvbmFsQXR0cmlidXRlU2VsZWN0aW9uUmVidWlsZCgpOwoKICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZXZlbnQgZm9yIHRyZWUgc2VsZWN0aW9uIGRpYWxvZwogICAgICAgICAgICAkKCcuU2hvd1RyZWVTZWxlY3Rpb24nKS5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgQ29yZS5VSS5UcmVlU2VsZWN0aW9uLlNob3dUcmVlU2VsZWN0aW9uKCQodGhpcykpOwogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gYWRkZWQgY2FuY2VsIGZ1bmN0aW9uIHRvIG1vZGFsCiAgICAgICAgJCgnI0NhbmNlbCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZzp2aXNpYmxlJykpOwogICAgICAgIH0pOwoKICAgICAgICAvLyByZWdpc3RlciByZXR1cm4ga2V5CiAgICAgICAgJCgnI1NlYXJjaEZvcm0nKS5vZmYoJ2tleXByZXNzLkZpbHRlcklucHV0Jykub24oJ2tleXByZXNzLkZpbHRlcklucHV0JywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIGlmICgoRXZlbnQuY2hhckNvZGUgfHwgRXZlbnQua2V5Q29kZSkgPT09IDEzKSB7CiAgICAgICAgICAgICAgICBpZiAoIUNoZWNrRm9yU2VhcmNoZWRWYWx1ZXMoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtU3VibWl0JykudHJpZ2dlcignY2xpY2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyByZWdpc3RlciBzdWJtaXQKICAgICAgICAkKCcjU2VhcmNoRm9ybVN1Ym1pdCcpLm9mZignY2xpY2suRG9TZWFyY2gnKS5vbignY2xpY2suRG9TZWFyY2gnLCBmdW5jdGlvbiAoKSB7CgogICAgICAgICAgICB2YXIgU2hvd25BdHRyaWJ1dGVzID0gW107CgogICAgICAgICAgICBpZiAoJCgnI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24sICNTZWFyY2hQcm9maWxlQWRkTmFtZScpLmlzKCc6dmlzaWJsZScpICYmICQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLnZhbCgpKSB7CiAgICAgICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEFjdGlvbicpLnRyaWdnZXIoJ2NsaWNrJyk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHJlbWVtYmVyIHNob3duIGF0dHJpYnV0ZXMKICAgICAgICAgICAgJCgnI1NlYXJjaEluc2VydCBsYWJlbCcpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cignaWQnKSkgewogICAgICAgICAgICAgICAgICAgIFNob3duQXR0cmlidXRlcy5wdXNoKCQodGhpcykuYXR0cignaWQnKSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcjU2VhcmNoRm9ybSAjU2hvd25BdHRyaWJ1dGVzJykudmFsKFNob3duQXR0cmlidXRlcy5qb2luKCc7JykpOwoKICAgICAgICAgICAgLy8gTm9ybWFsIHJlc3VsdHMgbW9kZSB3aWxsIHJldHVybiBIVE1MIGluIHRoZSBzYW1lIHdpbmRvdwogICAgICAgICAgICBpZiAoJCgnI1NlYXJjaEZvcm0gI1Jlc3VsdEZvcm0nKS52YWwoKSA9PT0gJ05vcm1hbCcpIHsKCiAgICAgICAgICAgICAgICBpZiAoIUNoZWNrRm9yU2VhcmNoZWRWYWx1ZXMoKSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcyhmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuc3VibWl0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgeyAvLyBQcmludCBhbmQgQ1NWIHNob3VsZCBvcGVuIGluIGEgbmV3IHdpbmRvdywgbm8gd2FpdGluZyBkaWFsb2cKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hGb3JtJykuYXR0cigndGFyZ2V0JywgJ1NlYXJjaFJlc3VsdFBhZ2UnKTsKICAgICAgICAgICAgICAgIGlmICghQ2hlY2tGb3JTZWFyY2hlZFZhbHVlcygpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgQ2hlY2tTZWFyY2hTdHJpbmdzRm9yU3RvcFdvcmRzKGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnI1NlYXJjaEZvcm0nKS5zdWJtaXQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgJCgnI1NlYXJjaEZvcm0nKS5hdHRyKCd0YXJnZXQnLCAnJyk7CiAgICAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgICAgICBDb3JlLkZvcm0uVmFsaWRhdGUuSW5pdCgpOwogICAgICAgIENvcmUuRm9ybS5WYWxpZGF0ZS5TZXRTdWJtaXRGdW5jdGlvbigkKCcjU2VhcmNoRm9ybScpLCBmdW5jdGlvbiAoRm9ybSkgewogICAgICAgICAgICBGb3JtLnN1Ym1pdCgpOwoKICAgICAgICAgICAgLy8gU2hvdyBvbmx5IGEgd2FpdGluZyBkaWFsb2cgZm9yIE5vcm1hbCByZXN1bHRzIG1vZGUsIGJlY2F1c2UgdGhpcyByZXN1bHQKICAgICAgICAgICAgLy8gIHdpbGwgcmV0dXJuIHRoZSBIVE1MIGluIHRoZSBzYW1lIHdpbmRvdy4KICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hGb3JtICNSZXN1bHRGb3JtJykudmFsKCkgPT09ICdOb3JtYWwnKSB7CiAgICAgICAgICAgICAgICBTaG93V2FpdGluZ0RpYWxvZygpOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CgogICAgICAgIC8vIGxvYWQgcHJvZmlsZQogICAgICAgICQoJyNTZWFyY2hQcm9maWxlJykuYmluZCgnY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgU2VhcmNoUHJvZmlsZSA9ICQoJyNTZWFyY2hQcm9maWxlJykudmFsKCksCiAgICAgICAgICAgICAgICBTZWFyY2hQcm9maWxlQ2xhc3NJRCA9ICQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCksCiAgICAgICAgICAgICAgICBTZWFyY2hQcm9maWxlQWN0aW9uID0gJCgnI1NlYXJjaEFjdGlvbicpLnZhbCgpOwoKICAgICAgICAgICAgVGFyZ2V0TlMuT3BlblNlYXJjaERpYWxvZyhTZWFyY2hQcm9maWxlQWN0aW9uLCBTZWFyY2hQcm9maWxlLCBTZWFyY2hQcm9maWxlQ2xhc3NJRCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gc2hvdyBhZGQgcHJvZmlsZSBibG9jayBvciBub3QKICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZU5ldycpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZEJsb2NrJykudG9nZ2xlKCk7CiAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLmZvY3VzKCk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gYWRkIG5ldyBwcm9maWxlCiAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGRBY3Rpb24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFByb2ZpbGVOYW1lLCAkRWxlbWVudDE7CgogICAgICAgICAgICAvLyBnZXQgbmFtZQogICAgICAgICAgICBQcm9maWxlTmFtZSA9ICQoJyNTZWFyY2hQcm9maWxlQWRkTmFtZScpLnZhbCgpOwoKICAgICAgICAgICAgLy8gY2hlY2sgbmFtZQogICAgICAgICAgICBpZiAoIVByb2ZpbGVOYW1lLmxlbmd0aCB8fCBQcm9maWxlTmFtZS5sZW5ndGggPCAyKSB7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIGFkZCBuYW1lIHRvIHByb2ZpbGUgc2VsZWN0aW9uCiAgICAgICAgICAgICRFbGVtZW50MSA9ICQoJyNTZWFyY2hQcm9maWxlJykuY2hpbGRyZW4oKS5maXJzdCgpLmNsb25lKCk7CiAgICAgICAgICAgICRFbGVtZW50MS50ZXh0KFByb2ZpbGVOYW1lKTsKICAgICAgICAgICAgJEVsZW1lbnQxLmF0dHIoJ3ZhbHVlJywgUHJvZmlsZU5hbWUpOwogICAgICAgICAgICAkRWxlbWVudDEucHJvcCgnc2VsZWN0ZWQnLCB0cnVlKTsKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGUnKS5hcHBlbmQoJEVsZW1lbnQxKS50cmlnZ2VyKCdyZWRyYXcuSW5wdXRGaWVsZCcpOwoKICAgICAgICAgICAgLy8gc2V0IGlucHV0IGJveCB0byBlbXB0eQogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFkZE5hbWUnKS52YWwoJycpOwoKICAgICAgICAgICAgLy8gaGlkZSBhZGQgdGVtcGxhdGUgYmxvY2sKICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVBZGRCbG9jaycpLmhpZGUoKTsKCiAgICAgICAgICAgIC8vIGhpZGUgc2F2ZSBjaGFuZ2VzIGluIHRlbXBsYXRlIGJsb2NrCiAgICAgICAgICAgICQoJyNTYXZlUHJvZmlsZScpLnBhcmVudCgpLmhpZGUoKS5wcmV2KCkuaGlkZSgpLnByZXYoKS5oaWRlKCk7CgogICAgICAgICAgICAvLyBzZXQgU2F2ZVByb2ZpbGUgdG8gMQogICAgICAgICAgICAkKCcjU2F2ZVByb2ZpbGUnKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7CgogICAgICAgICAgICAvLyBzaG93IGRlbGV0ZSBidXR0b24KICAgICAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVEZWxldGUnKS5zaG93KCk7CgogICAgICAgICAgICAvLyBzaG93IHByb2ZpbGUgbGluawogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFzTGluaycpLnNob3coKTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gZGlyZWN0IGxpbmsgdG8gcHJvZmlsZQogICAgICAgICQoJyNTZWFyY2hQcm9maWxlQXNMaW5rJykuYmluZCgnY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBTZWFyY2hQcm9maWxlID0gJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSwKICAgICAgICAgICAgICAgIFNlYXJjaFByb2ZpbGVBY3Rpb24gPSAkKCcjU2VhcmNoQWN0aW9uJykudmFsKCksCiAgICAgICAgICAgICAgICBDbGFzc0lEID0gJCgnI1NlYXJjaENsYXNzSUQnKS52YWwoKTsKCiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJ0FjdGlvbj0nICsgU2VhcmNoUHJvZmlsZUFjdGlvbiArCiAgICAgICAgICAgICc7U3ViYWN0aW9uPVNlYXJjaDtUYWtlTGFzdFNlYXJjaD0xO1NhdmVQcm9maWxlPTE7UHJvZmlsZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KFNlYXJjaFByb2ZpbGUpCiAgICAgICAgICAgICsgJztDbGFzc0lEPScgKyBDbGFzc0lEOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIC8vIGRlbGV0ZSBwcm9maWxlCiAgICAgICAgJCgnI1NlYXJjaFByb2ZpbGVEZWxldGUnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAgICAgICAgIC8vIHN0cmlwIGFsbCBhbHJlYWR5IHVzZWQgYXR0cmlidXRlcwogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgaWYgKCQodGhpcykuYXR0cigndmFsdWUnKSAhPT0gJ2xhc3Qtc2VhcmNoJykgewoKICAgICAgICAgICAgICAgICAgICAvLyByZWJ1aWxkIGF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoSW5zZXJ0JykudGV4dCgnJyk7CgogICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSByZW1vdGUKICAgICAgICAgICAgICAgICAgICBTZWFyY2hQcm9maWxlRGVsZXRlKCQodGhpcykudmFsKCkpOwoKICAgICAgICAgICAgICAgICAgICAvLyByZW1vdmUgbG9jYWwKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZSgpOwoKICAgICAgICAgICAgICAgICAgICAvLyBzaG93IGZ1bGx0ZXh0CiAgICAgICAgICAgICAgICAgICAgVGFyZ2V0TlMuU2VhcmNoQXR0cmlidXRlQWRkKCdGdWxsdGV4dCcpOwoKICAgICAgICAgICAgICAgICAgICAvLyByZWJ1aWxkIHNlbGVjdGlvbgogICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZGl0aW9uYWxBdHRyaWJ1dGVTZWxlY3Rpb25SZWJ1aWxkKCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0pOwogICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLnRyaWdnZXIoJ2NoYW5nZScpOwoKICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hQcm9maWxlJykudmFsKCkgJiYgJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSA9PT0gJ2xhc3Qtc2VhcmNoJykgewoKICAgICAgICAgICAgICAgIC8vIGhpZGUgZGVsZXRlIGxpbmsKICAgICAgICAgICAgICAgICQoJyNTZWFyY2hQcm9maWxlRGVsZXRlJykuaGlkZSgpOwoKICAgICAgICAgICAgICAgIC8vIHNob3cgcHJvZmlsZSBsaW5rCiAgICAgICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZUFzTGluaycpLmhpZGUoKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge1Byb2ZpbGV9IFRoZSBwcm9maWxlIHRoYXQgaXMgc2V0IHRvIHRoZSBzZWFyY2ggZGlhbG9nCiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiByZWZyZXNoIHRoZSBzZWFyY2ggZGlhbG9nIHdpdGggdGhlIHNlbGVjdGVkIHByb2ZpbGUKICAgICAqLwoKICAgIFRhcmdldE5TLkxvYWRQcm9maWxlID0gZnVuY3Rpb24gKFByb2ZpbGUpIHsKICAgICAgICB2YXIgQmFzZUxpbmsgPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJyksCiAgICAgICAgICAgIEFjdGlvbiA9ICdBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDsnLAogICAgICAgICAgICBTdWJBY3Rpb24gPSAnU3ViYWN0aW9uPUFKQVhVcGRhdGU7JywKICAgICAgICAgICAgQ2xhc3NJRCA9ICdDbGFzc0lEPScgKyAkKCcjU2VhcmNoQ2xhc3NJRCcpLnZhbCgpICsgJzsnLAogICAgICAgICAgICBTZWFyY2hQcm9maWxlID0gJ1Byb2ZpbGU9JyArIFByb2ZpbGUsCiAgICAgICAgICAgIFVSTCA9ICBCYXNlTGluayArIEFjdGlvbiArIFN1YkFjdGlvbiArIENsYXNzSUQgKyBTZWFyY2hQcm9maWxlOwoKICAgICAgICAkKCcjRGl2Q2xhc3NJRCcpLmFkZENsYXNzKCd1aS1hdXRvY29tcGxldGUtbG9hZGluZycpOwogICAgICAgIENvcmUuQUpBWC5Db250ZW50VXBkYXRlKCQoJyNBSkFYVXBkYXRlJyksIFVSTCwgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIHZhciBJVFNNU2VhcmNoUHJvZmlsZUF0dHJpYnV0ZXMgPSBDb3JlLkNvbmZpZy5HZXQoJ0lUU01TZWFyY2hQcm9maWxlQXR0cmlidXRlcycpIHx8IFtdOwogICAgICAgICAgICAkLmVhY2goSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzLCBmdW5jdGlvbihJZHgsIEF0dHJpYnV0ZSkgewogICAgICAgICAgICAgICAgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaC5TZWFyY2hBdHRyaWJ1dGVBZGQoQXR0cmlidXRlKTsKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guQWRkaXRpb25hbEF0dHJpYnV0ZVNlbGVjdGlvblJlYnVpbGQoKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBUYXJnZXROUy5TZXRTZWFyY2hEaWFsb2coJyRFbnZ7IkFjdGlvbiJ9Jyk7CiAgICAgICAgICAgICQoJyNJVFNNU2VhcmNoUHJvZmlsZScpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICAgICAgJCgnI0lUU01TZWFyY2hGaWVsZHMnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CgogICAgICAgICAgICAvLyBhZGRlZCAnbWFpbi1zZWFyY2gtY29tcG9uZW50LWJ0bnMnIGNsYXNzIHRvIENvbnRlbnRGb290ZXIKICAgICAgICAgICAgJCgnLkRpYWxvZzp2aXNpYmxlID4gLkNvbnRlbnQgPiAuQ29udGVudEZvb3RlcicpLmFkZENsYXNzKCJtYWluLXNlYXJjaC1jb21wb25lbnQtYnRucyIpOwogICAgICAgICAgICAvLyBhZGRlZCBjYW5jZWwgZnVuY3Rpb24gdG8gbW9kYWwKICAgICAgICAgICAgJCgnLkRpYWxvZzp2aXNpYmxlICNDYW5jZWwnKS5hcHBlbmRUbygkKCcuRGlhbG9nOnZpc2libGUgPiAuQ29udGVudCA+IC5Db250ZW50Rm9vdGVyJykpOwogICAgICAgICAgICAkKCcjQ2FuY2VsJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwoKICAgICAgICAgICAgJCgnLkRpYWxvZzp2aXNpYmxlICNTZWFyY2hGb3JtU3VibWl0JykuYXBwZW5kVG8oJCgnLkRpYWxvZzp2aXNpYmxlID4gLkNvbnRlbnQgPiAuQ29udGVudEZvb3RlcicpKTsKICAgICAgICAgICAgJCgnI1NlYXJjaEZvcm1TdWJtaXQnKS5yZW1vdmVDbGFzcygnSGlkZGVuJyk7CiAgICAgICAgICAgICQoJyNEaXZDbGFzc0lEJykucmVtb3ZlQ2xhc3MoJ3VpLWF1dG9jb21wbGV0ZS1sb2FkaW5nJyk7CiAgICAgICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJCgnI1NlYXJjaEZvcm0nKSk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQHByaXZhdGUKICAgICAqIEBuYW1lIENoZWNrRm9yU2VhcmNoZWRWYWx1ZXMKICAgICAqIEBtZW1iZXJvZiBDb3JlLkFnZW50LlNlYXJjaAogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcmV0dXJucyB7Qm9vbGVhbn0gRmFsc2UgaWYgbm8gdmFsdWVzIHdlcmUgZm91bmQsIHRydWUgaWYgdmFsdWVzIHdoZXJlIHRoZXJlLgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIENoZWNrcyBpZiBhbnkgdmFsdWVzIHdlcmUgZW50ZXJlZCBpbiB0aGUgc2VhcmNoLgogICAgICogICAgICBJZiBub3RoaW5nIGF0IGFsbCBleGlzdHMsIGl0IGFsZXJ0cyB3aXRoIHRyYW5zbGF0ZWQ6CiAgICAgKiAgICAgICJQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmciCiAgICAgKi8KICAgIGZ1bmN0aW9uIENoZWNrRm9yU2VhcmNoZWRWYWx1ZXMoKSB7CiAgICAgICAgLy8gbG9vcCB0aHJvdWdoIHRoZSBTZXJhY2hGb3JtIGxhYmVscwogICAgICAgIHZhciBTZWFyY2hWYWx1ZUZsYWcgPSBmYWxzZTsKICAgICAgICAkKCcjU2VhcmNoRm9ybSBsYWJlbCcpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgRWxlbWVudE5hbWUsCiAgICAgICAgICAgICAgICAkRWxlbWVudCwKICAgICAgICAgICAgICAgICRMYWJlbEVsZW1lbnQgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgJEZpZWxkRWxlbWVudCA9ICRMYWJlbEVsZW1lbnQucGFyZW50KCkubmV4dCgnLkZpZWxkJyk7CgogICAgICAgICAgICAvLyB0aG9zZSB3aXRoIElEJ3MgYXJlIHVzZWQgZm9yIHNlYXJjaGluZwogICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdpZCcpKSB7CgogICAgICAgICAgICAgICAgLy8gc3Vic3RyaW5nICJMYWJlbCIgKGUuZy4gZmlyc3QgZml2ZSBjaGFyYWN0ZXJzICkgZnJvbSB0aGUKICAgICAgICAgICAgICAgIC8vIGxhYmVsIGlkLCB1c2UgdGhlIHJlbWFpbmluZyBuYW1lIGFzIG5hbWUgc3RyaW5nIGZvciBhY2Nlc3NpbmcKICAgICAgICAgICAgICAgIC8vIHRoZSBmb3JtIGlucHV0J3MgdmFsdWUKICAgICAgICAgICAgICAgIEVsZW1lbnROYW1lID0gJCh0aGlzKS5hdHRyKCdpZCcpLnN1YnN0cmluZyg1KTsKICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCgnI1NlYXJjaEZvcm0gaW5wdXRbbmFtZT0nICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoRWxlbWVudE5hbWUpICsgJ10nKTsKCiAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGlucHV0IGVsZW1lbnQgd2l0aCB0aGUgc2VsZWN0ZWQgbmFtZQogICAgICAgICAgICAgICAgLy8gZmluZCB0aGUgbmV4dCAic2VsZWN0IiBlbGVtZW50IGFuZCB1c2UgdGhhdCBvbmUgZm9yIGNoZWNraW5nCiAgICAgICAgICAgICAgICBpZiAoISRFbGVtZW50Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50ID0gJCh0aGlzKS5wYXJlbnQoKS5uZXh0KCkuZmluZCgnc2VsZWN0Jyk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgLy8gRml4IGZvciBidWcjMTA4NDU6IG1ha2Ugc3VyZSB0aW1lIHNsb3QgZmllbGRzIHdpdGggVGltZUlucHV0Rm9ybWF0CiAgICAgICAgICAgICAgICAvLyAnSW5wdXQnIHNldCBhcmUgYmVpbmcgY29uc2lkZXJlZCBjb3JyZWN0bHksIHRvby4gQXMgdGhpcyBpcyBvbmx5CiAgICAgICAgICAgICAgICAvLyByZWxldmFudCBmb3Igc2VhcmNoIHR5cGUgJ1RpbWVTbG90Jywgd2UgY2hlY2sgZm9yIHRoZSBmaXJzdAogICAgICAgICAgICAgICAgLy8gaW5wdXQgdHlwZT10ZXh0IGVsbWVudCBpbiB0aGUgY29ycmVzcG9uZGluZyBmaWVsZCBlbGVtZW50LgogICAgICAgICAgICAgICAgLy8gQWxsIHRpbWUgZmllbGQgZWxlbWVudHMgaGF2ZSB0byBiZSBmaWxsZWQgaW4sIGJ1dCBpZiBvbmx5IG9uZQogICAgICAgICAgICAgICAgLy8gaXMgbWlzc2luZywgd2UgdHJlYXQgdGhlIHdob2xlIGZpZWxkIGFzIGludmFsaWQuCiAgICAgICAgICAgICAgICBpZiAoJEZpZWxkRWxlbWVudC5maW5kKCdpbnB1dFtuYW1lJD0iU2VhcmNoVHlwZSJdJykudmFsKCkgPT09ICdUaW1lU2xvdCcgJiYgISRGaWVsZEVsZW1lbnQuZmluZCgnc2VsZWN0JykubGVuZ3RoKSB7CiAgICAgICAgICAgICAgICAgICAgJEVsZW1lbnQgPSAkRmllbGRFbGVtZW50LmZpbmQoJ2lucHV0W3R5cGU9dGV4dF0nKS5maXJzdCgpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkRWxlbWVudC5sZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoJEVsZW1lbnQudmFsKCkgJiYgJEVsZW1lbnQudmFsKCkgIT09ICcnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFZhbHVlRmxhZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKCFTZWFyY2hWYWx1ZUZsYWcpIHsKICAgICAgICAgICBhbGVydChDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFNlYXJjaFZhbHVlRmxhZzsKICAgIH0KCiAgICAgICAgLyoqCiAgICAgKiBAcHJpdmF0ZQogICAgICogQG5hbWUgQ2hlY2tTZWFyY2hTdHJpbmdzRm9yU3RvcFdvcmRzCiAgICAgKiBAbWVtYmVyb2YgQ29yZS5BZ2VudC5TZWFyY2gKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtGdW5jdGlvbn0gQ2FsbGJhY2sgLSBmdW5jdGlvbiB0byBleGVjdXRlLCBpZiBubyBzdG9wIHdvcmRzIHdlcmUgZm91bmQuCiAgICAgKiBAZGVzY3JpcHRpb24gQ2hlY2tzIGlmIHNwZWNpZmljIHZhbHVlcyBvZiB0aGUgc2VhcmNoIGZvcm0gY29udGFpbiBzdG9wIHdvcmRzLgogICAgICogICAgICAgICAgICAgIElmIHN0b3Agd29yZHMgYXJlIHByZXNlbnQsIGEgd2FybmluZyB3aWxsIGJlIGRpc3BsYXllZC4KICAgICAqICAgICAgICAgICAgICBJZiBzdG9wIHdvcmRzIGFyZSBub3QgcHJlc2VudCwgdGhlIGdpdmVuIGNhbGxiYWNrIHdpbGwgYmUgZXhlY3V0ZWQuCiAgICAgKi8KICAgIGZ1bmN0aW9uIENoZWNrU2VhcmNoU3RyaW5nc0ZvclN0b3BXb3JkcyhDYWxsYmFjaykgewogICAgICAgIHZhciBTZWFyY2hTdHJpbmdzID0ge30sCiAgICAgICAgICAgIFNlYXJjaFN0cmluZ3NGb3VuZCA9IDAsCiAgICAgICAgICAgIFJlbGV2YW50RWxlbWVudE5hbWVzID0gewogICAgICAgICAgICAgICAgJ0Zyb20nOiAxLAogICAgICAgICAgICAgICAgJ1RvJzogMSwKICAgICAgICAgICAgICAgICdDYyc6IDEsCiAgICAgICAgICAgICAgICAnU3ViamVjdCc6IDEsCiAgICAgICAgICAgICAgICAnQm9keSc6IDEsCiAgICAgICAgICAgICAgICAnRnVsbHRleHQnOiAxCiAgICAgICAgICAgIH07CgogICAgICAgIGlmICghQ29yZS5Db25maWcuR2V0KCdDaGVja1NlYXJjaFN0cmluZ3NGb3JTdG9wV29yZHMnKSkgewogICAgICAgICAgICBDYWxsYmFjaygpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkKCcjU2VhcmNoRm9ybSBsYWJlbCcpLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgRWxlbWVudE5hbWUsCiAgICAgICAgICAgICAgICAkRWxlbWVudDsKCiAgICAgICAgICAgIC8vIHRob3NlIHdpdGggSUQncyBhcmUgdXNlZCBmb3Igc2VhcmNoaW5nCiAgICAgICAgICAgIGlmICgkKHRoaXMpLmF0dHIoJ2lkJykpIHsKCiAgICAgICAgICAgICAgICAvLyBzdWJzdHJpbmcgIkxhYmVsIiAoZS5nLiBmaXJzdCBmaXZlIGNoYXJhY3RlcnMgKSBmcm9tIHRoZQogICAgICAgICAgICAgICAgLy8gbGFiZWwgaWQsIHVzZSB0aGUgcmVtYWluaW5nIG5hbWUgYXMgbmFtZSBzdHJpbmcgZm9yIGFjY2Vzc2luZwogICAgICAgICAgICAgICAgLy8gdGhlIGZvcm0gaW5wdXQncyB2YWx1ZQogICAgICAgICAgICAgICAgRWxlbWVudE5hbWUgPSAkKHRoaXMpLmF0dHIoJ2lkJykuc3Vic3RyaW5nKDUpOwogICAgICAgICAgICAgICAgaWYgKCFSZWxldmFudEVsZW1lbnROYW1lc1tFbGVtZW50TmFtZV0pIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJEVsZW1lbnQgPSAkKCcjU2VhcmNoRm9ybSBpbnB1dFtuYW1lPScgKyBFbGVtZW50TmFtZSArICddJyk7CgogICAgICAgICAgICAgICAgaWYgKCRFbGVtZW50Lmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIGlmICgkRWxlbWVudC52YWwoKSAmJiAkRWxlbWVudC52YWwoKSAhPT0gJycpIHsKICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoU3RyaW5nc1tFbGVtZW50TmFtZV0gPSAkRWxlbWVudC52YWwoKTsKICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoU3RyaW5nc0ZvdW5kID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gQ2hlY2sgaWYgc3RvcCB3b3JkcyBhcmUgcHJlc2VudC4KICAgICAgICBpZiAoIVNlYXJjaFN0cmluZ3NGb3VuZCkgewogICAgICAgICAgICBDYWxsYmFjaygpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBBSkFYU3RvcFdvcmRDaGVjaygKICAgICAgICAgICAgU2VhcmNoU3RyaW5ncywKICAgICAgICAgICAgZnVuY3Rpb24gKEZvdW5kU3RvcFdvcmRzKSB7CiAgICAgICAgICAgICAgICBhbGVydChDb3JlLkNvbmZpZy5HZXQoJ1NlYXJjaFN0cmluZ3NDb250YWluU3RvcFdvcmRzTXNnJykgKyAiXG4iICsgRm91bmRTdG9wV29yZHMpOwogICAgICAgICAgICB9LAogICAgICAgICAgICBDYWxsYmFjawogICAgICAgICk7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7RXZlbnR9IEFjdGlvbgogICAgICogQHJldHVybiBub3RoaW5nCiAgICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gb3BlbiB0aGUgc2VhcmNoIGRpYWxvZwogICAgICovCgogICAgVGFyZ2V0TlMuT3BlblNlYXJjaERpYWxvZyA9IGZ1bmN0aW9uIChBY3Rpb24sIFByb2ZpbGUsIENsYXNzKSB7CgogICAgICAgIHZhciBSZWZlcnJlciA9IENvcmUuQ29uZmlnLkdldCgnQWN0aW9uJyksCiAgICAgICAgICAgIERhdGE7CgogICAgICAgIGlmICghQWN0aW9uKSB7CiAgICAgICAgICAgIEFjdGlvbiA9J0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnOwogICAgICAgIH0KICAgICAgICBEYXRhID0gewogICAgICAgICAgICBBY3Rpb246IEFjdGlvbiwKICAgICAgICAgICAgUmVmZXJyZXI6IFJlZmVycmVyLAogICAgICAgICAgICBQcm9maWxlOiBQcm9maWxlLAogICAgICAgICAgICBTdWJhY3Rpb246ICdBSkFYJywKICAgICAgICAgICAgQ2xhc3NJRDogQ2xhc3MKICAgICAgICB9OwoKICAgICAgICBTaG93V2FpdGluZ0RpYWxvZygpOwogICAgICAgIENvcmUuQUpBWC5GdW5jdGlvbkNhbGwoCiAgICAgICAgICAgIENvcmUuQ29uZmlnLkdldCgnQ0dJSGFuZGxlJyksCiAgICAgICAgICAgIERhdGEsCiAgICAgICAgICAgIGZ1bmN0aW9uIChIVE1MKSB7CgogICAgICAgICAgICAgICAgLy8gaWYgdGhlIHdhaXRpbmcgZGlhbG9nIHdhcyBjYW5jZWxlZCwgZG8gbm90IHNob3cgdGhlIHNlYXJjaAogICAgICAgICAgICAgICAgLy8gIGRpYWxvZyBhcyB3ZWxsCiAgICAgICAgICAgICAgICBpZiAoISQoJy5EaWFsb2c6dmlzaWJsZScpLmxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZyhIVE1MLCBDb3JlLkNvbmZpZy5HZXQoJ1NlYXJjaE1zZycpLCAnMTBweCcsICdDZW50ZXInLCB0cnVlLCBbXSwgdHJ1ZSk7CgogICAgICAgICAgICAgICAgJCgnI1NlYXJjaENsYXNzSUQnKS5vZmYoJ2NoYW5nZS5TZWFyY2hQcm9maWxlJykub24oJ2NoYW5nZS5TZWFyY2hQcm9maWxlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCkgIT09ICIiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guTG9hZFByb2ZpbGUoJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkKCcjU2VhcmNoUHJvZmlsZScpLmF0dHIoImlkIiwgIlNlYXJjaFByb2ZpbGVPbGQiKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgICAgICAgICB2YXIgQ2xhc3NTZWxlY3RlZCA9ICQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCk7CiAgICAgICAgICAgICAgICBpZiAoQ2xhc3NTZWxlY3RlZCkgewogICAgICAgICAgICAgICAgICAgIElUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guTG9hZFByb2ZpbGUoJCgnI1NlYXJjaFByb2ZpbGUnKS52YWwoKSk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgVGFyZ2V0TlMuU2V0U2VhcmNoRGlhbG9nKCk7CiAgICAgICAgICAgIH0sICdodG1sJwogICAgICAgICk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaCB8fCB7fSkpOwo=</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.UserSearch.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgoKInVzZSBzdHJpY3QiOwoKdmFyIElUU00gPSBJVFNNIHx8IHt9OwpJVFNNLkFnZW50ID0gSVRTTS5BZ2VudCB8fCB7fTsKSVRTTS5BZ2VudC5Db25maWdJdGVtID0gSVRTTS5BZ2VudC5Db25maWdJdGVtIHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgSVRTTS5BZ2VudC5Db25maWdJdGVtLlNlYXJjaAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgc2VhcmNoLgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLlVzZXJTZWFyY2ggPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0CiAgICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Vc2VyU2VhcmNoCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRWxlbWVudCAtIFRoZSBqUXVlcnkgb2JqZWN0IG9mIHRoZSBpbnB1dCBmaWVsZCB3aXRoIGF1dG9jb21wbGV0ZS4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewoKICAgICAgICB2YXIgVXNlclNlYXJjaEl0ZW1JRHMgPSBDb3JlLkNvbmZpZy5HZXQoJ1VzZXJTZWFyY2hJdGVtSURzJyksCiAgICAgICAgICAgIGk7CgogICAgICAgIGlmICh0eXBlb2YgVXNlclNlYXJjaEl0ZW1JRHMgIT09ICd1bmRlZmluZWQnICYmIEFycmF5LmlzQXJyYXkoVXNlclNlYXJjaEl0ZW1JRHMpICYmIFVzZXJTZWFyY2hJdGVtSURzLmxlbmd0aCkgewoKICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IFVzZXJTZWFyY2hJdGVtSURzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgICAgICAvLyBlc2NhcGUgcG9zc2libGUgY29sb25zICg6KSBpbiBlbGVtZW50IGlkIGJlY2F1c2UgalF1ZXJ5IGNhbiBub3QgaGFuZGxlIGl0IGluIGlkIGF0dHJpYnV0ZSBzZWxlY3RvcnMKICAgICAgICAgICAgICAgIElUU00uQWdlbnQuVXNlclNlYXJjaC5Jbml0KCQoIiMiICsgQ29yZS5BcHAuRXNjYXBlU2VsZWN0b3IoVXNlclNlYXJjaEl0ZW1JRHNbaV0pKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oSVRTTS5BZ2VudC5Db25maWdJdGVtLlVzZXJTZWFyY2ggfHwge30pKTsK</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.Agent.ConfigItem.Zoom.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbQogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtCiAqIEBhdXRob3IgT1RSUyBBRwogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gYWRkLgogKi8KSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20gPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CgogICAgLyoKICAgICogQG5hbWUgSW5pdAogICAgKiBAbWVtYmVyb2YgSVRTTS5BZ2VudC5Db25maWdJdGVtLlpvb20KICAgICogQGZ1bmN0aW9uCiAgICAqIEBkZXNjcmlwdGlvbgogICAgKiAgICAgIFRoaXMgZnVuY3Rpb24gaW5pdGlhbGl6ZXMgY29uZmlnIGl0ZW0gem9vbSBzZWN0aW9uLgogICAgKi8KICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIElUU01TaG93Q29uZmlybURpYWxvZyA9IENvcmUuQ29uZmlnLkdldCgnSVRTTVNob3dDb25maXJtRGlhbG9nJyk7CgogICAgICAgIElUU00uQWdlbnQuWm9vbS5Jbml0KENvcmUuQ29uZmlnLkdldCgnVXNlckNvbmZpZ0l0ZW1ab29tVGFibGVIZWlnaHQnKSk7CgogICAgICAgICQoJ3VsLkFjdGlvbnMgYS5Bc1BvcHVwJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBDb3JlLlVJLlBvcHVwLk9wZW5Qb3B1cCgkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ0FjdGlvbicpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5NYXN0ZXJBY3Rpb24nKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgdmFyICRNYXN0ZXJBY3Rpb25MaW5rID0gJCh0aGlzKS5maW5kKCcuTWFzdGVyQWN0aW9uTGluaycpOwogICAgICAgICAgICAvLyBvbmx5IGFjdCBpZiB0aGUgbGluayB3YXMgbm90IGNsaWNrZWQgZGlyZWN0bHkKICAgICAgICAgICAgaWYgKEV2ZW50LnRhcmdldCAhPT0gJE1hc3RlckFjdGlvbkxpbmsuZ2V0KDApKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSAkTWFzdGVyQWN0aW9uTGluay5hdHRyKCdocmVmJyk7CiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgLy8gSW5pdGlhbGl6ZSBhbGxvY2F0aW9uIGxpc3QgZm9yIGxpbmsgb2JqZWN0IHRhYmxlLgogICAgICAgIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLlNldEFsbG9jYXRpb25MaXN0KCk7CgogICAgICAgIGlmIChJVFNNU2hvd0NvbmZpcm1EaWFsb2cpIHsKICAgICAgICAgICAgJC5lYWNoKElUU01TaG93Q29uZmlybURpYWxvZywgZnVuY3Rpb24oS2V5LCBEYXRhKSB7CiAgICAgICAgICAgICAgICBJVFNNLkFnZW50LkNvbmZpcm1EaWFsb2cuQmluZENvbmZpcm1EaWFsb2coewogICAgICAgICAgICAgICAgICAgIEVsZW1lbnRJRDogICAgICAgICAgICAgICAgICBEYXRhLk1lbnVJRCwKICAgICAgICAgICAgICAgICAgICBFbGVtZW50U2VsZWN0b3I6ICAgICAgICAgICAgRGF0YS5FbGVtZW50U2VsZWN0b3IsCiAgICAgICAgICAgICAgICAgICAgRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nOiAgIERhdGEuRGlhbG9nQ29udGVudFF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIENvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nOiBEYXRhLkNvbmZpcm1lZEFjdGlvblF1ZXJ5U3RyaW5nLAogICAgICAgICAgICAgICAgICAgIERpYWxvZ1RpdGxlOiAgICAgICAgICAgICAgICBEYXRhLkRpYWxvZ1RpdGxlLAogICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0ZWRUZXh0OiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIFllczogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlllcyIpLAogICAgICAgICAgICAgICAgICAgICAgICBObzogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJObyIpLAogICAgICAgICAgICAgICAgICAgICAgICBPazogIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJPayIpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIH0pOwogICAgICAgIH0KICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uWm9vbSB8fCB7fSkpOwo=</File>
        <File Permission="660" Location="var/httpd/htdocs/js/ITSM.UI.ConfigItemActionRow.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKLy8gZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQuCi8vIC0tCgoKLy8gVE9ETzoKLy9SZW1vdmUgdGhpcyBsaW5lIGFuZCBmaXggSlNEb2MKLy8gbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpabnVueTo6SmF2YVNjcmlwdDo6RVNMaW50KQoKCiJ1c2Ugc3RyaWN0IjsKCnZhciBJVFNNID0gSVRTTSB8fCB7fTsKSVRTTS5VSSA9IElUU00uVUkgfHwge307CgovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cKICogQGRlc2NyaXB0aW9uCiAqICAgICAgQWN0aW9uIHJvdyBmdW5jdGlvbmFsaXR5CiAqIEByZXF1aXJlcwogKiAgICAgIENvcmUuSlNPTgogKiAgICAgIENvcmUuRGF0YQogKi8KSVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkpTT04nLCAnSlNPTiBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICghQ29yZS5EZWJ1Zy5DaGVja0RlcGVuZGVuY3koJ0lUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdycsICdDb3JlLkRhdGEnLCAnRGF0YSBBUEknKSkgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICB2YXIgQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnMgPSB7CiAgICAgICAgICAgICdTbWFsbCc6ICdkaXYuT3ZlcnZpZXcgdGFibGUgdGQgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJywKICAgICAgICAgICAgJ01lZGl1bSc6ICd1bC5PdmVydmlldyBpbnB1dDpjaGVja2JveFtuYW1lPUNvbmZpZ0l0ZW1JRF0nLAogICAgICAgICAgICAnTGFyZ2UnOiAndWwuT3ZlcnZpZXcgaW5wdXQ6Y2hlY2tib3hbbmFtZT1Db25maWdJdGVtSURdJwogICAgICAgIH0sCiAgICAgICAgQ29uZmlnSXRlbVZpZXc7CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwcml2YXRlCiAgICAgKiBAcGFyYW0ge09iamVjdH0gRGF0YSBUaGUgZGF0YSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQKICAgICAqIEByZXR1cm4ge3N0cmluZ30gcXVlcnkgc3RyaW5nIG9mIHRoZSBkYXRhCiAgICAgKiBAZGVzY3JpcHRpb24gQ29udmVydHMgYSBnaXZlbiBoYXNoIGludG8gYSBxdWVyeSBzdHJpbmcKICAgICAqLwogICAgZnVuY3Rpb24gU2VyaWFsaXplRGF0YShEYXRhKSB7CiAgICAgICAgdmFyIFF1ZXJ5U3RyaW5nID0gJyc7CiAgICAgICAgJC5lYWNoKERhdGEsIGZ1bmN0aW9uIChLZXksIFZhbHVlKSB7CiAgICAgICAgICAgIFF1ZXJ5U3RyaW5nICs9ICc7JyArIGVuY29kZVVSSUNvbXBvbmVudChLZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KFZhbHVlKTsKICAgICAgICB9KTsKICAgICAgICByZXR1cm4gUXVlcnlTdHJpbmc7CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9ucyBhZGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSB2YWxpZCBhY3Rpb24gb2YgYW4gZWxlbWVudCB0byB0aGUgZWxlbWVudC4KICAgICAqICAgICAgVGhlc2UgaW5mb3JtYXRpb24gYXJlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGFjdGlvbiByb3cgaW5kaXZpZHVhbGx5IGZvciB0aGlzIGVsZW1lbnQuCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEVsZW1lbnQKICAgICAqICAgICAgVGhlIGVsZW1lbnQgZm9yIHdoaWNoIHRoZSBkYXRhIGlzIHN0b3JlZAogICAgICogQHBhcmFtIHtTdHJpbmd9IEpTT05TdHJpbmcKICAgICAqICAgICAgVGhlIEpTT04gc3RyaW5nIHdoaWNoIGNvbnRhaW5zIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdmFsaWQgYWN0aW9ucyBvZiB0aGUgZWxlbWVudCAoZ2VuZXJhdGVkIGJ5IFBlcmwgbW9kdWxlKQogICAgICogICAgICBDb3VsZCBhbHNvIGJlIGFuIGphdmFzY3JpcHQgb2JqZWN0IGRpcmVjdGx5CiAgICAgKiBAcmV0dXJuIG5vdGhpbmcKICAgICAqLwogICAgVGFyZ2V0TlMuQWRkQWN0aW9ucyA9IGZ1bmN0aW9uICgkRWxlbWVudCwgSlNPTlN0cmluZykgewogICAgICAgIHZhciBBY3Rpb25zOwogICAgICAgIC8vIFRoZSBlbGVtZW50IG9mIHRoZSBnaXZlbiBJRCBtdXN0IGV4aXN0LCBKU09OU3RyaW5nIG11c3Qgbm90IGJlIGVtcHR5CiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCRFbGVtZW50KSkgewogICAgICAgICAgICBpZiAodHlwZW9mIEpTT05TdHJpbmcgPT09ICdTdHJpbmcnKSB7CiAgICAgICAgICAgICAgICBBY3Rpb25zID0gQ29yZS5KU09OLlBhcnNlKEpTT05TdHJpbmcpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQWN0aW9ucyA9IEpTT05TdHJpbmc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIHNhdmUgYWN0aW9uIGRhdGEgdG8gdGhlIGdpdmVuIGVsZW1lbnQKICAgICAgICAgICAgQ29yZS5EYXRhLlNldCgkRWxlbWVudCwgJ0FjdGlvbnMnLCBBY3Rpb25zKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvcmUuRGVidWcuTG9nKCdFbGVtZW50IGRvZXMgbm90IGV4aXN0IG9yIG5vIHZhbGlkIGRhdGEgc3RydWN0dXJlIHBhc3NlZC4nKTsKICAgICAgICB9CiAgICB9OwoKICAgIC8qKgogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb24gY2xpY2sgb24gdGhlIGNoZWNrYm94IG9mIGFuIENvbmZpZ0l0ZW0gZWxlbWVudCBhbmQgdXBkYXRlcyB0aGUgYWN0aW9uIHJvdyBmb3IgdGhpcyBlbGVtZW50LgogICAgICogQHBhcmFtIHtqUXVlcnlPYmplY3R9ICRDbGlja2VkRWxlbWVudAogICAgICogICAgICBqUXVlcnlPYmplY3Qgb2YgdGhlIGNsaWNrZWQgZWxlbWVudCAobm9ybWFsbHkgJCh0aGlzKSkKICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSBDaGVja2JveGVzCiAgICAgKiAgICAgIGpRdWVyeU9iamVjdCBvZiB0aGUgY2hlY2tib3hlcyBvZiB0aGUgZGlmZmVyZW50IENvbmZpZ0l0ZW1zCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEFjdGlvblJvdwogICAgICogICAgICBUaGUgalF1ZXJ5T2JqZWN0IG9mIHRoZSBBY3Rpb25Sb3cgd3JhcHBlciAobm9ybWFsbHkgdGhlIDx1bD4tRWxlbWVudCkKICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5VcGRhdGVBY3Rpb25Sb3cgPSBmdW5jdGlvbiAoJENsaWNrZWRFbGVtZW50LCAkQ2hlY2tib3hlcywgJEFjdGlvblJvdykgewogICAgICAgIHZhciBDb25maWdJdGVtQWN0aW9uRGF0YSwKICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudDsKCiAgICAgICAgLy8gQ2hlY2ssIGlmIG9uZSBvciBtb3JlIGl0ZW1zIGFyZSBzZWxlY3RlZAogICAgICAgICRDaGVja2JveGVzID0gJENoZWNrYm94ZXMuZmlsdGVyKCc6Y2hlY2tlZCcpOwogICAgICAgIC8vIE5vIGNoZWNrYm94IGlzIHNlbGVjdGVkCiAgICAgICAgaWYgKCEkQ2hlY2tib3hlcy5sZW5ndGgpIHsKICAgICAgICAgICAgLy8gUmVtb3ZlIGFjdGlvbnMgYW5kIGRlYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdwogICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykuZmlsdGVyKCc6bm90KC5CdWxrKScpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAuZW5kKCkuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5hZGRDbGFzcygnSW5hY3RpdmUnKQogICAgICAgICAgICAgICAgLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgICAgICAvLyBFeGFjdGx5IG9uZSBjaGVja2JveCBpcyBzZWxlY3RlZAogICAgICAgIGVsc2UgaWYgKCRDaGVja2JveGVzLmxlbmd0aCA9PT0gMSAmJiAhJCgnI1NlbGVjdEFsbENvbmZpZ0l0ZW1zJykuaXMoJzpjaGVja2VkJykpIHsKICAgICAgICAgICAgLy8gVXBkYXRlIGFjdGlvbnMgYW5kIGFjdGl2YXRlIGJ1bGsgYWN0aW9uCiAgICAgICAgICAgICRBY3Rpb25Sb3cuZmluZCgnI0NvbmZpZ0l0ZW1CdWxrQWN0aW9uJykucmVtb3ZlQ2xhc3MoJ0luYWN0aXZlJyk7CgogICAgICAgICAgICAvLyBGaW5kIHRoZSBlbGVtZW50IHdoaWNoIGlzIGFjdGl2ZSAoaXQgbXVzdCBub3QgYmUgdGhlIGNsaWNrZWQgZWxlbWVudCEpCiAgICAgICAgICAgIC8vIGFuZCBnZXQgdGhlIGRhdGEKICAgICAgICAgICAgQ29uZmlnSXRlbUFjdGlvbkRhdGEgPSBDb3JlLkRhdGEuR2V0KCRDaGVja2JveGVzLmNsb3Nlc3QoJ2xpLCB0cicpLCAnQWN0aW9ucycpOwogICAgICAgICAgICBpZiAodHlwZW9mIENvbmZpZ0l0ZW1BY3Rpb25EYXRhICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgJC5lYWNoKENvbmZpZ0l0ZW1BY3Rpb25EYXRhLCBmdW5jdGlvbiAoSW5kZXgsIFZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLkhUTUwpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJChWYWx1ZS5IVE1MKS5hdHRyKCdpZCcsIFZhbHVlLklEKS5hcHBlbmRUbygkQWN0aW9uUm93KTsKICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudCA9ICRBY3Rpb25Sb3cuZmluZCgnIycgKyBWYWx1ZS5JRCkuZmluZCgnYScpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIFZhbHVlLlRhcmdldCA9PT0gJ3VuZGVmaW5lZCcgfHwgVmFsdWUuVGFyZ2V0ID09PSAiIikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5hdHRyKCdocmVmJywgVmFsdWUuTGluayk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlLlBvcHVwVHlwZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aW9uUm93RWxlbWVudC5vbignY2xpY2suUG9wdXAnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5Qb3B1cC5PcGVuUG9wdXAoVmFsdWUuTGluaywgVmFsdWUuUG9wdXBUeXBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBBcHBseSB0aGUgTGFzdCBjbGFzcyB0byB0aGUgcmlnaHQgZWxlbWVudAogICAgICAgICAgICAkQWN0aW9uUm93CiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgICAgICAvLyBUd28gb3JlIG1vcmUgY2hlY2tib3hlcyBzZWxlY3RlZAogICAgICAgIGVsc2UgewogICAgICAgICAgICAvLyBSZW1vdmUgYWN0aW9ucyBhbmQgYWN0aXZhdGUgYnVsayBhY3Rpb24KICAgICAgICAgICAgJEFjdGlvblJvdwogICAgICAgICAgICAgICAgLmZpbmQoJ2xpJykuZmlsdGVyKCc6bm90KC5CdWxrKScpLnJlbW92ZSgpCiAgICAgICAgICAgICAgICAuZW5kKCkuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCcjQ29uZmlnSXRlbUJ1bGtBY3Rpb24nKS5yZW1vdmVDbGFzcygnSW5hY3RpdmUnKQogICAgICAgICAgICAgICAgLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnbGkuTGFzdCcpLnJlbW92ZUNsYXNzKCdMYXN0JykKICAgICAgICAgICAgICAgIC5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2xpOmxhc3QnKS5hZGRDbGFzcygnTGFzdCcpOwogICAgICAgIH0KICAgIH07CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBjb21wbGV0ZSBBY3Rpb25Sb3cgZnVuY3Rpb25hbGl0eSBhbmQgYmluZHMgYWxsIGNsaWNrIGV2ZW50cy4KICAgICAqIEByZXR1cm4gbm90aGluZwogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIC8vIEdldCB1c2VkIENvbmZpZ0l0ZW0gdmlldyBtb2RlCiAgICAgICAgaWYgKCQoJyNDb25maWdJdGVtT3ZlcnZpZXdNZWRpdW0nKS5sZW5ndGgpIHsKICAgICAgICAgICAgQ29uZmlnSXRlbVZpZXcgPSAnTWVkaXVtJzsKICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoJCgnI0NvbmZpZ0l0ZW1PdmVydmlld0xhcmdlJykubGVuZ3RoKSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ0xhcmdlJzsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1WaWV3ID0gJ1NtYWxsJzsKICAgICAgICB9CgogICAgICAgICQoJyNTZWxlY3RBbGxDb25maWdJdGVtcycpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgdmFyIFN0YXR1cyA9ICQodGhpcykucHJvcCgnY2hlY2tlZCcpOwogICAgICAgICAgICAkKENvbmZpZ0l0ZW1FbGVtZW50U2VsZWN0b3JzW0NvbmZpZ0l0ZW1WaWV3XSkucHJvcCgnY2hlY2tlZCcsIFN0YXR1cykudHJpZ2dlckhhbmRsZXIoJ2NsaWNrJyk7CiAgICAgICAgfSk7CgogICAgICAgICQoQ29uZmlnSXRlbUVsZW1lbnRTZWxlY3RvcnNbQ29uZmlnSXRlbVZpZXddKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIElUU00uVUkuQ29uZmlnSXRlbUFjdGlvblJvdy5VcGRhdGVBY3Rpb25Sb3coJCh0aGlzKSwgJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10pLCAkKCdkaXYuT3ZlcnZpZXdBY3Rpb25zIHVsLkFjdGlvbnMnKSk7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNDb25maWdJdGVtQnVsa0FjdGlvbiBhJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICB2YXIgJEVsZW1lbnQgPSAkKHRoaXMpLAogICAgICAgICAgICAgICAgJFNlbGVjdGVkQ29uZmlnSXRlbXMsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURQYXJhbWV0ZXIgPSAiQ29uZmlnSXRlbUlEPSIsCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSURzID0gIiIsCiAgICAgICAgICAgICAgICBVUkw7CiAgICAgICAgICAgIGlmICgkRWxlbWVudC5wYXJlbnQoJ2xpJykuaGFzQ2xhc3MoJ0luYWN0aXZlJykpIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zID0gJChDb25maWdJdGVtRWxlbWVudFNlbGVjdG9yc1tDb25maWdJdGVtVmlld10gKyAnOmNoZWNrZWQnKTsKICAgICAgICAgICAgICAgICRTZWxlY3RlZENvbmZpZ0l0ZW1zLmVhY2goZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRHMgKz0gQ29uZmlnSXRlbUlEUGFyYW1ldGVyICsgJCh0aGlzKS52YWwoKSArICI7IjsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgVVJMID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtQnVsazsiICsgQ29uZmlnSXRlbUlEczsKICAgICAgICAgICAgICAgIFVSTCArPSBTZXJpYWxpemVEYXRhKENvcmUuQXBwLkdldFNlc3Npb25JbmZvcm1hdGlvbigpKTsKICAgICAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwKFVSTCwgJ0NvbmZpZ0l0ZW1BY3Rpb24nKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIHJldHVybiBUYXJnZXROUzsKfShJVFNNLlVJLkNvbmZpZ0l0ZW1BY3Rpb25Sb3cgfHwge30pKTsK</File>
        <File Permission="660" Location="var/httpd/htdocs/js/Znuny.DynamicField.ConfigItem.js" Encode="Base64">Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwovLyAtLQovLyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQovLyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgWm51bnkgPSBabnVueSB8fCB7fTsKdmFyIENvcmUgPSBDb3JlIHx8IHt9OwovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBabnVueS5EeW5hbWljRmllbGQuQ29uZmlnSXRlbQogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBmdW5jdGlvbnMgZm9yIER5bmFtaWNGaWVsZENvbmZpZ0l0ZW0uCiAqLwpabnVueS5EeW5hbWljRmllbGQuQ29uZmlnSXRlbSA9IChmdW5jdGlvbiAoVGFyZ2V0TlMpIHsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXRBZGRpdGlvbmFsREZTdG9yYWdlCiAgICAgKiBAbWVtYmVyb2YgWm51bnkuRHluYW1pY0ZpZWxkLkNvbmZpZ0l0ZW0uSW5pdEFkZGl0aW9uYWxERlN0b3JhZ2UKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IER5bmFtaWNGaWVsZE5hbWUgLSBOYW1lIG9mIGR5bmFtaWMgZmllbGQgd2hpY2ggY29udGFpbnMgdGhlIGNvbmZpZyBpdGVtIHNlbGVjdGlvbi4KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBJbml0aWFsaXplcyBhZGRpdGlvbmFsIGR5bmFtaWMgZmllbGQgc3RvcmFnZSBmb3Igc2VsZWN0aW9uIG9mIGNvbmZpZyBpdGVtcy4KICAgICAqLwoKICAgIFRhcmdldE5TLkluaXRBZGRpdGlvbmFsREZTdG9yYWdlID0gZnVuY3Rpb24gKER5bmFtaWNGaWVsZE5hbWUpIHsKICAgICAgICAkKCcjRHluYW1pY0ZpZWxkXycgKyBEeW5hbWljRmllbGROYW1lKS5vbignY2hhbmdlJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIEZpbGxBZGRpdGlvbmFsRHluYW1pY0ZpZWxkcyhEeW5hbWljRmllbGROYW1lKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvLyBUT0RPOiB3ZSBzaG91bGQgdXNlIHRoZSBzYW1lIG5hbWluZyBsaWtlIERGLUxEQVAgKEF1dG9GaWxsKSBvciBzdGFuZGFyZGl6ZSB0aGVzZQogICAgZnVuY3Rpb24gRmlsbEFkZGl0aW9uYWxEeW5hbWljRmllbGRzKFNvdXJjZUR5bmFtaWNGaWVsZE5hbWUpIHsKICAgICAgICB2YXIgVVJMICA9IENvcmUuQ29uZmlnLkdldCgnQmFzZWxpbmsnKSwKICAgICAgICAgICAgU2VsZWN0ZWRDb25maWdJdGVtSURzLAogICAgICAgICAgICBEYXRhID0gewogICAgICAgICAgICAgICAgQWN0aW9uOiAgICAgICAgICAgICAgICAgJ0FKQVhEeW5hbWljRmllbGRDb25maWdJdGVtJywKICAgICAgICAgICAgICAgIFN1YmFjdGlvbjogICAgICAgICAgICAgICdHZXRBZGRpdGlvbmFsREZTdG9yYWdlRGF0YScsCiAgICAgICAgICAgICAgICBTb3VyY2VEeW5hbWljRmllbGROYW1lOiBTb3VyY2VEeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICB9OwoKICAgICAgICAvLyBTdXBwb3J0IHNpbmdsZSBhbmQgbXVsdGkgc2VsZWN0LgogICAgICAgIFNlbGVjdGVkQ29uZmlnSXRlbUlEcyA9IFpudW55LkZvcm0uSW5wdXQuR2V0KCdEeW5hbWljRmllbGRfJyArIFNvdXJjZUR5bmFtaWNGaWVsZE5hbWUpOwogICAgICAgIGlmICh0eXBlb2YoU2VsZWN0ZWRDb25maWdJdGVtSURzKSA9PT0gJ3N0cmluZycpIHsKICAgICAgICAgICAgU2VsZWN0ZWRDb25maWdJdGVtSURzID0gW1NlbGVjdGVkQ29uZmlnSXRlbUlEc107CiAgICAgICAgfQogICAgICAgIERhdGFbJ1NlbGVjdGVkQ29uZmlnSXRlbUlEcyddID0gU2VsZWN0ZWRDb25maWdJdGVtSURzOwoKICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICBVUkwsCiAgICAgICAgICAgIERhdGEsCiAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgaWYgKCFSZXNwb25zZSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkLmVhY2goUmVzcG9uc2UsIGZ1bmN0aW9uKERlc3RpbmF0aW9uRHluYW1pY0ZpZWxkTmFtZSwgVmFsdWUpIHsKICAgICAgICAgICAgICAgICAgICB2YXIgRmllbGRJRCAgID0gWm51bnkuRm9ybS5JbnB1dC5GaWVsZElEKCdEeW5hbWljRmllbGRfJyArIERlc3RpbmF0aW9uRHluYW1pY0ZpZWxkTmFtZSksCiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkVHlwZSA9IFpudW55LkZvcm0uSW5wdXQuVHlwZShGaWVsZElEKSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZVRpbWVQYXJ0czsKCiAgICAgICAgICAgICAgICAgICAgaWYgKFZhbHVlICYmIChGaWVsZFR5cGUgPT0gJ0R5bmFtaWNGaWVsZF9EYXRlJyB8fCBGaWVsZFR5cGUgPT0gJ0R5bmFtaWNGaWVsZF9EYXRlVGltZScpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIERhdGVUaW1lUGFydHMgPSBWYWx1ZS5tYXRjaCgvXihcZHs0fSktKFxkezJ9KS0oXGR7Mn0pKCAoXGR7Mn0pOihcZHsyfSk6KFxkezJ9KSk/JC8pOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoRGF0ZVRpbWVQYXJ0cy5sZW5ndGggIT0gOCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllYXI6ICAgcGFyc2VJbnQoRGF0ZVRpbWVQYXJ0c1sxXSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTW9udGg6ICBwYXJzZUludChEYXRlVGltZVBhcnRzWzJdLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXk6ICAgIHBhcnNlSW50KERhdGVUaW1lUGFydHNbM10sIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhvdXI6ICAgcGFyc2VJbnQoRGF0ZVRpbWVQYXJ0c1s1XSwgMTApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWludXRlOiBwYXJzZUludChEYXRlVGltZVBhcnRzWzZdLCAxMCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VkOiAgIHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBabnVueS5Gb3JtLklucHV0LlNldCgKICAgICAgICAgICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF8nICsgRGVzdGluYXRpb25EeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZQogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KFpudW55LkR5bmFtaWNGaWVsZC5Db25maWdJdGVtIHx8IHt9KSk7Cg==</File>
        <File Permission="660" Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.CustomerCIsWidget.css" Encode="Base64">LyoKQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgoqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVtCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKCSNBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQgLkhlYWRlci5IaWRkZW4gewoJCWRpc3BsYXk6IG5vbmU7Cgl9CgoJI0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldCA+IC5XaWRnZXRJc0xvYWRpbmcgewoJCWJvcmRlcjogdW5zZXQ7CgkJbWFyZ2luLWJvdHRvbTogMHB4OwoJfQoKfSAvKiBlbmQgQG1lZGlhICovCg==</File>
        <File Permission="660" Location="var/httpd/htdocs/skins/Agent/default/css/ITSM.Agent.ConfigItem.Edit.css" Encode="Base64">LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjEgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgoqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgSVRTTSBDb25maWdJdGVuCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKCiAuRmllbGQgYnV0dG9uLkRpc2FibGVWYWxpZGF0aW9uICB7Cgl6LWluZGV4OiAwOwp9Cgp9IC8qIGVuZCBAbWVkaWEgKi8K</File>
        <File Permission="660" Location="var/packagesetup/ITSMConfigurationManagement.pm" Encode="Base64">IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIxIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDIxIFpudW55IEdtYkgsIGh0dHBzOi8vem51bnkub3JnLwojIC0tCiMgVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKIyB0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKIyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KIyAtLQoKcGFja2FnZSB2YXI6OnBhY2thZ2VzZXR1cDo6SVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50OyAgICAjIyBubyBjcml0aWMKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6Ok91dHB1dDo6VGVtcGxhdGU6OlByb3ZpZGVyOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpJVFNNOjpDb25maWdpdGVtOjpEZWZpbml0aW9uUGVybDJZQU1MJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VmFsaWQnLAopOwoKPWhlYWQxIE5BTUUKCnZhcjo6cGFja2FnZXNldHVwOjpJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgLSBjb2RlIHRvIGV4ZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uCgo9aGVhZDEgREVTQ1JJUFRJT04KCkZ1bmN0aW9ucyBmb3IgaW5zdGFsbGluZyB0aGUgSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IHBhY2thZ2UuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQ29kZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ3Zhcjo6cGFja2FnZXNldHVwOjpJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBGb3JjZSBhIHJlbG9hZCBvZiBaWlpBdXRvLnBtIGFuZCBaWlpBQXV0by5wbSB0byBnZXQgdGhlIGZyZXNoIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgogICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJUlOQyApIHsKICAgICAgICBpZiAoICRNb2R1bGUgPX4gbS9aWlpBQT91dG9cLnBtJC8gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSU5DeyRNb2R1bGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIENyZWF0ZSBjb21tb24gb2JqZWN0cyB3aXRoIGZyZXNoIGRlZmF1bHQgY29uZmlnLgogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKCk7CgogICAgIyBkZWZpbmUgVXNlcklEIHBhcmFtZXRlciBmb3IgdGhlIGNvbnN0cnVjdG9yIG9mIHRoZSBzdGF0cyBvYmplY3QKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZGVmaW5lIGZpbGUgcHJlZml4IGZvciBzdGF0cwogICAgJFNlbGYtPntGaWxlUHJlZml4fSA9ICdJVFNNU3RhdHMnOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIENvZGVJbnN0YWxsKCkKCnJ1biB0aGUgY29kZSBpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVJbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZUluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFkZCB0aGUgZ3JvdXAgaXRzbS1jb25maWdpdGVtCiAgICAkU2VsZi0+X0dyb3VwQWRkKAogICAgICAgIE5hbWUgICAgICAgID0+ICdpdHNtLWNvbmZpZ2l0ZW0nLAogICAgICAgIERlc2NyaXB0aW9uID0+ICdHcm91cCBmb3IgSVRTTSBDb25maWdJdGVtIG1hc2sgYWNjZXNzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJywKICAgICk7CgogICAgIyBpbnN0YWxsIGNvbmZpZ3VyYXRpb24gaXRlbSBkZWZpbml0aW9ucwogICAgJFNlbGYtPl9BZGRDb25maWdJdGVtRGVmaW5pdGlvbnMoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgbGFzdF92ZXJzaW9uX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgaW5jaV9zdGF0ZV9pZCByb3dzIGluIEM8Y29uZmlnaXRlbV92ZXJzaW9uPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCiAgICAjIGZpbGwgdXAgZW1wdHkgQzxjdXJfZGVwbF9zdGF0ZV9pZD4gb3IgQzxjdXJfaW5jaV9zdGF0ZV9pZD4gcm93cyBpbiBDPGNvbmZpZ2l0ZW0+IHRhYmxlCiAgICAkU2VsZi0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKICAgICMgdXBkYXRlIER5bmFtaWNGaWVsZENvbmZpZwogICAgJFNlbGYtPl9VcGRhdGVEeW5hbWljRmllbGRDb25maWdJdGVtTGlua1R5cGUoKTsKICAgICRTZWxmLT5fVXBkYXRlRHluYW1pY0ZpZWxkQ29uZmlnRGVwbFN0YXRlSURzKCk7CgogICAgIyBzZXQgcHJlZmVyZW5jZXMgZm9yIHNvbWUgY29uZmlndXJhdGlvbiBpdGVtcwogICAgJFNlbGYtPl9TZXRQcmVmZXJlbmNlcygpOwoKICAgICMgc2V0IGRlZmF1bHQgcGVybWlzc2lvbiBncm91cAogICAgJFNlbGYtPl9TZXREZWZhdWx0UGVybWlzc2lvbigpOwoKICAgIyBzZXQgbWlncmF0ZSB3ZWJzZXJ2aWNlIGNvbmZpZ3MgLSBJbnZva2VyVHlwZSBmcm9tIFpudW55NE9UUlNJVFNNQ29uZmlnSXRlbUludm9rZXIgdG8gSVRTTUNvbmZpZ0l0ZW1JbnZva2VyOjpHZW5lcmljCiAgICAkU2VsZi0+X01pZ3JhdGVXZWJzZXJ2aWNlQ29uZmlncygpOwoKICAgICMgaW5zdGFsbCBzdGF0cwogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyktPlN0YXRzSW5zdGFsbCgKICAgICAgICBGaWxlUHJlZml4ID0+ICRTZWxmLT57RmlsZVByZWZpeH0sCiAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgKTsKCiAgICAjIGFkZHMgdHdvIG5ldyB0aWNrZXQgaGlzdHJveSB0eXBlcyB0byB0aGUgc3lzY29uZmlnCiAgICAkU2VsZi0+X0FkZFRpY2tldEhpc3RvcnlUeXBlcygpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVJlaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgcmVpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVSZWluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlUmVpbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBhZGQgdGhlIGdyb3VwIGl0c20tY29uZmlnaXRlbQogICAgJFNlbGYtPl9Hcm91cEFkZCgKICAgICAgICBOYW1lICAgICAgICA9PiAnaXRzbS1jb25maWdpdGVtJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAnR3JvdXAgZm9yIElUU00gQ29uZmlnSXRlbSBtYXNrIGFjY2VzcyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLicsCiAgICApOwoKICAgICMgaW5zdGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gZGVmaW5pdGlvbnMKICAgICRTZWxmLT5fQWRkQ29uZmlnSXRlbURlZmluaXRpb25zKCk7CgogICAgIyBmaWxsIHVwIGVtcHR5IGxhc3RfdmVyc2lvbl9pZCByb3dzIGluIEM8Y29uZmlnaXRlbT4gdGFibGUKICAgICRTZWxmLT5fRmlsbHVwRW1wdHlMYXN0VmVyc2lvbklEKCk7CgogICAgIyBmaWxsIHVwIGVtcHR5IGluY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW1fdmVyc2lvbj4gdGFibGUKICAgICRTZWxmLT5fRmlsbHVwRW1wdHlWZXJzaW9uSW5jaWRlbnRTdGF0ZUlEKCk7CgogICAgIyBmaWxsIHVwIGVtcHR5IGN1cl9kZXBsX3N0YXRlX2lkIG9yIGN1cl9pbmNpX3N0YXRlX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUluY2lkZW50QW5kRGVwbG95bWVudFN0YXRlSUQoKTsKCiAgICAjIHVwZGF0ZSBEeW5hbWljRmllbGRDb25maWcKICAgICRTZWxmLT5fVXBkYXRlRHluYW1pY0ZpZWxkQ29uZmlnSXRlbUxpbmtUeXBlKCk7CiAgICAkU2VsZi0+X1VwZGF0ZUR5bmFtaWNGaWVsZENvbmZpZ0RlcGxTdGF0ZUlEcygpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBzb21lIGNvbmZpZ3VyYXRpb24gaXRlbXMKICAgICMgSXNzdWUgNTU6IERvbid0IHJlc2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMuCiAgICAjICRTZWxmLT5fU2V0UHJlZmVyZW5jZXMoKTsKCiAgICAjIHNldCBkZWZhdWx0IHBlcm1pc3Npb24gZ3JvdXAKICAgICRTZWxmLT5fU2V0RGVmYXVsdFBlcm1pc3Npb24oKTsKCiAgICMgc2V0IG1pZ3JhdGUgd2Vic2VydmljZSBjb25maWdzIC0gSW52b2tlclR5cGUgZnJvbSBabnVueTRPVFJTSVRTTUNvbmZpZ0l0ZW1JbnZva2VyIHRvIElUU01Db25maWdJdGVtSW52b2tlcjo6R2VuZXJpYwogICAgJFNlbGYtPl9NaWdyYXRlV2Vic2VydmljZUNvbmZpZ3MoKTsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgIyBhZGRzIHR3byBuZXcgdGlja2V0IGhpc3Ryb3kgdHlwZXMgdG8gdGhlIHN5c2NvbmZpZwogICAgJFNlbGYtPl9BZGRUaWNrZXRIaXN0b3J5VHlwZXMoKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfMigpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNC4wLjIuCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzIoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzIgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBtaWdyYXRlIHRoZSB0ZW1wbGF0ZSBDb250ZW50IGluIHRoZSBTeXNDb25maWcKICAgICRTZWxmLT5fTWlncmF0ZURUTEluU3lzQ29uZmlnKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzgoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDQuMC44LgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF84KCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF84IHsgICAgIyMgbm8gY3JpdGljCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZml4IGEgdHlwbyBpbiB0aGUgZ2VuZXJhbCBjYXRhbG9nCiAgICAkU2VsZi0+X0ZpeFR5cG8oKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDQuMC45MS4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzkxIHsgICAgIyMgbm8gY3JpdGljCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hhbmdlIGNvbmZpZ3VyYXRpb25zIHRvIG1hdGNoIHRoZSBuZXcgbW9kdWxlIGxvY2F0aW9uLgogICAgJFNlbGYtPl9NaWdyYXRlQ29uZmlncygpOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX1VwZGF0ZUR5bmFtaWNGaWVsZENvbmZpZ0l0ZW1MaW5rVHlwZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CgogICAgbXkgJFVzZXJJRCA9IDE7CgogICAgbXkgJERlcHJlY2F0ZWRDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1pudW55RHluYW1pY0ZpZWxkQ29uZmlnSXRlbScpIC8vIHt9OwogICAgcmV0dXJuIDEgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREZXByZWNhdGVkQ29uZmlnKTsKCiAgICAjIERvbid0IG1pZ3JhdGUgZGVwcmVjYXRlZCBTeXNDb25maWcgc2V0dGluZ3MgdG8gZHluYW1pYyBmaWVsZCBjb25maWcKICAgICMgaWYgY29uZmlnIGl0ZW0gbGlua2luZyBpcyBub3QgZW5hYmxlZC4KICAgIHJldHVybiAxIGlmICEkRGVwcmVjYXRlZENvbmZpZy0+e1RpY2tldExpbmt9OwoKICAgICMgRmV0Y2ggYWxsIGR5bmFtaWMgZmllbGRzIG9mIHR5cGUgQ29uZmlnSXRlbURyb3Bkb3duIGFuZCBDb25maWdJdGVtTXVsdGlzZWxlY3QKICAgICMgYW5kIG9iamVjdCB0eXBlICdUaWNrZXQnLCBiZWNhdXNlIGxpbmtpbmcgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRob3NlLgogICAgbXkgJER5bmFtaWNGaWVsZHMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KCk7CiAgICBteSBARHluYW1pY0ZpZWxkcyA9IGdyZXAgewogICAgICAgICRfLT57RmllbGRUeXBlfSA9fiBte1xBQ29uZmlnSXRlbShEcm9wZG93bnxNdWx0aXNlbGVjdClcen0KICAgICAgICAgICAgJiYgJF8tPntPYmplY3RUeXBlfSBlcSAnVGlja2V0JwogICAgfSBAeyREeW5hbWljRmllbGRzfTsKCiAgICByZXR1cm4gMSBpZiAhQER5bmFtaWNGaWVsZHM7CgogICAgIyBNaWdyYXRlIHNldHRpbmdzIHRvIGV4aXN0aW5nIGR5bmFtaWMgZmllbGQgY29uZmlncy4KICAgIG15ICRDb25maWdJdGVtTGlua1R5cGUgICAgPSAkRGVwcmVjYXRlZENvbmZpZy0+e0xpbmtUeXBlfSAvLyAnUmVsZXZhbnRUbyc7CiAgICBteSAkQ29uZmlnSXRlbUxpbmtTb3VyY2UgID0gJ0lUU01Db25maWdJdGVtJzsKICAgIG15ICRDb25maWdJdGVtTGlua1JlbW92YWwgPSAxOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkIChARHluYW1pY0ZpZWxkcykgewoKICAgICAgICAjIElnbm9yZSBkeW5hbWljIGZpZWxkcyB0aGF0IHNvbWVob3cgbWF5IGhhdmUgYWxyZWFkeSBzZXQgdGhlIGxpbmsgdHlwZS4KICAgICAgICAjIFRoaXMgbm9ybWFsbHkgY2Fubm90IGhhcHBlbi4KICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfS0+e0NvbmZpZ0l0ZW1MaW5rVHlwZX07CgogICAgICAgICREeW5hbWljRmllbGQtPntDb25maWd9LT57Q29uZmlnSXRlbUxpbmtUeXBlfSAgICA9ICRDb25maWdJdGVtTGlua1R5cGU7CiAgICAgICAgJER5bmFtaWNGaWVsZC0+e0NvbmZpZ30tPntDb25maWdJdGVtTGlua1NvdXJjZX0gID0gJENvbmZpZ0l0ZW1MaW5rU291cmNlOwogICAgICAgICREeW5hbWljRmllbGQtPntDb25maWd9LT57Q29uZmlnSXRlbUxpbmtSZW1vdmFsfSA9ICRDb25maWdJdGVtTGlua1JlbW92YWw7CgogICAgICAgIG15ICREeW5hbWljRmllbGRVcGRhdGVkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkVXBkYXRlKAogICAgICAgICAgICBJRCAgICAgICAgID0+ICREeW5hbWljRmllbGQtPntJRH0sCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJER5bmFtaWNGaWVsZC0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCAgICAgID0+ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgIEZpZWxkT3JkZXIgPT4gJER5bmFtaWNGaWVsZC0+e0ZpZWxkT3JkZXJ9LAogICAgICAgICAgICBGaWVsZFR5cGUgID0+ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9LAogICAgICAgICAgICBPYmplY3RUeXBlID0+ICREeW5hbWljRmllbGQtPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgQ29uZmlnICAgICA9PiAkRHluYW1pY0ZpZWxkLT57Q29uZmlnfSwKICAgICAgICAgICAgVmFsaWRJRCAgICA9PiAkRHluYW1pY0ZpZWxkLT57VmFsaWRJRH0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFVzZXJJRCwKICAgICAgICApOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRVcGRhdGVkOwoKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljIGZpZWxkICckRHluYW1pY0ZpZWxkLT57TmFtZX0nIChJRCAkRHluYW1pY0ZpZWxkLT57SUR9KSBjb3VsZCBub3QgYmUgdXBkYXRlZC4iLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfVXBkYXRlRHluYW1pY0ZpZWxkQ29uZmlnRGVwbFN0YXRlSURzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICRMb2dPYmplY3QgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgIG15ICRVc2VySUQgPSAxOwoKICAgIG15ICREZXBsU3RhdGVOYW1lQnlJRCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgRmV0Y2ggYWxsIGR5bmFtaWMgZmllbGRzIG9mIHR5cGUgQ29uZmlnSXRlbURyb3Bkb3duIGFuZCBDb25maWdJdGVtTXVsdGlzZWxlY3QKICAgICMgYW5kIG9iamVjdCB0eXBlICdUaWNrZXQnLCBiZWNhdXNlIGxpbmtpbmcgaXMgb25seSBzdXBwb3J0ZWQgZm9yIHRob3NlLgogICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZ3MgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0R2V0KCk7CiAgICBteSBARHluYW1pY0ZpZWxkQ29uZmlncyA9IGdyZXAgewogICAgICAgICRfLT57RmllbGRUeXBlfSA9fiBte1xBQ29uZmlnSXRlbShEcm9wZG93bnxNdWx0aXNlbGVjdClcen0KICAgIH0gQHskRHluYW1pY0ZpZWxkQ29uZmlnc307CgogICAgcmV0dXJuIDEgaWYgIUBEeW5hbWljRmllbGRDb25maWdzOwoKICAgIERZTkFNSUNGSUVMRENPTkZJRzoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnIChARHluYW1pY0ZpZWxkQ29uZmlncykgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEQ09ORklHIGlmICFleGlzdHMgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntEZXBsU3RhdGVJRHN9OwoKICAgICAgICBteSBARGVwbFN0YXRlcyA9IGdyZXAgeyBkZWZpbmVkICRfIH0KICAgICAgICAgICAgbWFwIHsgJERlcGxTdGF0ZU5hbWVCeUlELT57JF99IH0KICAgICAgICAgICAgQHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntEZXBsU3RhdGVJRHN9IC8vIFtdIH07CgogICAgICAgIGRlbGV0ZSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0RlcGxTdGF0ZUlEc307CiAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntEZXBsU3RhdGVzfSA9IFxARGVwbFN0YXRlczsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZ1VwZGF0ZWQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRVcGRhdGUoCiAgICAgICAgICAgIElEICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIExhYmVsICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSwKICAgICAgICAgICAgRmllbGRPcmRlciA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57RmllbGRPcmRlcn0sCiAgICAgICAgICAgIEZpZWxkVHlwZSAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9LAogICAgICAgICAgICBDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LAogICAgICAgICAgICBWYWxpZElEICAgID0+ICREeW5hbWljRmllbGRDb25maWctPntWYWxpZElEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAkVXNlcklELAogICAgICAgICk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTERDT05GSUcgaWYgJER5bmFtaWNGaWVsZENvbmZpZ1VwZGF0ZWQ7CgogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICJDb25maWcgb2YgZHluYW1pYyBmaWVsZCAnJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9JyAoSUQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0lEfSkgY291bGQgbm90IGJlIHVwZGF0ZWQuIiwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGUoKQoKcnVuIHRoZSBjb2RlIHVwZ3JhZGUgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGUoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaW5zdGFsbCBjb25maWd1cmF0aW9uIGl0ZW0gZGVmaW5pdGlvbnMKICAgICRTZWxmLT5fQWRkQ29uZmlnSXRlbURlZmluaXRpb25zKCk7CgogICAgIyBmaWxsIHVwIGVtcHR5IGxhc3RfdmVyc2lvbl9pZCByb3dzIGluIEM8Y29uZmlnaXRlbT4gdGFibGUKICAgICRTZWxmLT5fRmlsbHVwRW1wdHlMYXN0VmVyc2lvbklEKCk7CgogICAgIyBmaWxsIHVwIGVtcHR5IGluY2lfc3RhdGVfaWQgcm93cyBpbiBDPGNvbmZpZ2l0ZW1fdmVyc2lvbj4gdGFibGUKICAgICRTZWxmLT5fRmlsbHVwRW1wdHlWZXJzaW9uSW5jaWRlbnRTdGF0ZUlEKCk7CgogICAgIyBmaWxsIHVwIGVtcHR5IGN1cl9kZXBsX3N0YXRlX2lkIG9yIGN1cl9pbmNpX3N0YXRlX2lkIHJvd3MgaW4gQzxjb25maWdpdGVtPiB0YWJsZQogICAgJFNlbGYtPl9GaWxsdXBFbXB0eUluY2lkZW50QW5kRGVwbG95bWVudFN0YXRlSUQoKTsKCiAgICAjIHVwZGF0ZSBEeW5hbWljRmllbGRDb25maWcKICAgICRTZWxmLT5fVXBkYXRlRHluYW1pY0ZpZWxkQ29uZmlnSXRlbUxpbmtUeXBlKCk7CiAgICAkU2VsZi0+X1VwZGF0ZUR5bmFtaWNGaWVsZENvbmZpZ0RlcGxTdGF0ZUlEcygpOwoKICAgICMgc2V0IHByZWZlcmVuY2VzIGZvciBzb21lIGNvbmZpZ3VyYXRpb24gaXRlbXMKICAgICRTZWxmLT5fU2V0UHJlZmVyZW5jZXMoKTsKCiAgICAjIHNldCBkZWZhdWx0IHBlcm1pc3Npb24gZ3JvdXAKICAgICRTZWxmLT5fU2V0RGVmYXVsdFBlcm1pc3Npb24oKTsKCiAgICMgc2V0IG1pZ3JhdGUgd2Vic2VydmljZSBjb25maWdzIC0gSW52b2tlclR5cGUgZnJvbSBabnVueTRPVFJTSVRTTUNvbmZpZ0l0ZW1JbnZva2VyIHRvIElUU01Db25maWdJdGVtSW52b2tlcjo6R2VuZXJpYwogICAgJFNlbGYtPl9NaWdyYXRlV2Vic2VydmljZUNvbmZpZ3MoKTsKCiAgICAjIGluc3RhbGwgc3RhdHMKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpLT5TdGF0c0luc3RhbGwoCiAgICAgICAgRmlsZVByZWZpeCA9PiAkU2VsZi0+e0ZpbGVQcmVmaXh9LAogICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICk7CgogICAgIyBDb252ZXJ0IGFueSBQZXJsIGRlZmluaXRpb24gdG8gWUFNTAogICAgIyBUaGlzIGNvdWxkIGJlIG1vdmVkIHRvIGEgdmVyc2lvbiBzcGVjaWZpYwogICAgJFNlbGYtPl9Db252ZXJ0UGVybERlZmluaXRpb25zMllBTUwoKTsKCiAgICAjIGFkZHMgdHdvIG5ldyB0aWNrZXQgaGlzdHJveSB0eXBlcyB0byB0aGUgc3lzY29uZmlnCiAgICAkU2VsZi0+X0FkZFRpY2tldEhpc3RvcnlUeXBlcygpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVuaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgdW5pbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVbmluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlVW5pbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBkZWxldGUgYWxsIGxpbmtzIHdpdGggY29uZmlndXJhdGlvbiBpdGVtcwogICAgJFNlbGYtPl9MaW5rRGVsZXRlKCk7CgogICAgIyBkZWFjdGl2YXRlIHRoZSBncm91cCBDPGl0c20tY29uZmlnaXRlbT4KICAgICRTZWxmLT5fR3JvdXBEZWFjdGl2YXRlKAogICAgICAgIE5hbWUgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICApOwoKICAgICMgZGVsZXRlICdDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcycgc2VydmljZSBwcmVmZXJlbmNlcwogICAgJFNlbGYtPl9EZWxldGVTZXJ2aWNlUHJlZmVyZW5jZXMoKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9TZXRQcmVmZXJlbmNlcygpCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fU2V0UHJlZmVyZW5jZXMoKQoKPWN1dAoKc3ViIF9TZXRQcmVmZXJlbmNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVNYXAgPSAoCiAgICAgICAgRXhwaXJlZCAgICAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgIEluYWN0aXZlICAgID0+ICdwb3N0cHJvZHVjdGl2ZScsCiAgICAgICAgTWFpbnRlbmFuY2UgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgIFBpbG90ICAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBQbGFubmVkICAgICA9PiAncHJlcHJvZHVjdGl2ZScsCiAgICAgICAgUHJvZHVjdGlvbiAgPT4gJ3Byb2R1Y3RpdmUnLAogICAgICAgIFJlcGFpciAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICBSZXRpcmVkICAgICA9PiAncG9zdHByb2R1Y3RpdmUnLAogICAgICAgIFJldmlldyAgICAgID0+ICdwcm9kdWN0aXZlJywKICAgICAgICAnVGVzdC9RQScgICA9PiAncHJlcHJvZHVjdGl2ZScsCiAgICApOwoKICAgIE5BTUU6CiAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJU1hcCApIHsKICAgICAgICBteSAkSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtR2V0KAogICAgICAgICAgICBOYW1lICA9PiAkTmFtZSwKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBOQU1FIGlmICEkSXRlbTsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIEl0ZW1JRCA9PiAkSXRlbS0+e0l0ZW1JRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAnRnVuY3Rpb25hbGl0eScsCiAgICAgICAgICAgIFZhbHVlICA9PiAkTWFweyROYW1lfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX1NldERlZmF1bHRQZXJtaXNzaW9uKCkKCnNldCB0aGUgZGVmYXVsdCBncm91cCB0aGF0IGhhcyBhY2Nlc3MgcmlnaHRzCgo9Y3V0CgpzdWIgX1NldERlZmF1bHRQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGlmIGdyb3VwIGFscmVhZHkgZXhpc3RzCiAgICBteSAkR3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCAgPT4gJ2l0c20tY29uZmlnaXRlbScsCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgaWYgYSBwZXJtaXNzaW9uIGdyb3VwIGlzIGFscmVhZHkgc2V0LiBJZiBub3QsIHNldCBkZWZhdWx0IHBlcm1pc3Npb24gZ3JvdXAKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewogICAgICAgIG15ICRDbGFzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJENsYXNzLT57UGVybWlzc2lvbn0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDbGFzcy0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJ1Blcm1pc3Npb24nLAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRHcm91cElELAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9Hcm91cEFkZCgpCgphZGQgYSBncm91cAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0dyb3VwQWRkKAogICAgICAgIE5hbWUgICAgICAgID0+ICd0aGUtZ3JvdXAtbmFtZScsCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJ1RoZSBncm91cCBkZXNjcmlwdGlvbi4nLAogICAgKTsKCj1jdXQKCnN1YiBfR3JvdXBBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBORUVERUQ6CiAgICBmb3IgbXkgJE5lZWRlZCAocXcoTmFtZSBEZXNjcmlwdGlvbikpIHsKCiAgICAgICAgbmV4dCBORUVERUQgaWYgZGVmaW5lZCAkUGFyYW17JE5lZWRlZH07CgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdmFsaWQgbGlzdAogICAgbXkgJVZhbGlkTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWYWxpZCcpLT5WYWxpZExpc3QoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwogICAgbXkgJVZhbGlkTGlzdFJldmVyc2UgPSByZXZlcnNlICVWYWxpZExpc3Q7CgogICAgIyBnZXQgbGlzdCBvZiBhbGwgZ3JvdXBzCiAgICBteSAlR3JvdXBMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTGlzdCgpOwoKICAgICMgcmV2ZXJzZSB0aGUgZ3JvdXAgbGlzdCBmb3IgZWFzaWVyIGxvb2t1cAogICAgbXkgJUdyb3VwTGlzdFJldmVyc2UgPSByZXZlcnNlICVHcm91cExpc3Q7CgogICAgIyBjaGVjayBpZiBncm91cCBhbHJlYWR5IGV4aXN0cwogICAgbXkgJEdyb3VwSUQgPSAkR3JvdXBMaXN0UmV2ZXJzZXsgJFBhcmFte05hbWV9IH07CgogICAgIyByZWFjdGl2YXRlIHRoZSBncm91cAogICAgaWYgKCRHcm91cElEKSB7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZ3JvdXAgZGF0YQogICAgICAgIG15ICVHcm91cERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBHZXQoCiAgICAgICAgICAgIElEICAgICA9PiAkR3JvdXBJRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZWFjdGl2YXRlIGdyb3VwCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwVXBkYXRlKAogICAgICAgICAgICAlR3JvdXBEYXRhLAogICAgICAgICAgICBWYWxpZElEID0+ICRWYWxpZExpc3RSZXZlcnNle3ZhbGlkfSwKICAgICAgICAgICAgVXNlcklEICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgYWRkIHRoZSBncm91cAogICAgZWxzZSB7CiAgICAgICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBBZGQoCiAgICAgICAgICAgIE5hbWUgICAgPT4gJFBhcmFte05hbWV9LAogICAgICAgICAgICBDb21tZW50ID0+ICRQYXJhbXtEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkTGlzdFJldmVyc2V7dmFsaWR9LAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGxvb2t1cCB0aGUgbmV3IGdyb3VwIGlkCiAgICBteSAkTmV3R3JvdXBJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cExvb2t1cCgKICAgICAgICBHcm91cCAgPT4gJFBhcmFte05hbWV9LAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGFkZCB1c2VyIHJvb3QgdG8gdGhlIGdyb3VwCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBNZW1iZXJBZGQoCiAgICAgICAgR0lEICAgICAgICA9PiAkTmV3R3JvdXBJRCwKICAgICAgICBVSUQgICAgICAgID0+IDEsCiAgICAgICAgUGVybWlzc2lvbiA9PiB7CiAgICAgICAgICAgIHJvICAgICAgICA9PiAxLAogICAgICAgICAgICBtb3ZlX2ludG8gPT4gMSwKICAgICAgICAgICAgY3JlYXRlICAgID0+IDEsCiAgICAgICAgICAgIG93bmVyICAgICA9PiAxLAogICAgICAgICAgICBwcmlvcml0eSAgPT4gMSwKICAgICAgICAgICAgcncgICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfR3JvdXBEZWFjdGl2YXRlKCkKCmRlYWN0aXZhdGUgYSBncm91cAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0dyb3VwRGVhY3RpdmF0ZSgKICAgICAgICBOYW1lID0+ICd0aGUtZ3JvdXAtbmFtZScsCiAgICApOwoKPWN1dAoKc3ViIF9Hcm91cERlYWN0aXZhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte05hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBOYW1lIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb29rdXAgZ3JvdXAgaWQKICAgIG15ICRHcm91cElEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgIEdyb3VwID0+ICRQYXJhbXtOYW1lfSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkR3JvdXBJRDsKCiAgICAjIGdldCB2YWxpZCBsaXN0CiAgICBteSAlVmFsaWRMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZhbGlkJyktPlZhbGlkTGlzdCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICBteSAlVmFsaWRMaXN0UmV2ZXJzZSA9IHJldmVyc2UgJVZhbGlkTGlzdDsKCiAgICAjIGdldCBjdXJyZW50IGdyb3VwIGRhdGEKICAgIG15ICVHcm91cERhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+R3JvdXBHZXQoCiAgICAgICAgSUQgICAgID0+ICRHcm91cElELAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICAjIGRlYWN0aXZhdGUgZ3JvdXAKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cFVwZGF0ZSgKICAgICAgICAlR3JvdXBEYXRhLAogICAgICAgIFZhbGlkSUQgPT4gJFZhbGlkTGlzdFJldmVyc2V7aW52YWxpZH0sCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9BZGRDb25maWdJdGVtRGVmaW5pdGlvbnMoKQoKaW5zdGFsbHMgY29uZmlndXJhdGlvbiBpdGVtIGRlZmluaXRpb25zCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fQWRkQ29uZmlnSXRlbURlZmluaXRpb25zKCk7Cgo9Y3V0CgpzdWIgX0FkZENvbmZpZ0l0ZW1EZWZpbml0aW9ucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgVGhpcyBpcyBuZWVkZWQgdG8gZXh0cmFjdCB0cmFuc2xhdGFibGUgd29yZHMgZnJvbSB0aGUgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMuCiAgICBteSAlVHJhbnNsYXRpb25zID0gKAogICAgICAgIFZlbmRvciAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdWZW5kb3InKSwKICAgICAgICBNb2RlbCAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTW9kZWwnKSwKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRGVzY3JpcHRpb24nKSwKICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnVHlwZScpLAogICAgICAgIEN1c3RvbWVyQ29tcGFueSAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdDdXN0b21lciBDb21wYW55JyksCiAgICAgICAgT3duZXIgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ093bmVyJyksCiAgICAgICAgU2VyaWFsTnVtYmVyICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1NlcmlhbCBOdW1iZXInKSwKICAgICAgICBPcGVyYXRpbmdTeXN0ZW0gICAgICAgID0+IFRyYW5zbGF0YWJsZSgnT3BlcmF0aW5nIFN5c3RlbScpLAogICAgICAgIENQVSAgICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdDUFUnKSwKICAgICAgICBSYW0gICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnUmFtJyksCiAgICAgICAgSGFyZERpc2sgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0hhcmQgRGlzaycpLAogICAgICAgIENhcGFjaXR5ICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdDYXBhY2l0eScpLAogICAgICAgIEZRRE4gICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdGUUROJyksCiAgICAgICAgTmV0d29ya0FkYXB0ZXIgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05ldHdvcmsgQWRhcHRlcicpLAogICAgICAgIElQb3ZlckRIQ1AgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdJUCBvdmVyIERIQ1AnKSwKICAgICAgICBJUEFkZHJlc3MgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnSVAgQWRkcmVzcycpLAogICAgICAgIEdyYXBoaWNBZGFwdGVyICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdHcmFwaGljIEFkYXB0ZXInKSwKICAgICAgICBPdGhlckVxdWlwbWVudCAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnT3RoZXIgRXF1aXBtZW50JyksCiAgICAgICAgV2FycmFudHlFeHBpcmF0aW9uRGF0ZSA9PiBUcmFuc2xhdGFibGUoJ1dhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZScpLAogICAgICAgIEluc3RhbGxEYXRlICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdJbnN0YWxsIERhdGUnKSwKICAgICAgICBOb3RlICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTm90ZScpLAogICAgICAgIFBob25lMSAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdQaG9uZSAxJyksCiAgICAgICAgUGhvbmUyICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1Bob25lIDInKSwKICAgICAgICBGYXggICAgICAgICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRmF4JyksCiAgICAgICAgRU1haWwgICAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0UtTWFpbCcpLAogICAgICAgIEFkZHJlc3MgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBZGRyZXNzJyksCiAgICAgICAgTmV0d29ya0FkZHJlc3MgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ05ldHdvcmsgQWRkcmVzcycpLAogICAgICAgIFN1Ym5ldE1hc2sgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTdWJuZXQgTWFzaycpLAogICAgICAgIEdhdGV3YXkgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdHYXRld2F5JyksCiAgICAgICAgVmVyc2lvbiAgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1ZlcnNpb24nKSwKICAgICAgICBMaWNlbmNlVHlwZSAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnTGljZW5jZSBUeXBlJyksCiAgICAgICAgTGljZW5jZUtleSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpY2VuY2UgS2V5JyksCiAgICAgICAgUXVhbnRpdHkgICAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1F1YW50aXR5JyksCiAgICAgICAgRXhwaXJhdGlvbkRhdGUgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0V4cGlyYXRpb24gRGF0ZScpLAogICAgICAgIE1lZGlhICAgICAgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdNZWRpYScpLAogICAgKTsKCiAgICAjIENvbmZpZyBpdGVtIGRlZmluaXRpb25zLgogICAgbXkgJURlZmluaXRpb24gPSAoCiAgICAgICAgQ29tcHV0ZXIgPT4gPDwiRU9GIiwKLS0tCi0gS2V5OiBWZW5kb3IKICBOYW1lOiBWZW5kb3IKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBUZXh0CiAgICBTaXplOiA1MAogICAgTWF4TGVuZ3RoOiA1MAogICAgIyBFeGFtcGxlIGZvciBDSSBhdHRyaWJ1dGUgc3ludGF4IGNoZWNrIGZvciB0ZXh0IGFuZCB0ZXh0YXJlYSBmaWVsZHMKICAgICNSZWdFeDogXkFCQy4qCiAgICAjUmVnRXhFcnJvck1lc3NhZ2U6IFZhbHVlIG11c3Qgc3RhcnQgd2l0aCBBQkMhCgotIEtleTogTW9kZWwKICBOYW1lOiBNb2RlbAogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHQKICAgIFNpemU6IDUwCiAgICBNYXhMZW5ndGg6IDUwCgotIEtleTogRGVzY3JpcHRpb24KICBOYW1lOiBEZXNjcmlwdGlvbgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHRBcmVhCgotIEtleTogVHlwZQogIE5hbWU6IFR5cGUKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBHZW5lcmFsQ2F0YWxvZwogICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OkNvbXB1dGVyOjpUeXBlCiAgICBUcmFuc2xhdGlvbjogMQoKLSBLZXk6IEN1c3RvbWVySUQKICBOYW1lOiBDdXN0b21lciBDb21wYW55CiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogQ3VzdG9tZXJDb21wYW55CgotIEtleTogT3duZXIKICBOYW1lOiBPd25lcgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyCgotIEtleTogU2VyaWFsTnVtYmVyCiAgTmFtZTogU2VyaWFsIE51bWJlcgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHQKICAgIFNpemU6IDUwCiAgICBNYXhMZW5ndGg6IDEwMAoKLSBLZXk6IE9wZXJhdGluZ1N5c3RlbQogIE5hbWU6IE9wZXJhdGluZyBTeXN0ZW0KICBJbnB1dDoKICAgIFR5cGU6IFRleHQKICAgIFNpemU6IDUwCiAgICBNYXhMZW5ndGg6IDEwMAoKLSBLZXk6IENQVQogIE5hbWU6IENQVQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogMTAwCiAgQ291bnRNYXg6IDE2CgotIEtleTogUmFtCiAgTmFtZTogUmFtCiAgSW5wdXQ6CiAgICBUeXBlOiBUZXh0CiAgICBTaXplOiA1MAogICAgTWF4TGVuZ3RoOiAxMDAKICBDb3VudE1heDogMTAKCi0gS2V5OiBIYXJkRGlzawogIE5hbWU6IEhhcmQgRGlzawogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogMTAwCiAgQ291bnRNYXg6IDEwCiAgU3ViOgogIC0gS2V5OiBDYXBhY2l0eQogICAgTmFtZTogQ2FwYWNpdHkKICAgIElucHV0OgogICAgICBUeXBlOiBUZXh0CiAgICAgIFNpemU6IDIwCiAgICAgIE1heExlbmd0aDogMTAKCi0gS2V5OiBGUUROCiAgTmFtZTogRlFETgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHQKICAgIFNpemU6IDUwCiAgICBNYXhMZW5ndGg6IDEwMAoKLSBLZXk6IE5JQwogIE5hbWU6IE5ldHdvcmsgQWRhcHRlcgogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogMTAwCiAgICBSZXF1aXJlZDogMQogIENvdW50TWluOiAwCiAgQ291bnRNYXg6IDEwCiAgQ291bnREZWZhdWx0OiAxCiAgU3ViOgogIC0gS2V5OiBJUG92ZXJESENQCiAgICBOYW1lOiBJUCBvdmVyIERIQ1AKICAgIElucHV0OgogICAgICBUeXBlOiBHZW5lcmFsQ2F0YWxvZwogICAgICBDbGFzczogSVRTTTo6Q29uZmlnSXRlbTo6WWVzTm8KICAgICAgVHJhbnNsYXRpb246IDEKICAgICAgUmVxdWlyZWQ6IDEKICAtIEtleTogSVBBZGRyZXNzCiAgICBOYW1lOiBJUCBBZGRyZXNzCiAgICBTZWFyY2hhYmxlOiAxCiAgICBJbnB1dDoKICAgICAgVHlwZTogVGV4dAogICAgICBTaXplOiA0MAogICAgICBNYXhMZW5ndGg6IDQwCiAgICAgIFJlcXVpcmVkOiAxCiAgICBDb3VudE1pbjogMAogICAgQ291bnRNYXg6IDIwCiAgICBDb3VudERlZmF1bHQ6IDAKCi0gS2V5OiBHcmFwaGljQWRhcHRlcgogIE5hbWU6IEdyYXBoaWMgQWRhcHRlcgogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogMTAwCgotIEtleTogT3RoZXJFcXVpcG1lbnQKICBOYW1lOiBPdGhlciBFcXVpcG1lbnQKICBJbnB1dDoKICAgIFR5cGU6IFRleHRBcmVhCiAgICBSZXF1aXJlZDogMQogIENvdW50TWluOiAwCiAgQ291bnREZWZhdWx0OiAwCgotIEtleTogV2FycmFudHlFeHBpcmF0aW9uRGF0ZQogIE5hbWU6IFdhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IERhdGUKICAgIFllYXJQZXJpb2RQYXN0OiAyMAogICAgWWVhclBlcmlvZEZ1dHVyZTogMTAKCi0gS2V5OiBJbnN0YWxsRGF0ZQogIE5hbWU6IEluc3RhbGwgRGF0ZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IERhdGUKICAgIFJlcXVpcmVkOiAxCiAgICBZZWFyUGVyaW9kUGFzdDogMjAKICAgIFllYXJQZXJpb2RGdXR1cmU6IDEwCiAgQ291bnRNaW46IDAKICBDb3VudERlZmF1bHQ6IDAKCi0gS2V5OiBOb3RlCiAgTmFtZTogTm90ZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHRBcmVhCiAgICBSZXF1aXJlZDogMQogIENvdW50TWluOiAwCiAgQ291bnREZWZhdWx0OiAwCkVPRgogICAgICAgIEhhcmR3YXJlID0+IDw8IkVPRiIsCi0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKCi0gS2V5OiBNb2RlbAogIE5hbWU6IE1vZGVsCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKCi0gS2V5OiBEZXNjcmlwdGlvbgogIE5hbWU6IERlc2NyaXB0aW9uCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dEFyZWEKCi0gS2V5OiBUeXBlCiAgTmFtZTogVHlwZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IEdlbmVyYWxDYXRhbG9nCiAgICBDbGFzczogSVRTTTo6Q29uZmlnSXRlbTo6SGFyZHdhcmU6OlR5cGUKICAgIFRyYW5zbGF0aW9uOiAxCgotIEtleTogQ3VzdG9tZXJJRAogIE5hbWU6IEN1c3RvbWVyIENvbXBhbnkKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBDdXN0b21lckNvbXBhbnkKCi0gS2V5OiBPd25lcgogIE5hbWU6IE93bmVyCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogQ3VzdG9tZXIKCi0gS2V5OiBTZXJpYWxOdW1iZXIKICBOYW1lOiBTZXJpYWwgTnVtYmVyCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogMTAwCgotIEtleTogV2FycmFudHlFeHBpcmF0aW9uRGF0ZQogIE5hbWU6IFdhcnJhbnR5IEV4cGlyYXRpb24gRGF0ZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IERhdGUKICAgIFllYXJQZXJpb2RQYXN0OiAyMAogICAgWWVhclBlcmlvZEZ1dHVyZTogMTAKCi0gS2V5OiBJbnN0YWxsRGF0ZQogIE5hbWU6IEluc3RhbGwgRGF0ZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IERhdGUKICAgIFJlcXVpcmVkOiAxCiAgICBZZWFyUGVyaW9kUGFzdDogMjAKICAgIFllYXJQZXJpb2RGdXR1cmU6IDEwCiAgQ291bnRNaW46IDAKICBDb3VudE1heDogMQogIENvdW50RGVmYXVsdDogMAoKLSBLZXk6IE5vdGUKICBOYW1lOiBOb3RlCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dEFyZWEKICAgIFJlcXVpcmVkOiAxCiAgQ291bnRNaW46IDAKICBDb3VudE1heDogMQogIENvdW50RGVmYXVsdDogMApFT0YKICAgICAgICBMb2NhdGlvbiA9PiA8PCJFT0YiLAotLS0KLSBLZXk6IFR5cGUKICBOYW1lOiBUeXBlCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogR2VuZXJhbENhdGFsb2cKICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpMb2NhdGlvbjo6VHlwZQogICAgVHJhbnNsYXRpb246IDEKCi0gS2V5OiBDdXN0b21lcklECiAgTmFtZTogQ3VzdG9tZXIgQ29tcGFueQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyQ29tcGFueQoKLSBLZXk6IE93bmVyCiAgTmFtZTogT3duZXIKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBDdXN0b21lcgoKLSBLZXk6IFBob25lMQogIE5hbWU6IFBob25lIDEKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBUZXh0CiAgICBTaXplOiA1MAogICAgTWF4TGVuZ3RoOiAxMDAKCi0gS2V5OiBQaG9uZTIKICBOYW1lOiBQaG9uZSAyCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogMTAwCgotIEtleTogRmF4CiAgTmFtZTogRmF4CiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogMTAwCgotIEtleTogRS1NYWlsCiAgTmFtZTogRS1NYWlsCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogMTAwCgotIEtleTogQWRkcmVzcwogIE5hbWU6IEFkZHJlc3MKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBUZXh0QXJlYQoKLSBLZXk6IE5vdGUKICBOYW1lOiBOb3RlCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dEFyZWEKICAgIFJlcXVpcmVkOiAxCiAgQ291bnRNaW46IDAKICBDb3VudERlZmF1bHQ6IDAKRU9GCiAgICAgICAgTmV0d29yayA9PiA8PCJFT0YiLAotLS0KLSBLZXk6IERlc2NyaXB0aW9uCiAgTmFtZTogRGVzY3JpcHRpb24KICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBUZXh0QXJlYQoKLSBLZXk6IFR5cGUKICBOYW1lOiBUeXBlCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogR2VuZXJhbENhdGFsb2cKICAgIENsYXNzOiBJVFNNOjpDb25maWdJdGVtOjpOZXR3b3JrOjpUeXBlCiAgICBUcmFuc2xhdGlvbjogMQoKLSBLZXk6IEN1c3RvbWVySUQKICBOYW1lOiBDdXN0b21lciBDb21wYW55CiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogQ3VzdG9tZXJDb21wYW55CgotIEtleTogT3duZXIKICBOYW1lOiBPd25lcgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyCgotIEtleTogTmV0d29ya0FkZHJlc3MKICBOYW1lOiBOZXR3b3JrIEFkZHJlc3MKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBUZXh0CiAgICBTaXplOiAzMAogICAgTWF4TGVuZ3RoOiAyMAogICAgUmVxdWlyZWQ6IDEKICBDb3VudE1pbjogMAogIENvdW50TWF4OiAxMDAKICBDb3VudERlZmF1bHQ6IDEKICBTdWI6CiAgLSBLZXk6IFN1Ym5ldE1hc2sKICAgIE5hbWU6IFN1Ym5ldCBNYXNrCiAgICBJbnB1dDoKICAgICAgVHlwZTogVGV4dAogICAgICBTaXplOiAzMAogICAgICBNYXhMZW5ndGg6IDIwCiAgICAgIFZhbHVlRGVmYXVsdDogMjU1LjI1NS4yNTUuMAogICAgICBSZXF1aXJlZDogMQogICAgQ291bnRNaW46IDAKICAgIENvdW50TWF4OiAxCiAgICBDb3VudERlZmF1bHQ6IDAKICAtIEtleTogR2F0ZXdheQogICAgTmFtZTogR2F0ZXdheQogICAgSW5wdXQ6CiAgICAgIFR5cGU6IFRleHQKICAgICAgU2l6ZTogMzAKICAgICAgTWF4TGVuZ3RoOiAyMAogICAgICBSZXF1aXJlZDogMQogICAgQ291bnRNaW46IDAKICAgIENvdW50TWF4OiAxMAogICAgQ291bnREZWZhdWx0OiAwCgotIEtleTogTm90ZQogIE5hbWU6IE5vdGUKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBSZXF1aXJlZDogMQogICAgVHlwZTogVGV4dEFyZWEKICBDb3VudE1pbjogMAogIENvdW50TWF4OiAxCiAgQ291bnREZWZhdWx0OiAwCkVPRgogICAgICAgIFNvZnR3YXJlID0+IDw8IkVPRiIsCi0tLQotIEtleTogVmVuZG9yCiAgTmFtZTogVmVuZG9yCiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNTAKICAgIE1heExlbmd0aDogNTAKCi0gS2V5OiBWZXJzaW9uCiAgTmFtZTogVmVyc2lvbgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHQKICAgIFNpemU6IDUwCiAgICBNYXhMZW5ndGg6IDUwCgotIEtleTogRGVzY3JpcHRpb24KICBOYW1lOiBEZXNjcmlwdGlvbgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHRBcmVhCgotIEtleTogVHlwZQogIE5hbWU6IFR5cGUKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBHZW5lcmFsQ2F0YWxvZwogICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpUeXBlCiAgICBUcmFuc2xhdGlvbjogMQoKLSBLZXk6IEN1c3RvbWVySUQKICBOYW1lOiBDdXN0b21lciBDb21wYW55CiAgU2VhcmNoYWJsZTogMQogIElucHV0OgogICAgVHlwZTogQ3VzdG9tZXJDb21wYW55CgotIEtleTogT3duZXIKICBOYW1lOiBPd25lcgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IEN1c3RvbWVyCgotIEtleTogU2VyaWFsTnVtYmVyCiAgTmFtZTogU2VyaWFsIE51bWJlcgogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHQKICAgIFNpemU6IDUwCiAgICBNYXhMZW5ndGg6IDUwCgotIEtleTogTGljZW5jZVR5cGUKICBOYW1lOiBMaWNlbmNlIFR5cGUKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBHZW5lcmFsQ2F0YWxvZwogICAgQ2xhc3M6IElUU006OkNvbmZpZ0l0ZW06OlNvZnR3YXJlOjpMaWNlbmNlVHlwZQogICAgVHJhbnNsYXRpb246IDEKCi0gS2V5OiBMaWNlbmNlS2V5CiAgTmFtZTogTGljZW5jZSBLZXkKICBTZWFyY2hhYmxlOiAxCiAgSW5wdXQ6CiAgICBUeXBlOiBUZXh0CiAgICBTaXplOiA1MAogICAgTWF4TGVuZ3RoOiA1MAogICAgUmVxdWlyZWQ6IDEKICBDb3VudE1pbjogMAogIENvdW50TWF4OiAxMDAKICBDb3VudERlZmF1bHQ6IDAKICBTdWI6CiAgLSBLZXk6IFF1YW50aXR5CiAgICBOYW1lOiBRdWFudGl0eQogICAgSW5wdXQ6CiAgICAgIFR5cGU6IEludGVnZXIKICAgICAgVmFsdWVNaW46IDEKICAgICAgVmFsdWVNYXg6IDEwMDAKICAgICAgVmFsdWVEZWZhdWx0OiAxCiAgICAgIFJlcXVpcmVkOiAxCiAgICBDb3VudE1pbjogMAogICAgQ291bnRNYXg6IDEKICAgIENvdW50RGVmYXVsdDogMAogIC0gS2V5OiBFeHBpcmF0aW9uRGF0ZQogICAgTmFtZTogRXhwaXJhdGlvbiBEYXRlCiAgICBJbnB1dDoKICAgICAgVHlwZTogRGF0ZQogICAgICBSZXF1aXJlZDogMQogICAgICBZZWFyUGVyaW9kUGFzdDogMjAKICAgICAgWWVhclBlcmlvZEZ1dHVyZTogMTAKICAgIENvdW50TWluOiAwCiAgICBDb3VudE1heDogMQogICAgQ291bnREZWZhdWx0OiAwCgotIEtleTogTWVkaWEKICBOYW1lOiBNZWRpYQogIElucHV0OgogICAgVHlwZTogVGV4dAogICAgU2l6ZTogNDAKICAgIE1heExlbmd0aDogMjAKCi0gS2V5OiBOb3RlCiAgTmFtZTogTm90ZQogIFNlYXJjaGFibGU6IDEKICBJbnB1dDoKICAgIFR5cGU6IFRleHRBcmVhCiAgICBSZXF1aXJlZDogMQogIENvdW50TWluOiAwCiAgQ291bnRNYXg6IDEKICBDb3VudERlZmF1bHQ6IDAKRU9GCiAgICApOwoKICAgICMgZ2V0IGxpc3Qgb2YgaW5zdGFsbGVkIGNvbmZpZ3VyYXRpb24gaXRlbSBjbGFzc2VzCiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwogICAgbXkgJVJldmVyc2VDbGFzc0xpc3QgPSByZXZlcnNlICV7JENsYXNzTGlzdH07CgogICAgQ0xBU1NOQU1FOgogICAgZm9yIG15ICRDbGFzc05hbWUgKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAlRGVmaW5pdGlvbiApIHsKCiAgICAgICAgIyBjaGVjayBpZiBjbGFzcyBleGlzdHMKICAgICAgICBteSAkQ2xhc3NJRCA9ICRSZXZlcnNlQ2xhc3NMaXN0eyRDbGFzc05hbWV9OwoKICAgICAgICBuZXh0IENMQVNTTkFNRSBpZiAhJENsYXNzSUQ7CgogICAgICAgICMgY2hlY2sgaWYgZGVmaW5pdGlvbiBhbHJlYWR5IGV4aXN0cwogICAgICAgIG15ICREZWZpbml0aW9uTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uTGlzdCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTTkFNRSBpZiAhZGVmaW5lZCAkRGVmaW5pdGlvbkxpc3Q7CiAgICAgICAgbmV4dCBDTEFTU05BTUUgaWYgJERlZmluaXRpb25MaXN0ICYmIHJlZiAkRGVmaW5pdGlvbkxpc3QgZXEgJ0FSUkFZJyAmJiBAeyREZWZpbml0aW9uTGlzdH07CgogICAgICAgICMgYWRkIHRoZSBuZXcgZGVmaW5pdGlvbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5EZWZpbml0aW9uQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9ueyRDbGFzc05hbWV9LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9MaW5rRGVsZXRlKCkKCmRlbGV0ZSBhbGwgZXhpc3RpbmcgbGlua3MgdG8gY29uZmlndXJhdGlvbiBpdGVtcwoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0xpbmtEZWxldGUoKTsKCj1jdXQKCnN1YiBfTGlua0RlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGFsbCBjb25maWd1cmF0aW9uIGl0ZW1zCiAgICBteSAkQ29uZmlnSXRlbUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKCk7CgogICAgcmV0dXJuIGlmICEkQ29uZmlnSXRlbUlEczsKICAgIHJldHVybiBpZiByZWYgJENvbmZpZ0l0ZW1JRHMgbmUgJ0FSUkFZJzsKCiAgICAjIGRlbGV0ZSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzCiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7JENvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0JyktPkxpbmtEZWxldGVBbGwoCiAgICAgICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICBLZXkgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9GaWxsdXBFbXB0eUxhc3RWZXJzaW9uSUQoKQoKZmlsbCB1cCBlbXB0eSBlbnRyaWVzIGluIHRoZSBsYXN0X3ZlcnNpb25faWQgY29sdW1uIG9mIHRoZSBDPGNvbmZpZ2l0ZW0+IHRhYmxlCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fRmlsbHVwRW1wdHlMYXN0VmVyc2lvbklEKCk7Cgo9Y3V0CgpzdWIgX0ZpbGx1cEVtcHR5TGFzdFZlcnNpb25JRCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGNvbmZpZ3VyYXRpb24gaXRlbXMgd2l0aCBlbXB0eSBsYXN0X3ZlcnNpb25faWQKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSBXSEVSRSAnCiAgICAgICAgICAgIC4gJ2xhc3RfdmVyc2lvbl9pZCA9IDAgT1IgbGFzdF92ZXJzaW9uX2lkIElTIE5VTEwnLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBDb25maWdJdGVtSURzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkUm93WzBdOwogICAgfQoKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGdldCB0aGUgbGFzdCB2ZXJzaW9uIG9mIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbV92ZXJzaW9uICcKICAgICAgICAgICAgICAgIC4gJ1dIRVJFIGNvbmZpZ2l0ZW1faWQgPSA/IE9SREVSIEJZIGlkIERFU0MnLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkQ29uZmlnSXRlbUlEIF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgJFZlcnNpb25JRDsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkVmVyc2lvbklEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkVmVyc2lvbklEOwoKICAgICAgICAjIHVwZGF0ZSBDPGluY2lfc3RhdGVfaWQ+CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtICcKICAgICAgICAgICAgICAgIC4gJ1NFVCBsYXN0X3ZlcnNpb25faWQgPSA/ICcKICAgICAgICAgICAgICAgIC4gJ1dIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFZlcnNpb25JRCwgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0ZpbGx1cEVtcHR5VmVyc2lvbkluY2lkZW50U3RhdGVJRCgpCgpmaWxsIHVwIGVtcHR5IGVudHJpZXMgaW4gdGhlIEM8aW5jaV9zdGF0ZV9pZCBjb2x1bW4+IG9mIHRoZSBDPGNvbmZpZ2l0ZW1fdmVyc2lvbj4gdGFibGUKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9GaWxsdXBFbXB0eVZlcnNpb25JbmNpZGVudFN0YXRlSUQoKTsKCj1jdXQKCnN1YiBfRmlsbHVwRW1wdHlWZXJzaW9uSW5jaWRlbnRTdGF0ZUlEIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgb3BlcmF0aW9uYWwgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiAnb3BlcmF0aW9uYWwnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZXJyb3IgaGFuZGxpbmcKICAgIGlmICggISRJbmNpU3RhdGVMaXN0IHx8IHJlZiAkSW5jaVN0YXRlTGlzdCBuZSAnSEFTSCcgfHwgISV7JEluY2lTdGF0ZUxpc3R9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgZmluZCBhbnkgaXRlbSBpbiBnZW5lcmFsIGNhdGFsb2cgY2xhc3MgSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc29ydCBpZHMKICAgIG15IEBJbmNpU3RhdGVLZXlMaXN0ID0gc29ydCBrZXlzICV7JEluY2lTdGF0ZUxpc3R9OwoKICAgICMgdXBkYXRlIGluY2lfc3RhdGVfaWQKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICdVUERBVEUgY29uZmlnaXRlbV92ZXJzaW9uICcKICAgICAgICAgICAgLiAnU0VUIGluY2lfc3RhdGVfaWQgPSA/ICcKICAgICAgICAgICAgLiAnV0hFUkUgaW5jaV9zdGF0ZV9pZCA9IDAgT1IgaW5jaV9zdGF0ZV9pZCBJUyBOVUxMJywKICAgICAgICBCaW5kID0+IFsgXCRJbmNpU3RhdGVLZXlMaXN0WzBdIF0sCiAgICApOwp9Cgo9aGVhZDIgX0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpCgpmaWxsIHVwIGVtcHR5IGVudHJpZXMgaW4gdGhlIGN1cl9kZXBsX3N0YXRlX2lkIG9yIGN1cl9pbmNpX3N0YXRlX2lkIGNvbHVtbiBvZiB0aGUgQzxjb25maWdpdGVtPiB0YWJsZQoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0ZpbGx1cEVtcHR5SW5jaWRlbnRBbmREZXBsb3ltZW50U3RhdGVJRCgpOwoKPWN1dAoKc3ViIF9GaWxsdXBFbXB0eUluY2lkZW50QW5kRGVwbG95bWVudFN0YXRlSUQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggZW1wdHkgY3VyX2RlcGxfc3RhdGVfaWQgb3IgY3VyX2luY2lfc3RhdGVfaWQKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnU0VMRUNUIGlkIEZST00gY29uZmlnaXRlbSBXSEVSRSAnCiAgICAgICAgICAgIC4gJ2N1cl9kZXBsX3N0YXRlX2lkID0gMCBPUiBjdXJfZGVwbF9zdGF0ZV9pZCBJUyBOVUxMIE9SICcKICAgICAgICAgICAgLiAnY3VyX2luY2lfc3RhdGVfaWQgPSAwIE9SIGN1cl9pbmNpX3N0YXRlX2lkIElTIE5VTEwnLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBDb25maWdJdGVtSURzOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBDb25maWdJdGVtSURzLCAkUm93WzBdOwogICAgfQoKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEIChAQ29uZmlnSXRlbUlEcykgewoKICAgICAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgICAgICBteSAkTGFzdFZlcnNpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+VmVyc2lvbkdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgISRMYXN0VmVyc2lvbjsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiByZWYgJExhc3RWZXJzaW9uIG5lICdIQVNIJzsKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAhJExhc3RWZXJzaW9uLT57RGVwbFN0YXRlSUR9OwogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkTGFzdFZlcnNpb24tPntJbmNpU3RhdGVJRH07CgogICAgICAgICMgY29tcGxldGUgY29uZmlndXJhdGlvbiBpdGVtCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgICAgICBTUUwgPT4gJ1VQREFURSBjb25maWdpdGVtIFNFVCAnCiAgICAgICAgICAgICAgICAuICdjdXJfZGVwbF9zdGF0ZV9pZCA9ID8sICcKICAgICAgICAgICAgICAgIC4gJ2N1cl9pbmNpX3N0YXRlX2lkID0gPyAnCiAgICAgICAgICAgICAgICAuICdXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgICAgIFwkTGFzdFZlcnNpb24tPntEZXBsU3RhdGVJRH0sCiAgICAgICAgICAgICAgICBcJExhc3RWZXJzaW9uLT57SW5jaVN0YXRlSUR9LAogICAgICAgICAgICAgICAgXCRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9EZWxldGVTZXJ2aWNlUHJlZmVyZW5jZXMoKQoKRGVsZXRlcyB0aGUgc2VydmljZSBwcmVmZXJlbmNlcyBmb3IgdGhlIGtleSAnQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMnLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0RlbGV0ZVNlcnZpY2VQcmVmZXJlbmNlcygpOwoKPWN1dAoKc3ViIF9EZWxldGVTZXJ2aWNlUHJlZmVyZW5jZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBzZXJ2aWNlIGxpc3QKICAgIG15ICVTZXJ2aWNlTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0KAogICAgICAgIFZhbGlkICA9PiAwLAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgKTsKCiAgICBTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUxpc3QgKSB7CgogICAgICAgICMgZGVsZXRlIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIHR5cGUgZnJvbSBDSXMgb2YgdGhlIHNlcnZpY2UKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlUHJlZmVyZW5jZXNTZXQoCiAgICAgICAgICAgIFNlcnZpY2VJRCA9PiAkU2VydmljZUlELAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0N1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzJywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICcnLAogICAgICAgICAgICBVc2VySUQgICAgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX01pZ3JhdGVEVExJblN5c0NvbmZpZygpCgpDb252ZXJ0cyB0ZW1wbGF0ZSBzZXR0aW5ncyBpbiBzeXNjb25maWcgdG8gdGVtcGxhdGUgdG9vbGtpdC4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9NaWdyYXRlRFRMSW5TeXNDb25maWcoKTsKCj1jdXQKCnN1YiBfTWlncmF0ZURUTEluU3lzQ29uZmlnIHsKCiAgICAjIGNyZWF0ZSBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJFByb3ZpZGVyT2JqZWN0ICA9IEtlcm5lbDo6T3V0cHV0OjpUZW1wbGF0ZTo6UHJvdmlkZXItPm5ldygpOwoKICAgIG15IEBOZXdTZXR0aW5nczsKCiAgICAjIGhhbmRsZSBoYXNoIHNldHRpbmdzCiAgICBOQU1FOgogICAgZm9yIG15ICROYW1lICgKICAgICAgICBxdygKICAgICAgICBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUKICAgICAgICBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlByZU1lbnVNb2R1bGUKICAgICAgICApCiAgICAgICAgKQogICAgewoKICAgICAgICAjIGdldCBzZXR0aW5nJ3MgY29udGVudAogICAgICAgIG15ICRTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCROYW1lKTsKICAgICAgICBuZXh0IE5BTUUgaWYgISRTZXR0aW5nOwoKICAgICAgICBNRU5VTU9EVUxFOgogICAgICAgIGZvciBteSAkTWVudU1vZHVsZSAoIHNvcnQga2V5cyAleyRTZXR0aW5nfSApIHsKCiAgICAgICAgICAgICMgU2V0dGluZyBpcyBhIGhhc2guCiAgICAgICAgICAgIFNFVFRJTkdJVEVNOgogICAgICAgICAgICBmb3IgbXkgJFNldHRpbmdJdGVtICggc29ydCBrZXlzICV7ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9IH0gKSB7CgogICAgICAgICAgICAgICAgbXkgJFNldHRpbmdDb250ZW50ID0gJFNldHRpbmctPnskTWVudU1vZHVsZX0tPnskU2V0dGluZ0l0ZW19OwoKICAgICAgICAgICAgICAgICMgRG8gbm90aGluZyBpZiB0aGVyZSBpcyBubyB2YWx1ZSBmb3IgbWlncmF0aW5nLgogICAgICAgICAgICAgICAgbmV4dCBTRVRUSU5HSVRFTSBpZiAhJFNldHRpbmdDb250ZW50OwoKICAgICAgICAgICAgICAgIG15ICRUVENvbnRlbnQ7CiAgICAgICAgICAgICAgICBldmFsIHsKICAgICAgICAgICAgICAgICAgICAkVFRDb250ZW50ID0gJFByb3ZpZGVyT2JqZWN0LT5NaWdyYXRlRFRMdG9UVCggQ29udGVudCA9PiAkU2V0dGluZ0NvbnRlbnQgKTsKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBpZiAoJEApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRNZW51TW9kdWxlLT4kU2V0dGluZ0l0ZW0gOiAkQCEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+eyRTZXR0aW5nSXRlbX0gPSAkVFRDb250ZW50OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEJ1aWxkIG5ldyBzZXR0aW5nLgogICAgICAgICAgICBwdXNoIEBOZXdTZXR0aW5ncywgewogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJE5hbWUgLiAnIyMjJyAuICRNZW51TW9kdWxlLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJFNldHRpbmctPnskTWVudU1vZHVsZX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxIGlmICFATmV3U2V0dGluZ3M7CgogICAgIyBXcml0ZSBuZXcgc2V0dGluZy4KICAgICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgQ29tbWVudHMgPT4gJ0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCAtIHBhY2thZ2Ugc2V0dXAgZnVuY3Rpb246IF9NaWdyYXRlRFRMSW5TeXNDb25maWcnLAogICAgICAgIFNldHRpbmdzID0+IFxATmV3U2V0dGluZ3MsCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX0ZpeFR5cG8oKQoKRml4ZXMgYSB0eXBvIGluIHRoZSBnZW5lcmFsIGNhdGFsb2cKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9GaXhUeXBvKCk7Cgo9Y3V0CgpzdWIgX0ZpeFR5cG8gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgaXRlbSBkYXRhIHdpdGggdGhlIHdyb25nIG5hbWUgIktleWJvcmQiCiAgICBteSAkSXRlbURhdGFSZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUdldCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6SGFyZHdhcmU6OlR5cGUnLAogICAgICAgIE5hbWUgID0+ICdLZXlib3JkJywKICAgICk7CgogICAgIyBjaGVjayBpZiBnZW5lcmFsIGNhdGFsb2cgZW50cnkgZXhpc3RzCiAgICBpZiAoICRJdGVtRGF0YVJlZiAmJiByZWYgJEl0ZW1EYXRhUmVmIGVxICdIQVNIJyAmJiAleyRJdGVtRGF0YVJlZn0gKSB7CgogICAgICAgICMgdXBkYXRlIHRoZSBpdGVtIGRhdGEgd2l0aCB0aGUgY29ycmVjdCBuYW1lICJLZXlib2FyZCIKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbVVwZGF0ZSgKICAgICAgICAgICAgJXskSXRlbURhdGFSZWZ9LAogICAgICAgICAgICBOYW1lICAgPT4gJ0tleWJvYXJkJywKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9NaWdyYXRlQ29uZmlncygpCgpjaGFuZ2UgY29uZmlndXJhdGlvbnMgdG8gbWF0Y2ggdGhlIG5ldyBtb2R1bGUgbG9jYXRpb24uCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fTWlncmF0ZUNvbmZpZ3MoKTsKCj1jdXQKCnN1YiBfTWlncmF0ZUNvbmZpZ3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIG15IEBOZXdTZXR0aW5nczsKCiAgICBmb3IgbXkgJFR5cGUgKHF3KE1lbnVNb2R1bGUgT3ZlcnZpZXcpKSB7CgogICAgICAgICMgbWlncmF0ZSBJVFNNQ29uZmlndXJhdGlvbiBQcmVmZXJlbmNlcwogICAgICAgICMgZ2V0IHNldHRpbmcgY29udGVudCBmb3IgSVRTTUNvbmZpZ3VyYXRpb24gUHJlZmVyZW5jZXMKICAgICAgICBteSAkU2V0dGluZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCggJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JyAuICRUeXBlICk7CgogICAgICAgIENPTkZJR0lURU06CiAgICAgICAgZm9yIG15ICRNZW51TW9kdWxlICggc29ydCBrZXlzICV7JFNldHRpbmd9ICkgewogICAgICAgICAgICBteSAkTWVudU1vZHVsZVNldHRpbmdzID0gJFNldHRpbmctPnskTWVudU1vZHVsZX07CgogICAgICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICAgICAgbXkgJE1vZHVsZSA9ICRNZW51TW9kdWxlU2V0dGluZ3MtPnsnTW9kdWxlJ307CiAgICAgICAgICAgIGlmICggJE1vZHVsZSAhfiBte0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbShcdyspfSApIHsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJE1vZHVsZSA9fiBze0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbShcdyspfXtLZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OiQxfXhtc2c7CiAgICAgICAgICAgICRNZW51TW9kdWxlU2V0dGluZ3MtPntNb2R1bGV9ID0gJE1vZHVsZTsKCiAgICAgICAgICAgICMgQnVpbGQgbmV3IHNldHRpbmcuCiAgICAgICAgICAgIHB1c2ggQE5ld1NldHRpbmdzLCB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjonIC4gJFR5cGUgLiAnIyMjJyAuICRNZW51TW9kdWxlLAogICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJE1lbnVNb2R1bGVTZXR0aW5ncywKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgIUBOZXdTZXR0aW5nczsKCiAgICAjIFdyaXRlIG5ldyBzZXR0aW5nLgogICAgJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBDb21tZW50cyA9PiAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IC0gcGFja2FnZSBzZXR1cCBmdW5jdGlvbjogX01pZ3JhdGVDb25maWdzJywKICAgICAgICBTZXR0aW5ncyA9PiBcQE5ld1NldHRpbmdzLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9Db252ZXJ0UGVybERlZmluaXRpb25zMllBTUwoKQoKQ29udmVydHMgUGVybCBkZWZpbml0aW9ucyB0byBZQU1MLgoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+X0NvbnZlcnRQZXJsRGVmaW5pdGlvbnMyWUFNTCgpOwoKPWN1dAoKc3ViIF9Db252ZXJ0UGVybERlZmluaXRpb25zMllBTUwgewoKICAgIG15ICRDb21tYW5kT2JqZWN0CiAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OklUU006OkNvbmZpZ2l0ZW06OkRlZmluaXRpb25QZXJsMllBTUwnKTsKCiAgICBteSAoICRSZXN1bHQsICRFeGl0Q29kZSApOwoKICAgIHsKICAgICAgICBsb2NhbCAqU1RET1VUOwogICAgICAgIG9wZW4gU1RET1VULCAnPjp1dGY4JywgXCRSZXN1bHQ7ICAgICMjIG5vIGNyaXRpYwogICAgICAgICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCk7CiAgICB9CgogICAgcmV0dXJuIDEgaWYgISRFeGl0Q29kZTsKCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgIE1lc3NhZ2UgID0+ICIkUmVzdWx0IiwKICAgICk7CgogICAgcmV0dXJuOwp9Cgo9aGVhZDIgX01pZ3JhdGVabnVueUN1c3RvbWVyQ0lzU3lzQ29uZmlnKCkKCk1pZ3JhdGUgU3lzQ29uZmlnIG9mIHBhY2thZ2UgWm51bnktQ3VzdG9tZXJDSXMuCgo9Y3V0CgpzdWIgX01pZ3JhdGVabnVueUN1c3RvbWVyQ0lzU3lzQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFN5c0NvbmZpZ01pZ3JhdGlvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWc6Ok1pZ3JhdGlvbicpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJEhvbWUgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnSG9tZScpOwogICAgbXkgJEZpbGVDbGFzcyA9ICdLZXJuZWw6OkNvbmZpZzo6RmlsZXM6OlpaWkFBdXRvJzsKICAgIG15ICRGaWxlUGF0aCAgPSAiJEhvbWUvS2VybmVsL0NvbmZpZy9CYWNrdXBzL1paWkFBdXRvLnBtIjsKCiAgICBpZiAoICEtZiAkRmlsZVBhdGggKSB7CiAgICAgICAgcHJpbnQgIlxuXG4gRXJyb3I6IFpaWkFBdXRvIGJhY2t1cCBmaWxlIG5vdCBmb3VuZC5cbiI7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVNaWdyYXRlU3lzQ29uZmlnU2V0dGluZ3MgPSAoCiAgICAgICAgIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRabnVueUN1c3RvbWVyQ0lzIyMjU2VhcmNoTGltaXQiID0+IHsKICAgICAgICAgICAgVXBkYXRlTmFtZSA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMjIyNTZWFyY2hMaW1pdCcsCiAgICAgICAgfSwKICAgICAgICAiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudFpudW55Q3VzdG9tZXJDSXMjIyNDdXN0b21lclVzZXIiID0+IHsKICAgICAgICAgICAgVXBkYXRlTmFtZSA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMjIyNDdXN0b21lclVzZXInLAogICAgICAgIH0sCiAgICAgICAgIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRabnVueUN1c3RvbWVyQ0lzIyMjQ3VzdG9tZXJDb21wYW55IiA9PiB7CiAgICAgICAgICAgIFVwZGF0ZU5hbWUgPT4gJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzIyMjQ3VzdG9tZXJDb21wYW55JywKICAgICAgICB9LAogICAgICAgICJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50Wm51bnlDdXN0b21lckNJcyMjI01hcHBpbmciID0+IHsKICAgICAgICAgICAgVXBkYXRlTmFtZSA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMjIyNNYXBwaW5nJywKICAgICAgICB9LAogICAgICAgICJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50Wm51bnlDdXN0b21lckNJcyMjI1Blcm1pc3Npb24iID0+IHsKICAgICAgICAgICAgVXBkYXRlTmFtZSA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMjIyNQZXJtaXNzaW9uJywKICAgICAgICB9LAogICAgICAgICJGcm9udGVuZDo6T3V0cHV0OjpGaWx0ZXJFbGVtZW50UG9zdCMjI1pudW55Q3VzdG9tZXJDSXMiID0+IHsKICAgICAgICAgICAgVXBkYXRlTmFtZSA9PiAnRnJvbnRlbmQ6Ok91dHB1dDo6RmlsdGVyRWxlbWVudFBvc3QjIyNBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXMnLAogICAgICAgIH0sCiAgICAgICAgIlpudW55Q3VzdG9tZXJDSXNXaWRnZXQjIyNHcm91cCIgPT4gewogICAgICAgICAgICBVcGRhdGVOYW1lID0+ICdBZ2VudElUU01Db25maWdJdGVtQ3VzdG9tZXJDSXNXaWRnZXQjIyNHcm91cCcsCiAgICAgICAgfSwKICAgICAgICAiWm51bnlDdXN0b21lckNJc1dpZGdldCMjI0xpbmtUeXBlIiA9PiB7CiAgICAgICAgICAgIFVwZGF0ZU5hbWUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNJc1dpZGdldCMjI0xpbmtUeXBlJywKICAgICAgICB9LAogICAgICAgICJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRabnVueUN1c3RvbWVyQ0lzV2lkZ2V0QUpBWCIgPT4gewogICAgICAgICAgICBVcGRhdGVOYW1lID0+ICdGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRJVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ0lzV2lkZ2V0JywKICAgICAgICB9LAoKICAgICk7CgogICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnTWlncmF0aW9uT2JqZWN0LT5NaWdyYXRlU3lzQ29uZmlnU2V0dGluZ3MoCiAgICAgICAgRmlsZUNsYXNzID0+ICRGaWxlQ2xhc3MsCiAgICAgICAgRmlsZVBhdGggID0+ICRGaWxlUGF0aCwKICAgICAgICBEYXRhICAgICAgPT4gXCVNaWdyYXRlU3lzQ29uZmlnU2V0dGluZ3MsCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX01pZ3JhdGVXZWJzZXJ2aWNlQ29uZmlncyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRXZWJzZXJ2aWNlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyaWNJbnRlcmZhY2U6OldlYnNlcnZpY2UnKTsKCiAgICBteSAkV2Vic2VydmljZXMgPSAkV2Vic2VydmljZU9iamVjdC0+V2Vic2VydmljZUxpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CiAgICByZXR1cm4gMSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VzKTsKCiAgICBteSAlSW52b2tlclR5cGVNYXBwaW5nID0gKAogICAgICAgICdabnVueTRPVFJTSVRTTUNvbmZpZ0l0ZW1JbnZva2VyOjpHZW5lcmljJyA9PiAnSVRTTUNvbmZpZ0l0ZW06OkdlbmVyaWMnLAogICAgICAgICdJVFNNQ29uZmlnSXRlbUludm9rZXI6OkdlbmVyaWMnICAgICAgICAgICA9PiAnSVRTTUNvbmZpZ0l0ZW06OkdlbmVyaWMnLAogICAgKTsKCiAgICBXRUJTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFdlYnNlcnZpY2VJRCAoIHNvcnQga2V5cyAleyRXZWJzZXJ2aWNlc30gKSB7CiAgICAgICAgbXkgJFdlYnNlcnZpY2VEYXRhID0gJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VHZXQoCiAgICAgICAgICAgIElEID0+ICRXZWJzZXJ2aWNlSUQsCiAgICAgICAgKTsKICAgICAgICBuZXh0IFdFQlNFUlZJQ0VJRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJFdlYnNlcnZpY2VEYXRhKTsKCiAgICAgICAgbXkgJEludm9rZXJDb25maWdzICAgPSAkV2Vic2VydmljZURhdGEtPntDb25maWd9LT57UmVxdWVzdGVyfS0+e0ludm9rZXJ9OwogICAgICAgIG15ICRPcGVyYXRpb25Db25maWdzID0gJFdlYnNlcnZpY2VEYXRhLT57Q29uZmlnfS0+e1Byb3ZpZGVyfS0+e09wZXJhdGlvbn07CgogICAgICAgICMgTWlncmF0ZSB3ZWIgc2VydmljZSBpbnZva2VyIHR5cGVzLgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEludm9rZXJDb25maWdzKSApIHsKICAgICAgICAgICAgSU5WT0tFUjoKICAgICAgICAgICAgZm9yIG15ICRJbnZva2VyICggc29ydCBrZXlzICV7JEludm9rZXJDb25maWdzfSApIHsKICAgICAgICAgICAgICAgIG15ICRJbnZva2VyQ29uZmlnID0gJEludm9rZXJDb25maWdzLT57JEludm9rZXJ9OwogICAgICAgICAgICAgICAgbmV4dCBJTlZPS0VSIGlmICFkZWZpbmVkICRJbnZva2VyQ29uZmlnLT57VHlwZX07CiAgICAgICAgICAgICAgICBuZXh0IElOVk9LRVIgaWYgIWV4aXN0cyAkSW52b2tlclR5cGVNYXBwaW5neyAkSW52b2tlckNvbmZpZy0+e1R5cGV9IH07CgogICAgICAgICAgICAgICAgJEludm9rZXJDb25maWctPntUeXBlfSA9ICRJbnZva2VyVHlwZU1hcHBpbmd7ICRJbnZva2VyQ29uZmlnLT57VHlwZX0gfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFdlYnNlcnZpY2VPYmplY3QtPldlYnNlcnZpY2VVcGRhdGUoCiAgICAgICAgICAgIElEICAgICAgPT4gJFdlYnNlcnZpY2VJRCwKICAgICAgICAgICAgTmFtZSAgICA9PiAkV2Vic2VydmljZURhdGEtPntOYW1lfSwKICAgICAgICAgICAgQ29uZmlnICA9PiAkV2Vic2VydmljZURhdGEtPntDb25maWd9LAogICAgICAgICAgICBWYWxpZElEID0+ICRXZWJzZXJ2aWNlRGF0YS0+e1ZhbGlkSUR9LAogICAgICAgICAgICBVc2VySUQgID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9BZGRUaWNrZXRIaXN0b3J5VHlwZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwoKICAgIG15ICVTZXR0aW5nID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ0dldCgKICAgICAgICBOYW1lID0+ICdUaWNrZXQ6OkZyb250ZW5kOjpIaXN0b3J5VHlwZXMjIyMwMDAtRnJhbWV3b3JrJywKICAgICk7CiAgICByZXR1cm4gaWYgISVTZXR0aW5nOwoKICAgIHJldHVybiAxIGlmICRTZXR0aW5neydEZWZhdWx0VmFsdWUnfS0+eydDSUxpbmtBZGQnfSAmJiAkU2V0dGluZ3snRGVmYXVsdFZhbHVlJ30tPnsnQ0lMaW5rRGVsZXRlJ307CgogICAgJFNldHRpbmd7J0RlZmF1bHRWYWx1ZSd9LT57J0NJTGlua0FkZCd9ICAgID0gJ0FkZCBsaW5rIHRvIGNvbmZpZyBpdGVtICIlcyIuJzsKICAgICRTZXR0aW5neydEZWZhdWx0VmFsdWUnfS0+eydDSUxpbmtEZWxldGUnfSA9ICdEZWxldGUgbGluayB0byBjb25maWcgaXRlbSAiJXMiLic7CgogICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIENvbW1lbnRzID0+ICdJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQgcGFja2FnZSBzZXR1cCBmdW5jdGlvbjogX0FkZFRpY2tldEhpc3RvcnlUeXBlcycsCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnVGlja2V0OjpGcm9udGVuZDo6SGlzdG9yeVR5cGVzIyMjMDAwLUZyYW1ld29yaycsCiAgICAgICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkU2V0dGluZ3snRGVmYXVsdFZhbHVlJ30sCiAgICAgICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAkU2V0dGluZ3snSXNWYWxpZCd9LAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAkU3VjY2VzczsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK</File>
        <File Permission="660" Location="doc/de/ITSMConfigurationManagement_de.pdf" Encode="Base64">JVBERi0xLjUKJeTw7fgKNCAwIG9iago8PC9UeXBlL1hPYmplY3QvU3VidHlwZS9JbWFnZS9XaWR0aCA2NTAvSGVpZ2h0IDIwMC9Db2xvclNwYWNlL0RldmljZUdyYXkvQml0c1BlckNvbXBvbmVudAo4L0RlY29kZVBhcm1zPDwvQml0c1BlckNvbXBvbmVudCA4L0NvbG9ycyAxL0NvbHVtbnMgNjUwL1ByZWRpY3RvciAyPj4vRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aAo0MTg4Pj4Kc3RyZWFtCnja7V1/rBxVFZ7XmkKD8W1pahqIdKo1NUp5SyQlGqEjJCIV6LYpMWkjfbUiSkQfKkQhylZJIBrjFk0NQtItCQQF8ZU0aVMQ96WmTbWGfRRUSNVdCCmkCm+1SizWZ/v62u7ec+7Mndm5v3a/75/2zczuzpnzzf3uOffce4MAAAAAAAAAAADAbVSKOr99pI4nDKihtkznt3+8hicMgIkAmAgmAmAiACaCiQCYCICJYCIAJgJgIpgIgIkAmAgmAmAiACZmRqvYwBMGHGDixjIeMKCI4TCnLyoNkUPjRTxfwDSKz9JjF6M6ETCO+hC0GXAA5bugzf2B+Ztvfg3aDFjH7NrSl685IBwcGFp66QcWFM4J/nm4+cLe/S9BmwHtePTTQfDWDY93HFu+5vL3tP35x6ce3QttBvRi47en/vnmvWcODd2+vCBcdegX974KbQY0Ys3D0/+p3nR0Wpg3fHc+c+GBW39l4/6Y7Di0uRextDb71H/Hrj984p+zy7fNYC9tff1B8/c38kNoc1/g/P1tzd9U3HLW92+RXXz0tvtM319YH4Q290XYvG9J+59Hrt951rfulF9+9MaHoM2ABsx84rrOA8dGXtoxI+YDr680G0JDm/sE93yDHHr4gsviPvH06ha0Gcgbw1uYg3tfWxn3mc8/YFebN43Abz2HZbtmcYf/MvaZd8g/9NwnXrepzc3iBBzXa1i0Zx5/4o2t686Vf2ydsaCF02bMGOg9DO75oDRE3nJVKP3czlVvQZuBHMPm7Z+MOfuz910iO3XkI89Dm4H88KMvxZ4e+9dy2akbzYy0GNHmsFgMw3BBm91BfaLWaPS2752y+oubEy74w/61M/kzlVt7Q5vDKIoW8KdatVqtR5NFrll9xa6ZSZe88cgN72JPbL/WfW2ebP9j6zC9oFAaGYr/iuZoNYtbJoW/M48IiW/iWOSO1aRitFXIaOXifYPJFx396arzuOO/W2qAiIVGV9o8Ge/D4sg6lW9plqv+MlGn1TQRvXI0k5Hz9ixSum7LJUuYo88vMcDE0RVdaXMnHwY6T0Zl5WnYrXLFVybqtJq2E9tKWWycteMKtQvffvFC5qiJgd/SL7uLmzt90jFAGFZWpLmT5nDNUybqtLpKWteFWeKdBzcoXvj8hWxYHWknYpfaLPqkXTpGyoMpb2bryISXTNRpdfhX8citlfQmfvUHihc+dxH/Pqx3XZtFn5xhQ1jNsD7K+HDdRyZqtZpkNpph6l+47omZahf+afEAe/yOe1zXZtEnpzsx0ehglvtplWoeMlGr1TRmSZ3rXbJb8bZemXc2b+5VT7muzaJPTr2vbO2REtZX/WOiXqsnRB9xWaPYsHn/BWoXThyby5946WOHzWtz2tBM4MNAly5J8Sa4w0S9Vle+IjahYSrVmrVbMRn49ivvlZz53h3HjGtzSiuJT6aeaDcuCVpR3TsmarWaxizqunECD69RvPCFD8lu7srfm9fm1HnTSRrYdeWS4x34aMI3Juq1msQsqbJ7d96tegfSQaEHbpp0XpuJT44H3twE/lRQDN4dYqJeqynHU6QUVz+meOGLi2VnDn3qWb1EzEObiU/GIq6lDVr1WqNxpgQlDIvF4lCXXUWHmKjZahKzqCfaPrx7ttqFL58nnT6gO4WTizZTPgzQlna8yhaehKVhiVvU1MchJmq2msYsqmUQ5+87X+3Cv82QTh54fP0RD7SZ+mST8NSa1apcSorlFdlTOS4xUa/VNGZRbTJmP7Ra6br/HAplp55Zo3k6VT7aTH0ieCSp2iSqcC1EM/SMiZqtJjGLepvBTG9m8LUvvF9yZtdnNS8XVqgvyEObE3yysZLI7UJlXcaeorNMzN/qbmKW4ftnJV5z13eG7rucO/Hfn3/573qJSLseWcuNYnzSLCllBplKXaVhBEeZqMVqErOkKINYum1+whWPrA2Cc29f/25y4s+bNmtOaQfRr/PR5jifqOYFuQVEgzkTnjJRj9Wk4VDqv0zjgu3xda6/jabmkC773LWdfH9l9P4XNPMwP22O8UmK0VEmeFKIWZxkoiaracySpjzgnY/FzS599eLpQeWZS6++8uJTSZ9/7Nvx9IFAO3LTZrlP0tRWMi+Gwu24yERtVpOYJVUZxMyKfH7pW5e2EW7ueRctmnvO/468dvDA6yaWZcpPm6U+URYpSSCvkDFzkIn6rCYxS0qHbdgsiVuOrXoysAZOm9MNqif6RLmMQfbKKyxU5h4TdVpNYpaUHls2yrO8fdF342C0Ofs8Bd4naSvcaSud/A3uMVGn1cRpaSc53c2uG2tgWkA6bc6+bS7rkzSR3Uk0FqTuKDrHRK1W05gl5cyqBrcKwG+uPOqWNmeZpBPnk/RrmZD0WvIr7xwT9VpNpDzdfCO2VujgRw/bI2K+2sz7JMP30Qc14BsTNVtNY5ZCl24PWpcdsEjEfLWZ90mW8IeIR2LI4hoTdVtNYpZUGeAJWnl17JqdFomYszazPsm0dAuZYZ6odY4xUbvVpFVLkwJmCl6CW35skYh5azPrk0wLjZEuU+L74RgTtVvdVcxCl5IIfnKzTSLmrc2sTzLtWUDuLJFYjjFRv9UkZlEXM6Ys+pmrj9pkIrNtblfazPkkfTJj6lm96TcTDVhNYhb136RlZQcvadkkIlP/0e3aO9QnaSeGS74osRfkFhNNWE2iDuV2mFRb/HvooE0iMjmlLrWZ80nGgUMxjEzkg1tMNGE16eSr0p92Mdc+YpOIGrSZ88nChhk+uMVEE1YTQqmWQZDA6MkVVomoQZsZn2TrMPnORDNWk5hFsSUmTVDGYlSHtZnxSVZy+81EM1aTwEPtZ2lbWrBJRE6bc9g2dzKv7/SbiYasJjGLUqeA9C/tbvvEaHMeqydP5tR195yJhqzOxqn0I6mGtTmXGyI+ybqnkN9MNGQ10VmV/ilxvd2Nu/VoM+OTORP9yERTVpPEoELsQUb6uk6YOKjNjE8Ggn5koimrSSWDQhkE6VzOsbgnoy5tpj7Jms7wm4nmrCZ9vkRaZSGvf9pMfZI5Q+k1E81ZTcQtUWqzCLp/2gwmmrY6dcxCiixsJhPpsGN+gTyYaNZq2sQleJJkw20mE5ltc3PSZmYlwZF+ZKI5q2m3L6EMgjjfYjKRWZYqv4ySPT64xESTvy3GLPFlEEQPLSYTuS3t83svwETTv006/bHjO6QZyrzah9vaDCaa/23SysV+hmRN7CUTtWozmGj+t2nMElMGQRLJGWvLNWlz1kFSMNEJJpKYJSZeIiUT9pKJjDbnGsaDicaZSGKWZpjHpea1OeW2uWCic0wkMYu0oSOzWK0lE3VrM5hog4kkZpGOJJMynIzTbdzXZjDRBhNpzCILiMUyHGvJRO3aDCZaYSKJWSRlEOQ6W8lE/doMJlphomogotx2+q/NYKIdJpKYhR00I2U4tpKJzN7XeWszmGiHiSRmYTlGCGApmchtm5u3NvcEE8UBMQ+YSHSXLYMQL5JouHYweyBpyCb1ABMzFBtaZ6JKLEIazhzLDdKAWUU0f20GEy0xkcQsTEqRZE7sJBPNaDOYaIuJJGahNMvQ6/BXm3uBiemqrFxhIrlrklIkV9hJJhrS5l5gIhmb9YKJpKkhwydiq5l5a8bctVlPCO8/E8lL6wcTyW2LKUWxJ2knmchos6b51v4zkfS4/GAiYZrQ+SI1sjqihCzarKtt9p+JpJjUEyaKb1AzjDVLON1r2twLTCRjop4wkUQknfIsNplWkonmtLkXmEgWMPKEicTNHR1BEofZSCYa1OYeYCJdIMMXJop+7lhmRKyRtZFMNKnNLjExY7NP31tfmEgEuN3LYktvI5loUptdYmLGt57uZOgNE8WYpU2eY9tLQ+C25tOY0/SeiXRBP2+YKHYs2ugmirOFZCK3ba7OsjR3mJjttWfWUfOGiUT+zjhaFGcLyzIx2+ZqXUPUnk9IY5ZphWGmnNgfJor6d7rlE8W5Gfa6Ntv0CckDZhpEYGZY+MNEMWY5LQuiOJtf4920Ntv0CYnMsjxubpFTj5goliCe8rUozuaTiaa12aZPyHhxFkuZdZ99YqI4Z2p67FkUZ/NrvBvXZps+IT28DCELl3v1iYmiDE/3B0VxNp5M5LRZdw/Bnk/oa5e+H8I1iV4xUXwIJ2NkQZzNJxMZbdY+yGPRJ2R7ntRJM7ZJ9IqJYswydSPSkNqmNne/ba67PiFpnNQ9EebV9Y2JQswyVbktmmU6mWhDm636hCyElfbHmVfXOyaKMcuJ9UaEdnK689jb2mzVJzQpna5R5LXZMyaK7+Px4ESs1jadTLSizVZ9QpZ9SdcjKtSGgh5gouD3409ADMMML8tkR5vt+oTZjTBF+MzULPnIREGLj0ux8FhMJxPtaLNdnzDLQ7Yixd65tEX0jonCU1g48WbmlzMPMNvmmtBmuz5h5FmVisWqlIi+MVF4CuuDzu6z6WQiI1RmOqpWfUKj5+NPvlRTaEfKg0GvMFF4CpsKnQ/F8BrvzFiBoYkLVn3Cp2ESbyGqDMWd9o2JkmTUNMwmE7kt7fOFtOLKrk+Ymq4TvfZyNeYzw8PCh8aH/GYimc/SYZzZNd7rQ33KRFlz0KyM8p3kUqkk6vK28rOeM5GJ3Az30aQPpm+YyPYUpxuDWq3ewcZiWIyYJrRZnJj0nIlc5HYKhpOJ/ctE2TjJKZqd5mJxUN6PEiTFOybGvI+mk4n9y0RumYFUOFG6J+S4/WOiPGYxvcZ7HzNRUk+jiqnbFTIP/jFRGrMYr0zsZybGSFMyTo5TC+2qh0yUxSzGN4zsaybKB5ATMR1YCuLmIRNlMYvxmVT9zcSsrWJrpMoa4SETJY/A/IaRfc5EfjpKEsaH63w3y0cm8jGL+WWZ+p2JQVRdkPb3NpUnJL/tIxP5mMX8hpF9z8SgUE4XQo+N1KVtqpdM5GIWC8sygYlBEJbVe4vj5c40W+c8BC+ZyMUsFjaMBBNPcrE0qHLdtkottpflJROZmKUZBmCiJZ8USqWkjM54lauNmPSfiTRmMZ5MBDrIGEWRrDKpVatJSnR6AWTl+oUN0ME2ojAsFgpthGw2Go16vac9Q2pUzScTAYDrJ9rZMBLoe4jibGfDSKDvQRbEsLNhJND3yGetZwDoEmSV5maIhwJYAKkXtrJhJAAgmQg4ATKbx8aGkQBAy9aRTASciFeQTASsgNSsI5kIWAEp2EYyEXAiXmmGeCiABZDiByQTARugEweQTASciFfMbxgJAFy8YmEmFQDQejDEK4AbTSLGVwAbIFPuMb4CWAmcyaK6SOEANkBqH9AkAjZAF3dGkwhYQLE2iCYRcKCTSLfBRJMIOEFENImAE0Q0vr89ALAbA2MtHMA42I2BUSELGEZU5nZxxYqJgAs8PLEZJp4NoAnDUaPWaLTHKVFUkmy0YHZTcaC/cLIMtnWaY0X5UuKImwHtTFQBZpYCTjBxPEInEXCAiSAi4AQTQUTACSaCiIATTBwrgYiAA0zE0ArgAhObwzU8JsA+EzdWoMyAfSZuLTfwjADbTGxWq+AhYAjRSMSPNDdHa1j+BjCKQrFYiNpLH8aCWo9vzAoAAAAAAAD0EP4PudtXiAplbmRzdHJlYW0KZW5kb2JqCjUgMCBvYmoKPDwvQ29sb3JTcGFjZS9EZXZpY2VSR0IvU01hc2sgNCAwIFIvVHlwZS9YT2JqZWN0L1N1YnR5cGUvSW1hZ2UvV2lkdGggNjUwL0hlaWdodCAyMDAvQml0c1BlckNvbXBvbmVudAo4L0RlY29kZVBhcm1zPDwvQml0c1BlckNvbXBvbmVudCA4L0NvbG9ycyAzL0NvbHVtbnMgNjUwL1ByZWRpY3RvciAxNT4+L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGgKMjI1Nj4+CnN0cmVhbQp42u3dfYwcZR3A8eeZ2b2X3h3tcdIetQWBaEtEsRoUIzEhsURM0ASNojFKiP+JgRheFUMM4Q9DoonBGIwvxJBARBsVocSiBoIRARUpFQoUWvr+em2vey+7OzPuXIEgGoHdhTuOzyebSy+9bDrP/fHtb+aZnVgURQAA5pLEEgCAPAMA8gwA8gwAdKjy0m9Wn3u+FQHgzWXd2jWmZwBAngFAngEAeQYA5BkA5BkAkGcAkGcAQJ4BQJ4BAHkGAHm2BAAgzwCAPAOAPAMA8gwA803FEgDQLevWrrEIpmcAMD0DwJtHduC2ML6vCEVRO1hM7C+masX0kaI5HUKM1d7YN5T0DcXBkVjpC9W+YvJwGBwJk4di30Cs9heNqZkZthLSSuwZeH6iXfQZeQaADtq895Z837P53k35vs15K9LTR0JWb5U6hGLm72NI0lDpib2DycLR5LhT0pF3mJ4B4PWS7/15tntTtmNDtmtjMXEgZFmZ5Ji0Zuby9fxV3dZQnYf6ZDFdax7eHXc+kR1zXDJ6auWEVfIMAF2dmLffFLJG87lHsy0P5Yd3hzwPSRLStJyVXy6+8CWNrZE6b+Rj2/NDe7I9T1dPPrNy4uxHWp4BmBdD89gvi/pU44l7sm2PhcZ0md701TWuHKnT8ueLrNi/pV47kNcOVN/5EXkGgE7bnB94rr7+d/nOJ1vflUNzG8oT4CFMjTefvC9M16qnnTOLR+TGKgDe3IrxdcWh7Y1Wm3c8XrY5dpa2JA1Zvbn5wcaGdfIMAO3mebpZX39HtnPjzOavbnSt9SZ5s7nl4ebTf5ZnAGirZCOri2KwaNReuGmqG2IaGlPNTQ9ku56UZwBoI6WVBef9Kl364ZBnIa//r33abRa6qB3InnmgqO0vN4G3XvIMAK8ppQs+fVf1g5fHtDdk090p9Mx90tneZ7LykrbpGQDaqmnvGZf3fvQ7sdIbmpPdKXSShvpEc9v6MHEw5A15BoB2VE79Qv9n74mDS0Oz1q0Zuhjbmo1tNT0DQAdhG14x8MW/JsMrQ/1wKLKO85wU9Yls37Mzn9ctzwDQ/hDdv+CCP1VO/NjMZrGsozE6xtY75Id2FVOH5RkAOpP29n3y9p4PXFLu5S43i7Xdu5m0T4wVU0fkGQA6FpOeM7/Ze/b3YnWgo0vRMRSNqXzioDwDQHdU3/2l/s/9IfaPzGznbrfPWSM4uQ0A3UzdwpMXXHBfHDx+5jp0W4q8LLQ8A0AXxYHR9LjTywdmtD1Ad+vDyOQZAI5qbLi58cydIam2W8sk9A7IMwB0Tbbnkal7Lo6V/jYn4KKI1b5kwbA8A0B3FONbJ25fHatD5UOo2nykVRH6hmLfoDwDQDc0p2q3nxNjUn56dnttLj8sLEkG3xb7jpFnAOh8cM4n15wXJve3f8m5lIdqTzqyPPT2yzMAdGry7ouy3Q+HtLejd8nzZGAkOfakUNi5DQCdqf/zpuZTa0J1oN3rzc/P3yFJk9EVcWjxG/zvl2cA5pts6731ey8rt4N1eLNynsWhJZVlp4eevpBW5BkA2p14j+yY+PWnQrlVO3Y2Omeh0lM54X3JoqVv/FHIMwDzqM2NWu3Ws8pbnGNngSuKVtnTJe+qnHTGrBxIxe8SgHkizyZuPSvUj4S0p8PKhyKPw8uqK86OA8fOvHPT9AwA7TR1+v6r8oObO21zOTcXcXhp9bSPJ4tPma2DkWcA5kecd4WeWrJoWcjzcsd1m++StSblOLy8+p5PVN5+2iwejpPbAMwHsff46kkfShYMNzfem+3fXD7/MUlf9RXo8mx2+Ur70qWnVleeHfsXzu7hyDMA80Sy5MuhcmsytLi5+cHmtkeLI/vKSLcKHePMLu7/usmq/MDOF8PcUw7NJ6yqLF8VevqKxpQ8A0CXCj3y+TASYv9P09EVzR3/yvduysf3heZUyLKZETv+Z5tDOWH3DKQLR9PjVyajK+PQSKjX58KByDMA8y7SoxeFeHPPomX5xMH84LZ8bHvemqQnx4tWp/PsaJVj70DsH4qDi5PhZenwsljtbf3w3DkEeQZgPhZ6yYVhZv9zc+sPKstPL+qTeW1sZmgud43FJC1iTAdHivpU0clHl8gzALTTueVfPfqH9BWLPqf+e+E3B8AbqSgKiyDPAMwtV19z3Y4dO62DPAMwh/zt749cfOmVj67fYCnkGYA5YfW557e+jo8fufIb377jzrstiDwDMIc0m83v3/ijG3/44zzPrYY8AzCH/Oa3d11z7fWTk1OWQp4BmB1Hz2y/zEMP/+OSr1+9Z88+6yPPAMwhz27e8rVLr3hsw+OWQp4BmP3R+UUHxg5eftW1v1/3RwslzwDMIc1m84bv3viTn91iKeQZgLnltl+sue76G6ZnHhtVrzfkGQBeL///zPbL3Hf/Xy674lu7du1+K1+NlmcA5pwnNj514Vcufv+q98ozAMwhWZa9lQ/fAyUB6JrXdBK7W++2bu0a0zMAIM8AIM8AgDwDAPIMAPIMAMgzAMgzACDPACDPAIA8A4A8WwIAkGcAQJ4BQJ4BAHkGAHkGAOQZAOQZAJBnAECeAUCeAQB5BgB5BgDkGQDkGQCQZwCQZwBAngEAeQYAeQYA5BkA5BkAkGcAkGcAQJ4BAHkGAHkGAOQZAOQZAJBnAJBnAECeAUCeAQB5BgDkGQDkGQCQZwCQZwBAngFAngEAeQYA5BkA5BkAkGcAkGcAQJ4BQJ4BAHkGAHkGAOQZAJBnAJBnAECeAUCeAQB5BgB5BgDkGQCQZwCQZwBAngFAngEAeQYAeQYA5BkA5BkAkGcAQJ4BQJ4BAHkGAHkGAOQZAOQZAJBnAECeAUCeAQB5BgB5BgDkGQDkGQCQZwCQZwBAngEAeQYAeQYA5BkA5BkAkGcAkGcAQJ4BAHkGAHkGAOQZAOQZAJBnAJBnAECeAUCeAQB5BgDkGQDkGQCQZwCQZwBAngFAngEAeQYA5BkA5BkAeGWVl36zbu0aKwIApmcAQJ4BQJ4BgNfq343Ab1gKZW5kc3RyZWFtCmVuZG9iagoxNSAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMzMT4+CnN0cmVhbQp42r1STU/DMAy98yv8B+r5I3YSadoBwRDcJnpDHFgnuDAhTvx9nK4dExtXVLlOnfdiv9fAJzBQPAxZIHvFUmHYR+Eu4g1i2xWVMtcRZoSSiuZYdp6xMjf04n5PcPMBG7juYbFmKEgSoP4VVAlz4iO63z0tSasTaY5omYgkskkEBy8RpZdYlwhbCS3jO2oW+DQccSNvrPMhN05qHJoyN86qE6txAm2JOBAcVfafTMPquX+A2z6kYq2u8NW0ZcGUE+whuaMVPVbe4XGWqSASOlOTaaHYMnRSCEnT/8tsIhZrg4ouZRyJk6OaQKfxU0UOI8VMU6uxbYSftpvdOnfqokvuBWscfWLTXDrxyeI65GK1DdWhmAWqCFav00wcsljmDmecuDj1Msf+5CQSdNPfLN/OCnU3WTdbOMSON2fkZTI3XrKdO2yuvgF2j6umCmVuZHN0cmVhbQplbmRvYmoKMzUgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCA5NTU+PgpzdHJlYW0KeNrtWUuPEzEMvvMr8gdqHCd2EmnVA+IhuCF6Qxy6bZcLK8SJv4+TSea5fXABwY7QMNk0tr8k39iOY34Ya1D/WRPIBEkQkzk8asc7fb4a/VkcOAw2lWGMQD66oM2NBEjW5tEv3z+ief3dfDSvdublW2siIOmg3YNxDiF424/eHT/foUuC6II++Y2IpG8mfazKeUS/13bUh7eEd/q39rGO94d+XJEr/bZ7ZxmfZbC+bZbZboiTasB7RKsjrPZaGd542H7ZfTBvdjpVSEmc+ZnnFgh88ObReBHg6Pqeb+ZTm6Yz1oIjkTxPlbEo4Nx4igXafYX30E2BU4WnOPnYtfO0vHRji0yephRg2UwEsZSyFe8ZKHmzIQ9OfGeqrGJTU1YptjlVnIOCDJMdoKui1m83qSxQVsLFblPSLWXGW5actza1rYh1XDVc5nWs/Rn//iwALxZEl2wGQyYCrAIhchGwDmxIOj5vhDYa7rqFij+mTBFKM4yFBh19eN/moH2ns6ZiBO/9wpTdbqSo6Vr2xtbvS9jV2h+wptRxN1IuIliKc8pxo5z6tu7TPlXaxSe/v7FqYUAJC9V/bGFWmvx9a0okupGAyYGEMCeg9D6PR/6XaxzJgYAH/7z06efNote4vbS77v4z4BphAKIF1zSBipJV5HSt5DKHUZzt06vmCktWk9l46H+pqZ1P9Zd9G9mc5nloNmne4BfYVob8E9aeDrSzbJQoAQu1reWajvbpc++6agpdnsVp4Hq6ObMTrn8PXhvtwKLARvkmx+x7M6BQ88xDBzafSnrgYcjzM/fLBOQy35v/ndleGfjP+98b+MYC+Sg5pVufa9Kpch0r5drJN1OQttmTTk6TDzcybWJ13frnQLSAQJjmTJOxYysODEcO7DQ53G9IsNZUPDfSjVOBFtxL4OdGx2ltZqi8LKFy1AO4LLCujPkL1p5m1jyMJwL2fijn1KpSlMFN9VWvnki1gvTQKl5Xy1dDOJ/au1jwctZDHMo5oa94jd3ooUbpVtkK1zHM9KaLGJxmsHaEt2Lo3bodpTmny/bVZQdeqPQlWlz7+B0jBBlwLKposRZkY3YEV8sYM3VrGeMZWYsOf4N34sFZN+cdj4NO453j67ybqlt5t/LuDO9CgDgc++K8glauTtrNy350jXI8qzoQ5NZc9brH/7216OyCeZNbQ5EIiWh8bdi6RveGYzJloUiQZJKP0/krKiBeiFz+FDR9A2E3l5L7PmE/1vyjXZoeWoJP+5qy63903yx8fPELOWM/QAplbmRzdHJlYW0KZW5kb2JqCjQwIDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNjY1Pj4Kc3RyZWFtCnjarVVLbxMxEL7zK/wH4o7HnrEtRTkgKIJbRW6IQ55ciBAn/j5j79jrbElbqiraeHc8j28en21+G2dAfs5ENJGzTdkcLiL4JM8PI9vsrYfoclUjsBiSj/K64mizc0X77vMFzIdf5sG835q7e2eSBRSl7dl4DzYG17W3x29r8JkBfJSnrACAshLK48QuAISdvCd5aIOwlm+RkeiHQ9erdlXuprXYhGIDurpis1khZfEAewAnGk6kjucVDpvv2y/m41ZStTmzN39KbhFtiMFcTGC2lHyX/DRfW5reOGc9Mpc8iw3YUD5KhuDCZiUhCviSJBXgrEkoSMqazJhkUj1WPdGno8pLorsGVyFkG3xKiiCTRUwdgWY5I8G8iFZLNX3TrqER2alGubsn6WRMlNU/gmVA9Y8KP5yH2heINcVWd3/UTrSOHGSHBzAuPw+m+cqqnaadWqRhIiYETZsaphYjjhppPWCK1z7L9/40FF9Wd6wlccmSo1oJj36qBMJ5s6Ls1o8njPZPtcsxWZ9w2S+aJ8fraJ+0Z6mBfbv+zCHm2l5pPF3HKqHZ+z7NTK0svlG7MNSOS3K3z4QWNz3J5TBy+V/VRk+WPC+rzTM7aOAcaQppSq9x8jGP36wTrwuvHiqjOh+q7yat3T2X3c68oD2TOu64HSxzz8ZZqP5iZ0w9irpnRVwj8OSvI3Mv7DvgaYjk+nDf6KIHspzdsotx5kycgFR37ayLy3GvVI/jceR13ELWnV3T7OP3Zpx7PtTIvcPIvb7TLgXoXb05P52nrTd9Em6zX7VezW//H32+unmZk82I49XbRMPdu2gCJ7SZc5uKcibg1RSN+skiPTIJ9eC9ZRIALZNfWvH+BdfcTmkqf9ivg4d3fwGZ7QRACmVuZHN0cmVhbQplbmRvYmoKNDcgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMzYwPj4Kc3RyZWFtCnjapVhLj+M2DL73V/gPxCOJehkY5FC0W7S3RedW9GA7yV66KHrq369IkRJtJ5nZLgaGHZnvx0d6hn8GO5jyZ4fkhhSnMU/D+rUc/FKuL0N5HWEEk+xEZMGMzmdI5fEU0zhZi9Qvv341w09/D5+HH9+Gl092yKNxhejtNgCYMXnbqN8uf7wamKIxkMqFd2OMK/fgymULnzfGz+U5lyucnXktv8tZKPR+bXTER+e23pHHI4/hu0We88mFqUgwizG2UNhyamO/m/X859tvw89vxdVxmiIM/6JvyY0++eHr4GMcQ4Z28tfwu7gJg7UjuBjRT+Qxo8cf6KGx4XwqKgw7S8ZEdgKNvfF1cIzMefkUSgxTDhPLdn6EYluV7ZjB56IjZYzPVNlJ5Nz990memfJgTAg10v56jPCG04RLPSHN8+HtrG3CiIeWn2YlOx+inJTqqOG4ni3ykMyEb9Mr2/IocCtTh/rOFi1AMlwWDSRR7AoiOfOpeC5xQi2zROWitJQzv+gohFki0fzAAsusbcO39Y08Sj0/1eosVlvWLvKFMlBRlDKwMAY/cRks1+oWk3Ch6yCXtkLRnh00PaTYP60UUg8lFhKFOdZUVglUWklpotMn+lfN7a5cUkYXBdvkztO+tm712VrpTO62afSQMzeEhTRGk1q3cUd76brv8fp+B5qiz7G+ae96OrheT572pVBBOYUizd0a37WHCftHyZfUZvOkfxxV5fLYSpFCJ99VIFXmhztVLPehJT7MZ49H2AzewGtvgK37+GvJHab83IR5BjFuVTbKd1ijt74bhIYeDKta3LuNJ6+/yWtqjuZY4HwpfO5zinLGSBHSphG5nigTy74hA9Q3lPdpL5kca7THdnZBBT0rHNxQHUIdev6fyL5fYcZpHIZ6dW8lUWiJWRsi1GYE5yUdSw8VCcHxXgy3rl6YDnI+qhQtHEgWj3RUi7YPhbAy/7ppWkpcWCrgkMFFnnPsZDyOUWfuB6A1b+wNLyDxcLkJz0DRubKQ2D0mho6J/weJ34fDChSxFjpkL0AU5RfpUCOx04WHg7NJUnBVT74HrlgrZrr98s8KHyNXYNnbcAeWH1n4CJYhw50Wqjx7sFayV237OznM93Moqj+OWJj10wgeKvgFrqrHCNb68+VTGqwZJzNZLJYqgzpWFthY7IeiEhwbihV/OZ+Cwyg7jB6+KW5EzmksecRtHTkxdgQclmnUugr8PvjqdpVoFxyuDJks2a31wg62+LzUjOAzLFWS0HilCS2xq9gtGshOX98gBXqHZ/hM9scqJRauaGu9ax/wYwgtQ83xUn0VWd51OuQj7ZetpV7uF+bBWHGdxXl7pwLwVHtPsARMGMs+tQeTuFmwSJRR7XZVO/V8mGm8M1d0B+hVVGdT3/30Nxx/oT1fyCCqRevWxybABo0Ac9UMlGKfuYuCwo7GHz5kKlLCq8Jr6W3i1wORTr71m3AvJ4pn95FGU8jk0CiHiAahRcZQF9QP78xdcmPEuhe/uMPprW3NWpjVh09gPon5pCPSIpcZl6ueitL3NjAdtk3aULkDqblVn8CkQhTUliXgqeoWnHtVAwYD4WRctQXRyb7C8m6i6TAm6qkEkX5tNrlrL60G6xtv+ojRMpwu4P3Xpf66nffySA6IBRwX38cNpUrSW2Nxb4S7TYHdlIyttidbb5VuzeNFe+2hU8smbxu8KO4/sdvSC4ed7qPwoxbO/T+HYszj5Jz+75AcqX8Pabg6ja5M0FPMbpyieGdp79xgsOZJReORx9NC94jHGzfGAHuuuLwfD5pGpsbBtcnw+Yf/AIzHP08KZW5kc3RyZWFtCmVuZG9iago1MiAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIwMjc+PgpzdHJlYW0KeNrVWslu5DYQvecr9AMtc18Aw4cgmSC5DeJbkEOr7c4lgyCn/H7IYhVZkqilDQwygdGWxK2qXq2kNPw9yEGkPzl4NXgXxxCH25fU8FP6/TGkbqdHLbyMMMyKUZmgfbq9OD9GKfPop5+/iOGHv4bPw/evw9MnOYRRqDTo9T5oLUZvZB39+vbbs9DRCaF9+uWrEEKlq1XpJ9M8I4S5pvuQfvZFief0nNpsGm9udRzMg3ZZrnmOyXMEXmWe83JRNqYVxCSETCNkapWuXcXt5ffXX4YfX5OoY4xOD/9k2bwajTfDl8E4N9qga8ufw68kph6kHLVyLsuZ54jR5IcsYVr75ZJIZOaDQyY9MmZROImCpn5zR+EcChqAradPNmHpg42ZxmVU1g4XZUad+EQ6K5lIYqnSncsMyERQarzG9BP47Nn9rY422PKWfgGf6d7SKPHO1sxXTXR1Fk2juKS3kJ8rBVlGWEEteUzStYzPTacVlpXukVKxlDuCCvIDaEkVSiTFmC2I7AMQWby3CG2DyCEsGqF5wza9gsgsIVIRxZlQ5FDgkm8vF21cBvFaRgCIZNjVmMFdQrMWgIXMvqpIW1z5vqWI9B9c0VbJig1WtQhmlQ7v0WrPgm0eANswsONsNNmgZ8Dn63QIdhFQIvNoRxAv7lVMy9SA9gSAOXBE5N9EBLoB/IaWStHmVmWdobAPlD0JVODOyp14ZpWWOSsHyh067n8LlF0BtYpwBq+JkNYOgdLa7wEVmEWZOo9HOL+IcDdaswcUzhc0hlwsO4pVBRwbm5tpbfOo2CIbBfpFdKzgQ1wMpf3IzQs3NQd6avk69FiWFhjhTVMn8pIpRXqyFLFLMivZS+oxXYpqiVi2He3tc7cQKKz6BrR2zPLIInPbBDZ0cVHllVB4ECYbiiewAAoWCwtloKrXZQZ5QJmv9YKuYRB5phpvNhVBFLmflJYPK+7aSh6zKJvyOhnVugbhojK6RDk7iZJVC+v1ZnxtrwfOkZV9Ga2QRdsmorqVXCtTLQqfXKeJ9Cxy0NGBaoMcEnWG1G4qP49Qy/Cj9XNLW+CZC1XAqiuusJqg6CKI+m5tA7QermQyz71KJtEOlXZeWRF/mgDHeHPr1LyFF9dUVKVztZdKjDuG+NIqkTfCRhiLwb30sxRAumgUW0SgmMhnkIZQdogJayuhyAJafee1PSWNWRq6NYy5OfbxrkmGSuluRqZEA5k11Iwc9hINL6Uh10ZKNJRc7CI7R1qzm5Ghp18n1l7cR2QvRu5E7XsHwJqBOOqx5LtxuR4ZBEA2UasxKI0SpaRTAiKYqo5V5/sSg0FRrqZCig+BegK5LBkLN7nSS/HEEH+R+JvI0I/ladzFKkfYDyHzNDUzSYqpia+Zu4Krlpp9Jr/glKhW4om17kJgjplV4VS5V0kFdzmSWC/reVib3NpV/k4bfGLAKo0Gj3dbBu/w3pXKCkcbrOhpYzS7p1E9gy89yjE4ZNv6ZBHLCLuxMYJeJa4voGzFzwMgJp46c1hnp+OKCDdQifaUuQC34DG3YjM3ar6ZqrJhpsPxWFhbHIeJtWOeVPwwE21ORTG/RE5eqkzIj3/MSLLdBkVRMewaiWH31zqaG4lj94GP6m7ooEf7ouTkZ0XcCWMHcDXz6oB+H2bRClYxK/XXnhs3gtpaWmDscpdUkznQsRi1a/y9Uk8ubiyaFPi4aTFhvg5L+DsUc8W4RWsurUKjqzt6uXaIbQM74yqi7ukWZwiSlSrXbgon3qjivsOWwpSjovOGebSB5il6YtGrHtjUrfUbrjqxPWL4xjfQ5vikQTMP9rSBVt7vAUXebLBiKaPN4nRB87MwGtUFyteCGu42K5yyW9s+Fm4F9tJ3vOv5MFCj8bVQpMC5LJ/LaJ6IPDujbSdgFx3DXJ7O/hJ6as3Ad4lIh6sbuF+ZyXKrsYnOtg/vH6f3cUM/3uKS1zswpho9lO5so9B49iwBGdqA1BV70cwvDzkY9X1abh1n8Gyd1nCdUaFtKIqGXdWw29NwrXZzYVBd35Kjc66oikXeGXq2eiTWnHKW6eLSTu1yy1bmyiaLWdtN2/1juOCGworbnDzM86yKasKxnaqBqgcgCnbPqWG1+uqDu9P7vB4q6wCTkZ4+FAw6CR2NuqxZk6RdGnRr2TKygs2WQZf5a4OmtJZQE3PUDvGYOUFZfwvLxZwlhuDMmKlO4Ngxk1WE1dJ1sr2WdnHqlsHX0jPWysylkcGhonRMSWUWVxLS3FES0p/mh0wljgENHVEdVlo62gU6amIbjTmtSt3vbEiWvG/MPuZ9w8BwxU7EbJThKJbrhZ4O8guu8LjDHRsK341UphfqaVtq8I6TbxUfO3mbvTHcLS/1yfLSbVRNpvtiVbPy0v0PyktdwephFenVzAew4m9Y9QyrwMrvyMry2zf60m+GQr8UpyH+5Nt6yw2p+7ae71ksu6fN9MGr6K/qV4fi25Pia7REspNp006uDIpv1adWKGy/+4wPft1hO0fSa8A0c6bHXhLPPypYQlGOKc9BUbiJ6y9yjmzn7IcFtnNYaVZQzOIKi83uhOtoVkn03Ub1Bd0XULOhR0KazkcBdvU1T2AxwfP33if0vak7dS+OUY6Qul9RORfGqBT/jIqa2HdU/BOnPCmoMTqqHoBnRauvxoeUjVZT4DuIzSlGqNFZvZzlphMiX/GsIB/9TkTh83f/AnLGK+cKZW5kc3RyZWFtCmVuZG9iago1NyAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEwOTM+PgpzdHJlYW0KeNrtms1uHDcMgO99Cr3A0iJF6gcw9hC0Kdpb0L0VPeyuvb3UCHrq65fSSDPjxI49iSEriGGMNaOhfviJ4lBamX8NGqt/aAKZ4BPEZM53mvGrXn8bfe0dOBswFTGxQBxd0NudD5AQs/TVb3fW/PzRfDDvDubqPZoIllTocDHOWQiMs/Th5s9r65K31gW9cmqtJU2F9EItx9byUe+jXrIne63Pmicqz+dZrpQr+TiluQznMrammMvsdyRJa7Ana1ElUHPRL6k97/86/G5+OaiqkJJ35r+sWyDgwObOsPcg0c05/5g/mprOIIIj77OeuYwFzg9ZQ4vasjaRO3+vo6oAp9pBXzqYm796L8osREm1LmJw2pepLqqat0JT2jR7ovqdsr2eck+3mp4y1XtvMrtLveKcm0nbuQ1X5W73mJ9L/TNblpJTRq70ItTacm/81OY0Iq32olEb01hbq+O4jF+TLjnndYtOarlae6tnKVNqipPeiG2My7itUWMEQTE7RAGUCpzsZb9j4mY2qV6umMvOE2YVbmuTUrseJ6VRzZNq47lb2Vxzfkl5gpNl3HFBmQG6LO8+l81To9yvQGZ8JHvOimZDzuV0sJ5UkjTP0veiZJr8wxYFmYAEX0rBB5xSyU/VtC/LRCvKnqozm8o/x8kVmdl4bVX2VE3+8rTCIhDtiyl8XDxnk6lzeOoorjor1dO0UYu1jvwurT1whUPVT9wsMze/c2GyEDlXy4jfCO+ZlqJfOifjcFvkUp0Za08r38Dky/3bxCySRgdpIGPLRtWMRkOFCdgDocIjs/lhWE3O1qvVsQFU8sAcfxRQX5ArMi2Gi/e/+RuAkk0am4U3oFPgFFffnq+ASQ6E32Cu+h62AXQBbPJvAMuHaJ7WbZrXEG4LUF1VepY3oEt8HL7eV3oGTPxSMC+rxWVdlK8X20ht9DWlySLywoBp0yL/UcDPW+RvAxQCBHY9AUl9HhhKQqDUFUpb8o0LxVmGyNQZStnhGRiK3riEPaGE8S3FIfT1uS0OHJgJC3BMPaG0wHhgKJJAv/KdoZT3NQQZ/OvsAoHEVwN0zBurYwOKHtCF3oB8s6BJ2bKdRz1/yNkGKSXw0b8OpFEth9EBvdym50bLyRXnHfKRAZHXPO4NKIwNhS041xVKGj7eY3EQY8fl0qTswEB8AHbU2UrarsN3ENdoMUgRXwfQsFASg3TddDgOv0IQG8F2jX9Pwy8lhRA8pd5QzmNDcQIYelvK4B5FWPMo9IYy+PTxBBS6robOdYtqYChBIFJvKIMH+xITuNB1iXgzfLDvLUGiriugevhHxt5l8eiBQ9f47TL8FPLOgiXqDSWNDYUdSOgJpXT2dgQo986Vex/Vl9D6YHnLWp0s/+QwuI/qgHxqJ8szK3oUeQSSz4poh1EeLcLq4Ly4T0v503zc+qYq2BQ9zwe5jxWB/qNTa+HDT/8DjkgXqwplbmRzdHJlYW0KZW5kb2JqCjYyIDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTA2MT4+CnN0cmVhbQp42uWbS2/jNhDH7/0U+gKeHc6DDyDwoegD7W3R3IoeYifupUGxp/36HVIjW9smReVkadlFIEihhqT+P5HDGYUZPg1hQPsJQ6IhxQK5DPtnK/jRjt8Hux0ZGFMozUwRSDInu9zEBCWEav3hp2ccvvtz+Dh8ez98+CEMGZDM6P4wMCMkCUfr+8df75BLRORkRz0jItlZyY5g9QRRHuw626Fbwjv73crU7GV/tGv1WnkYz7WO1Dro51DrbDekxVrAHWIwi2ClIZ7OuN/+dv/z8P29SYVSIg+fq7ZEIEmG50FiBM18LPlj+GWSqSYzZS1VZsigQc0KwWqMKgkP242QTL0XP7j1uokU7A49+dOqK7FrOZiVqaTDTKETmSutNlWtmg6hRVRDeRPVkZ9yLZ/4vcokC6CdOzKp97QxQa6aaNV8SgKN0pvPYdVMQggQAveEwuuHQgIx9obShFV7a4N13YA4AwW6DKDVQtEAKYaeUFygLve7b1ztl4GJCtyXi5eveLCkDK2oH5QavDz5Yh29vRUDKhYHYndA616YCBWK5s5Q1EO8BmHvv68cVCigmC4F6nAS2uqsGBQz2LP3BlXWDUUiRNTeUB7WDSUiBO0KpYra+Ypl17RbN6DEkFA6A9J1ZwqUE5B2TaXyMc5ZKxSzgoxd06cyimpTqYxfa9YMKAiwdk0ZHk++pkJYOyBKUPBSgBqQda9WLAHkvRarathy7ORsDm4bnZ/4PXRdVp+SB8uuabonNfWaZuPUVnqRW2PbWDmLJfpVoJRyOQD/ZWC8SWC0C8k9BT58MRq/usBMgCVdmcBpJMjC6VoUosQrFNtisOR+K44+8g1+S7BAKFcHQmftPy0TTASpr6d+D8HRVzUvV5q9dW33xzrRV8q9T4up74WjgiNQkWuDlGZLXD7dWyJcCmThaxOe/W3vl7/pugug0LUJ3rnY+XSoz7Pfcg36lgBIEYpcGwBmz8T353n9giAlXJvo6P3KLLz3JXCBeEUBvDbfxo9uQ4sDOw0JNPcLzbcba6228jjK593FsxPlAIHfLXj3rz7N8/Dpusnf+bvFMc1tZR6uqY/VuoWlIZyP47H+ed5wNr6mZ57gLoEkAjFfDNI0Cg4zcepr2+Hl/Lx5QTotA5eKuJZA1gxtB90lIJ+XQs4/2EwfUbyfGocfR3aeeWh/YRJnyYqeypcAS8HK4q0A81GzBEBWYNYbA/AVUlktGXKWGwPVptTe94PyWVMoBgLhGwLzr455CRhSKJn/J2CO7U8jyb+An5E0RS6gTLcCLs3+TLBwaikD5nCjIDidfM/LYL7YWx9jhkI031w/Fb2yu34DpJViJijRM5RxNz+9ij5Zj/+sY08d9NU6ggT2qv5eK+6m/yJo6VVwEuOcqBsQ7sbguumvM2g39fDxm78AS51P9gplbmRzdHJlYW0KZW5kb2JqCjY3IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTI3OT4+CnN0cmVhbQp42u2byY4jNwxA7/mK+oHmUBSpBWj4EGRBchvEtyAH292eSxpBTvn9aK2Stx6rZnorGI2C1CqqJD5tFCUP/w5qwPCnBkuDNR6cH3ZPIeHX8HwZwmujQaNVPokJArHTNkTvjAWvVJT+9NsTDj/9M3weflwPn35RgwOkILTeD1ojWFaj9Prhz3vU3iBqG54YIiKFUCg8KuRjRN6EuAuPrAjvw/8hTYI870a5lC+lqxzGPBzzYAlVzLO6I/HhC7hFVEFChVRlphB3q7/Wvw8/r4Oq4L3Rw39RN0vAloengY0BcXpM+Xv4o6opQU3rxEc1lQNREqQQQo6sJeF+dcfEtXRfHp1KvTOkwht6LLWVokmI8z5IBS01FQpBc9FTPL6jbSEY6WX5a6gmmUSykErf2heSlW4ph2yJY3l2Kx1ZRnapPljZXeThGDCEC+GxmXpWruNK+dI7Yx3j98eeWtJift50MfMWxPAymGVZNcmPo1S6mCilQCm9kI6kda7XOJ3VuJ01yBQxGLMYOJzjSbaEPTC0A1K0FBimqZvPvYRNPxRRYI1aEJT4jrgPghHQS2JQ15map4eFdZCSlgHDrkxaiF02F2Vbyu8A4oN9h0sHEkfMaFO7nLcDEqGAF7d0SPuyGsf6PvYBUh4E7XIAJfs2pevuOYa0BpSlbIZ0DM0s45XYgMGPtgvS7T7andv9TOZIDwyDoOTDwaBifx3bYq4MkU1ZknHa+qU6doCxGiy+0b7vYrefDa1DcWeBRL+l4s1sH/Nz7NoP5bvm1UAEKXD4RluXZjks3h5dunFjYcYJMMm21mcst8arbVHL4RxPw6JATl6l3eS3q+8iaBqHVSnbdkC2yd/3VciKQYu6Qe6HTOcdtT3wyYLHhcOfP01cCZEVsCyN4ab12ucOnGSjybXNU3LypR7mn8X6q5bMle0gDN77ZTfEPMBlULDtA2pChN0N6ClQKb7QfbMlvRKqI0Bvb1BPoZpS/5Ke5HHSPbzPeeI3N2WKsE3Znb3bCxg2t4Y4bQjbGCPuyJ95HVxGD8rf4J6B60oZu+4ey0Rgl25pzIO6LUDbqUPS4R3jfR9kbYA83yCfQH7G55L9tdHnUvc3Pi+SuT59DcAeHOtbA8xrgEtOryvhx9tFnm7wT+Gb6YhmLKNshnoAWwOeb4DPAH4oMtS9A2ePwP67uTFM8dU872/J72kykw7e4zQMK7xLvqFznsxLvp1qNRzU6Tlz7TpPpyDD93N1fzR++0PjYbxmVwdHveNxPEg6+CoL4vyyAI93yRKcuhlrfEZn70TE+svkyh/XKdPsqOfdoRCtQGn3ASDXq7IV8KXzjBmzQJJJZe3OXNHVjYMt6hlCvVulC7mx4celogM6Mxj3KtA7XegX4H3LgZCIg3SP+n0qa5ubi42Z+BIgrAppZqEgcv5ykExlIUi7ysnOTvNiBzAnoLUsFFiseJ28xznHHFol47ltBzTvwLlXMEuyQsUeHn0HNjtr0jWko/Rqe587mK7b3rS6PZYb6e5gAXjpg2ujCFi/FriXVIQEvNPvVRGanNLEdbfStP72+NcvfcprD6LpPSt/hc3Ro7BoQKfes8KumSBVs9f+5l5w8GsnYxx4ovbnTjXpwu+dYiZH4E3ZY6CKzOgi8mDHyEmWePlULmZhJAgtdJzLbOtPutIGvlxOS2FopgDmPh/wJgTxFGdbS/j8w//rR26dCmVuZHN0cmVhbQplbmRvYmoKNzIgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMjQ5Pj4Kc3RyZWFtCnja5VvLbis3DN33K+YHwkvxoQcQeFH0gXZ30eyKLmIn7qZB0VV/v5JGmocdt5bTG8xVEAxG0ZAj8QxFihQ9/DWYAeOfGRwNzgbwYTi8xI4f4/X7EB9bBkZnQiZTBBLPLjbvrINgTKL+9NMLDt/9OXwevn0YPv1gBg9IkejhODAjODET9cPTr/fIwSKyi1e6IyLFu1K8TOQTRHmMbR8v3RHex/9jn0Z6OUx0mS/3m/GeeCTxYLmbxLO7Iw3xDbhHNJHCxF5j5zsedr89/Dx8/xBFhRAsD38n2RyBOBleBrEW1PPU88fwSxVTo5jOa0hiGg9qNFIhRI5RSsLj7k5I6uihXJxHvbNk4hN6LrPVIklsyzFS0YiOJoltkb5IF59dg2CmOeFDSu2wRKj0u5Gf9gXlwpvfmeZ22HHCMeGmnN5XcbuIhRfAeN8wFv+frMGBWtmwrGzKikqrQ+exG2Q0xoAx/DUKmT62lGfjhx7505xsNjMmffBz89EGEAlYu2mAeDEeLrTfrm1ri9DsgQz1IDSN70xzyY6l0NDjrCGZ1o/gZNp9mX9qP7cBpwacNX0Ad8b/nkBaBd40jmFhXvRtq815yF3bFXZf6I9tgoW4v8KvRrD0vyuafBiFTLTZhOis9amP7Ty3quH53VKcVOlvAItQIajvASw78rcIbwIouo6EpxLdTFpR7OEbtiLEDFGmjkDiajSxPL9h2YgFi9oHKKP3XEYueNOuPr4KjH4EUKbxqgaV5EEM9wTbwj1yDA6lB9DcIrvSuJy8A1LuEAR2s61pBCVSgUfqBJQaTOerfZmwEWA1PYDxOLtiOUlMpvnlEEYWLvw4ji+PbYCRg4AdADalVyr/lJ1t804sBqQH55Ri6TSnKe6rbXfbylKBEHoIl7jk5TKvb7e3Njakh1Coxol5XmHUDrHtgHgCDK4TQBJNCo9aAAgKVmwnAOjt+zPBACZ0AYTbuext/eh1dd8cEAsRuD48yQUwchahbkv8qDUtALEFCtIzQMfick1zilkkgBfuA5wRlGV/AxCpGiD0EN6wn1O0jZtScRaCbBWEK9IgI09b2lUCgoSNhiZzuBFK3PW8PnJpEFRR4D1SO2f2iKkcCDytDwpuXg0NMhsH6t8hnDjb02QtrNmGw1zNU88bxb4PAGzAsH8PANxia7/UUndFgc4FgKiGC/WYyV1pKmSkFTcHo8uDySm74cYxeFUos8iAPDY7EhUB6z8a4CdzmfZqb9yeqHrI9XZbBXNLjkydiX12w5r3b1pyZj8LQG/RHq/A3BIa5X2TXSSxeG3MJyDsQtj5i4/9tDjDo5PTmWVpp5vrt1J7KkQxr2vWyVhTOelk35Ye2K2P5ldBtvtv4IIH7+UjAndcV05OZwX1YLZqr6xluhJYawiEOwJ2VW2YwXHrZf9qqieZAl2URRVvLMUuTuVVbVprSSF43ji4tbq7AnvJkdyw3DNNHuuVLc+y5i3b+BRdHHa5hjx98FVp0xVgcwBl+tJgN25VLoD2+gb6CiGVAb350kKeHcFNQp6dNuVnYVFNc3oqdSlMfEs1+eX5nQC5+qWBtR4C0fKnBrXrwm8NEpMnCLbEa2gOaQYXP1PcG+oZS0oO6kUWQYL4VU+57L7+nIKfCpB+qqFIlST3pciz1F/Tvo7w+Zt/AM0ChaAKZW5kc3RyZWFtCmVuZG9iago3NyAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEyOTI+PgpzdHJlYW0KeNrtW8uO6zYM3fcr/APDK5KiHkDgRdEH2t1FZ1d0kXhuuumg6Kq/X70cOw/PyNN4bm7GCAw7DPXgOZREUU7zT4ONCh9sLDXWeHC+6Z6D4Odw/dmEnw0DK4s+qYkC0o5teHwwFjxi1P70y7Nqfvi7+dx8/9h8+gkbB4qC0uO+YVZgNR60H59+3yj2Rim24Yp3pRSFu1C4MJTTSulteHbhkpbUJnwPMgn6ujvopXJJjvkey+hYRpU7xjLtA4kPNaidUhg0MEjRDHfVtX88/tr8+BhMBe8NN/9G2yyBtrp5brQxII4Pkr+a33ozJZhpnfhoJjoQlKClIJTIVpLatw+adN+6LxenVh8MYfhFQh90tF6KdZwtjXKkYrXL3+NzlNF2sDDdS9lQT0I2Wz76zReETJbFOphyW1mnRT+BcmrvnJ3cjh0Qr9VLOj2rbtSmy5wExgofkxg7DSrcV4wnMS7Pel9k8/D1FsToFd9pfLcDrpWYIiIg8grqpB6b0YTQTxBRtqsHmTQYs4L8AsiutGvfNPMiOyCkZQHOnVZFl3LZ+BtFvd25PIKpY/1PxYNyXTVBxjmQlUAIgjX4DkAsZYAR4Jvsf/bkJKfioWJHI2h3GuHV22wdJNFtGp2/J500tXQT00GFXgQuDfEZ4PgQ36oPAc781ZuUgBf3EcDZl+9mHkDoQZS9VYDisz+ZM5abZ4gZQr9vEIwDu5H9L7F8a/zmpO5KI7UBo+QGjWQ3cm+d8wjxt55tLvmCnt1ag40ClMW3nfvSuX5MuncJB8gyWLX0nu8Q4u9HEXRXjOzH6jiTMx6rZUlLrHWjSe1cvihQzgIJ3y5Qc1Jrk9uOutTaZD+WJCBUB2ENWwm4OgFvCBoZNbDgSsb1yZCycO3zSl1LCFnwaiVkAUJs6RcXu7sSJ87PorBG0LJydH2OXJnBulmhLIsG7/1KyPUJ2R3vJg9Zu67VMb9bS5AJD9qtBF2dIOYRRvN2uewIlLcrKdcn5f+fhLAXMNqs5FyfnKeiQ7O2LVp5QL8S8iIh5/mpyyc71aATgV0jrTHo/blfmU4iuLGeo6nmrYv99LloNWFsgPx7pKFkFJWMUsVvM9wUksZRjhpA6BOPMgMI7cFp/raAGE6/ffGqL8VrCxC1xsc3zjzdmfEsw6reH7+nua1MG+yHV92irE9b14JmDXj9FUFLgB12xWPj7YunMDcz5LwC7RdPnbwNpJx+6IZJvk93x3rIl+d+EbLzE36XzgJ7T4xtxzb4aBc38tbtLE8VpWH5o4YbwvmkL4dXHy9FPLUYogVxV01ZFBJTRGCGkSR+1Hk36L+02leP4OJofR36JE2QZgTK5EVnZW6DUX3eoCvs7F9HixGQ6/IH4s2mWK3LqkXlNLicEPfvT43luvRamwGhGLQe0DKHYXNwRcSJuBAnTrtwGfeM9ea+vg6k1mDcVwTybLGYBrHVyW0qATg9/KgFRBykF93vDJBW1GbeKsvb4n121PZMMC0GmfmgYL6W9akF0Qkwyz0O0bq96yywvAPn9D2CdeEopBIUgwSa7xKUiuOIWpBIwDu+07kqvZ7uLwSBLg8z2c4HjD0I0x161ZUmbiMMyuH9eVQChN3xtmIeaEd/zTPGgSca/zevF038Oe8BSCLCjsCbsmlSqDOeSNPUBEbQXSwok4W0IghcnpYyu/6fiOkEAUswkDYybXy5cJP3VCkkiLHVrm/h83f/Adkc8PYKZW5kc3RyZWFtCmVuZG9iago4MiAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDU1OD4+CnN0cmVhbQp42u2WzY4TMQyA7zxFXmCytuM4ibSaA+JHcFvRG+LQTikXKsSJ18dOMtMCU9guguWAqsgZxz/jz8mk7rNDB/pDl8glKT4XNx1V8VLHB6fLEnyAhKWaRfDEOSSdDpJ8QTTrm1dHcM8+uTv3dONuXqDLHkiNNgcXAvjEuFhv9m9vIRQBCEmHSQAglZF0oPoxAG91nnXEkeBWn1UX1Z6nxa76VT02aT5sPtAlms84UCwaAXYAqBaoWpSThGl8t3ntnm+0VF+KBPfFakvkObE7OhbxMYdF89G9mcuMWmbKsViZmH3EqFbg1aNVSXAYByaes5c+Qs06xCK6EkuvQl8btTLetUrrUEtO3+rt2QiwEZO+tl/mP5C1OumcDrY4iCMblxXyNUbN1WlajLDvdnTStbwzv4tMMntQ+S8xGdFqD7mt6XOEe7KoLGVlN0abt90atyObvIJRST4KPx6j1l/sp87kNIbSayDznU4nrZ6wqcWi0ufqx4ee9wqeVzBCRI8Y/jIkk/y+NxtP+tVDRS1GhTHn7mCW9R77zx7Yswbkni+dDm+1i3W9+VrubW9kOsudeoOWd/51k4i9yP8m3W/nU+7vMj0MdsiekH4DdgXcP2kV4HlRctoFdReFdRg/ubzrZ/bhl3cDYnkjrF7TItkXovN7elZduKgHT1HJSSZfpDRygNwHXUYe9BLLq47xohMDeYnhey/Zzf9KVr66g+K0HbTtMOyY7uYMd0++AsdLBdIKZW5kc3RyZWFtCmVuZG9iago5MyAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDgwMj4+CnN0cmVhbQp42q1WS48TMQy+8yvyB5q1nTgPadUDgkVwW9Eb4tBOt1xYIU78fZznZNpp1RWoSjPx2I4fn+1RvxUqkB8qT8q7qENU06sQPsn6oeS1M9qAx5jZGDTZYLw8bpzXETFxP3x+BfXhl3pW73fq4QlV0EDCtDspY0B7i517d/z2CCY6AONlpR0ASHYmWShyFsDu5TnI4i3Bo5yFxsJvp86X5TIdy55kbJKBumOS2W6Io2iAAwAKBwoV3bzDtP2++6I+7sRVHaMz6k/yzZO23qpXZZ3THEyn/FRfm5tGIWpDziU/kwxomw7JQ8Cw3cgVyXh6mY3OTiRjX7Jx9eqqLmprQqjaImui0LVVi+2sNdTQyU42a3p4Yom8DxyrDgLtgKoOc6wmtNhMLTa0r1GTPzpkVSKMRrONTbgFm0sSeoBd8WlM1D4lJDTlKBQsSjeamM8U59em7mntu1Vcr0n7qeYes6IVPbSfuXlABk/r/phF7Me4ec1SChuUdAouKz9IvoQC2IOWQWTk5JLfGBenKfvcTil5fhkPWZAlrlmRDA5isW8WUOxQHm0pN9xjS7m92VLejbasJ57CjUChi8Ie5YG48pcsyR4L6ElyyxfIK2i2rerhViEQOW3YnFcCz5Vg50ow/C+VkPsSV8sQb4N2X8qxgtW1mCZrOA4VEsoznBpHanqZOtV+ELqsO4N3i2rvj7XMWjvJrcSXc76gJDnFl4eaOswX9GZxURHV3tmqpLqpNG7uXe0tuyulJTcer6ImyhhQGwOokWmsLrswf4nvUKkzqg91xYznG1Vk0GoPeDecl/z/H87GGh0v0Ow6mlOkkyYr3nFtatmK4z/1+JzAfVXlcvIaJt7W/fsYrt0/iWV6qCN4vz4VyqWLyeDymFy7sCS7ojeeg1Aqc7A918CprtBnxIUPYwB8yeJivLRPCT+K893zwqKQKJ7PixnVrV/MiD4spoQpMBg6+nQL19aQJh/uxvWS/624tofVzyTngo5E43dSIw0fSqM1tZ26QDq6RT9NDYuueiHJkKCtC14VskDasTmXcn0crtbLtaqQG57f/QWqYGibCmVuZHN0cmVhbQplbmRvYmoKMTMgMCBvYmoKPDwvVHlwZS9PYmpTdG0vTiAyMDAvRmlyc3QgMTgzOS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDQwMDQ+PgpzdHJlYW0KeNrtW++P5MaN/Z6/Qh/dOURdRbJ+BYFxSYy9W8S4BLYDJFn4g+1MLnvnnTHsMXy5v/7eU6vVlNQ1O0lmgkMwBtYjFVVk8ZHFemx1RxnCEG2I/JcHsTzEOmjCYBssx0HCkGoaJA4ltEFkqKqD6NBSwdNDDEUGSZjf8BAmK+ZJgUrDY3WIKdVBGnQXHRRaS4X6CO1RBsXUoHmgxpjDoAYDfI4LCWlQTE2wqlCZYdqwnJJsMJiq0IvFSoN9o8pgA1atguWnCJUwkqDKsg4JqlIuQ4KpXOkQVMM+TTZ4DTctYHF41GLGeBpM4F/Og2nBOEylIEAAf1sZCp4vMQxYqlXDOJ5vivGMJcB44RKqDjQluKlcSiN0WApAA54pA6eK54vhL5ZW8TCgySGUoTYsCc43mBasu0UsreGeS8O6m2FpZgOGcoHzMSjWCNRiwEgzhkOx2pSmuJaYGeA2FOEzWEBRxhlhKZYYM4wkOB01wYfCC4iKTWGEN8YUwUjD/yLwryHxIsGxzNBi5YLYRKioymcAVDU+A12VyEdAU3PhBdyb1gxQakVaRaBQG9MPbraAMMeW4bLyAr6LMUvgtOIZATrNhPmCkTQlDkYykw2BbyXhYWYnFoQLjDQmFZ6LIRiviFbkU3AxBqQVUo1prHyOa8djAWnHsWRMQI5lZjH8RLojKQQJA6gRcSFqoQF2gc8RRqYUxRX+Q5JyTLgj4C1igo0hcBdXjbuCY8wraRzLzPjAMe40xXgESNw1hVdIHo0ca9Cg8DoKDCPhMQYThit4KdSl3HiINXcWxwxrU3qOpMauM45lRETpORKUOw9rxp7iVWNmIDBKDJT5qMRA6ZEyk7DHsNIpX5TFgp5DPa84ZkhTpeeYBhuVY7nBI3oOgXLT8Yo7nZ5rQ1IYPbdQUHUCxixOY8xA4mn03Lhei1NWIm5Gz5Fl2IRTwSmIqNFzq5UbuDFpuZVZdlIwel54BSnNJm4SIRgpsrJU5jQTWlFKcIXko3tIFtQ3ZTomYUVhbUwMqDKNkzJY2PS4QkJo5nMER9N0heUp8z7ZBCmtmXFG4lUhuFxLYvATn2NSa5oqZybgYaqhmMGkwxBtUEs2BoFzp9LKTZZK4AzOLcIZ9Kiw6hXOxUbGFVfF4qeFWri3tdDfmhlA6qsMW6EWbD5cUUtLDCq1NKZLFW77wDqqvGIRrzxBAhIEkeXVlAbQkpGouGKhiKzUSFpcwZIhjVBuA4OaeaUs8ZzBrWaRM6RyD+NC+Ujg1ClrmS15cob7JBslDFueMiBQ8VTamEvZ6nRQsUAxjwL1JZv2K68IGMdzmvYh52YebdOiMsPInMs8OX72s+Nnf/nm5vjz29u7++On3395z7uP397+9/EXd9/+8ebbNwHnafj8+O/H18dfvomnm59j2qfHf7v77O740QfffPGfN2OUw4cfHj+5+er+TWljw9lZbWR6tjAyU1sesd8+//DDH/2VFuHQEM8Wf/vJa/774M/3999899Pj8Ycffhj/9/b727+MX929Oy4rsGJjRmbOS0hax4Swrtbwu19/+V94Flev3+FUg8lPMP3V3S2HXuF84sjxFZScLlgW54d+8+3dV5/e3L85/uajV8fPbv7nHiqAwS9Pf35x+vP6b/D1GrrfYZFv727HeMEXh2aEZ8rDp/FAHUPOT2Xu+y8Xi85mTeNkK4Sx0G6Ko1WuQ8YS5Dlsy9Z2qmWM3H4qY0M5Sa2NKFvPYVt3touOmedNrqOhNIBAjqgRz2HbdrYzdhCLTUUWo5SiEo44yJ84vcSnV9Iy1jAdfQg3TFqDaXt6d2WfYqCTo9B2iWMAqcDRg/HnML3PsBhQNvJkuuAExjk5ZonPYXuXYdaQ3ajoImEkj0KXMIYSnzjK6qPMKllJOVJgAQHzz2NKT23SViaToG6Q6eko4OaWEeyYn9hkWpnUwDJBmjmyRTOLY63PENS0z2WwACBKOluRWJFkbkzPkcxpn8zo/8YQdLLdIgmnjS3X57C9S2Zwo9Emso06Mq0FdS0+le0t36jYMZ5uCJusF7rxAu7/e3D/uZny8RUaXn1J4pcK8QLuS4V4ydgXTF8w/eswTWOIdQE1TV3aC6gvoP5DQb3q4v3N13DwX6xpyKHVhO4u+EOLr2VSK+P0DgJNfrQBz6FE2FOt4N0Xb7++v/vp29s/3f3rArJfAl98pILmn+9mrIy5DqnKGFN+YhBis5ZaqDW7z+4imu7Bch6nV5XWRr4UKBWZWP+hCPATl8x3kScE+IFLKu2p0yCWyPe9qm2bBGrMbr7NqmPj65oc+JHIM2Lw5y0Eqtjk/PBWsSS+vQIU4ck+vP2nri9/Nx/++O27t/ffvfngo7uvfvLp/Rff3h8+eH1/826M4fD58T++eHezkrVpIfMTh5bdXTiAUOB2o3cWhkWtXvQusta8onjgWzc3IAe+fHMDeuA7uK4xW4yVnTE78KWd05UOfHfnBvKBr/DcQDnwc9+utXq25iFbZHz153S1Q4zeN/gavWvQwReDe2O7+EzWfvX2j9+9aVMKTF/JOP2d76N2Fw275yvbLnpak0cEe4cvJt0A8I/FDwDVWPvW0mKt7qwBf1khAvxlBQnwF/EDQFUe8K2drUncWQP+4n2Da+JdE+Av3jXowInQNSayGEtbY5BF9a4JcFPvmgA39a5BSdTHhG2yNkWf37KZwi02/53v1fqrzoueXUAgi7qCBPjrChLgrw9AsuCvO/whi+YhASLmEVHgbx4R6IjWR0QX/HWHP2TRfLCV1rxrCvzNuwYl/MJA19qCG87RrTXgllauAbe08g24pZVvQCPpI6I0WTtFW+fo2hxtm+9TP9pLOTTZLhr+Jw+IAf7kATHAn6ofAKip9W3pYizvjAH+7AExmM8eEAP8Wf0AQM0PeFbO1nbBhyjmlWtAP69cA/rZu0bjfc/ScoSl3REGGQiWVwXYivcsAbbiPYOSWB4Rs8nYKfQ5nEKd0+lvme9Lesx54RTFOXd0VpTOCnPf+8uCdnGFLJYVkECy+GMPc9B+9JUvYdzrRhjrCkiEsa6ARBirP9FpK3Vt5SWMeRdGyGL1KZIRxuo9ywhj9Z5BSWx9z/ICW95REchi865lwNa8axmutJVrQKOlRwRpsnYKdo2n4NZ8+tvm+9YPdl4oTdlRGshiW0EC/Ff8rRxkRd+gQ0707aqxspxpZUdFIJPgESlykBV9K3qQFX2DEgl918pCRcru5INMgnetZAysXINvK/oGJRIf8G05CuvuKIRMoveNqrxr6NdlxcOgQ+JjojYZm6IvJ5o8fYl1+hvn+9gntHU5UuuuqkIm0SNSgf+KvlXgv6JvUCLSJ+t1OeTq7kiFTGQFCfBf0bcK0Fb8DUpE+r4t8Wi7o5ATvWcN8K/YWwP8K/YGHaJ9z9pyFLZdWYNM1HvWAJt6zxpgW9EwKBF9TNQma6fon1jy9K3k6a/O9w+wt3auxXuAAP6KuzWAvyJvDRh68gZ8+tRNzoUYOboxBZF44oZ6chBP3FBPMFD8AG3Vvi1djOWdMcTCEzcUGAxEP4BYeOJGJZIe8GzBMO6MAcS0cg0gppVrANFTMOiQ9Jh4XTb9zA1l5oaS5vsHeNtydFzUxHauGefsmdXl7nmH4rio2QUVMvFsD4UTA+oHEMQ+20O1XJTvggiZeLqHUnqQvIIRQfR0j0qkz/dQIc/W9p4giJ7uCWt3WbmGIHq6Bx3SZ3ty2QtbTkKRFO8Y86F4xybd3jFAUdojQrQQQpkZpcyMUsp83+dssuTLltdAIp6xoVMVT9jQ1Yjna1Agfb4m50NNt0wEEvFkDa2leK4GFDxTw3zpEzU9kxDdchBIxLM0NJXiSRp6SvEcDQqkT9H0TD90yz4gkebcQTspnmehmxRPs6BAw/vDM9k5BXkmgDITQDkRwOn3H73Vno9L29YxSNQTMzuop2VoI9WzMszXPimz89FlW74BiXpGhg5SPSFDA6mej0GB9umYnamGbZkGJOq5GJpH9VwMvaN6KgYF2mdi5xinbeHg6pw36BrVkyk0jeq5FOarvD84k5kpxDqzPJ1Znsb5vs+/0rmm7to6SNSTL5wQ6rkXmjz11AsKtM+8lhZvZwZQe96F/k497UJ7p551wUqfcy3N3a63g0Q94UJnp55vobFTT7egQPtsa2nrdl0dJKrOHfR06kkTWjr1nAkK1N4fnUs/pzOX05nLqc73DzCtpeRf1MjcFurcIOhMFdW6p9TSX+x8Rsg8O0NHqJ6c0cUugSnntZVtyCBRz8vQDKqnZegF1bMyKNA+KSvnkJXt8iFRT8nQBqpnZOgC1RMyKNA+IStnlOr2wIJEs/cHMPmPwyh27mC+Zn1vMOryGkBnuqcz3dM03/cpVT0fe3V77EGink+hvVBPp9D3qWdTUKB9MlXPJbFujz1I1FMptHzqmRQ6PvVECgq0T6TquSa27YEFiXoaxVvnDpo99RwK87XPodr5wGrbAwsSrc4d9HnqyRDaPPVkCAq0vj88bfm0X2eKpjNF0zrf9ylUOx97bXvsQaKeQqGXUE+h0OCp51BQoFc51OkV62F51bqYmQU6M6jTLbCeGdTpnnJz98DwKoOapDJbSRsjnFQuSoD7zJ6mW8A+k6d5soWuH3m20DYWMiY5NwpunRcVt86JdrDwYEQWE6ewzqRMZ1JmJ1I2/TB1r2T+Yv+PCfnlhyPLap3YZvZ0+Y2azfzp8rMimxnURZNd5VCX34tsfwe2tYxHbKZTl1982EyoNr9fs5lXbVTaVXq1+Q3Y9tdCl3Wsn7OZdW1+xmUz+dr83MlmDrZRblep2OY3Q9ufXVxbEZ8z0a2NNJm2/TBNp/0wlbw3ObarmZLNZnpoMz00me/79I3HzXVlms+F6Jy5Z6X+iDx9oFDmDxTynOynz3im303Pj745nVnH3/3+DwO/m6KIUxtuv//6688hMy/LuY5IkusyfqdGOzJtI3bFdZkkcK6OLEYUxOuy1Pirw0W29iEWlP3OvGo40TrzgoHjd+YVpHXHHrpcnMadeamAhnTmlYIeuiPLCprUkSV+g6sj0wxG3JGJjqE3LzT0G9dlsSUcRB1ZFfSEHRnypfbmJWR06sj4c7SOSCq/UzvL8grqEgOa7+uy3MqInua6rALq3JGVADLfkSVAXToyU5yqHZnwa2AdWcxj6M0LgLozL9UKJtSRFUDdm5cBdW+eAevePP4KtjdPcMos804t3SUOKBO5I0MpiPG6LCVFk3NdZtzS1llLKGg0r8usmStLG1kNrixtZDm7srSRYZ3Wm4cyWHvzJLvyspHxB+WdeeBYo3TmKX+Q3ZtXcO725iV+Oa4jM35vsCPzR8f/AUlazkAKZW5kc3RyZWFtCmVuZG9iago0MzEgMCBvYmoKPDwvVHlwZS9PYmpTdG0vTiAyMDAvRmlyc3QgMTc1Ny9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIwMDY+PgpzdHJlYW0KeNqNWE2PHbkNvOdX9DE5rEYSSX0AxgBBFptLsFhs9pAP5GBnx4ABwwY84yA/P1Wa5zctZah9h0HrNUWxqkRK7EmpHfFIOR654ZEOK3jkoykecqSU8bQjaTwUk1JpeKYj9YKnHDnrIR1Pw7tcj1w7fuNdrPjdDhHDb/wVrCURY8yTdGjqB16rYprkQyvCiRwWEU7KYZiapB5mACXtsPYMoSSE0nIUTXjWo5SOZztKR2iLRwVUQqlGSPmoDfMwbhHzzI4mnFeOVjivHg3Qk+ajk5LK0bXjaUevwIU4KUYGxo8onAk0sWAqQqXYMJe0U4IdwRI9k1G0KodG6hkRv1DCDADUgFGl8w0o5ULakFg6dQDBXAoFgHCdzKFyLoQyZB7YMt40QsGGxEgooFQIBVIr9TPEyZUoIbZGBC1QO1eYCqhoRNBSER0oU42ECtxV6IFY1bgYQtRGXvjRknENDJSLYZ3G5UmnERRZdGx+IvhunIwfvclIF2gAESqYRCEMwI2FmUJTZ2SYR64BYR6KAlhOyKSEtMiZqcTJWTgZSwwhwR+iEhS8JBEmvIR7hdzNUrmLSA7yJwAlvwwUSkojfwa/woQhZGYI+bWRGrBD3Wzgl5NyE+vxvInk16g5+bVGqYmC1MAv9Uiy5J9ZDZjM8mjkh7rArrN4EKKRHzY5d/JjmA5+QIcBN9Bo6lSO1TQ2EKUVwQ+Lsb64hhyCzMQAc1hWTCrhnmF5DBrIAaEMBkhFycqMwDrMGOwHBhBJEwoTNrxRVizqEZREKDFSQ5jKisoTFe5iwYAI8VaUKYbVxYiQKxsRckEjQq5TiJDuhQihjxQihD5I9Ereh1Qi5LlRUY2ZB0YlQoCTym2EUNKIEEJJMwqAddqQBO7UEKnDo4hBgXBomHgYUcPMYiHCTP5EiCNOh4ZYVIeGODp0aIgk0aFhpjQUEiLoWD7y1EOSCBVhjQko6wAFyiqZqiOEGPcBlSVjixBiKJp44gknYx1lEeCcU2U68Ew0Hqg8DQ1JglTGgOnOui4kCPUhPCcDWCFBnsqFBLmvlQR1HKaEAWAVBIXc29hqzGmMQ8rNmAUcgKCSeyfBMQBBpQidBMeABMENx3NlymBAggBvkQSxqKWRMooBCQKl8RQQHubMd+FpjhLGAO48o3nc2UhqgDdeGALwNm4M5RVQqB/f9KHoYTo0hsm4e1yQaijvh8rjkNE7RRo3BQT4J06mePx897e//wNXAzSpATn26evHj//63WqLGoDsVRtyNjTHD+dZyJ5fkVA9P4shXf1A/GQrlgPK9lWbler6YXdD+maqp3DjQgwQ/3UoUkK5wsSG3OqXJcQrlHZ7vNiDObIgVUK/rilnU00xSHPcWg7qLVlaaM4OJbOAFHrdpil44XIL+cWt+zDrnGRqIYpjkxS0O7YpcesmcesmcesmcesmcesmcesukzbZMmuG9i1IcmxIajQPr9tqDNnzM2Cpjk1RKNmxZWSn55dKiJ5fRAo6ftZa6I4frskgVz+0klMuQZfi6DlVUb2titbCrJsqOkP5Db+pwuR2v6n6zmfZb/idK1P7zW5T1drmvKqbirZ+q9+S1TfH8zP+/87VOZMKZPGyTMHdy07RUD2/nELy/GINxfFDExFic2wtBnM4oK0J3fMDd/X8pJ+uzLo5JermlKg3nxLoj4J4WFIO1eGAdtTdP/S1oXh+NYfk+VkL5vlNN85im26cxTa3St2/cUznPNMTv8Um8cRvsSFe8vyinPjNNsUNF9Wx1XLit9hKPvFbbNpdfuhDTzfqYsv53Ar2TQvZNy1k37SQ3b+JF9t0Ey+2zU289Gbdv1UW29yAdf96WDSL7cRvtgniJcdPWjrxW2yIFz0/0xO/xabxxG+x5RrUHFuS4LnFeLrhZltuJThVO1+Mc0+Az+CQnVNpuhilzocSishpleaLcfmmiOa2s/PFqEsi5eB0LvO9uNimu285j1M/5dHiN5/xujnj1T/jF9vUCS6bV8XpJViXPXhuWkLy3OSk2GIC8+i5YYMcU+opdM9WW3DqIBUNzUGSLPl7N3XHi23qjmfb3B0vtqk7XmxTv7PYpn5nsU39zmKb+p3FNvU7Vf1+Z9FM6imn7cbecq0T2/SItul3bNPv2Kbfsc1XkW2+iqzfuu9zH7jYpj5wsU194GKb+0D1e7bFNvVsyxf21LMttqlnW2xTz7bYpp7NNl+LtvlatE3/35Yz1071YJtvg7bUWD4fWJvvhrb0UOrmy1xjtvmmsM03hW2+KWzzTWGbbwrbfFPYpv+3Tf9vm/7fNv2/bfp/67fm0tT/v3lz9/3D49MjmEVOur/nq18+PH18ePP+4f37GLXEWHOMJeHvV/wZflc831/ev7u/+yN8/nr358+/fL77/vePX989Pvz76cPnTwGb+of7+7uf3n55+PQ0/hlLHD8+/Pdp/NP21XhY/jnWu0ss5XMXI78S46cvD/8Z/yE+BawOwfwSaBDqz78LxlUuf/3y1Ivt1x0g8QGVM6DmKMAg7RnIAITfeFyV4bsBtl/ey/NulHJ5X1/m7ZVTH6gjlr0qBsbllBGMbS/iXcV9+/y+POCvrri+gSKkHz58eXy6bt9f3j5e1br70+evAPudvsCWs6Td2eP0LONI4P4MIWOsl/E3KgN+uSSg7OXLS3L3Ew5NFxz/A38uTrAKZW5kc3RyZWFtCmVuZG9iago0NjcgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzNDg+PgpzdHJlYW0KeNpdklFrgzAQx9/9FHnsGEWNRlsQodMVfNg6Zsv2msazE2oM0T7020/vbCkNKPxyl//9czk3K/JCNwNzv2ynShhY3ejKQt9drAJ2hFOjHZ+zqlHDTPhXrTSOm31I8ylbYO53nh1+f153BnQpdb8sBnlu1PKw3/oRq6Cm3P3VAOMzF3l57QdoC113LEkcNqqM0v1gr2yxqbojvEx7O1uBbfSJLQ5ZiTvlxZgztKAH5jlpinI+mVNdBb2RCqzUJ3ASb1wpS7bjSh3Q1VN89IbHjrX6kxbT38Z0z+OrFCkjWiP5PtE7UYQUBEQbohiJUyykWOAR5UQUE3MsJgqRwhAp8olWRIKIKkRUISRnETkTAinmRKQZk6YglVhgA+ab+rd73/skyKTgpJvP2RTnT23iwWw0ulkI1vOV149lpo5Pg3KfE3Wxdnw3nCaciOnxGg33gTOdmU7h9w9w+7eyCmVuZHN0cmVhbQplbmRvYmoKNDY4IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMzcwPj4Kc3RyZWFtCnjaXZLfb4IwEMff+Sv66LIYfhWUhJAo6EKyzTn0ZW/YHo5ESlPwwf9+cIdmsUlJPsf3rt9rz07zLFd1z+wv04oCelbVShro2qsRwE5wrpXlekzWop8Iv6IptWWnH6X+LBtgdvq+/3nbv+40qKJU3XzdXuT8eNi6IZNQkfJw08C8ifOsuHU9NLmqWhbHFmP291C4682NzVayPcHLGNsZCaZWZzY7pgVGiqvWF2hA9cyxkgTLuWRNtBI6XQowpTqDFTvDSli8HVZigZJP/4e2MO1Uid/SoHw9yB3HWyZIKVGE5DpEGZFLtEEaEkbiAVFEFBJtiNZIPlXhVMX3kQIHKaDzFnRekBGtkJYhUsqxkclxePf/6NflKHPJge+SAwp6VIJT0A9IsiAHHgY5KTkZCUnJN3cJBqmPgNKDFZn0Jltk5PlePZ/qhuGwsTs/msxE//sZn2icq8dYiasxw0Pj8OEIja9dK3jMp271mIX7D2tcwLsKZW5kc3RyZWFtCmVuZG9iago0NjkgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzNjE+PgpzdHJlYW0KeNpdklFrgzAQx9/9FHnsGENNnasggsYKZWzdart3G89OmDFE+9BvP3Nnu9FAEn6Xu8s/l3PFJt+odmTuh+llCSNrWlUbGPqzkcCOcGqV43NWt3KcCVfZVdpxxVul36sOmFu8fu6+xONWgyorNTwd9oUfshoactpfNDA+8yYvL8MI3UY1PYtjhzF3N+UcRnNhi7Tuj/BgbVtTg2nViS0OokRLedb6BzpQI/OcJMF0PqmSfQ2DriSYSp3Aib1pJCwuppE4oOq784iijo38rgx6Z5O35/FVgiSIIqSAIz0XSCF5pnQWrZFygZT6ROSZhkjrAClbIRUhEcUVAtXNOoKrqr9HkJufk54MY7l3JbstczLmV7JbkJLygJSTMfTnyyj9y10NuGf1cs/HGnDvhSgiSokEUUaUExVInCMt6c4wnCbGLiOqQxD9f6v9E9tDtxaSZ2Omn8VGw56x39squPWi7rWNwvkLsAC9NwplbmRzdHJlYW0KZW5kb2JqCjQ3MCAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM4Mz4+CnN0cmVhbQp42l2ST2uDQBDF736KPbaUEP+uKYhgtIJQ21ATyNXoaIW4yqqHfPvqviWHLij8due9mZ2dfZwlmehmtj/JoSpoZk0naknTsMiK2I3aThiWzequmjWpf9WXo7GP83L8Knta1ddrHp3ePvN8EINl7n6oXe6l3F3OqcVZTQ2Cz4+RmK05S4rHNFOfiWZgQWAwtl9l3TTLB3uJ6uFGr9vet6xJdqJlL5e4UDvFMo536knMzDTCUNlZqK4aaprGsiJZipaMwFxXyIJ0XaFBov537jiQ3Zrqt5RbuHVcw03TtUJFsSIOsh2QDYoQ6YCg45qgcyJQijNXkWODPJAP4iDt4oMSuHyAtMtBkWsqshOQhVreQTqDJg46gg6gGKTvoF10dk3IzpHdQwaegtAJzwS5inxNyGBDx1Gnj55xuHjoEkedvia4OLg7R9U28nF4eujgejGl04Q7ONoFVfueem79rtvDbwP7nNdqkXIdHzXVajC3GeoEPQd/HMZNpb4/8svKPgplbmRzdHJlYW0KZW5kb2JqCjQ3MyAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDEzPj4Kc3RyZWFtCnjaq/9Pb/APALxbcg0KZW5kc3RyZWFtCmVuZG9iago0NzQgMCBvYmoKPDwvTGVuZ3RoMSAxMTY0MS9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDQ4MzA+PgpzdHJlYW0KeNrtOntUFOe9v29m9gEs7LIsC7jqzjqyYHmzPNQaWYGFRRB5mh20ZpfdlSWCIKxBbKygtfEuMVo1ps1t87SpTVMziLEk9abm0Z62Oenz9NyTtL1Nb9KbtjGPkza5rcpyf9/MoGiTnrbn3D96Dt/HzPxe3+/7Pb+ZswcgAJAEY8BC8cb2otKHN5y8BSkX8PIH74jyKRczsgDIYsQf2jbY0/+ZwPlUxJGvO9fTN7rt2R+9cytAwiBe34uEA6E/1/8lCJC2EuUrIkgw8cZhxJEPyyP90d1dDvZVxE/gpvf3DQQDKUzq3QD2YtRX3B/YPagpJg8BOP0oz+8I9Ifbo8t+iPgYgOadwaHwYMf4yeMA+aiPJADLbSdHQQN6zf0aF1LsypP9CWxjUAGTpNWyGo5huNeAedcN/GYk5uIFJevaa4AAPzujtcct8Fn9YcbHA3mQ8jiv5jzdHVitBTKgGbEM2KU5r3kZbhicFyzweYDZSxS7fo9b6J2uunpi9q34wfjW+OnZt8AavwD/1NArjwkYh1/BF+AI3ANfhEMwTozu+s1doq+zo72ttWVj84amxvUN3vo6T21N9Tp31dpb1nxy9aqVlRXlJcVFhQX5uTnO7OXCMoc905JqMqYkJyUm6HVaDccyBPJ5ifg9EpvNp9YFBI8Q8Bbk857MSG1Bvkeo80t8gJfwwTkFr1cmCQGJ9/OSEx+BeWS/5EbJbTdJuhVJ9zVJYuLXwBq6hcBLL9cK/DTpavUhfLhWEHnpbRneIMOcU0aSEXE4cIVsFbWW90h1d0RiHj/aSCaTEmuEmnBiQT5MJiYhmISQlCsMTpLctUQGmFzP6kkG9Ml0W/TUEwhJLa0+T63N4RAL8hukFKFWZkGNrFLS1kg6WSXfS02HCX4y/2Ls7mkTdPvzDCEhFNjik9gAro2xnljsLik1T1oh1Eor9ryRiZ6HpXyh1iPlUa2Nbdf2aby+JZE02SaBj30A6I7w9qUbKQGVos02fQAUlJgaibT5HHTY6jDWsVidwNfF/LHA9OxYt8CbhNikwRAb9GC4ocWHKqZnn5mwSXV3i5LJHyGrRdX1urZGKa11s09isuv4SAAp+FclOFbaHKnXZFo+jg0YFgwORtjhoGGYmHZDNyLSWKtPwXnotp0Fd1GeKDF+yrk4x0nvpJyxOc615X4Bc9vY7otJXHZDSPBgxCcC0lg3VtftNDGCSUr50OYQYuZUflWRKMvyaFVDqJeXNE4MEq6avwDrhi6JmWQk5UPl8bYNN3CmmvlVAqqhejyCx6/+3RHJRAU8BtqbpxRCh09y1yLgDqgZ80wWF+GKgB8T1lsrJ1MqEgYli1B9LbvULE9vu09eoi6TLDUSnqbqKqnII/cV74n5axUTqC6h1fc0uGZfmyzjbVMuKAOxlgpba7DKnJ6YL7RNsvttIey7bbzP5pDcImZYFHxhkZYdRmjFaza5OES5Vjp8je1CY2uXb6VqiMKg6rhsz01qBJ9NUYMFKOmz9byPsbEiCpqQwNchIFSvwbuky9bjZcKAy1RauNVreB+xwZw0miGt4D3hWlWO4jco1dByqvHOadNSFPXUeG0O0aGMgnwG2by6Ma7Q06B651h4TCFDj/VZ45VJNJaZtOh5nxAWRCHCS+4WH/WNhkeOshoMOeZqrjpuwOYFC8MEDmTPITSYUl2ebX5wpXoZv4Z6b2I3zLH5mF5obI9R5YKqENDyBgloCbtXptrks4A2tIBnL2/ClpYbOjbpdtNmjqymSoSGUExo962RpfE82WvbQ/cyQyNp7KguyMejrXpSIIdaJ93kUHuX72kTvsEOdfjOMoSp8VeLk8uR53uaB3DLVIZSKZEiPEWopjZE9LK87Wk3wJjM5WSCjAenCcg0/RyNQHCaUWgmZSOnvJEbGORwCsc9J80hTa/QxmSaPCaBhsydqHHr3QluA5PM2CYJJZ1FyjP4fZJAYMpAkoltEle1yeRpMjaZ4LYpEmMo4VYsPNR5fevOLt+UAXCZfMeNqunAcsmMYLLxteLhQ7RQ7hQjMb9Imw2smBr8IxIR1mKahLVoiNYgJQrhailJqKb0KkqvUuhaStdhiRIrweVjmPsWidAK2OxzYEvyi75vi5neppkS8VCJmX5bgMY9h98Oifh9wIIODFMcqwMoKi1ylRSnOVIdlXg9xzZc/WaEGZ25S3P+8voI9z/0/U9mbXELe0Brxy+TT7ithkUJS0zWOtEEi5bUi4uMoKkTwQZVeZCpXKngSkWd7LKccqurtKIyTahiKipcpdYMnVNYptXpXDqB1WojnpXu4qa2rNefS/5hRuGjD+VG+bymW2791JKsd7Le/l3OI3FL+mHrncPc6prq0Pe+kpEyviQw3rfvyvn/OENtgrb4BeZN9CUJEqdYNjEHqqrQD5OZuBgm1ZQmMG3vEf2XP7wydOA4MZF2xk3S4u/PnI4/H/9GfIYkyn754xfIn1BHIurQs5yig5gYIkCqiXWZyZ/+GL/yJfLezgPHWH/86zPfjr/P5DB7SSch8T+iDXmzr6Po+2iD4akEdqOYYMUwlBRXllFv0y1aYZkzr7U+r7yltrBi/YbNZeX1t5VR24tmL3Elmpfwi7DAncFmZmVlNopZWUlOJ98oOnVJqY1iUpYa0FQzrMoskh9omkWrS7dSzagao0vDW17mFIRKFcDo5tC9uZIfTN15z53vnPrpk1t/2vnIuQcOH7BPfOXVaLDl/u6WF3479SJ315de4RMyvrr34EtDG0+VlD8YO3DXkTN3b+mrqL7j6BlqI964UYyNFqzYIAxkskyTyGoVs2h+XQRLRkfOsDBTYmc/bZvhNI57Jy7/HNeenL2kSUT/MiHDbbBAg2jhknUNYnKa6hR6soxj0i1of2U69QXDbV7uKsUCYc+cib/98Atfn/jmpi/teD9+6Wck9Jvv3OeJaVzPx//tV9/69ap77YtJHmGIhjx3qeWwR66FDgDtNNpqgSy3IZFJY3UGPQtGnRmqXK4qlzkDY+dgBa1WxwrElYaWE8FsrhQIc+oxvS7P9OwjpPxP9yYwx0li/CdnPvM5m3bGpTF5r6y/uldz/koTd+7yeqaZGdlw+R25HyAH8yegf07g3Sa7IZ1NX9wgpnNsQoPIps1LnJwyDqtA6QTMUI7TWV62XOkFmi6MgTVjKcN+Pv7m7O0P1z9y9pFne4/ct4vo/zP49duqq095PvfosvW9x3vKyemf/X7Jssc77vts80hr5+PRb73lLDzpzJ8YqdhQe4svNCrb9Qzm7BzGQUdzRsw6lmMbRI4FuSczsbYdgpw0B3nzCZIev93BvrI0HtHY77uP+sVAN/rl57aAGTs9x21J5AygMerTYRF2uMmQVicarNf7vCrVLDuIvrgqXaxQKdB6Ly8zV7ClFWalGmmOmX1bjuYm1ez7/cFF+qnvTjxwz+UVgYu7BzdHprZt5bYEP/XElemf/Pa7T/yYhH5w1fY0WXFvz54n4q8+OrTzmk3sObQpE5aB021ZnFInLl4MOl1WnagzgRkts97YKiXFGsUMuQc5h6CzyMcQFloa9oeSB3Jp+qf3fnjii/fHz8VfcnCfHq86GNx6tKznqWLDG39ssLz63AUiXjw4cu7llgPHlxcfyxfY31z46sjO8jq0iZ0dj1u4JrQpF8qhBrzuXJvLhXbpVtWLHJ/A6pwuPOPSc53uetFpymXqxVxjen69mH7DKUnrI7OoKBWrM4/mB0Op0ymnRg6ti4wMq2w/daaiUrnRO7YJscyVU45WqyBq+2u5pqyfrfj9C5VLJqqrdj31aPyX8f99/pdHH27etrmq5d1nmptm1u8fO/9y3/4Hd48Ra1fLxjuqfG3Nu9Zx3u2Za/3ffl1f3rzCpk+xfnZs+gfHP9d7f8WKFk8wj9/b/vyfLZc/2NC1L7rWm2LK+gxr7hQ7jm9q29T6eczRJzFRds2v8b2SAilPGXSMkaTjWfpiKZ4SQpqLpUYrx+Hrp/9wetTt8tXk55ZxXpK5sr6rsqmE1i7q0N6FMc3HykuzGg1pyUZwGNJztGnaOnFRmglbWali7Gil8hxpc05jW6dhyJWXjPJIt1DidQFm+oR5bWPHg6OO8Ok/TFgTb/3Glp17kvSbng/um7AeffyExbO+9YER+3bm3NYVdc27f/3leDbnfWkksj+6d/TQ/todM37mXOQTaxujPz8WN6j2civQ3ixY4k5RzDWkU1upqTTDspkfZyU1j3nlhKW+WfzauGqSf8q/73jGEdwnt6pp9389IFuwJzyxd2N4xq/2wnvcEm4TJOP7Fk9WSKV9qcvEyrNeP1mpcmauFcm1NsQaMTMHnv3l0Q///eKrx/5MDuzd3v+N2/aNRB77FLfpN9+5ED97/r9ffJZsnIrvHD5yIv6Xhw8cOUaSlfMOfWUj8rlgcyen4NvOmJQuv/ZVVxVPSanygp9zdC3DvOdxLS8v2/zgyOLtsoverT3clpSTybt/vj+eiN7d1l5A9XfNXmJ+oamFRTT3JrPbkG40m9PrRbNRC3Wi9lqD0w+LRZmml0uKs9UXBzopf1+4dHiqsbRtyESluCy0dO9B874nUp7e211JzIvi746bV+9aNJ5iGbmjuoPpamh+4+q+mVO3FqxcI/u3E8+9rZwXzxj0z2hOzDQmp5vRP7O6M75CqH9UP221yjTluJvbn7xw0nzc9/j+ZaHH3pywGrrP3jZ2zHqM8840iKVHdr/2APnFlemX9nZPjK/dwZyC2Vn6PcU9gt9TTqC/gemgiTkg27EJk1wuf58lThEWw02/R1zERTaRytPx79NvMlkOr6z7aWpuM675ABKU32m+H/RelJ+/a/zhVW7mFwmv6LuxZhKAUX/OwXX6wzOn8at29CoXX4x8IFPzf+9hKriX4TlmfNb29/w6xHihjfHO+v+KroW8m2lcBIpuws/8I79EcWfg5N8jpz1LvwU+Yj0HOexV+n78xwZ3ELrn4+z7Cs4xs+Oyr3raG/P2vwyf5B7Aa+/1dWyeIsN8AbqQtxMWxsJYGAtjYSyMhfH/OrjDszamaCEOC+NffGyS74th20fMQ3D62nxxbhKrOss+ZvZ9xDw1b77HmD52dqnzFHOKzcfZrM7H2Ne4xfJswnk39+LCXJgL819u/nhhLsx/8fkG/b2LvQ9iYIVbQQMMmKAItgCQFDgMrPwr2iKyVn7SsUr9ZY3eExBTYAa0UK3CLGSDV4U51NauwhowQL8Ka8EIoyqsgzZ8NxP1X6ks8KoKJ+F7/B0VNkAhSVThZIRXqnAKfIJso1ZyCYgNkaMqTMDMMCrMgIGxqDAL6xlehTngmQoV1kAmc7sKa2Eps1+FdXCKeUiF9ZDL1qpwEqxk+1TYAFvYUyqcDFs4UOEU6OC21Pb29EZ794RDfCgQDfDBgcHRod6eSJT/Gl9aXFJcgLeSfL5+YKCnL8zXDAwNDgwFor0DOwo3DoZ38O2BHcMN0UBfb3DdcDC8IxQe4gv4axxeYfHVu3r7QnxJcfGm8NAwruVLCkuKqRQVKlCEri/qHeYDfHQoEAr3B4a28wPb5nYP7Ajx/YFRvjvMD4V7eoej4SE0u3cHHwwPRQP4vH3XUO9wqDdI7RsuvGbRPKsj0ejg6qKikZGRwoDKDiK3MDjQX/S3eNHRwXAoPNzbswM9KIxE+/uaelFkGPffJe8RjYT5dYOBID5UTj4/521pYfF83bJU4cBQT1GfIjlc1NRQ42lu9xSgJNRCL/TgFcVrD4QhBDxeAcQDCAVhAAaxModkqQhSefgaXqVQDCV4FahQCeQjtR6lB1CuD/XwUIPwEK6m94CsfwB2QCFsRFoYIR47IYDPYWiQd+tDiSCsQzwo80N4H0KpArz+eg1/wyoeu20XQn2y/dSyYvz2peuH1X0ptVDmzOma01Rwg6aP2qlXvtN4RGVfqGX9+ByC7UgbwG/pm30PyPbzstQoPrtl6hDee2RtUdk2Jdq98m5BmULtUPDb0Z8hWTYk2zUXv2H04q9j9NGxpvmKInU1nmBFMCLPQuTfuDqori2UoX6U/GfXRdHXQdmrsBz3HpRVclAo6+zH6DTJ3oRlTxT/d83zI4pyNFLrUE8A5RTsxjW00m7ObSnuUPyxdl/XVSjb3IPcvht0DiOlCeugBjzQjJn3yJVNdYL7iwkOL9/Jk6Wddi/baV9KjEurlj65lN3Q6LQ3NbrsjXXZdmeZqTPbtbwzK23WruNm7Vp21r6+wWVvQF6ay9ypIWwn58LVLDGyVeyTLFtfl2V/q44Iy1z2xS5bp9WV3plKjJ0ml7HTaNxoZOzGHxkZo3HWyGgZAp3EBZ0DsA+ehHeBMwEZsxINmSZHJzva8/Iap3WzbY1SQstmiRySstvp3d3aJWkPSdDZtdk3Scg94sHDh6F6SaNU2u6T+CVioxRCwLRk0grV4vBwXt7W4eiuPDqiecPRvPlDRjO3/h+JU1mXCmVuZHN0cmVhbQplbmRvYmoKNDc3IDAgb2JqCjw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTM+PgpzdHJlYW0KeNqr/09v8A8AvFtyDQplbmRzdHJlYW0KZW5kb2JqCjQ3OCAwIG9iago8PC9MZW5ndGgxIDE1Mzk2L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggNzQ1NT4+CnN0cmVhbQp42u16C3hU5bXo+vdznpn3TJIhyZ7sPIh5Z0hiEMgQyAMSQh4kzgDNyZBJSJCQkARpoJ6ClKLBqBW1lvb2oCJNOR6dWA5GD6cttfiqSq32erweK72t1xdi67GUAtmc9e89kwRt79d7vnu/7/b72H/23ut/rbX+tda/1vp3BggAGGEXsFC0urWw5KFtDyZiywm8O7tuHpEc+cn3ApB5WD/aM7ix/1+GD2/D+vMA4pmNm0d73vnXpDsA9BMAiZ293eHIH3/9XAJAug7Hl/ViQ0KO7l2sB7Ce0ds/8uW3vun4GtYjSPTg5oGucLMUTAUowG6xqD/85UE+nUkDKC3CBmlLuL/7RM/OdKw3AfD/PjjUPfi8/vJNADfkYf8FYHkLcwJ40PEHeT9ylaa92Vehh1zWMYxRJ7A8xzDcGWA+CYC0DmfNxxuKl7YuAwmkK9NCmuKEr+nGmaAE5B9oH9fBH6fUgRWc4EG6x/G5jT/OvwxXXVwHtu8EuHKW1mafipM+cZbr8r1XPlLuunJGOYEtdqUd/kuXTnu9C+cJkFx4DZ4gDMJ4w8fwDjyB614DEKhdtzYUbFvT2tLctLpxVUP9yhV1tTXVy5dVLQ1ULlm86IaFFdeXl5UWFxUW5OfNz87KzJDTfWmJTpvVkmA2GvQ6UeA5liGQJ0VJZ3WUzZRsNWG5Wg7X5edJ1Ym9y/PzquWazqgUlqL44rLkujq1SQ5HpU4pmoWv8JzmzmgAR/Z8bmRAGxmYGUms0iJYREnIUvTl5bI0RdY2BxEeXy6HpOjHKrxKhbkstWLGis+HM1SuKLdSdbTm5t6x6k7kkUwaDcvkZd2G/DyYNBgRNCIUnS8PTpL5S4gKMPOrF04yoDNTsrjS6nAk2tQcrF7u9flC+XkrognycrULlqkoo8KyqKiilPoo67Bfmsz78dgdU1bY0JlrisiR8PpglA3j3DG2emxsX9SWG82Rl0dzdvw2EVfeHc2Tl1dHcynW+pYZOvWzJEmUz7TK0tgfAJcjf3z26pZwrEXItP4BKBhllkVJS9BHL28NynpsrEaWasY6x8JTV3ZtkCWrPDZpMo0NVqO4oSmIKKauPL3fG625IxS1dvaShaHY0mta6qOO5nXBKJNZI/WGsQX/KmXf9V6fbWZM01/qBhQLCgcl7PNRMeyfCsAGrER3NQe1ugQbvE9AoDA3FGU6ac+P4z2uNtqzK94zM71TRt3WtwbHolzmiohcjRLfH47u2oDWtYkqRrZGE857ffKY3SZVFIbUsRJytSLSJ0X5LBQSzpo7Ae2GThmzqpWE89rrYy8SyLLZpQoZ0VA81XJ1Z+zv5t5ERCChoOtyNUNYE4wGliMQCMc0Vj1ZVIgzwp2osL7lqjKjhfJg1ClXzWiXslXd1xpUp8SmRZ3LouhZY7OihdXqvpKqx6il/bWq3IWq3H1HqHchkpGbg0+B/8qZyQWS9wd+WACh5RSxexlaZFb1WDDSE03r9EZwj/ZIQa8vGgghipAc7A5RE0Vp5pzxqoYUUu1qTbC+Va5vXhu8Psa01kHRcZnVn0MjB70aGjTWqC5TJwUZLxvCgVZskGoQkKsW4TMqZurwtqJy1FZq5FWLpCDxQnw0shHNkaq7l8fG0fpVSHlqesvq4tgEWkU8y+q8vpBPu/LzGOyWYoRxho4qoC7ehS4NO3Roy8vq1CYq90QqVSkod8shuVeKBpqCdG1UPKpGYsJQ9RPT65qranOEhWICH3bHK1SY0Zpc71zhRmvV+ky17nPdK+Ld0phOrm8do8jlGEJAzldEgZp74HqbV/Ub1GJk9NOSFW1GtZixyUCAWgs1DmlMXhEZk1uDi9TR6Htu8e6gtOxQT+rXVOXnoRusmpTJbc2TAXJb69rgU1aMfLetCT7BEGZZZ1VoMgP7gk9JGGDUVoa20kZakWiFYmrBik4d730KI/0utZdTG9R61xQBtU0XbyPQNcVobVaNUJZKKAAM9nBaTyA+msM2nda2S21Tr0mgIgsY+IAuoA+YGDPjnSS06QlseRrzGj2BH5iImXgncVaL2jxFdk3qA15txC4cEdA4vK1tlnTb2uAPTIDT1CcSqqIXmktiLyobQ1C1FKGG8pVQ71hniG42cKNq8I9EibwE1SQvQUYEU9Qgd1dFjXIVba+k7ZVau0DbRTRR4iY4fRfqvilKqAWsC/pwS0rJL3jHrB9TTYXQAY1Z381H5k5izmHAvIIFEVIDJo7lGZbR6TlWBCgsKfTb7KSiwua3+YuLHD6brxzvk+yKy0/2MqPT+/jjF1f2cv8LgCEe7gJ7SuAw6/OAFDDbTSBg9pZkYVmXHgr9iIBisvmtL5UUF5EFZf4St8spyOlZmXNg4qkPVNU3LA3UkwPNi5auagwsauZvWVqzcvGiFTWVNUvrKhfXLaV5C4EW5QQzinybkVqC0WBgOQ5E0WLMYFmorLQRJKj9Id9We7lfYFxOu0fOYlq+fc/F8bsP3HbhwEGmmOjJK4+dVEo++4NS/tRR8qyGezHijsRxI2JEj7gTkEbG53ETKyPKZfbSBUy2321nIt++58K+e+8ev0iRK39SFk5MkRfOf0ZeOfm4UqzhJhNMO/MQytv2zyyPRkhQOipKZLTU51rMJJGJixfVsduuvEteIxUoU3fAgOI06dk1Ib0DKnNjE8rnyG7b2vbWdetb1qy/a017sGX1upC2llHMXBtxLQa4LuDQc5j5EWI06USRcJxeIIm4INRMRVw9fntFRXGRz2crLxdEMZv42UblZyy/KnXiPvKGwjbuf2BV4r6nyXYVdyPaThP/M0iBxYHUeQlEBDdxp6a5RZEx2A2NIbvIkHlkXmOIksm12aEiUXvZ4mZFxUjJlZIlTOmCLDldELOXMLgmuihkwOXjmi4zZODhSF64ue3QjROb75zovf0XI7X3nTjB3PIGGf7e7i03BNsb655b35ATOTbSPfn0o5MJKm9XznJVyFsWrAsUpnvMDofIzsMDh2gWs+f7UjNSV4fYRE+ipylkSiRmNjHRkCGarQbr6pAhiTIL/sRKe0Xh33V8SeWYNsxsBbWogiJOQXRRZjlferbN7faXlNFlyKUqoC6nzFfCcZ4j908eV15Rfntuqu2lyLfumZga2Hr0v/287r51dz1PXL8hIjdw+48zBPc/fuO1j1YTMbesd3hj+8ehzUeKbvjl3VO4v0BGWW9V9eiAmkC6RWT1eBRh0YTA5eB5p+AgvINvQvNwsBZRYFXF4gL8lHPUL4lzrQpdY1624W4uJT6b31e6oKxcFtAotkaVX0zfzewmKVEl3cDqMhcon5FC5VVS+AYbvdx3YclZR0ujcpOq/wjKuBR58kJ7IDfR5fKwSU5ngi6B1bHzUpwOvcNkBRRoEoDgciU2hlyCYFodEqh8IWYJiZRBfM+ahMqinULIITVuiIlWKl3gowKlbogtL2N6Xr+k/EJ577P7V/+ig3iVt0p3zd9ZziZNn/fKi9kj507/QbmwmhivK33/bZepivlAuaj8WkTTQFnWId9N/HOQCBmwNOAT7CZTejrMs4M9M8uS1hSyWFysK2l1yJXE6tBMxKv4zZ0xA2TUXkHdC/hKPC5qvILo1zYk4IZkeM0Y0gWX011HBsiWW2pDN/7DCxG9uet//PRXyoUPH/r9Hsbatakr0rH3FqafPEEmLH90dp74p6Pn3/xQ+eR+Iv1o786bdu5o3n4YVL7x4vfyJ9BTm2FZwMeYWR0BgTcaWaC+Dz1VgplpCJnNrJFngbVDpV+1gdy49mP6R+lq25zFQnyEMFnZAsuVb5r+aJOCMZbsZIRp5UCmzvcdsl45zJ+4uJzpJG9+JWOXglGBBTRI7jPUuwUlKKHu80Snk+OSU43GdGtyssXi01mTrEmrQiYr7iyr1QKW5IaQxQ6JDSGcPVeY8e01y6BfUz+NNhLnmtleso/E95bNpkK+KfIcKSdJO3v271TeuTD9Nik79vdbd+59+MVdO5TL/PHJk3smbIa0o+PPn2GHG9euWTF9Stmzofs42u121P+r6BvcUBxIFB2ORNZs9jjBBg0hGyfyBr4hZHDEnYC68+PsoUmmMy6rr6TcJsgS2BbYM/wlHjEri818/Mdk4OBbx36lnFQeO0LKX/3lG5GWI9wLyp8+UjyrlMv1ZA/Z9Fty45MbL2cvRB6oDBmUoRGqAxk69MtmwWAgxCToG0ImAeUmCIRhkBOGJYaGELF/UW6zMlN9qM3nit0cc/k4u3L6LPlEsTFO/rii/EhR9mnxAOmyCtLVw4JAso5ljRhXCDFQsnMoIrVZe5+lM5cM+UA5zdZMf0R+p1gpiX3Tcfx8E+I3QVUgzcQwBqMRk6YEHcvzZqyyRqPA6nS8wBJetU97xYxdqoRKbFpordCoEZH6KFs5WinfpBxSdu9RXiRlO8gdJKgwTG/H9Hn++HTXo+T306Mz6xNeQ/pOWBiY5wS9UY+kExLMZjcvuOyMnhGMIpsAAiWu7g6NcInGhadCEyaR7S5KmPgJJb+gzCETVlYO6R3KR+QIWSvgdj6ivMOa9Mo+bqfy0LbpIH/80kNcx8WVzLHiXcR5aR/uV6rjo8iLDn02SpvT612QkGCxOM1Ad6nFatU1hKys5S9Ke8bmeQwwqreWOHKu5647t391nDmhvKn8bi+K4zViIC5W2Lq5v/fFsxenL/DH39X8BdVFnUrfA42BLIfHwxk4q9XgdiWBARWT6NCbQL8KMwWjyYSsmFi3UVXKrKub2ZrWxJ+W2OLueQ5nNo0rulPBg67kXOTAHXfd34FsHSXXkdQ7byUrI8qE8jCbv6GvNzg9On2aP/7m27tfqFAcdzPFms46cD96cD9m415I9yYn+8DHO02owvk5Th+YfKZUvSe1IeThWLRS1jFnJ8SMJ+aQZ5hDfzEnHGdlF2BygRvVTXeq5o/dHreb8yi/UT48du/LbT39RV+66+tfbyLi+0Ont0a2fWtlsCOr9dsvP0Duf/a3QSJVlTWuyl22ZHnlyMGNP/lVWfHvi7JaqnIWV6zccIryn4N6prmoCFkBO+4nlhCdXmQ5tiHExfcSxBOs+C6ihTmrvKgMc014HyOMoqDO2lEWN3Db0LOmw8pAlt2kMzHp6YmJGSk6nWxKqg+ZTLzTaakJOa1MGp9WE+Ld4IpRSPyiFdkrStQg5cuWBZol0jhfTjMTTExopLIRUUB5UEGxPTfoVj2858Gn/nTpJ499/Z+7T370698pr96899Z7N331gXD91NEnvq8Xio82v9L90+enPYzAccG1u3d0I8+HkOdjghPskIa73pfCsj691Zjg8RiNkgmMLr1VACG5NiS4wVEbAutcBSbGEupYzNeivt1mZVCDskht3olB1YOBH7Wm6ZNNePbMe8+dGnT5PyDFJtNNg1t7mZtGOgYGuWHlZ8p/KB8pP79rp+BU7q9+4Mhn+w/5jn3nnx555BHU0/orZ9m3uWGU13UBl8Msih4zw7h5Y22It4IFOXPHOZvJloqLeMmmBnjVdGxWZAF9v8D0TJ/H3Fb/k4Nr676y5Ny54P31K7/pZBaTFJLfcDYlU3lMmSosUS4VZqB8kC63NSafQMCnd1vRDSYkUEFJFpcJbHoQVPlYVfm4/7x8UEIeyk86Y7PaMer4s0pROjIqNht5msk0GObUr9994bUBg4eUfHiDuXfTtn5+4JaerUNOUkIsxEH8h2/ZQHr+dPYbj/zHbQ/HhaP6C8rnBpSPgBldTUBm7RyXZLOl2A2GeYkuO2tfGWJZ0WyGlSGzVXTVhET35zOjOZFckx5BxfkwPGKstIK/BFwun7otyzEXZAbCW3TkUWaoTPlU+TlJuvAx0U0X8nff2n1sQ9Nx9uDOrVt3Xm5BL2IjScSvfHru3lvvua7g7Pzs2J5jtwlpqMtFgVQnw4g8y7o9ZgAPT5wEeXNajNbakBFYdXcgl/7ZSK5mQZqt0X0ol6L4ytRATmXo8rEG5YJyemLixOnv7mxc37h0IdGxo5f3saMHWlp+FC08k7JqUQ1mMoLi5PpRXjlQBgHYFVhuTElZvJgrstmYHFHiZDxiVSVfd53HUy7LS5PNeO43C+YF4sL6kF7CA7aYtSCHWRnKycnKqqwPZVmd+StDTm9cpLidCxEqxPzNox4/MObH8vjZXMlToUGa23OJ6lkwO5vuaDUPxWOJuuWzZp/UDRLnzEklXXDEKnI61/940aV3yvMLJ344dVJ5Snnlwz/+/Y7CmpU1wY3n3i7cbVeyR/sPP71l+Ltrtg60trU3HZngOr6dX/+lYy+wfEZe1Xe/9dN/e/hA920pznX+QFtO1sTQk8/buEtcZd3axsqi1eyqdZs2rXsRdXcI/eUE7gcXlAaSMTvwWPQmnU6vd1s4u52rDdmtBiAYKzESVc41KnvFTBJCz1ZqhEb3EEu6uQnl9LFdQ8ppUiyK1p5fnXqJGf/0sWemP0VX8Ezm7WsPv/4s2vgBNJ53kLYOM5SMgA1jMoZCs9FicDHiihDm2Kr4Zw75mIcu8JeoJ2xqKgeOHGltPUKWUCL8V++7r3b1JQ/XAbE1nUe8CbAiIHOiqGNYVuB5a4LBbNbpDAaLEWirLiGBFQwu1qIdzzTVVc49ncXOZ6pCadpD4jmQSE7tJRWY9yzHk/gh5Yd7KBNWpvMoWaN4p/eRU33KYcE5vVKBGD/kVeSHBceTmOBxDBBX/OOFFoDIqxQBDomPF6vQlmVYFchyOhxqVjhvntebadbrDYYMh9lsk3gbXxvy2KxGyzxicKkZVGX8gKltrTnpnL0irqusmLL8Hn8Z3Wbq001btC7uduV0843bNimnP8ix5R/dcinkzX98yw+fUV5pvnFwgBkfHX301PSnXMddq2483Nj+zBvT2bTt0GNxuU8g306ay6MtuVV2XWbeRnmlrGqczrWkuXb0Od40M2rvoHaEzPh/MPTMi5TYPz6rMtDc+tpzs77yAaRrhCSYH3AKJpMXHI5kt7425LZa2NqQ5fPBRE1M4vsuXcCQg5uTKaXBxW0nB/p37rhp884dm1leOaNcefD810gqYfHFFB85+v3vHTnyyPeUT5SXxokuSuyk6A7l4oze2O3IhxUyAzbGrq7eRs3ZzPM00mLSFtN6zKZKPOxVa2atS3I8maX3PKycfi/fsmCSG9Yr/9Nw/77p57iOEx3DEIubjyKNTKgMpAlJmJpBdprTmQUmZ5opzZDiSakJeaysoSbEur+QnM1mItr3EkxCsktpDJjJzDTPi0xh9PKkMuyjn5zb8Wh92y+bj+RtXrt7tPy911/80fo19zTsu/HAnh0LScOjx3zS5fllnRn5FVll67ffeN/DwX/PKFiRs+iG0vVfpvwWIr/lfAP6l8WBVJPOYnE4DDrGprO5PQa7xV4TMpssFh5qae6khYaTV33fiYf+zBIMUzRpohGi3O+iJx8MsNubBoeOPPm9eyaCz5AK5bkV78i/8T/1FOPd3XP23LvT7y5dQnk4iPaB5wG0y5JAImOzOZ1uo07nsustDJ/AJ9TO5m3qZ7G5cpqTrVH/ppoMAuxUjrX42PCp50kxtU9SfFdj22vPMm9OD1PzZBIuPUTp0v8hjyNdI+QFnEbgeYZahJnBo6We4KKRZskcaloopCcen8ON5lDuQI9zVGknlf+WoRf4+W+QSqWd65jeM7q5cy9zi0YDXYZwCmmkYIaawXMGtPcU8HhYAyt6vfPmpWFKmeoxGFjeYvEKFuDV/acmBBW2uaQ9FfEPqZQDlpXZGTaQD0cqS+2TcsSVt4+ILylTyk9I0e40SeDSrGOkaQ9ns5qJoC8wfJ3kKj8k+8i5y/u5DsW298OGR9qYxOn33e3hL82ru5RHPkHGCf0vuiobNzQEMo1OpxXPAByhkSfRSsMQNtk5t8tqN9trQ2avDixUWFpmPevi5rhqbUvZZkVHtYbWTROcctL4mtcgGKXTpFbJXvr7B1c3lC9tHk23ozT3twxuXMdsu+R4/DHbp+auSLm2l/HFHkX+9NRuWZETkSmjDv2wyPE8h6m+hcGariZEXflV31Nn4kfM55YSX6nPRXzs0cvjjKAksVWKjjEcY05+8Ox0M8CVK9q3JLGdyYIMJC0i9XbSAoZjLCPzWZBbWopj6LnmAuZYWbCC/pQCGtik+BmbnFP/Z2A7DhxPWKBnHLp9iov8aKlTpIz+ZwA0eyRJBym1v7Ms+gPotd8dvFDlOaS+31/54CXT9IRhXDeOY/XaNy5tnm58egLAMH7JpIwaxjXLnr2YMu5lOMm9RTx/za8dmOPQgvfiq9oOwGKmDrbN/PLiGzCKd2PslvGO4F331/6igt+LdydM8UmwXcW3E6a4CJXV58Y1aW3i/tk+XtBgvg7n9EIH9xCV/f/Zxf0S2jGmHOJSYD2+13NPw3rUVw63FwS+Cg4xW2nuQ7MUFT4kvgWHaDv3GayP42AfgkPsRZw3CoXYd5Abx53+Jjg1r4L970E5/H9+UT1cu65d165r17Xr2vW3cvG3Qw5z5Jocrl1/45eW1WZgVvnFMoa9WnkFfkcLSSWbyetMKrOD+e9/rrDJ7A72BJYL3PyZ0ovlMbWc487xVfxD/PN/qQjpws3CE6Igrhe/q1uo+7LuMJazek7fqf+O/gwtBrthk+FRw/vGZOPNWJ41Xv6/XUwJ18q1cq38PynJ18q18jdeiujXLfabGB3dEAQeGLBCIf0qQ4AYgVW/fSWTJTPfwCpiX9ZA/WZWEYMZ4KAqBrMgQ00M5iABmmMwDyboi8ECmGFbDBahBW6NwTpwwusx2Ajz4P0YbIICwsVgM8IlMTgBriOdlEtOj7UhMhaDCdjJ5RjMgI5JiMEs1DDuGMzBPCYvBvOQyKyPwQIkMyMxWITDzJ0xWAfz2ZIYbITr2bUx2ATr2XtisBnhczE4AdZwK5f3bewb6dvRHZEi4ZGw1DUwODrUt7F3RPq+VFJUXJSPj+I8qXZgYOPmbmnZwNDgwFB4pG9gS8Hqwe4tUmt4y3DVwObI0uGu7i2R7iEpX5ppl2iHVLWtD5/FRUXt3UPDOE8qLiguomPokHw6ZHZC37AUlkaGwpHu/vDQTdJAT5xueEtE6g+PShu6paHujX3DI91DyHDfFqmre2gkjO9N24b6hiN9XZSz4YIZbubw2zsyMriwsHD79u0F4Vh3F/YWdA30F/7v+kZGB7sj3cN9G7cg/wW9I/2bG/pwyDDS36bSGOntlpYOhrvwFevJk+JrLSkomotbHVUwMLSxcLM2criwYcWy6sbW6nwcCcvR+jbiPYL3DuiGCEh4h7EeRqgLBmAQRmFIHdWLrRJ8H+8SKIJivPNjUDHkYWstjh7AcZsRjwTLEB7C2fQZVvEPwBYogNXY1o2QBK3YvgWGcY8M4JwILEW4S+2L4HMIR+Tj/cXx0swMCm1DzBpMOSqCdnXucIwebS1Qe+J44ljyZ7D8OQp96pPKYETln3LUj+8huAnbBqDnC+sNq3xL6qhRfG9QW4fwuVHFNqLypUm4T6XWpbZQSWv1TbiWIXVsBJ9dMzIbxhV8UTZ/Xr5URyPYuhD9VSFsV0sB9l89uys2t0CF+nHkf3XeCK51UF1VtyrzjThWk3+BirMfpdOgrqZbXYm2/m1z1jGC46ikliKeMI7TalfPodb1eb2WIIWiv8j3LK4CleeN2Lv5KpzD2NIAK1CO1dCImq9WrRlxBvbrfXVSm0TYtrQ6ti2VvZLW1OBOW70qktbYEEnLWmBty/RntCU5rqSJ3JU0AftXNaSmRRpIQ405zeG3t/E4lfPjdJZY2Er2cZYV6mt+VvNWDSv709vm+b1tbr+rzUYsbVa/pe1xy2kLU2QhxA9tA/BVeBw+Ac4KZJeb8GSK3D25pjU3t35KvNJSH9U3rYuS26KZrfQZaF4bFW6LQtvadcFJQu4M7R0fh6qU+mhJazAqpYTqoxEErCmTbqgKDQ/n4h+9hjuGR+hbfcxciR3/CR3qZrUKZW5kc3RyZWFtCmVuZG9iago0ODEgMCBvYmoKPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMz4+CnN0cmVhbQp42qv/T2/wDwC8W3INCmVuZHN0cmVhbQplbmRvYmoKNDgyIDAgb2JqCjw8L0xlbmd0aDEgMTk0OTMvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAxMDQwMz4+CnN0cmVhbQp42u17CXgURdpwVR8zPfc9k2RI0pNmEkhCrsnJlSF3CEgIhM0ExQQSSJAzCSCwCMgiEFAujYCAimwWIuIEYzhEBPFCBcT7ZhXFVRGP9VrJdL63emZyiO6zz/f/z/983//Yne6pqq566633fqs7CCOEVGgFolHSuAmJKQ+O3H0GWo7DVTVtYROvGxuyFyE8AOp7ps+bMfu26k4D1E8iJO+YMWvx9Ds33bsbIUUTQoO21dVW1/y08ONWhFLU0D+9Dho0L3MyqOdBfWDd7KZbVz02EOCn1MGkO2bNnVbtvnk0jB3JALyk2dW3zmOTKCVC+anQn59TPbu20bt2NdQnIsQ+P6+hdl7u4RbApwTwwQpEM514E2IRx+5gXdAS6f+lL6Dp+FuOolQyGc0yFMX8HVFfuxE/GaAOggslj5qQi6Ch2yeLFM3oL9ydVAWP8P3kGVPEdpLZES0zIxu6AWo2tIDtZM+ifgdThMxoM0LdV0it9y6ayR1Gmbru7v5KXN39hbgfWkLE4+i/dXD+n/VoJfoAbUMb0V1oO1qLVmIdakbIXTi50lNRPnFC2fjScTeMHVMyuriosCA/LzdnlDt75Ijhw4ZmZWakpyUnJSYMiR8UE+0cKEQ5IkPMBr1Oq1EpFZxcxjI0hVE878VV+V7ayRsKqoV8obpoSDyfH1KXNyQ+Xyio8vLVvBd+mGihqEhqEqq9fBXvjYaf6j7NVV439Jz+q55uf093T0+s54ej4WQKgfeezRP4I7hyfAWU78wTPLz3K6k8Vioz0VJFAxWHA0ZIWBFs+XxvwcK65vwqwBG3q5S5Qm6tckg8aleqoKiCkneQMK8dDxqJpQI1KH9oO4U4DZkWVppfXeMtHV+Rn2d3ODxD4ou9WiFPeoRyJZBeWa5XLoHk6wnqaD3fHn+yecMRPZpaFaeuEWqqb6zw0tUwtpnOb25e4zXEeQcLed7BSz4JgZXXeuOFvHxvHIFaUtYzT0nvlNjLOvUC3/wDguUIX13p31IdaJE59T8gUvRSuV5cVuEgh70AaN3cXCDwBc1VzdVHuldMFXi90NyuVjfPywdyo9IKAHGk+9h6u7dgg8err6rDQz2BpReUlXhN4ydXeClnAV9XDS3wly04Mu0OQ0+f0t97jIAsQBygsMNByLD+iBtNhYp3xfgKf51HU+2HkDsxzuOlqsiTk8EnlnLyZEXwSc/wKgF4WzKhotnLOItrhHyg+Ppq74qpIF0zCWMEvVf7o90hNBsNfFaiR+rLA1bFNfW8l40GIsGovgNAbsiQZr1U0f7o//nKDhNEG4x8lgBgCJx8Ib8q8LewLgQA8EDooji/IEys8LrzoOCuDnAsvz0pEUZUVwHD6vMkZnoThXles5DTw12CVn79hAppSGCY15zrBYsaGOVNzJf0is9vrsrzo0BgCeMrjiJX99/bU3n7Yy6Uijx5pLM1F6QsOr+5oma6N7LKXgN6N52vsDu8bg9w2CNU1HqI2AGFBv/dLgmHR5KViRUlE4SS8ZUVmQFE/A8IOMaZ/yswQoXdDwYE0Ms5Ob6CstMe6KiHBr4ACkLOcLh75U4OLj0QXGolgpsznK/AdhTsDWh4B/P5tXmBfqTeDyhLxCm3KAhNRqoAJ7fI7vA4/MeQeAoe84GJYQRHiFoUfARmCh5wIJ+5RVIToWUIEXq+QqgVPEId73WXVpC1EfJIVA4QQ6J5gFcT+9X6EAvIhBzwOFghxPQWxNn7EtdbKNV7qkW/elwcfMw3c0LJhGYCXAgARIB5sRcREXZnGuySLSAKLYDt5fWg0pJCN7e73USZ64YSIEJxTbMwoWK41BvsyTL7EjKXEZXgkok5Q+LBtOW0C3jt+HY3XjuhsuKoHrzY2okVhyhM5VbleNoHwrOKozw4DamVIq2kkVR4UiGQyqDCSf3tR90IrZCeMlKDVJ92BCOpjQu2YTTtCOVv0/snipYmciMKnjD+J+5gbwbaOH/bCqlNOtoRIZlbybo5t8KtpjSUvR2TpkPQcgxiFAVGj6mxBtvbYVSZ1HwEr2hXuO3+Hiugh9uP4dry3qnLKyseUyMYJt1hohxygLiE1AGzwa3k8zVEUP7sqWuu8hBlQ1ZgDfxhLxZGApuEkYCITO1VCrU5XpWQQ9qzSXu2v11G2uUgotiKYfgK4H2pFxMJmFzhAJXkw87Ym/VfEU55wKg06z8dAsidgvhBCTECjeTIcpihWYqh5QglpiS6cKIr0ZWcZHIYHBlwnaKLuw7XUYt9a9jOX0bXMZchFqBwGqul69jXIHKzoQi3WobURmQMCdXRFgVKdJ1NMRhxVpbBZQBAODXdlWK1mGVCVLSzTxmnpTmjMzKinWl4WZrTmZHhdKax81MTElJTkpNTAr8QVKEy8TjlAFw1aIBbLUdKBjFanSqGplF2dp95THpjhktGWcxGmxBNld23Zc+mzXevf2DrDioZK/C5g6fElO+/EdOfbMPPkXgGoxEAVx2EyygBMtLqlDQT0x8u1lNyId2YlkrFuKxGSn3flgfW37150x4CWPyXOHTfcfzSN9/jc6ceFZMluHXoEjOYOQ20GeQ2IYZRsKxaQ8s5eakH6TjMocSbXHEG5CJzGFz+ORwWh0EwONIcBhd1J94p1qwXp+Md62lbszgJtzXjAwA3W/wZz0ZXISAzPM4ihZIFfp2VEE1OctpkEpYZeIoubGraMvsozVVbjfhTQx1OuRHGTsTvUNnUfOC34XEKsQw0JboCY01pDstE/CV+Z9s2Cf9t3ZfwOvQd4B/iVkHwrNYo6HEehRVlx/lRTk7K6MPHbSOyho7KyXLlzszNz88dVZBNYJhBSN6T5Mt0mEIMS9OUMUhWWC4WMPWe72Ir4esvo6V4l0LTu68wQyDKJTI1yG02IhArWWiIwlLiUchpXYmHDgUUUIgfjV7uCFGUQW90pRixdDdILcyQr3+88uPV76/+1PVRy97We+5p3dtCfSCuFpvxctyAb8MN4m3iFvGU+AGOwcPgdIoXAW+IkamXAB8lGujWKxDmsErNKORyrJDhEFiAMSvRmBWYHmZ3CIbUDJlMHoNd1Et7OEvq6xV41QbGeHuTJeFAA46T6FkDuuZkX0KhKM5tC8FyEzJpMRNm1ytLPHo5DhnjIaCDC7MFFuZwpOGRVFpqtBAF8P3kpuTY4mCcXdl4pXde5l23TX6opuLFq+e+2PmmeJL6ZiNedWjbpgkL1g0fN3/fa4fWi9+8Ij7P+WV9CtDWDjjEoFz3QDsyyeWItkZpZIMG0zarzVrisdmUTmdEiccpVxpKPMpeSqOskETppw9u2CyTW6yAEOOIio5Js1pdvEHvENJcKek9CBOM6au7NnnbxA/FH5pOTb75rSq8VJyyacvDL2y9rapt9sTKL29/4wozZcOhCM7aseXCR0L87sRkPBgrN957xy1LUgvmFY4/TeQCqMjMZE8AT4xouDvCyCogs5LTiGZpkxmzRnaMR6GTG420XEb38CioYQRlomMS2oKkYxgqDuCbIJNjZuY79/uyqE7vO+JaJZcUK2bgUtGLSzfTH3QNxpc3dlRl+xYC/VYD/cJBLsLQUHekjg41c2YbzQywIyAWQjKLBbhokcnUJR7ZdaTrJVsKYzEjIUqiGJBK74iSx5hA9el0ashnWCFeFH+6veCVWu9pcd3N90/KoN7yHXY20ss+ff6SKI57YIirdRdOCc+gDmwXi21I0pkFgFci8NWKBqI8txBmUDkcgI+BjnaqVdrwsR6VVmumzbYSjzmU5sZ6wMj3xS6rD5WCVhQ5UmwWYCJFuwJSJ0QhNshZmcVstS7A43DR/FFjp335s1o95+qzl/71+iXxR/zlXbu2bK5s8ZRupebjR/HDpo2h4nvicweuvvyJeA2Xv/DY/s2to28vmHGozi+TwNc4oKkMRbr1mGURBUaSpsZ4aBkifAySDnQBg2W0YBxOTem6RJ/1tbHh21f/ch6sSx2sf7C0/iiUgMa6B9t00eZ4OlyhoGUGs06WmCQzDOYH8yWewYPVSB021qMORcJYD5JfL+BZfQjhZxexcHJrwM6lpTqj4ZZOm61+OY+RyXAUoYctnVSpohe+uGProRbxgy+6cErzrV8u+tu997TufPqeO/DQZXctvH/jos3sS8f2zjpUXP7E0s53zh6/tuGGx+fd/+S11lvv2LCk+t5C9330jFtrbvxLzvDmG2sX+fk7E9ZHbIcNOdEod5TdEKVUAtmAvzHaCOCuWaulzOYQYK+cko/1UP2Fz5gV14+5GCQOhA+MpEmQ+dcEFtNq9C8DVkXWEc04fXVNeaXTv/lBpc7obHj6k+5X7rl4q2jeuHPT1snbK8q20gVdreaNYaCqrgl/+scrn2Buu/geTjqyd9NfR68oqD803Y+75EeYGrDnFmLP9aAeCFltWtM4j1bf41KC9jzgCft6FkOqK+VXPmbh0r6ehn5izRricCi0CJ9iQulLUjwT67bIKQYaFRzDlnoYjEo9OozB490EsyX29R7E9WG4FtF7uqbQe+jKdevEGevWoYAf/w78+Dsgnxa3gsXgxuScjEaJiRJNYTDGadiC62hd17f0KTDK63ABXnCP6JgqVpL127sv0VnAOzuKRlnucAdYC7nJhAZomZhBCA3UD4wY5xlo1SuLPXqmH9v68wxELiM9vb8jAJcDmmihU3ujKUfR1LWFq5aOa6ke9uS5p16PGXNb7ahDtw7Ndmel5uGt6QvundjYVDZ9rjN5zbTjDxfPnTZnUsPNDvGttQU57sJsiV+LuwtkR9gOlIayUb47SkhI1w6Tm+0IDTZrE1j3qJDMTGYEZ1DBGReZQkfHQQiR7TJmQRprzEqRjGwQcVePnyC4xQSFjSBvoy1mSX+ogUIUQ1mIvcmwyAQegRMf6EhhjBiem0ySsTlS8UDdpIUqbtA901v2XzmZdyA/dPXkhrvFr9svip0HcQ5OfPXjk9+L94hz38QbMHoLjzt87cfT543aovLbt1Lv3HXl9rrxf5p61vtyd6hVjLUeeuvA41i/9ai4/yPxvHhk0uqJeCOejhnccvFx8TFxr4izMGvuAFrAwerZ4yBNWuBdBKVVcZgl0kUzckav01LFHhWr1UJggxgIbFx+p9MrWgYjkRAH7aAF7MIY1FUGQ6s6fZ0dB6icjVS2WNvmEKyDD+ALYiJ7/Jc8aiZ+dtKyqkZxGExNozOg5CfANmpB83lU7I42MeFKXWioVsnIteB1OV2ILmS0R6fTIm3oaI/WiGyjPTDu9712QOAdPEOMmoUxmBnBYXL47bpgMARKZ/AuCM6YzevxWPGnqyLVhkM6dntP/oKT2x87/ATbefD47ftDlVnie8+8T+fNv2PpbN9m3wfrtqxd4deZZWCvzkv2ONptprVmhZa2hRhRscfIqGRAM1P/QAdEJAr4jlxBEUg1DnSl2OTR9LBvxc+x5l/bn9l2UXxSfHA/zn778oGiVtYlPiV+Ln4kPp9xTxZei+s/xhOPTNxyA5FfoBlbATSD+JjYGy2jgGTPaGI1oz0szWhHewinro8fkQOyHB7RUBAMLh5giIvEjeIt+CQux0s6YK5PfzqPwRtQn4st4kq2U7xD/BuOwFHX5pEAD5N56Z9hXhWJDWRKJWYQhxm1RqYo9oCLoCi22EPRGPQcG383NiBIWAIX/XPXBTrRt5Sa4ttDrWY77xUHt/guo75zKVCKOwxic0xzmFaqfjWV0e89r5tDCM6BG9uCEwB43+f3BnjHjpDsFazDzIVSlNbOMQPCkb0YYhxWrTYUe9QMayv2sKbfj3EcBlk/TkqKTXQc1jUGf9v0zW6xQ7zrMK747IsXc547LP4gvo4dOGTbZvEoJfqynNF4Pa75BP/p8UktE8Wnxcvi2+I5AT/tXzsbKdHZ5Q5VgD3nGIZFrEbN0cUejmOVMhqiQaKMYJT6mPnexUP454K7i41s6xLb2miqjfL6StlO3xZqjiS/3VXiclwn5YThbo2K47Q6BY2AqBBeSCsOJkC034+mpwFAs0w9Jb1w7LQZbSfF5fbN5lvnQ1JTceJCgF/M5xLO4JUIviylUhKcKY5V9MU3qx+fsFxCFUwH8/kLvi+3t7VR957xdVDPrvWdBnTjqDd8q/vJAwsxlJaGySCmhcgYEDb2IixhTMjgsJxpIwL1yyc7/GNl88l7ApClEI5lZRAramQaswUrDbQMImwtkhH0CH62rF+TEwtWCwmnAUeXgaRBAqZLRT2n3YURPs/h18Q2LSeqWf2O17umsJ3XRjOQ6dEH95z45bsAL7Nhbj1KcFsU4M6wTgfG1mBU0XIdR2N5X7r0Z2NgYpg2msoAXmY/3fURp991kg7nKC11P/PS2x1dp2DCoXbszKYL/bEIke0Tv5VbFnsUDK0r9tCm37YNfunlUd/ckj0h7hKfIWYJV+E8yB2nXmv0ffvPn3/67p8+yDEfFOeADNfhWrxOnCc+IL4lnsUpOBbyzGTxrN9OMXWSDhtRqjtMCZQHSiOTWcmM9iiVMrncONojp2W/0uKs3pAA8i4pleFxIOMSmDrxgnj5QBteSg30qbZ//OKJMycY9Ydf+4ASPvuWBzffFaCDuFeigw60PNUNKagVkKGVoOW0Rq4JLfZoGLkJFByS1OznelS8r37rIQkF+fxtunx8Dt/4k3gp43dp85m4IUdswaOpf0OhgC0HP9KJ1BA7FrmdGowptcIgVymVcgXFWG0KDajoaI9GQ9E08JCmVZQkMb/r+iTcJZoxFj0LK3AGSQe2EG/GMIP4Lr7zjLhbPP95x76Hn/yAqvI9wHaeOy9+ON03l6rasnHj5hWSzpGYnAI7OZBQMMIEQW2IiWWc0eoI2moFW2llaEU/gUJZ/ZNnRuCDKSCE2zHR/siI2EopDod83MpQ4j++Ebs2VL5e13ZgxMYtLz8qXnj3cNrjD6/Zlrl63eVH8OpTb+fujY5f2Timuiy1+IUH979QeveYphljqscnlx33+2Ij0LASaChHA91GhFlM05wCohCwDkzQR/Rkf34DCaGwg1rfJiYzRWIyG3mv5BeOge6EAhwDcroNeqyUY7nJaOBoRgOAAqt09VUbg5lIhmQa/TaSDRVfFX+G82LbC08ffYHt7LrhF/FjzHfRB7sKDj/z7BH6CMLSO83T0t5LmFsFDlTFQXBF0wRRV2DTBYC7MImoIOfKYNSHfd/u833fgUuHRg0c6t9J6rrhoR17HpTWD5GrfAzACyV7OaFKe5hFq2UVIQYljRV+8yLZl+A2GFiWaBKmEfgmAj8wjcnFPrtPfMeSiq1J4sf7xKUdnyVZ7WlY1oFNSQ5T2uUO+rVRz5n/sqvLBdMvPrHj8KP04q7l952+62V6NcGDg3W1SD5AcBsZGQsOQEYcAEMcANPfAUhoAAYkaATj33IKYpF5HfiyOOw4vgXPeVwcRq3yLaO6qGO+J6lc3xgUoNtSKe7h3TqGpVg5rQAfg+U020u7QLQFQEEJsIsage84IoYcEEOPUe9R73Wt9J2hEuk1Et3KAF62ZJ/i3DYIL+RIzmBGqWIZMAw05vrFMf32q6Qs3cFkd5lozqenn+r6mY5YzWzbvvpaPfjWLvFZekd3kbQHCegxkFElEh/nDxvSHPSOrqn0bvHZVaD/U7qv0GeZSsI7VOh2RnGqiIjQUCNHQ3xAqSIKPZQK0kqLrsAD2hxW4GGtYCiy//3WhiOYh+idGVI6FdilshicIKRpcmlvgy5zcGUPLXnoKGU6NnfJukdc409VP/OkqL2vvfW5R2fvnFG87z48Ri/LW7l04vL4lIMnfeYFbdunyeWzGyunAN5esA0LZGbwqZEozx2ltNl0OnU4raZ5hwapLUaD0gCOBxCWWZG5wAP+r6+RcIX02XkObkL4jSskUXISEpjlrnRbMF0nuw4H3/762zdvaR+uFha1clzTy20tO9q2t7QwleI74ndwvjGu7E6ZWbxjee3e9ac/++z5ixfefNVvHxqBxuuZG/2xug7sqIIOsck0gJseGQE3669jdTYQq1vBVEFcJ2k3xO3U9KviNaz4YdzuIa6M21PEQw89sG7THDN2YjU24fgo253WcHHSi28P25ol2XaYl8kAGhmBRjluR7jMhrRag8zAO4wWHSCG1bRCASRS6GlTgYe2/j6JJAo5BVlwB9jmiomBdkHiZ2rAnNI7FI2fvvX1N29eXKSRM61rxN1t2+9r23Lfjq1/w9FYB2f8nnFj8Yl/XVl09Jzw+fOXzr/6Zg+eRqCPCYWhYe7IEKVNRdNgPQbYbaoCj82GZDKzRCxtP2L1jYhdfclmtFgcVj/JZDTk8g7g3vJ/ip9h9v1z3/g07NF97Y9U7Nr5l11aasQGMx6E5ViBM8VvP6w/9cLou6Md9KcHtu36m5934RD3aWWRyEx2FsxqtYmiQN1pi1UJKqEEYy9nCzwmuY4mWiHthfaGNoRwxiwpVIcoIi0jTe8IOh+w/rvFz1ufeQZX/2lBXFXelEpso5/vyqKfLxk+At8trI5c1lxI8tMY0cwkA21iUQYahea4R8aFZjrVkSPYZBM2sVRs1IBIZ6gyJ3eALk2XVuDhhhV6lFFcrI7TcdbYWKrQE6sblF3oGaS3JhR6rPYA8XrYHEI2WbKy4n7Hj1uCm3IxkiJImyBkK5pslUT33kEgcFBPBFieiVTSUqHEJL80IP79k8lxM0dXPn3oKfF98R9vfb6iKTbLnV9+y9vPTcoXDS0bLpyZs+35+bdV3t70zx8X3MYU1YcI8wsfPMlllg+Ja9nY+dQDW2q2hJlK04ZXxgr7ZnWcNl9DnhuX3eLJn0UPb1x45afbgE9esKV5IOtWkrNo1RynQFaF1RaiVRiNTIHHqFcipLAQF9ATaQW1n1gsg1+IDUHN95sreveS2x+5v7WVUyY/3nTmDPXsHX85/qbvNGj54PLMcZOfesWXRuR3DwjKdPYicEsHnsdA9g0x1hs08iKPhtJhIhnn+m69kfSX7vuCblJra0dm7KChQwfFZjJFeHBWWnpmZkYGwO7eLJol2GoUguLdVpNKpeG40DCrvshjdSt0CKQPBbga1m8SU5/ESd93tribh+Xn3lDcO6NoDl1jLv8T03VNLx6X3xSc3E/TcKCpHqVDBKtVKlUqTsawHGMwQiym13McLVdZaJ3f9yXCzNl+EcoKkBVLvh0HsyyzHE+Mq8BTnxXz8HtnxGXL9u7lqOQR0/AicYhvPSWbJU6Xmbuez2j0z40nwdw0gmWCqQJ3iyRKBhNDQkRCOOiD/P1lL4GeCKjALVgMBiMIgKAwCvRA5wCrxWIMZTShYHEjQ/UmHeQDFindyg68vAA1cLl+tYHTRyR6ZcNGJIO3BeVD5py38L67W+ct2rm5dY2dS3x4JsbjuORji44dpc6sWnXoqG8n+X3iDd8ppqiltPLYpJqnXiUyE5BXwNeMkt0hyEwE1qywWtQKvR7EVa9X6n5PXPtLq62vrB54gKDhOjL/uReIrB57U5p3vEea1G9np8KcRJYgNzMhDUQcYaFKK1gyPa3v5wL65mYgNFQaMayoV8tBtaeK313d+smfsfrqZazrenLfQw/t3//Xh1opp/i9+Fozph4BtxQnnhOvvfr+e69deMdv671gzxZI63agbDcfqmLkci7SyBmjBEaFdDpLgUenV+g4OxrQa+yze4P7HqWV7D04a2sfMhAPTgx+H6dNHLa6dY2Nc7fNeferb6/ua6F2tN314IPmcWVVk8QRstSWylLxTfGfxIHTl4695Pzs+csvnn3P75cA1wyJXv4YQx9upcPCQvWhvCPMbtOFR0RYNSaTHOy/XoMKPJp/50D9HjQlPaPHXdp6fGlGIK+XUTe0bmN37t9y3/Zlr1/95s2PFitCVrWqNI2LDr3mvPzipfPn31kPyZsKcqiEtpZ/vYzfqCn4m1+W6BjAU49i3WaNQqFUUpDf6zRIaZHsQyD2MWb1e9sedEVB8lF7i4fa8lJXP9m6zsSNOMDcqN6he/tBXwdT9NItTcF8jG6EeQaCPRjgz8dYU08+VuCx6mW0okeKEn8rI5P1vpRLjY5JoK5PyOjGT869u2Tc4xNv3zD3we0rs9890b5/2F/vWHjrkJq7Tq/Dcdtb83cMSphQ7p48Mqt8Vskd9xWtyRs9Kn5kZlrhJsAxsvsKtY8tAMkhWbfZrFApjDQTYlOa9KZCj9at18mBVfIAq8LO9gte/RyykH01A3HYGS4L2cczWyljfFmIvT5WfHrXroIqPFJ8esoCjXy5xoDHURtK878QV/qWTptJaLQXdCxL+mI01R2KTXK1WmlSWqxqjUbPmXWSbltVwQiaZAyu/jsOwUwORCIYRRvwGFDt+1vXhShcjze98DxT5MsCR/QG5b52ZOv4SScuUGf9sQrJTyiYm3xPoMRKtYZVYJ0UrruCWZ1DSrlc6UYT2OUHxKpDV0q1nGrBy4fEKgC78JO8NDyWSrp2RIJnA5sqALwB4HnMCnt4hM2q1UA2ynBhRnA9nKVvbudy9eR3NHkRIScb8kYjkSzI7KRJ02FSJvGMKZUbFHH+pPjGwZlzOU6VbDzT8UymmWOEpw6IF6hVwy48erNvOeTF08TSkqzH06gFvvUHFgxsod6X0AK8YmCdnLTOKLdBzsogCiOfTmBOZWFgwf3TvECGh6Vs74i46knswPwT4iq8+bh4VnzxOJVM2cQb8V7f577z+LiYB/Ap0HsZwLeQfB4WSlttjAZpIFTX2Dnw8dkpfXZrwNP2rk7ml28IPTOoQ9+MM3GaCZcPiYMLnlg7ZnRG3sPFI4DIG9+82fUT9edr/NH7DKvVJ3eiYC5Iz4Y5r88FCz2sDnOFHuL9fj8XpGd3fUpN8p2nPvMdom6aT09aubLrGHjPmu4rsjz/ewKUDr4xJsZG6xIjI80KnY3NyJSpkVGnjlRTyKg3Umqj2miPE0wuOxOkYmLiTTcZ+r5x8r9L8OdFkqpE9eyqYGkrmjFazBQjRA2kMsxGxpUy0Bh8BUUvW7Zm+apJy5JqC55+5YOnViwcOqvr3hfwlBfJ9bS455Xz4p7T9QfxkAMHceyjB8W3vAfFNx9lhIM79u0Z8mfzgG/fvvDj8IUu8Yg0Rtzz4rNi6yvnceVzj4ivPXIQD/YGhqHubv9eitxJRaNMIK+cfG2Dy5Cyg8IxbDSKS0sjdhN0dSfE9knkje/gWDZcQDa1GoUbYtnkFKMxNiEhusCTgGItklcK+qLr3x36TZs/rSUmzNJr5oiV8wfK/jeLvBRPEI/NhG6syLQX3rBh+tOPHb8le2fRWxPmLK/KLyxxr10uXml9/8NzHzHfrWksyHXwsVmum3fVPvBw/o6YxM6SWwrKlk7MnpmWVZlWWn7x2hjm0KEndiGyZimXZ1+DNefBmkEtPkawYpoaavCvmPSRYgCpT5m/j93fJ6FPH8mGSX0q/H0cSKJcbLAP0C6UPoXzpD0vYydmIdhiaJQd/EjKFJNOPhGTO9XWqZlLc5z0KWslVi8Wf0LXjWUxp2DlMPa54L6T9IGVMQOnke+rlhTwbKeVfF+Fw98mPhnGUh3SWB0Kc6sZrFEwegPiIPMHkZW+h5O0PgbUEQA5ApjgFl3mkqURwzS+t3pxegtzjeLF6j649YWvJ/AVGsxCuKth9QRH13M98ANYOno+BwuiS8VoQ6oyl4XlaHoRt04Wf1xSg1Nv8q9/L/6emkJfAvtl6gx89hX4wEwK3PvE6nvnz6pvapx5SwN1ZfFtf166aOUqwh/ISZkBILfRqBjgydEYqjP4jgI3St+CGToRw2IaBT8F87+VONNGtu6CvgKH7iDFm3XDf0AK//8enElLXi/9/mPMmGs7fG8o9nBToarwv6f1j+Pu9O2DpgPXdohLFXv8Xqf3oNKZs+gUsxun/Sf/8UBNQWVwjZA811ZUh39E2dRWNJFyoG3UN8gMbdPhOg5XDVxT4IqDazVcCwL1Orhmkv49/62xFS0i7fRcZJcno8WsHiE2EZ1h1WgZ+wY6wzTC5YD6a1D/jNAM8BC6q5jPoT0GnZFnoTMyDq5haBlzIfD7HTyrQTOZ2cgI444xp4HsdcjO7EYcsxTm3Ey0qf9Bt3R3Sfg0Ap6fIS99HjXCbyOzDDUCv8KZqSgG5vRSMrSHknVvZlxS2Sufj7yknXlD6u8lY+g8GH8B1vkaioRnexnghywL2ZhkgMEhij5x/fz/ySHbR76Z+//jIHzpkYFfSEz8q//iaSTfQf2fH4Qvv9kOfEF/HH8cfxx/HH8c1x34RhRKrh7ffxaFkqufz6T+59lQ5jgKp4b9wb8/jv/lhxTpIh5N+o3zdnQQznfRz1iLk/BovAF34p+pSdQ26hM6h66hX2dSmDrp3MIcYpXsJvYVWbxspqxV9r5cKa+Ub4CzQ/4JR3Fu7lbuBNelKFXsVnyntCpHKxuUncrLKq1qaM9ZCucBNaUeqd6i/ruG13RovtPy2inandoOnVpXoFur+1Cfop+uP6L/2ZBumGJoM7xrNBvd/+Y8/v/kPEdOU3rPWfQfnJV9zll/nH+c/4POZtM+6XzbrAycsf/XzvQ/zj/O/+XnGLK7Rd+LmpEVfCSLKKRHiehGiGW16GdES3tfYXhkzx5YVvAtDNwVUPOXKSRHOYEyjSJQcaDM9OnDIjWaESjLEIcaA2U5KkNLA2UOmdHZQFmFBqCPAmU1SkC+QFmDEnBcoKxFsZj8pwJmFFBrwKsCZYyM+IdAmUJaSh4o02g4ZQmUmT59WBRCjQ+UZUhP1QfKcrSXWhwoc2gQHR4oq1AmnR8oq9GN9LJAWQPldwJlLZrIpOXVz6hvql9SW8PXVDdV89PmzlvcUD+jronfz6ckJScNgVtyPF84d+6MWbV87tyGeXMbqpvq585JGDevdg4/oXpOY1ntjAWzqhtGNU6rnVNT28AP4Xse8TkL6mfV8MlJSZNqGxphFJ+ckJxEHpOnvd3qG/lqvqmhuqZ2dnXDLfzc6cEJq+fU8LOrF/NTa/mG2hn1jU21DYBp/Rx+Wm1DUzX8zlzQUN9YUz+NoNSY0INDH0TrmprmDU1MXLRoUUJ14PE0eJowbe7sxH/3rGnxvNqa2sb6GXMA9YS6ptmzxtRDl0aYf4E0R1NdLT9qXvU0+Ak8ieeDy0xJSOoLW+qVMLdhRuIsf8/GxDHFufk3TMgfAj1RHqoHwatHTXAtQbWoBgLEGlQN9WooTUNz0Ty0GDVIveqglUf74UpBSSgZriGBUjKKh9ZC6D0X+s0CODzKhXIDjCb3agn+XDQHRHUctNVCiUcToH0OiHoZ1GegBTCuGvqOgpZpUo8auDdAvyFwXT+KB6VaAFBnSTgTbJJAScmIxsBcpDVBehIcHRz7W9DqpTtZdZOEMZl9toTRLdA2F02/boXVEo681Gsx/E6VWhuk1RBoTRI2fprWS7NNk1oIbf31mbCCBqlvDdyn9VCpEfC+ng6/TVHClSZoHQqmKREtks4EeN5/9LTA2ASpNBt6/nfHNcFa50mrqpUoPQP6+qmeIMGcDdQZI62mVlqJf/0L+qyjCfoRSo0CONXQz1/rPyZeSlT6czMFZkj6Xbx7YSVIOM+Ap7P6wWyEljFgfnNRProBOJ8vyS+B6d6ucBTx5TyOKI8sossjI7AuIjvi0Qh6bEl05JgSV2RJgTMyOlVf7nQNLA81dUfKme5IGd0dObrYFVkMz0wuYzmL6XLGBaNprKOz6UdpurAgNPLLAiy4osoHuOzlVpel3IB15XqXrlynG6ejInXndZRO162jZBRG5diFyuei5ehR9DVi9AivsGIWH8Gb2idOiIsrOSLvLivxKkone/Far3MCubvHV3pla72ovHJyRTvGd3lW33knygkv8aZMqPDy4Z4Sbw0U9OHtVpTjaWyMi5vS2LQgjhxNcY1NcX0PqRoy5b8AOF6BrQplbmRzdHJlYW0KZW5kb2JqCjQ4NCAwIG9iago8PC9TdWJ0eXBlL0NJREZvbnRUeXBlMEMvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzMjE5Pj4Kc3RyZWFtCnjahVcLXFPXGb8BcoOAWLjGuVx3bkofrlUepdZa1BZoRUXEVfAxHyBISICEQB4SCOGNCic85RVe4aXhURnU14a02qoQptNIcWt/ta5dce1qn2u7c7vD9ttNgkLbdbuE3Jzz++53/t/3/b/H5RFubgSPx/OJ2rpVma58Ksh/u0SqlSeo7Jub2GXsL6AXYAHBMjxW7MI+7Mr6uRm9eHitl6vNy21mF7Z9p/ynkf8LguCVLLJ/3/BBLl5+3K9FVq9H7RvjXo8R7i4Ej/AgFhE/I5YR9wjMc+UteHBSWJIyUbI5SZKuSdFkBwcEBa16UZmRrUqRyjTi4KCgp1fav58ThweIIxMOpimz1Gkp4oT0JHFkgHhrgDhamcXtpoh/qUwXJ0pkCfJksTJZHCvZLdaqJSq1WKpSajPUTwSIY2UpanGWUpUm5u4qiVySoJYkibXpSRKVWCOTiDfuiIkVRyjTNeKolIOSdLVE7O8vFqslErFMo8kICQzUaKUBSpU0MJmTUQfKnULqQPtz/hHbomP9oza/uCE6ZkOARqcRJytV4iSJJiFFrg74oWvvr6OVKkWCnOAumnPLI8STxApiJRFIBBPPEmuJ9cQLRCgRRoQTEcQmIpLYQmwlXiZiiFhiN3GASCASiSQimZARKUQqoXDl/MtdfoSf3dNuhJ74Ny+Bd92FcdnlctM1wPWYW4nbBP8FfiK/n3QnG8l3BDXuz7oPun+2YMuCsQV3PaI9vvLUef7B819eu7xeXfjCwmEU5g2tX1vZh7N4J9C2e2ibK1vaJ2w6XJ9fDSpLtTCXxgtZM3+4yGCU0+l6KCli8MKZDr5BA8tKmYLS0sI8keI4bAVfkW3dsK8/C0qZrq/5aDXZ9QhfmgXlim7YxnxFth6HfQxej3YL8VLyD+g637vUGmtFk1bf12xIb6N0bEu/sE8FcxMKqyuLAZILJnf8GT964DEYrujQdzdb6oaM4JjRaK4ARlMTrKP/dEH+EoM3HMWLfr1CRBVE/D7yq6GJ2v4RQIXKO8+XD9OWTtjPnfh3oQYeSsoGVFOONA4W01sTT746+sEQeqyK4SCgW1bEt/I+taEamyubi+RCtCj4s4f3xmXLUwCKFPSX1qeAcFKv4gw5Dk3Mb2dqyCx4aPAkNPeAhNNniwZoxPv0E0QxEUtWbIjcsF724XkwJRi7cvH3t66ErwLeBVb2mJV3yobGOP06tE74ihoWFGlgehl4oiREnUgHPfMtehI98Zdvp8ff3B9iYnIqK/R99CDsMDOIEbTAHkX24cKSw6DsCCzLU7lbUvebd9NYiN2wCEfiLYi7oyXI/YPpuw573rbypmxIPe3KJiOe0JIOS/WFZVklIK9Uty+MXv3izb+etyABojtehUWMzNhu6Ka7O1p7px6BcTh0G172NPb622PIFzEnP2tlvCHyQZuRDw/tQz6u6B3WTTikOJ4mUcnlyX2ZA8M9/f0Aj7n9aM8Z2xt21/qi4yggwhaBAhZ7U3lsHRfkTGgAcWwN+SPf4mCyNzWx5QCNeStWYoqhKvFDd5/89tKZE70WQEVLoeEUmCJbeuxxDUDPCqnBmLg1z7+0bXL63s1rN6+OxsTaT4bjfxpHi62+VAabNOuC7OKjuhKwW7ujSEmHhr72gZ5Br5Md7XAIkVs+w0uw54rleBFDDWHvLx9HQrR05G4PeAn5CXE7OWUae/MmfWFC9Wgd5w4rmrAiHysPRdk+/Ysru5l9Qzi+FurXPr9/Fdi5XOAwpQc2M1/iicfJ3EyokB/nVqibbObo358Jc5nH0QTyJpt7uKUa6hnsPUK+cx32gSN1SYPmrhYL8MbZ4yjs8pvj6IVxxbhv7xWdbbsNbbJlXjlie/kK9RDB1rBLhV26/h0Fe8pT9gPKg2jQy9r30/4vha4+0JrarGMoHlGgL9IqRDKTqi4fUCUPhcXBjQWiZ76JRovR4m8m3gdUmHgo+7XdJ0BtXkLnU/QGsjgPVhQzuaXQlM9QfgUFpvJOKKqqMFXVg7LKYc0o/dHUW9MMFRzaV9SbYwEdjd1VTUb3jJquknq6tauxl8GbsKtwe3z8rh0JIxcBda368rlzF944s28nQATGwvjQA8uXh54911Y3MGAGLT11cIqeRnz4DOPNytCYsKm4obAW4A+QhF9nOGosovW6fI2O2y1h0Cm8GXP//IKSvGKdSNOe31JXaawzAfQeOsivq2k61i6yh+bG/VSO5VKtrk/Yr4J6EI9yyS93n123KS5FpwMo+r9ktCF+boWeJk32UHGPMvFoA/nFreHXL5qU2wDOSnKG94Rdyt8hxXij7ps8B/xBGcwHeJLMl0GZbBA2MmiSbByEg3bOsAaOMDoO03YOE8cBgAnWgIg5TuDheVwhZgyYmLcedsjNcu/WF74o5YtwG2Vl984q80PvOTMJ+817io8n8ML7ZnHr804tVBD2YzuFFm2nUqnVKpWdWouls5MjnZPZnhzQELQ35lIM2rt4GVs9e4ScxE+gnWgREvAH56EOIPXqWb4PkXg1XslH3zjdG0nmqjgk3bCFGZ0x7JlboYA56u+5Tb57C3niQGebsKtBHg+MfeA0KQeCEwd4yf2SwZWJuXgt4dwlnLd+z3GAw13PWVGL1ffypQOX3r2ElnE3qout4rQdgmmANQgGOrg6Qj1j7zkghkw8YsgsYjbhuHxpUXpp+s/LycKRp1FjWY17d6EKGugYhxEM1SvvgANgxiBIOwTlDFVtxw1mD6WuO3VnGgUN+6/i2Kq8Y5omSXWJe3FNY0kj3WQ6ZjrGVNa8j2oaL7obZzJJuw6H4VThPNwTXPH0vXgJedo/i5dRo2yTA7UUoMMCM0RksCIxL0kJTuYq21LpNIVBq2ao231lWTCbTnNyoAP+hsETAumhWcJ+6Awbp4NBGwXU6PTpkdNdppxIgA0C3X1W//F7Qv9DZA6lI9mo3/5EtlG2Adh88PslfuJ/JBvV+3/SzdnfLttQj50Y9mbtE/A51wndAn6JfTD1yUrkglw+uYd8QUStMGBraFjY1j9+/Ndr1ybfuhoZ5CB5lBUdddSIMk6Dhg0Vfhx2FwsA1szlTt+MQTEvc4RzjFegKORDIvepux9z7X7ngYgV4GF09Fvy3tmInYw3VllRoL0KOfxyzobENmrpD0cK6vPeMpPk+/XH8pMuSSR/esSgfOeGDDjXoid+3KEfRAv525CrDb5PBbF61lNozj+zZveW7KhYcFJAve1MLZe5XL2NJ0LmZa5pXua7cm6gHv3b2D20EKiNrVk9dKe55QTjHHZ8L1yLtI3YEGOTXKPkrByFCK9Kz+Q3gcRTGbXr20LaliY0SgZHRK+Pnp9EHs3+8hqgrWwoNc/OPEsdM4/6cI6iGAwm7miMo7Fr6LrVm363+Y6aQYIMPtVsKb2TtUq068Cv1in3VJ04CBJOHDlT3ubeWl7elkbL4KEsBi8V6KGqr7PGNFAHFKes+qs0cn/rw+n7FHrLitqsrmw88hF+jYUdadVgYyM/vWpj46ui4wP9n9wxKTIrQY6xIqfficrmBHXEUFIGOuLjoY7GazXPSQO/yfnIwIwWv5u3U5ScnBq0L6bhHRVoO3ykIdOJ40kHjLoW41AjkI5eLLPQKHjgznnGu/4Qe8XKO2e77KDh27Ml7g7ZUprNzagpUKtjEgQ6qD05CNstALWSOAxHpeAM7CIywNTB1taGXlCNhpA/CreOuZvbKipMIm82+bvlwrbc1ixtSW5eKafuXxH8En05LBZlN+eYO2ubm2oAuvNdBL+2xQiPiWar7HXbR9zf4jXsYbZUOOUs4DM0mVpcnMqEz2LoMIOL6Oczhl2COUKEzZXyXVw/W7qTfCBr9/INrn5zfAvmDNyBfIVtsEOWWn4oB2wt316ooZ+HF3oYVITWCOZGoTXvke2wM8XuOPDcqrlh6kN8lFxxQzp16/bZaftAjSquoj1W33PT26abppGH7aCNSmc1KFw4uW9scx+49BvL5TdEt8KvYwH22rA3IrXHYO7oarWYSuuPVoL+/knu5eHGa9I4Ra4sQ8ukZarKpGXu24/kwnSR3TDwO5Kq//z1TS9Hx0QFHXy+YSSTqa6urTGLunVmlUabmxb86ctcK/zZ+x99PDvnTswfcpdRuXND7v3W/L0KmEJSo0+F5Ketg68MANT144EE15ErbOqp06frLUOA2pdm7IBt9Ozc621/XX+Ipb0e5165iRD76/dt34IG9sUGtL6hqoEEHm6xSq8F0MvT6mHzHG6pMdqvanNVjZfXYEdFVa2x3Vj/xiv1XgvZzsX/EP4H8JR1OwplbmRzdHJlYW0KZW5kb2JqCjQ4NiAwIG9iago8PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIyPj4Kc3RyZWFtCnjaa2BgkBCwVBR9tCWi4dUTABq6BVQKZW5kc3RyZWFtCmVuZG9iago0NDMgMCBvYmoKPDwvVHlwZS9PYmpTdG0vTiA1Ny9GaXJzdCA0NzQvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAyMjE2Pj4Kc3RyZWFtCnjavVhrb9vGEv3eX7HfaqNQuO/HhWHAsa9TI3HjxE4TXJYfZIl2BDiiIclp/O/vmV1SomjSlYGgToih9jFzZvbszC61FowzrSUTeNMqMCUcfmumvYE0zEqSjjnq1555pSADC8pDWiY4Jms0CuEw00CThAr8ljTS4EUJNDpYiA2aCYMGhQYjocMIJiynqVBmHZRhtPXUgyHOoidAeprrmfBWMtLhHY0wTAQM05YzyaViJkDCC20Fk0J4ZjWkgjuYJvHGLEZIiRE0VHEooSHKaXgIGRANa5jUGOcwIobBWiYNhnmMsBIIrWLScQTEwC5BhHJP6BA+YZmGF0rSQGeZUoia9pwpA5OkTwUgBWhBoXUUdsmZpQB4RtAJg0OXh8+eGaEQEMGMNKQwwHvNEXZmLIVAM+MCLRc5D9AaLkqh2cFBdjVb3ZUHN+XNDef6mnMLaaf1I/CUeHRqd2NIgyfgmdD7YXYEHZfZm+qqyk72lg/Xy3KymlXzV/KV3D88zC7Gi3K+iqTh7GN2sSi/M4JGP/4of6wirfDj8PCXLpjG+DQZdRISAJ2p2x3naOLS411ugFEbXtP4m7pvUvfXumi+DM+BV8PgxQDekPQ6hUfXwZvUj6jbQo2p7NpuDJPZ09liuVpH6d14uY5Sdlw9ANBIbaCpFjRQuBVX3Y9zoluLWse1HVPCHzGHli9mAO92mLawhDYWMxCzNskoNrbGFO0O2NSDNvWW/3bApkl2oxTDHDCvRNtQUtfo9sOcbXQb+Zxu2aO7dsK1DYV+Q4YWiR6Q37kN+d34OaNq2OiQQ01GKFukvn5mcUybwK5N4LADgds8qZXUnK6V2JYSg3G5iPsCZYNEQfM+lsvqYTEplygQcfTV430Jc7fl2qYRtZr5Cr+XuYhmi+xoPq9Wy1ifEoxc+KQ+gkfVSEIkkUxLlYROwiRhk3BJJC0yaVFJi0paVNKSwsBUnx9qVz9U1w/V+KESgrQpO+pTQttBfUpILfXtDNPMXtars1lhk/LY29kUCFM4U1hUFAXhSwvP0vp28fkhfKaDz3XwNRkgTxBYcqijPgVpB/WJFS31bq0+oTd96M2u6E0XvX9xdFORYGmrsbQ8Mbw2+W/7/LeD/odtgLbjf1Ia1Sf/bZ//1u+qvuO/beps7hJ614fe7YreddHLF4c3qaTTYhRhHV6X/Hd9/rsh/+u4bwB2/W92V+6T/77Pf692VO+7/pu1+oTep5Tl0970KWH45HJICEJKWUH2AAl6RyBBdYDYFy+ESyvgEji/5nmfBiHrvZE2f7PvGoI0+IrsvJzOxq+rHzkZMgElGvcYLV75UKs+XpTjVbXYeze+Kr+wv2err+wrrC0W5c3+k5Og0alIx9OA2hTReMIJ9UmrOdU+OR12TkYije+eYGMRflh9rRbNqWBcdzQDcMS9WFTTh0m52Psx/T67n958+8H+2sM1SODP/bW/n9xC6T4Zr8q9k/+gy3LNA/dGGD/i/Ff8308ReH9fzo9inU+JHDV6VcRon1fTMvu0LN8/rO5mcwT/j/E3St2pumVN86bc0wqtFzUu2vF4Nb6rbmPVdbk0qpASmVUU0kahfG68KbTPvXKF0UjquOoEX1h0WFM4meugCkcdonAWKnThee6x8w02l7Gi8CZXwRbe5UrSnQh6LMbbUAThc+lUUcC6yBXdcVUohMXAeG0rlM3pzkV3Twv7mmMaeKJDodFjNQELWhVGIFH6wig0oh+sw9WLMCKqmIkLmKgldpPyhAv3ZyR/xeEDhuGQgVcWsGGp2YpAsKnY6uDieYiagZl5Y4sgCT5dAwvcYAlidMkGGV1SStQuyYD7KXwXJpeottEtbD1lXSFDjtcC0zWOKD6EiM+i7locUhzaDEqbwXHKYU845QsNJZawIYg4GwWOqyoAOuxIi1WJEkcnRAdTVZyGHYXEYeulQGScKKzNcfKMCwgDFhdvuguTxGLRAkCDj1ZAh/jgfhtlwCGK2mNQ6cJOc+meDu3KqIQMd2+H9GtoqTnd7hEj7kAfiSh4VAT8trRc+G2JZIiO17RQhQg8hw6spgcbcZN2iCv4qAxd0ekdFHI20aeOtcQ6I9boIZR4CmXotdCyaYmtOg4oDE8ijTEhCsCJQrVnxFkuDXcyCb024pI6n2b69czC+9gS7JZ15JI8SVlL3elPSIp1Nj1F5s4uH65XcZeendBv6pDZ6/GyjL0fT44/ffn8G+WHy/F8OTrDVp5N4syTcjlZzO6ROONnjFgKzk4uH5er8tvZ/KaKReR2tlwtHveOptV1uZ+9X0zLxWx+u3c2ReqfrR73Yf7+/q78RpWA44Jx8pn2ZPY5fkSpVV5Vb85Ozsf3WTOrVRC2gWRHywlpctZk1ErvI6l5dglMf6ICIhfd/17Obr+mMUffbz/Ppkj3xsio6jWViRFyD6bhfCMktgni6IssOX40v70r2Qil5/RufIszAKl+RH04QOKbV8vygNOf5Nfc4h+2OzIuEi/Xh3R7ggVKn0NRpfCVqIj10YeGn87uSvru0z2Qby0dtfB/XLP/zifVFMFfh3H0ex2k6RiGqnhUSRXzqvo0n2F0ia3lnrPcT5rjdx/+9+bDBsDr6m76lDLm51EGKSdSxv50ygg0D3DGqjZnkM0xL8TvnQGcQeXZ4gyvGSPp85x/whofWXINOcya3rCuOeOecMa/gDO9undhTHjKGP9yxpy+/fDxz+O1+adkCT+TLJLIks7e/1Z+8aHFFYNaM5LImQJL3JNfGq7oQZo8l1y6sWwYkm4ZbYZ4+QKGdNXuQg4hnrIj7MiOlumLL1/Ojy5+e3d+Xs0rwUdY9oe78eIn0KHLs/rSFasQjywxPXB7COF8ixBS1oSwoU0IjNkQgvN2wcFhcqToGBbrjbD9fHC9xYbHz+KBt/62+DAUvYYIOF+li9aGKfYFvBhQP2rRYheqpC+8W1RxzWeI/wNGtjdRCmVuZHN0cmVhbQplbmRvYmoKNDg3IDAgb2JqCjw8L1R5cGUvWFJlZi9JRFs8NzVkNTVlODY5ZDMzZWU1NTVkOTZmNmE0YjYyZGZkYTI+PDc1ZDU1ZTg2OWQzM2VlNTU1ZDk2ZjZhNGI2MmRmZGEyPl0vUm9vdAoxIDAgUi9JbmZvIDIgMCBSL1NpemUgNDg4L1dbMSAyIDJdL0ZpbHRlci9GbGF0ZURlY29kZS9MZW5ndGggMTAxMj4+CnN0cmVhbQp42i3W6ZtOZRwH8Oe2MxhjHQyGsczYB0N2FUpItGhRtrJkz5IlEYmUkkjIGiIyZEm2Spa6uq7e5V1X/0Tv9Xx+pzef63ff3/Occ+7lPOfkcrmHD2uk67lydENByhXmcqloYi6n2Qe90A99UYX+NXKN8sdN+jN/XL5KqW1BVtWQNlLVRC3URh3URT3URwMUoCHiZ41RiCYoQlM0SyUHsms0d404pAVaptL/g1aCpngEA/UVo3UqW5Md0kbQXNUWJamiMAvaCVqq2qNDqhyVBaWC1qqO6JSq/siCMkGcpTO6pCEDs6CroJ2qG8rTyHVZUCEoVXVHjzT6WBb0FHRS9ULvNO7fLIgFiNP3RSX6IRZgAKoQQx2UJszNfpYffnU2f5+qXlANxjVcxw3cxBDcwk/4Gb9gKG7jV2eZqrqDYRiOu7iH+w6Ji49QJdRATcQ+GKmqjRfRALHwo1SNUYgixJo/isc0m6E5Ys0fV7XES+iImL/RqjJ0Rhd0FYxRdUM5KhCrMBZPaL6MuMm4obj4k6q4g7hknH6MYJxqLOK3cdwrgqdUEzART2OSYDwmIIJnMBlT9MVxz+I5PI9pgkmqGZiJWZgtiBO8jjcwB3MFkzFFcx7m41WsEMQ1VmE11uIdQVx3PTZgI94TxL1swmvYgU8Esa+masY224nPsEsQi/w5dmMPvhDEkk3HURzD14JYgOM4gZP4RhATO03zFE7jW307EWN7E61QjHhg43bboC1KEM9lXLw9OqAUCwQzMBMxzz3RC330zVZVoj+qMEgQqzAYQzEcCwWxMrFVYluMxyLBHMzVXIwlWIplgli3t7BcM+Z0syrW8n1swQfYKojhb8OH2I6PBDGshZofq3ap9uJLzUWqfdiPA/hKEHd1EIdwGEcESxCregZn8Z2+pVimWY0LuIhLghjMZVzBD/p2Y7nmVfyIa4g/qBWqG7iJW4g/qJVYhbf1xf9VbMfYXKuxB3uxDwewBjG2gziEw1iLGNtRxLwcwzrEoxG78zhO4CTWI3bnKZxG7Ml3cQb7cRYxQxtwDtU4jwvYiHjUvsdFxKxdRjx5vVEfBYhX5WZVX/TDAMSLIDZIvAOGYBhGCLYgNk0PrERMYkzOVtU6xBCuIBZqG64i1qgO4lUee60ezuE8YgjbEfsvdt2ONP0vXxTV+RdL/oUW47iH24i3yx3clcZb474qvkFSenArq2qiFuqhNuqgLuKt2wQN0BCNEV8FRWiGFmiPYsQHQQm6oAM6oizN8yk0/0KeBfPzLCrObqM3KtLiv/N9S/pkfZXonjbNyvdtupT1DUCPdKQ833dkbdY3KP2+PKt6pgez88E/v+Vy/wGkun4QCmVuZHN0cmVhbQplbmRvYmoKc3RhcnR4cmVmCjU3Mjg4CiUlRU9GCg==</File>
    </Filelist>
    <DatabaseInstall Type="post">
        <TableCreate Name="configitem">
            <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="BIGINT"/>
            <Column Name="configitem_number" Required="true" Size="100" Type="VARCHAR"/>
            <Column Name="class_id" Required="true" Type="INTEGER"/>
            <Column Name="last_version_id" Required="false" Type="BIGINT"/>
            <Column Name="cur_depl_state_id" Required="false" Type="INTEGER"/>
            <Column Name="cur_inci_state_id" Required="false" Type="INTEGER"/>
            <Column Name="create_time" Required="true" Type="DATE"/>
            <Column Name="create_by" Required="true" Type="INTEGER"/>
            <Column Name="change_time" Required="true" Type="DATE"/>
            <Column Name="change_by" Required="true" Type="INTEGER"/>
            <Unique>
                <UniqueColumn Name="configitem_number"/>
            </Unique>
            <Index Name="configitem_class_id">
                <IndexColumn Name="class_id"/>
            </Index>
            <Index Name="configitem_last_version_id">
                <IndexColumn Name="last_version_id"/>
            </Index>
            <Index Name="configitem_cur_depl_state_id">
                <IndexColumn Name="cur_depl_state_id"/>
            </Index>
            <Index Name="configitem_cur_inci_state_id">
                <IndexColumn Name="cur_inci_state_id"/>
            </Index>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Local="class_id" Foreign="id"/>
                <Reference Local="cur_depl_state_id" Foreign="id"/>
                <Reference Local="cur_inci_state_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Local="create_by" Foreign="id"/>
                <Reference Local="change_by" Foreign="id"/>
            </ForeignKey>
        </TableCreate>
        <TableCreate Name="configitem_definition">
            <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="INTEGER"/>
            <Column Name="class_id" Required="true" Type="INTEGER"/>
            <Column Name="configitem_definition" Required="true" Type="LONGBLOB"/>
            <Column Name="version" Required="true" Type="INTEGER"/>
            <Column Name="create_time" Required="true" Type="DATE"/>
            <Column Name="create_by" Required="true" Type="INTEGER"/>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Local="class_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Local="create_by" Foreign="id"/>
            </ForeignKey>
        </TableCreate>
        <TableCreate Name="configitem_version">
            <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="BIGINT"/>
            <Column Name="configitem_id" Required="true" Type="BIGINT"/>
            <Column Name="name" Required="true" Size="250" Type="VARCHAR"/>
            <Column Name="definition_id" Required="true" Type="INTEGER"/>
            <Column Name="depl_state_id" Required="true" Type="INTEGER"/>
            <Column Name="inci_state_id" Required="false" Type="INTEGER"/>
            <Column Name="create_time" Required="true" Type="DATE"/>
            <Column Name="create_by" Required="true" Type="INTEGER"/>
            <Index Name="configitem_version_configitem_id">
                <IndexColumn Name="configitem_id"/>
            </Index>
            <Index Name="configitem_version_depl_state_id">
                <IndexColumn Name="depl_state_id"/>
            </Index>
            <Index Name="configitem_version_inci_state_id">
                <IndexColumn Name="inci_state_id"/>
            </Index>
            <ForeignKey ForeignTable="configitem">
                <Reference Local="configitem_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_definition">
                <Reference Local="definition_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="general_catalog">
                <Reference Local="depl_state_id" Foreign="id"/>
                <Reference Local="inci_state_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Local="create_by" Foreign="id"/>
            </ForeignKey>
        </TableCreate>
        <TableCreate Name="configitem_counter">
            <Column Name="class_id" Required="true" PrimaryKey="true" Type="INTEGER"/>
            <Column Name="counter_type" Required="true" Size="50" Type="VARCHAR"/>
            <Column Name="counter" Required="true" Size="50" Type="VARCHAR"/>
        </TableCreate>
        <TableCreate Name="configitem_history_type">
            <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="INTEGER"/>
            <Column Name="name" Required="true" Size="255" Type="VARCHAR"/>
            <Column Name="comments" Size="255" Type="VARCHAR"/>
            <Column Name="valid_id" Required="true" Type="SMALLINT"/>
            <Column Name="create_time" Required="true" Type="DATE"/>
            <Column Name="create_by" Required="true" Type="INTEGER"/>
            <Column Name="change_time" Type="DATE"/>
            <Column Name="change_by" Type="INTEGER"/>
            <Unique Name="configitem_history_type_name">
                <UniqueColumn Name="name"/>
            </Unique>
            <ForeignKey ForeignTable="valid">
                <Reference Local="valid_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Local="create_by" Foreign="id"/>
                <Reference Local="change_by" Foreign="id"/>
            </ForeignKey>
        </TableCreate>
        <TableCreate Name="configitem_history">
            <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="BIGINT"/>
            <Column Name="configitem_id" Required="true" Type="BIGINT"/>
            <Column Name="type_id" Required="true" Type="INTEGER"/>
            <Column Name="content" Required="true" Size="255" Type="VARCHAR"/>
            <Column Name="create_time" Required="true" Type="DATE"/>
            <Column Name="create_by" Required="true" Type="INTEGER"/>
            <ForeignKey ForeignTable="configitem">
                <Reference Local="configitem_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_history_type">
                <Reference Local="type_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Local="create_by" Foreign="id"/>
            </ForeignKey>
        </TableCreate>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class</Data>
            <Data Key="name" Type="Quote" Translatable="1">Computer</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class</Data>
            <Data Key="name" Type="Quote" Translatable="1">Hardware</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class</Data>
            <Data Key="name" Type="Quote" Translatable="1">Location</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class</Data>
            <Data Key="name" Type="Quote" Translatable="1">Network</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class</Data>
            <Data Key="name" Type="Quote" Translatable="1">Software</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Expired</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Inactive</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Maintenance</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Pilot</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Planned</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Production</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Repair</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Retired</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Review</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::DeploymentState</Data>
            <Data Key="name" Type="Quote" Translatable="1">Test/QA</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::YesNo</Data>
            <Data Key="name" Type="Quote" Translatable="1">Yes</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::YesNo</Data>
            <Data Key="name" Type="Quote" Translatable="1">No</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Computer::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Laptop</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Computer::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Desktop</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Computer::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Phone</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Computer::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">PDA</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Computer::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Server</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Computer::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Other</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Monitor</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Printer</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Switch</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Router</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">WLAN Access Point</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Security Device</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Backup Device</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Mouse</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Keyboard</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Camera</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Beamer</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Modem</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">PCMCIA Card</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">USB Device</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Docking Station</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Scanner</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Hardware::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Other</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Location::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Building</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Location::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Office</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Location::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Floor</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Location::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Room</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Location::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Rack</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Location::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Workplace</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Location::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Outlet</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Location::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">IT Facility</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Location::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Other</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Network::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">LAN</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Network::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">WLAN</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Network::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Telco</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Network::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">GSM</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Network::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Other</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Client Application</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Middleware</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Server Application</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Client OS</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Server OS</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Admin Tool</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">User Tool</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Embedded</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::Type</Data>
            <Data Key="name" Type="Quote" Translatable="1">Other</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Single Licence</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Per User</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Concurrent Users</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Per Processor</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Per Server</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Per Node</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Volume Licence</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Enterprise Licence</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Developer Licence</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Demo</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Time Restricted</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Freeware</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Open Source</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="general_catalog">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Software::LicenceType</Data>
            <Data Key="name" Type="Quote" Translatable="1">Unlimited</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">ConfigItemCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">ConfigItemDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">LinkAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">LinkDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">NameUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">ValueUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">DefinitionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">IncidentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">DeploymentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">VersionDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">AttachmentAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type">
            <Data Key="name" Type="Quote">AttachmentDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="ticket_history_type">
            <Data Key="name" Type="Quote">CILinkAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="ticket_history_type">
            <Data Key="name" Type="Quote">CILinkDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
    </DatabaseInstall>
    <DatabaseUpgrade Type="post">
        <TableCreate Name="configitem_history_type" Version="1.3.71">
            <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="INTEGER"/>
            <Column Name="name" Required="true" Size="255" Type="VARCHAR"/>
            <Column Name="comments" Size="255" Type="VARCHAR"/>
            <Column Name="valid_id" Required="true" Type="SMALLINT"/>
            <Column Name="create_time" Required="true" Type="DATE"/>
            <Column Name="create_by" Required="true" Type="INTEGER"/>
            <Column Name="change_time" Type="DATE"/>
            <Column Name="change_by" Type="INTEGER"/>
            <Unique Name="configitem_history_type_name">
                <UniqueColumn Name="name"/>
            </Unique>
            <ForeignKey ForeignTable="valid">
                <Reference Local="valid_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="users">
                <Reference Local="create_by" Foreign="id"/>
                <Reference Local="change_by" Foreign="id"/>
            </ForeignKey>
        </TableCreate>
        <TableCreate Name="configitem_history" Version="1.3.71">
            <Column Name="id" Required="true" PrimaryKey="true" AutoIncrement="true" Type="BIGINT"/>
            <Column Name="configitem_id" Required="true" Type="BIGINT"/>
            <Column Name="type_id" Required="true" Type="INTEGER"/>
            <Column Name="content" Required="true" Size="255" Type="VARCHAR"/>
            <Column Name="create_time" Required="true" Type="DATE"/>
            <Column Name="create_by" Required="true" Type="INTEGER"/>
            <ForeignKey ForeignTable="configitem">
                <Reference Local="configitem_id" Foreign="id"/>
            </ForeignKey>
            <ForeignKey ForeignTable="configitem_history_type">
                <Reference Local="type_id" Foreign="id"/>
            </ForeignKey>
        </TableCreate>
        <Insert Table="general_catalog" Version="1.1.90">
            <Data Key="general_catalog_class" Type="Quote">ITSM::ConfigItem::Class</Data>
            <Data Key="name" Type="Quote" Translatable="1">Location</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">ConfigItemCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">ConfigItemDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">LinkAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">LinkDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">NameUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">VersionCreate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">ValueUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">DefinitionUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">IncidentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">DeploymentStateUpdate</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="1.3.71">
            <Data Key="name" Type="Quote">VersionDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="3.1.92">
            <Data Key="name" Type="Quote">AttachmentAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="configitem_history_type" Version="3.1.92">
            <Data Key="name" Type="Quote">AttachmentDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <TableAlter Name="configitem_counter" Version="5.0.16">
            <ForeignKeyDrop ForeignTable="general_catalog">
                <Reference Local="class_id" Foreign="id"/>
            </ForeignKeyDrop>
        </TableAlter>
        <Insert Table="ticket_history_type" Version="7.0.2">
            <Data Key="name" Type="Quote">CILinkAdd</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
        <Insert Table="ticket_history_type" Version="7.0.2">
            <Data Key="name" Type="Quote">CILinkDelete</Data>
            <Data Key="valid_id">1</Data>
            <Data Key="create_time">current_timestamp</Data>
            <Data Key="create_by">1</Data>
            <Data Key="change_time">current_timestamp</Data>
            <Data Key="change_by">1</Data>
        </Insert>
    </DatabaseUpgrade>
    <DatabaseUninstall Type="pre">
        <TableDrop Name="configitem_counter"/>
        <TableDrop Name="configitem_version"/>
        <TableDrop Name="configitem_definition"/>
        <TableDrop Name="configitem_history"/>
        <TableDrop Name="configitem_history_type"/>
        <TableDrop Name="configitem"/>
    </DatabaseUninstall>
    <CodeInstall Type="post"><![CDATA[

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

        $Kernel::OM->Get($CodeModule)->CodeInstall();

    ]]></CodeInstall>
    <CodeReinstall Type="post"><![CDATA[

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

        $Kernel::OM->Get($CodeModule)->CodeReinstall();

    ]]></CodeReinstall>
    <CodeUpgrade Type="post"><![CDATA[

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

        # discard internally stored object, so that the next access to object creates them newly
        $Kernel::OM->ObjectsDiscard(
            Objects            => [$CodeModule],
            ForcePackageReload => 1,
        );

        $Kernel::OM->Get($CodeModule)->CodeUpgrade();

    ]]></CodeUpgrade>
    <CodeUninstall Type="pre"><![CDATA[

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

        $Kernel::OM->Get($CodeModule)->CodeUninstall();

    ]]></CodeUninstall>
    <CodeUninstall Type="post"><![CDATA[

        {
            # cleanup stats list (only stats related to the given stat objects)
            $Kernel::OM->Get('Kernel::System::Stats')->StatsCleanUp(
                ObjectNames => [ 'ITSMConfigItem' ],
                UserID => 1,
            );
        }

    ]]></CodeUninstall>
    <IntroInstall Type="pre" Title="Install Information" Lang="en"><![CDATA[

        <br/>
        <strong>WELCOME</strong>
        <br/>
        <br/>
        You are about to install the Znuny package ITSMConfigurationManagement.<br/>
        <br/>
        <br/>

    ]]></IntroInstall>
    <IntroInstall Type="pre" Title="Installation Information" Lang="de"><![CDATA[

        <br/>
        <strong>WILLKOMMEN</strong>
        <br/>
        <br/>
        Sie sind im Begriff das Znuny-Paket ITSMConfigurationManagement zu installieren.<br/>
        <br/>

    ]]></IntroInstall>
    <IntroInstall Type="pre" Title="Install Information" Lang="es"><![CDATA[

        <br/>
        <strong>BIENVENIDO</strong>
        <br/>
        <br/>
        Usted está punto de instalar el paquete ITSMConfigurationManagement de Znuny.<br/>
        <br/>

    ]]></IntroInstall>
    <IntroInstall Type="pre" Title="Telepítési információk" Lang="hu"><![CDATA[

        <br/>
        <strong>ÜDVÖZÖLJÜK</strong>
        <br/>
        <br/>
        Ön az ITSMConfigurationManagement Znuny csomag telepítésére készül.<br/>
        <br/>
        <br/>

    ]]></IntroInstall>
    <IntroInstall Type="post" Title="Installation Information" Lang="en"><![CDATA[

        <br/>
        <strong>NOTICE</strong>
        <br/>
        <br/>
        In order to grant users access to the config item menu, you need to add them as member to the group 'itsm-configitem'.
        <br/>
        <br/>
        The menu items that were added by this package will be visible after you log-in to the system again.
        <br/>
        <br/>

    ]]></IntroInstall>
    <IntroInstall Type="post" Title="Installation Information" Lang="de"><![CDATA[

        <br/>
        <strong>HINWEIS</strong>
        <br/>
        <br/>
        Um Benutzern Zugriff auf das ConfigItem-Menü zu gewähren, müssen diese Mitglied der neuen Gruppe 'itsm-configitem' sein.
        <br/>
        <br/>
        Die von diesem Paket hinzugefügten Menü-Punkte sind erst nach einem erneuten Anmeldevorgang im System sichtbar.
        <br/>
        <br/>

    ]]></IntroInstall>
    <IntroInstall Type="post" Title="Installation Information" Lang="es"><![CDATA[

        <br/>
        <strong>ATENCIÓN</strong>
        <br/>
        <br/>
        Para permitirles a los usuarios el acceso al menú de los elementos de configuración, es necesario que se den de
        alta como miembros del grupo 'itsm-configitem'.
        <br/>
        <br/>
        Los elementos del menú que se agregaron por este paquete, serpan visibles después reiniciar la sesión al sistema.
        <br/>
        <br/>
        ((enjoy))
        <br/>
        <br/>

    ]]></IntroInstall>
    <IntroInstall Type="post" Title="Telepítési információk" Lang="hu"><![CDATA[

        <br/>
        <strong>FIGYELMEZTETÉS</strong>
        <br/>
        <br/>
        Annak érdekében, hogy hozzáférést adjon a felhasználók számára a konfigurációelem menühöz, hozzá kell adnia őket az „itsm-configitem” csoporthoz tagként.
        <br/>
        <br/>
        Azok a menüpontok, amelyeket ez a csomag adott hozzá, azután lesznek láthatóak, miután ismét bejelentkezik a rendszerbe.
        <br/>
        <br/>

    ]]></IntroInstall>
    <IntroUpgrade Type="pre" Title="Upgrade Information" Lang="en"><![CDATA[

        <br/>
        <strong>WELCOME</strong>
        <br/>
        <br/>
        You are about to upgrade the Znuny package ITSMConfigurationManagement.<br/>
        <br/>

    ]]></IntroUpgrade>
    <IntroUpgrade Type="pre" Title="Upgrade Information" Lang="de"><![CDATA[

        <br/>
        <strong>WILLKOMMEN</strong>
        <br/>
        <br/>
        Sie sind im Begriff das Znuny-Paket ITSMConfigurationManagement zu aktualisieren.<br/>
        <br/>

    ]]></IntroUpgrade>
    <IntroUpgrade Type="pre" Title="Upgrade Information" Lang="es"><![CDATA[

        <br/>
        <strong>BIENVENIDO</strong>
        <br/>
        <br/>
        Usted está a punto de actualizar el paquete ITSMConfigurationManagement de Znuny.<br/>
        <br/>
        <br/>

    ]]></IntroUpgrade>
    <IntroUpgrade Type="pre" Title="Frissítési információk" Lang="hu"><![CDATA[

        <br/>
        <strong>ÜDVÖZÖLJÜK</strong>
        <br/>
        <br/>
        Ön az ITSMConfigurationManagement Znuny csomag frissítésére készül.<br/>
        <br/>

    ]]></IntroUpgrade>
    <IntroUninstall Type="pre" Title="Uninstallation Information" Lang="en"><![CDATA[

        <br/>
        <strong>ATTENTION</strong>
        <br/>
        <br/>
        If you uninstall this package, all database tables that were created during installation will be deleted.
        All data from these tables will be irrevocably lost!
        <br/>
        <br/>
        The group 'itsm-configitem' that was created during package installation will be deactivated.
        You can activate this group again in the admin area.
        <br/>
        <br/>
        All links to config item objects will be irrevocably deleted!
        <br/>
        <br/>
        The statistics that are associated with this package, will no longer be available if the package is uninstalled.
        <br/>
        <br/>

    ]]></IntroUninstall>
    <IntroUninstall Type="pre" Title="Uninstallation Information" Lang="de"><![CDATA[

        <br/>
        <strong>ACHTUNG</strong>
        <br/>
        <br/>
        Bei der Deinstallation werden die von diesem Paket angelegten Datenbank-Tabellen gelöscht.
        Alle darin enthaltenen Daten gehen unwiderruflich verloren!
        <br/>
        <br/>
        Die von diesem Paket angelegte Gruppe 'itsm-configitem' wird deaktiviert.
        Sie kann jederzeit im Admin-Bereich wieder aktiviert werden.
        <br/>
        <br/>
        Alle Verknüpfungen zu ConfigItem-Objekten werden unwiderruflich gelöscht!
        <br/>
        <br/>
        Nach der Deinstallation sind die zu diesem Paket zugehörigen Statistiken nicht mehr verfügbar.
        <br/>
        <br/>

    ]]></IntroUninstall>
    <IntroUninstall Type="pre" Title="Uninstallation Information" Lang="es"><![CDATA[

        <br/>
        <strong>ATENCIÓN</strong>
        <br/>
        <br/>
        Si usted desinstala este paquete, todas las tablas de la base de datos que fueron creadas durante su instalación se eliminarán.
        ¡Todos los datos de dichas tablas se perderán irrevocablemente!
        <br/>
        <br/>
        El grupo 'itsm-configitem' que se creó durante la instalación de este paquete se desactivará.
        Es posible reactivar este grupo en el área de administración.
        <br/>
        <br/>
        ¡Todos los vínculos a objetos de elementos de configuración serán eliminados permanentemente!
        <br/>
        <br/>
        Si usted desinstala este paquete, las estadísticas que están asociadas a él ya no estarán disponibles.
        <br/>
        <br/>

    ]]></IntroUninstall>
    <IntroUninstall Type="pre" Title="Eltávolítási információk" Lang="hu"><![CDATA[

        <br/>
        <strong>FIGYELEM</strong>
        <br/>
        <br/>
        Ha eltávolítja ezt a csomagot, akkor a telepítés során létrehozott összes adatbázistábla törlésre kerül.
        Az ezekben a táblákban lévő összes adat visszavonhatatlanul el fog veszni!
        <br/>
        <br/>
        A csomagtelepítés során létrehozott „itsm-configitem” csoport ki lesz kapcsolva.
        Ezt a csoportot az adminisztrációs területen tudja ismét bekapcsolni.
        <br/>
        <br/>
        A konfigurációelem objektumokra mutató összes hivatkozás visszavonhatatlanul törölve lesz!
        <br/>
        <br/>
        Az ehhez a csomaghoz hozzárendelt statisztikák többé nem lesznek elérhetők, ha a csomag eltávolításra kerül.
        <br/>
        <br/>

    ]]></IntroUninstall>
    <PackageMerge Name="Znuny-DynamicFieldConfigItem" TargetVersion="6.5.0"/>
    <PackageMerge Name="Znuny4OTRS-DynamicFieldConfigItem" TargetVersion="6.5.0"/>
    <PackageMerge Name="Znuny-CustomerCIs" TargetVersion="6.5.0"/>
    <PackageMerge Name="Znuny4OTRS-CustomerCIs" TargetVersion="6.5.0"/>
    <PackageMerge Name="Znuny4OTRS-ITSMConfigItemTypes" TargetVersion="6.5.0"/>
    <PackageMerge Name="Znuny-ITSMConfigItemTypes" TargetVersion="6.5.0"/>
    <PackageMerge Name="Znuny4OTRS-ITSMConfigItemInvoker" TargetVersion="6.5.0"/>
    <PackageMerge Name="Znuny-ITSMConfigItemInvoker" TargetVersion="6.5.0"/>
</otrs_package>
