Survey
6.0.14
OTRS AG
https://otrs.com/
GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007
- Updated minimum framework version to OTRS 6.0.23.
- Updated minimum framework version to OTRS 6.0.20.
- Updated translations.
- Fixed Portuguese translation file.
- Improved performance of SurveyList statistic backend.
- Updated framework files to OTRS 6.0.17.
- Updated copyright.
- Updated minimum framework version to 6.0.15.
- Code cleanup.
- Set minimum framework version to OTRS 6.0.13.
- Code cleanup.
- Fixed: Survey request malfunction when ticket is removed (bug#14080).
- Code cleanup.
- Updated translations, thanks to all translators.
- Follow-up for (bug#12226): SurveyRequestsSend failed.
- Updated license information.
- Updated translations, thanks to all translators.
- Fixed: Survey modul form is not divided in case of NPS question (bug#13742).
- Marked strings as translatable.
- Fixed: Change status dropdown is not modern and not translated in AgentSurveyZoom screen (bug#13741).
- Fixed: Survey statistic does not process timezone (bug#13755).
- Fixed: Survey request is beeing sent ignoring SendInHoursAfterClose (bug#13849).
- Updated translations, thanks to all translators.
- Updated translations, thanks to all translators.
- Fixed bug#13442 - Personal setting is not displayed.
- Updated translations, thanks to all translators.
- Updated documentation (Configuration chapter).
- Updated translations, thanks to all translators.
- Updated translations, thanks to all translators.
- Removed access key for survey overview screen in order to avoid conflicts.
- Updated translations, thanks to all translators.
- Ported to OTRS 6 Framework.
- Fixed bug#[7929](https://bugs.otrs.org/show_bug.cgi?id=7929) - Accessing freetext answers is cumbersome.
- Added tag reference in the Add/Edit survey screens.
A customer survey tool.
Ein Kundenumfragen Werkzeug.
Una herramienta de encuestas a clientes.
Egy ügyfélkérdőív eszköz.
6.0.x
<br>
<strong>WELCOME</strong>
<br>
<br>
You are about to install the OTRS package Survey.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>WILLKOMMEN</strong>
<br>
<br>
Sie sind im Begriff das OTRS-Paket Survey zu installieren.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>BIENVENIDO</strong>
<br>
<br>
Está apunto de instalar el módulo de encuestas de OTRS.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ÜDVÖZÖLJÜK</strong>
<br>
<br>
Ön a Survey OTRS csomag telepítésére készül.<br>
<br>
<br>
((enjoy))<br>
<br>
<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>
((enjoy))<br>
<br>
<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>
((enjoy))<br>
<br>
<br>
<strong>ATENCIÓN</strong>
<br>
<br>
Si usted desinstala este paquete, todas las tablas de la base de datos creadas durante la instalación serán borradas.
¡Todos los datos de esas tablas serán irrevocablemente perdidos!.
<br>
<br>
((enjoy))<br>
<br>
<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>
((enjoy))<br>
<br>
<br>
<strong>WELCOME</strong>
<br>
<br>
You are about to upgrade the OTRS package Survey.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>WILLKOMMEN</strong>
<br>
<br>
Sie sind im Begriff das OTRS-Paket Survey zu aktualisieren.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>BIENVENIDO</strong>
<br>
<br>
Esta apunto de actualizar el módulo de encuestas de OTRS.<br>
<br>
<br>
((enjoy))<br>
<br>
<br>
<strong>ÜDVÖZÖLJÜK</strong>
<br>
<br>
Ön a Survey OTRS csomag frissítésére készül.<br>
<br>
<br>
((enjoy))<br>
<br>
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_2_1_5();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_2_0_92();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_1();
# create the package name
my $CodeModule = 'var::packagesetup::' . $Param{Structure}->{Name}->{Content};
$Kernel::OM->Get($CodeModule)->CodeUpgradeFromLowerThan_4_0_91();
94f51ba6d7a82eb6ace27a2fcb8e4682afd404bf
2019-09-20 17:29:59
opms.otrs.com
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ra2tPXv2bHNzM5vNTk5Onj17NpQJoh2+79u2PTc3t7GxEXYWdDYKB4C2VCoVTdMsy+rr6wtuZriuq+v65ubmyspKIpEISoamaePj47VabWtra2xsTNf13cNM0xwZGSkWi48ePZJSJhKJsCeH/6VpWqFQuHnzZm9vb9hZ0NnYNAqgLevr69Vq1bKswcHBtbW1WCxWKpUMw/jQKoKVkaGhoUQi8fz5cynlxYsXh4eHbduOxWKfDpNS5nK5yclJTdNc13379m3Yk8PeLMu6fPlyX19f2EFwEmgf7pfu6cGDB2PjXx9ZGgBH5vff5j7jaPNoNOp5XrBWEohEIoZh1Ov1/S/cPUzX9Ugk0mw2D5sBSj1+/Hh+fj6VSl25cmVwcPDA8ZVK5erMT0cQDMff4ouH+7xbhzscAA6h0Wjs+ERKeWDb2HNYq9UKdoTgWDEMY2pqqlAocLAbviwKBwDgo0KhEHYEnEwUWAAAoByFAwAAKEfhAAAAylE4AACAcmwaBbpXpVIJOwKAbkHhALqUJ32nd6yl8U8An0/3vezGYtgp0BlYUgG6VLPpGfLg8zOAfRiy3uDoNrSHwgF0KynjzfWwQ6CzxZurkf1OqwY+onAAXerqzA2jvtYjd54cCrTJkI2e+vr31zjXHG2hcABdKh5P9Og9/VtLEZ/zxXFoEb+V2fr7lBGLRqNhZ0FnoHAA3Wtm5kZjeyvrvorKWthZ0Emisp5zXzW2t7797nrYWdAxKBxAV5udvSU8L+3ame3lU56r+54QrMljT77ue6c8N7NdTLt/ab6cnf0l7EjoJDwRB3S7H378eXW18ucfvyYiVcPo6YloYSfCMeVJv9lsCul/9c21VCoTdhx0GAoHAJFKZa7P3go7BYCTjCUVAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAAChH4QAAAMpROAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADKUTgAAIByFA4AAKAchQMAACjXc+CIxRcPjyAHAAA4wTTf98POAAAATjiWVAAAgHIUDgAAoByFAwAAKEfhAAAAylE4AACAchQOAACgHIUDAAAoR+EAAADK/QOGSjSEcpJaCwAAAABJRU5ErkJggg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleU92ZXJ2aWV3IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkFsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BIFN1cnZleSBNb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudFN1cnZleU92ZXJ2aWV3IyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5TdXJ2ZXlPdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRTdXJ2ZXlPdmVydmlldyMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkEgU3VydmV5IE1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPk1lbnU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkl0ZW1BcmVhPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPk92ZXJ2aWV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCbG9jayI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjEwMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleUFkZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBBZGQgTW9kdWxlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPlN1cnZleTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRTdXJ2ZXlBZGQjIyMwMDItU3VydmV5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50U3VydmV5QWRkIyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFN1cnZleUFkZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+MjAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U3VydmV5RWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXkgRWRpdCBNb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudFN1cnZleUVkaXQjIyMwMDItU3VydmV5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TmF2aWdhdGlvbiMjI0FnZW50U3VydmV5RWRpdCMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGl0ZW0gcmVnaXN0cmF0aW9uLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRTdXJ2ZXlTdGF0cyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5IFN0YXRzIE1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50U3VydmV5U3RhdHMjIyMwMDItU3VydmV5IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246OkxvYWRlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDU1MiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+U3VydmV5LkFnZW50LlN1cnZleVN0YXRzLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudFN1cnZleVN0YXRzIyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRTdXJ2ZXlab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBab29tIE1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50U3VydmV5Wm9vbSMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRTdXJ2ZXlab29tIyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+QSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zIyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY1N1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+UHVibGljIFN1cnZleS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OlB1YmxpY1N1cnZleSMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5DdXN0b21lci5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6U2hvd1ZvdGVEYXRhIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6U2VuZFBlcmlvZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjMwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpEZWxldGVQZXJpb2QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZScgc2V0dGluZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MzY1PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6Tm90aWZpY2F0aW9uU2VuZGVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cXVhbGl0eUBleGFtcGxlLmNvbTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpOb3RpZmljYXRpb25SZWNpcGllbnRCbGFja2xpc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6Ok5vdGlmaWNhdGlvblN1YmplY3QiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+SGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6Ok5vdGlmaWNhdGlvbkJvZHkiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJUZXh0YXJlYSI+RGVhciBDdXN0b21lciwKClRoYW5rcyBmb3IgdXNpbmcgb3VyIHNlcnZpY2UuIEhlbHAgdXMgdG8gaW1wcm92ZSB1cyBhbmQgb3VyIHNlcnZpY2VzLgoKUGxlYXNlIGdpdmUgdXMgZmVlZGJhY2sgb24gaG93IHRvIGltcHJvdmUgb3VyIHNlcnZpY2VzOgoKJmx0O09UUlNfQ09ORklHX0h0dHBUeXBlJmd0OzovLyZsdDtPVFJTX0NPTkZJR19GUUROJmd0Oy8mbHQ7T1RSU19DT05GSUdfU2NyaXB0QWxpYXMmZ3Q7cHVibGljLnBsP0FjdGlvbj1QdWJsaWNTdXJ2ZXk7UHVibGljU3VydmV5S2V5PSZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDsKClRoYW5rcyBmb3IgeW91ciBoZWxwIQoKWW91ciBPVFJTLVRlYW0KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OlNlbmROb1N1cnZleVJlZ0V4cCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj4oTUFJTEVSLURBRU1PTnxwb3N0bWFzdGVyfGFidXNlKUAuKz9cLi4rPzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5OS1TdXJ2ZXlTZW5kUmVxdWVzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6U3VydmV5U2VuZFJlcXVlc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkV2ZW50Ij4oQXJ0aWNsZUNyZWF0ZXxUaWNrZXRTdGF0ZVVwZGF0ZSk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6T3ZlcnZpZXcjIyNTbWFsbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU92ZXJ2aWV3OjpTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFnZVNob3duIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW1hZ2UiPm92ZXJ2aWV3c21hbGwucG5nPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbWFnZVNlbGVjdGVkIj5vdmVydmlld3NtYWxsLXNlbGVjdGVkLnBuZzwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpBZ2VudFN1cnZleU92ZXJ2aWV3IyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5T3ZlcnZpZXc8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW50cm9kdWN0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTm90aWZpY2F0aW9uU2VuZGVyIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOb3RpZmljYXRpb25TdWJqZWN0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOb3RpZmljYXRpb25Cb2R5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0dXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZVRpbWUiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNyZWF0ZUJ5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VUaW1lIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDaGFuZ2VCeSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHREZWZhdWx0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5Wm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw0fSQiPjgwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHRNYXgiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpTdXJ2ZXlab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDR9JCI+MjUwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6Q2hhbmdlU3VydmV5U3RhdHVzR3JvdXBzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5Wm9vbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiAnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmQnIHNldHRpbmcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsNX0kIj4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkFtb3VudE9mU3VydmV5c1BlcjMwRGF5cyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDR9JCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpIb29rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5TdXJ2ZXkjPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI1N1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmZXJlbmNlR3JvdXAiPk1pc2NlbGxhbmVvdXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+TGltaXQuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMCI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTUiPjE1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIwIj4yMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyNSI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzAiPjMwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjM1Ij4zNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGFTZWxlY3RlZCI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlVzZXJTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAwMC1CYWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlN1cnZleVpvb206Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+WyUgRW52KCJMYXN0U2NyZWVuT3ZlcnZpZXciKSB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+QmFjazwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDEwLUVkaXRHZW5lcmFsSW5mbyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlN1cnZleVpvb206Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IEdlbmVyYWwgSW5mbzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRTdXJ2ZXlFZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlFZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMjAtRWRpdFF1ZXN0aW9ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5Wm9vbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkVkaXQgUXVlc3Rpb25zPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IHN1cnZleSBxdWVzdGlvbnMuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50U3VydmV5RWRpdFF1ZXN0aW9uczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDMwLVN0YXRzRGV0YWlscyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5Wm9vbTo6TWVudU1vZHVsZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlN0YXRzIERldGFpbHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlpvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50U3VydmV5U3RhdHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFN1cnZleVN0YXRzO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5TdXJ2ZXlSZXF1ZXN0c1NlbmQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+IDwhLS0gZGVmYXVsdDogZXZlcnkgMjAgbWluIC0tPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c1NlbmQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT4tLWZvcmNlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckN1c3RvbWVySUQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJUaXRsZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckZpcnN0bmFtZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckxhc3RuYW1lIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyTG9naW4iPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJFbWFpbCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlclBob25lIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyRmF4Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyTW9iaWxlIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyU3RyZWV0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyWmlwIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyQ2l0eSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckNvdW50cnkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJDb21tZW50Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2s8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFza05hbWUiPlN1cnZleVJlcXVlc3RzRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPiA8IS0tIGRlZmF1bHQ6IGV2ZXJ5IDIwIG1pbiAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OlN1cnZleTo6UmVxdWVzdHNEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT4tLWZvcmNlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3RhdHM6OkR5bmFtaWNPYmplY3RSZWdpc3RyYXRpb24jIyNTdXJ2ZXlMaXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdGF0czwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6U3VydmV5TGlzdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXlTdGF0czo6U2hvd0RlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6U3VydmV5U3RhdHM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6U2VuZE9ubHlUb1JlYWxDdXN0b21lciIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KPC9vdHJzX2NvbmZpZz4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmJnX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ9Ch0YrQt9C00LDQudGC0LUg0L3QvtCy0L4g0J/RgNC+0YPRh9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ9CS0YrQstC10LTQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAn0JLRitCy0LXQtNC10L3QuNC1INCyINC40LfRgdC70LXQtNCy0LDQvdC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ9Cj0LLQtdC00L7QvNGP0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAn0KLQuNC/0L7QstC1INC90LAg0LHQuNC70LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAn0JLRitGC0YDQtdGI0L3QviDQvtC/0LjRgdCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0L7RgdC90L7QstC90LDRgtCwINC40L3RhNC+0YDQvNCw0YbQuNGPJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAn0KDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINCy0YrQv9GA0L7RgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ9CS0LjQtSDRgdGC0LUg0YLRg9C6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICfQktGK0L/RgNC+0YHQuCDQt9CwINC/0YDQvtGD0YfQstCw0L3QtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAn0JTQvtCx0LDQstGP0L3QtSDQvdCwINCy0YrQv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ9CS0YrQstC10LTQtdGC0LUg0LLRitC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC8INC1INC+0YLQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn0J3Rj9C80LAg0LfQsNC/0LjRgdCw0L3QuCDQstGK0L/RgNC+0YHQuCDQt9CwINGC0L7QstCwINC/0YDQvtGD0YfQstCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICfQktGK0L/RgNC+0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC8INC1INC+0YLQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfQmtC+0LPQsNGC0L4g0L/RgNC40LrQu9GO0YfQuNGC0LUg0YEg0YDQtdC00LDQutGC0LjRgNCw0L3QtdGC0L4g0L3QsCDQstGK0L/RgNC+0YHQuNGC0LUg0L7RgiDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4sINC/0YDQvtGB0YLQviDQt9Cw0YLQstC+0YDQtdGC0LUg0YLQvtC30Lgg0LXQutGA0LDQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQstGK0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ9CS0YrRgNC90LXRgtC1INGB0LUg0LrRitC8INCy0YrQv9GA0L7RgdC40YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICfQktGK0L/RgNC+0YEgOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ9CS0YrQt9C80L7QttC90Lgg0L7RgtCz0L7QstC+0YDQuCDQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfQlNC+0LHQsNCy0Y/QvdC1INC90LAg0J7RgtCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfQndGP0LzQsCDQvtGC0LPQvtCy0L7RgNC4INC30LAg0YLQvtC30Lgg0LLRitC/0YDQvtGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAn0J3Rj9C80LAg0L3Rj9C60L7Qu9C60L4g0L7RgtCz0L7QstC+0YDQsCwg0Lgg0YnQtSDRgdC1INC/0L7QutCw0LbQtSDRgtC10LrRgdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn0KDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINC+0YLQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ9CS0YrRgNC90LXRgtC1INGB0LUsINC30LAg0LTQsCDRgNC10LTQsNC60YLQuNGA0LDRgtC1INCy0YrQv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICfQntGC0LPQvtCy0L7RgCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ9Cc0LDQutGBLiDQv9C+0LrQsNC30LDQvdC4INC/0YDQvtGD0YfQstCw0L3QuNGPINC90LAg0YHRgtGA0LDQvdC40YbQsNGC0LAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ9CY0LfQv9GA0LDRidCw0YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfQo9Cy0LXQtNC+0LzQu9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICfQn9GA0L7QvNC10L3QtdC90L4g0L7Rgic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfQn9GA0LXQs9C70LXQtCDQvdCwINCh0YLQsNGC0LjRgdGC0LjQutCw0YLQsCDQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAn0KLQsNCx0LvQuNGG0LAg0YEg0LjRgdC60LDQvdC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn0JLRgNC10LzQtSDQt9CwINC40LfQv9GA0LDRidCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfQktGA0LXQvNC1INC30LAg0LPQu9Cw0YHRg9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfQlNC10YLQsNC50LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ9CU0LDQvdC90Lgg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfQktGK0YDQvdC10YLQtSDRgdC1INC60YrQvCDQvtCx0YnQuNGPINC/0YDQtdCz0LvQtdC0INC90LAg0YHRgtCw0YLQuNGB0YLQuNGH0LXRgdC60LjRgtC1INC00LDQvdC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ9CY0LfQv9GA0LDRgtC10L3QuCDQuNGB0LrQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn0J/QvtC70YPRh9C10L3QuCDQv9GA0L7Rg9GH0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ9CU0LDQvdC90Lgg0LfQsCDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAn0JHQuNC70LXRgtC90Lgg0YPRgdC70YPQs9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAn0JPRgNCw0YTQuNC60LAg0L3QsCDRgNC10LfRg9C70YLQsNGC0LjRgtC1INC+0YIg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICfQndGP0LzQsCDRgdGC0LDRgtC40YfQtdGB0LrQuCDRgNC10LfRg9C70YLQsNGC0LgnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAn0J/RgNC+0YPRh9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAn0JzQvtC70Y8g0L7RgtCz0L7QstC+0YDQtdGC0LUg0L3QsCDRgdC70LXQtNC90LjRgtC1INCy0YrQv9GA0L7RgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ9Cc0L7QudGC0LUg0L7RgtCz0L7QstC+0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAn0KLQvtCy0LAg0YHQsCDRgtCy0L7QudGC0LUg0L7RgtCz0L7QstC+0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfQl9Cw0LPQu9Cw0LLQuNC1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICfQlNC+0LLQsNCy0Y/QvdC1INC90LAg0L3QvtCy0L4g0J/RgNC+0YPRh9Cy0LDQvdC1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ9Cd0Y/QvNCw0YLQtSDRgNCw0LfRgNC10YjQtdC90LjQtSDQt9CwINGC0L7QstCwINC/0YDQvtGD0YfQstCw0L3QtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQtSDQtNCw0LTQtdC90L4gSUQg0L3QsCDQv9GA0L7Rg9GH0LLQsNC90LXRgtC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAn0J3Rj9C80LDRgtC1INGA0LDQt9GA0LXRiNC10L3QuNC1INC30LAg0YLQvtCy0LAg0L/RgNC+0YPRh9Cy0LDQvdC1INC40LvQuCDQstGK0L/RgNC+0YEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAn0J3Rj9C80LDRgtC1INGA0LDQt9GA0LXRiNC10L3QuNC1INC30LAg0YLQvtCy0LAg0L/RgNC+0YPRh9Cy0LDQvdC1LCDQstGK0L/RgNC+0YEg0LjQu9C4INC+0YLQs9C+0LLQvtGAISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LLRitC/0YDQvtGB0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAn0JTQkC/QndCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ9Cg0LDQtNC40L4gKNGB0L/QuNGB0YrQuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn0JrQstCw0LTRgNCw0YLRh9C1INC30LAg0L7RgtC80LXRgtC60LAgKNGB0L/QuNGB0YrQuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICfQktGK0L/RgNC+0YEg0YLQuNC/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAn0J/RitC70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn0J3QtdC/0YrQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQstGK0L/RgNC+0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ9Ce0LHRiSDQv9GA0LXQs9C70LXQtCDQvdCwINGB0YLQsNGC0LjRgdGC0LjRh9C10YHQutC40YLQtSDQtNCw0L3QvdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICfQndGP0LzQsNGC0LUg0YDQsNC30YDQtdGI0LXQvdC40LUg0LfQsCDRgtC+0LLQsCDQv9GA0L7Rg9GH0LLQsNC90LUg0LjQu9C4INGB0YLQsNGC0LjRgdGC0LjRh9C10YHQutC4INC/0L7QtNGA0L7QsdC90L7RgdGC0LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ9Cf0L7QtNGA0L7QsdC90L7RgdGC0LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfQndC1INC80L7QttC1INC00LAg0YHQtSDQt9Cw0LTQsNC00LUg0L3QvtCy0L4g0YHRitGB0YLQvtGP0L3QuNC1ISDQndGP0LzQsCDQtNC10YTQuNC90LjRgNCw0L3QuCDQstGK0L/RgNC+0YHQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICfQndC1INC80L7QttC1INC00LAg0YHQtSDQt9Cw0LTQsNC00LUg0L3QvtCy0L4g0YHRitGB0YLQvtGP0L3QuNC1ISDQktGK0L/RgNC+0YHQuCDQvdC10L/RitC70L3QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAn0KHRitGB0YLQvtGP0L3QuNC10YLQviDQtSDQv9GA0L7QvNC10L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSDQndC1INC1INC40LfQsdGA0LDQvdCwINC+0L/QsNGI0LrQsCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0g0J3Rj9C80LAg0LjQt9Cx0YDQsNC9INGC0LjQvyDQsdC40LvQtdGCIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLSDQndGP0LzQsCDQuNC30LHRgNCw0L3QsCDRg9GB0LvRg9Cz0LAg0LfQsCDQsdC40LvQtdGC0LggLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g0J/RgNC+0LzRj9C90LAg0L3QsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfQndC10LLQsNC70LjQtNC10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ9Cd0L7QsiDRgdGC0LDRgtGD0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ9Ce0YLQs9C+0LLQvtGA0LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ9Cd0LUg0LUg0L7RgtCz0L7QstC+0YDQtdC90L4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ9CR0LvQsNCz0L7QtNCw0YDQuNC8INCS0Lgg0LfQsCDQvtCx0YDQsNGC0L3QsNGC0LAg0LLRgNGK0LfQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ9Cf0YDQvtGD0YfQstCw0L3QtdGC0L4g0L/RgNC40LrQu9GO0YfQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAn0KHRitC+0LHRidC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICfQnNC+0LTRg9C70YrRgiDQvdC1INC1INCw0LrRgtC40LLQuNGA0LDQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICfQotCw0LfQuCDRhNGD0L3QutGG0LjRjyDQvdC1INC1INCw0LrRgtC40LLQuNGA0LDQvdCwLCDQvNC+0LvRjywg0YHQstGK0YDQttC10YLQtSDRgdC1INGBINCQ0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGALic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAn0JPRgNC10YjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICfQndC10LLQsNC70LjQtNC10L0g0LrQu9GO0Ycg0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICfQktGK0LLQtdC00LXQvdC40Y/RgiDQutC70Y7RhyDQtSDQvdC10LLQsNC70LjQtNC10L0sINCw0LrQviDRgdGC0LUg0L/RgNC+0YHQu9C10LTQuNC70Lgg0LLRgNGK0LfQutCw0YLQsCwg0LzQvtC20LUg0LHQuCDRgtC+0LLQsCDQtSDQvtGB0YLQsNGA0Y/Qu9C+INC40LvQuCDQvdC10LLQsNC70LjQtNC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAn0J/RgNC+0YPRh9Cy0LDQvdC1INC90LAg0LPQu9Cw0YHRg9Cy0LDQvdC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAn0JTQsNC90L3QuCDQt9CwINCz0LvQsNGB0YPQstCw0L3QtSDQsiDQv9GA0L7Rg9GH0LLQsNC90LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ9CS0LjQtSDQstC10YfQtSDRgdGC0LUg0L7RgtCz0L7QstC+0YDQuNC70LguJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfQndCw0LjRgdGC0LjQvdCwINC70Lgg0LjRgdC60LDRgtC1INC00LAg0LjQt9GC0YDQuNC10YLQtSDRgtC+0LfQuCDQstGK0L/RgNC+0YE/INCS0YHQuNGH0LrQuCDRgdCy0YrRgNC30LDQvdC4INC00LDQvdC90Lgg0YnQtSDQsdGK0LTQsNGCINC30LDQs9GD0LHQtdC90LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn0J3QsNC40YHRgtC40L3QsCDQu9C4INC40YHQutCw0YLQtSDQtNCwINC40LfRgtGA0LjQtdGC0LUg0YLQvtC30Lgg0L7RgtCz0L7QstC+0YA/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0YDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINCy0YrQv9GA0L7RgdC4INC+0YIg0L/RgNC+0YPRh9Cy0LDQvdC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktGB0LjRh9C60Lgg0L/QsNGA0LDQvNC10YLRgNC4INC30LAg0L7QsdC10LrRgtCwINC+0YIg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+INCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICfQodC70LXQtCDQvdGP0LrQvtC70LrQviDQtNC90Lgg0YHQu9C10LQg0LjQt9C/0YDQsNGJ0LDQvdC1INC90LAg0LXQu9C10LrRgtGA0L7QvdC90L7RgtC+INC/0LjRgdC80L4sINCyINC60L7QtdGC0L4g0L3QtSDRgdC1INC40LfQv9GA0LDRidCw0YIg0L3QvtCy0Lgg0LfQsNGP0LLQutC4INC30LAg0L/RgNC+0YPRh9Cy0LDQvdC1INC90LAg0YHRitGJ0LjRjyDQutC70LjQtdC90YIuINCY0LfQsdC40YDQsNC90LXRgtC+INC90LAgMCDQstC40L3QsNCz0Lgg0YnQtSDQuNC30L/RgNCw0YnQsCDQtdC70LXQutGC0YDQvtC90L3QsNGC0LAg0L/QvtGJ0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Cf0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LjQvNC10LnQuyDQt9CwINGD0LLQtdC00L7QvNGP0LLQsNC90LUg0L3QsCDQutC70LjQtdC90YLQuNGC0LUg0LfQsCDQvdC+0LLQviDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0KHRgtCw0L3QtNCw0YDRgtC10L0g0L/QvtC00LDRgtC10Lsg0L3QsCDQuNC80LXQudC70LAg0LfQsCDRg9Cy0LXQtNC+0LzRj9Cy0LDQvdC1INC90LAg0LrQu9C40LXQvdGC0Lgg0LfQsCDQvdC+0LLQviDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Ch0YLQsNC90LTQsNGA0YLQvdCwINGC0LXQvNCwINC30LAg0LjQvNC10LnQu9CwINC30LAg0YPQstC10LTQvtC80Y/QstCw0L3QtSDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC70LjRgtC1INC30LAg0L3QvtCy0L4g0L/RgNC+0YPRh9Cy0LDQvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0L/RgNC10LPQu9C10LQsINC30LAg0LTQsCDQv9C+0LrQsNC20LUg0LjQt9Cz0LvQtdC0INC90LAg0YHQv9C40YHRitC60LAg0YEg0L/RgNC+0YPRh9Cy0LDQvdC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ9Cc0LDQutGB0LjQvNCw0LvQvdC40Y8g0LHRgNC+0Lkg0L/RgNC+0YPRh9Cy0LDQvdC40Y8sINC60L7QuNGC0L4g0YHQtSDQuNC30L/RgNCw0YnQsNGCINC90LAg0LrQu9C40LXQvdGC0Lgg0L3QsCDQstGB0LXQutC4IDMwINC00L3QuC4gKDAgLSDQvtC30L3QsNGH0LDQstCwINC90LUg0LzQsNC60YHQuNC80YPQvCwg0LLRgdC40YfQutC4INC30LDRj9Cy0LrQuCDQt9CwINC/0YDQvtGD0YfQstCw0L3QtSDRidC1INCx0YrQtNCw0YIg0LjQt9C/0YDQsNGC0LXQvdC4KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ9Ch0YPQvNCw0YLQsCDQsiDRh9Cw0YHQvtCy0LUsINC30LAg0LrQvtGP0YLQviDQsdC40LvQtdGC0YrRgiDRgtGA0Y/QsdCy0LAg0LTQsCDQsdGK0LTQtSDQt9Cw0YLQstC+0YDQtdC9LCDQt9CwINC00LAg0YHQtSDQt9Cw0LTQtdC50YHRgtCy0LAg0LjQt9C/0YDQsNGJ0LDQvdC10YLQviDQvdCwINC/0YDQvtGD0YfQstCw0L3QtSwgKDAgLSDQvtC30L3QsNGH0LDQstCwINC40LfQv9GA0LDRidCw0L3QtSDQstC10LTQvdCw0LPQsCDRgdC70LXQtCDQt9Cw0YLQstCw0YDRj9C90LUpLiDQl9Cw0LHQtdC70LXQttC60LAgOiDQuNC30L/RgNCw0YnQsNC90LXRgtC+INGB0YrRgSDQt9Cw0LrRitGB0L3QtdC90LjQtSDQvdCwINC40LfRgdC70LXQtNCy0LDQvdC10YLQviDRgdC1INC40LfQstGK0YDRiNCy0LAg0L7RgiBPVFJTIERhZW1vbiwg0L/RgNC10LTQuCDQsNC60YLQuNCy0LjRgNCw0L3QtdGC0L4g0L3QsCDQvdCw0YHRgtGA0L7QudC60LDRgtCwICJEYWVtb24gOjogU2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyIDo6IFRhc2sgIyMjIFN1cnZleVJlcXVlc3RzU2VuZCIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICfQktC40YHQvtGH0LjQvdCw0YLQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQt9CwINC40LfQs9C70LXQtNCwINGBINGC0LXQutGB0YIg0LfQsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwIFpvb20gU3VydmV5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn0JzQsNC60YHQuNC80LDQu9C90LDRgtCwINCy0LjRgdC+0YfQuNC90LAg0LfQsCDQuNC30LPQu9C10LTQsCDRgSDRgtC10LrRgdGCINC30LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCBab29tIFN1cnZleS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C+0L3QuNGC0LUg0LfQsCDQv9C+0LrQsNC30LLQsNC90LUg0LIg0L7QsdGJ0LjRjyDQv9GA0LXQs9C70LXQtCDQvdCwINC40LfRgdC70LXQtNCy0LDQvdC10YLQvi4g0KLQsNC30Lgg0L7Qv9GG0LjRjyDQvdGP0LzQsCDQstC70LjRj9C90LjQtSDQstGK0YDRhdGDINC/0L7Qt9C40YbQuNGP0YLQsCDQvdCwINC60L7Qu9C+0L3QuNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0L7QsdGJ0LDRgtCwINC40L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0L/RgNC+0YPRh9Cy0LDQvdC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC50YLQtSDQstGK0L/RgNC+0YHQuNGC0LUg0L3QsCDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDQvdC1INC40LvQuCDQtNC10LDQutGC0LjQstC40YDQsNC90LUg0L3QsCDQtdC60YDQsNC90LAgItC/0L7QutCw0LfQstCw0L3QtSDQvdCwINC00LDQvdC90LgiINC30LAg0LPQu9Cw0YHRg9Cy0LDQvdC1INCyINC/0YPQsdC70LjRh9C90LjRjyDQuNC90YLQtdGA0YTQtdC50YEsINC30LAg0LTQsCDRgdC1INC/0L7QutCw0LfQstCw0YIg0LTQsNC90L3QuCDQvtGCINC60L7QvdC60YDQtdGC0LXQvSDRgNC10LfRg9C70YLQsNGCINC+0YIg0L/RgNC+0YPRh9Cy0LDQvdC10YLQviwg0LrQvtCz0LDRgtC+INC60LvQuNC10L3RgtGK0YIg0YHQtSDQvtC/0LjRgtCwINC00LAg0L7RgtCz0L7QstC+0YDQuCDQvdCwINC/0YDQvtGD0YfQstCw0L3QtdGC0L4g0LfQsCDQstGC0L7RgNC4INC/0YrRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICfQkNC60YLQuNCy0LjRgNCw0LnRgtC1INC40LvQuCDQtNC10LDQutGC0LjQstC40YDQsNC50YLQtSDQv9GA0L7QstC10YDQutCw0YLQsCDQvdCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC30L/RgNCw0YnQsNC90LUg0LfQsCDRg9GB0LvRg9Cz0LDRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LDQudGC0LUg0LjQu9C4INC00LXQsNC60YLQuNCy0LjRgNCw0LnRgtC1INC/0YDQvtCy0LXRgNC60LDRgtCwINC90LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40LfQv9GA0LDRidCw0L3QtSDQt9CwINGC0LjQv9CwINC90LAg0LHQuNC70LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGP0YLQsCDQvdCwIEZyb250ZW5kINC80L7QtNGD0LvQsCDQt9CwINC/0YDQvtGD0YfQstCw0L3QtSDQtNC+0LHQsNCy0Y8g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC90LAg0LzQvtC00YPQuyBGcm9udGVuZCDQt9CwINGA0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQsNC90LrQtdGC0LDRgtCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0L3QsCDQvNC+0LTRg9C7IEZyb250ZW5kINC30LAg0YHRgtCw0YLQuNGB0YLQuNGH0LXRgdC60Lgg0LTQsNC90L3QuCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40Y8g0L3QsCBGcm9udGVuZCDQvNC+0LTRg9C7INC30LAg0L3QsNCx0LvRjtC00LXQvdC40LUg0YPQstC10LvQuNGH0LXQvdC40LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC90LAg0LzQvtC00YPQuyBGcm9udGVuZCDQt9CwINC+0LHQtdC60YLQsCDQvdCwINC+0LHRidC10YHRgtCy0LXQvdC+0YLQviDQv9GA0L7Rg9GH0LLQsNC90LUg0LIg0L/Rg9Cx0LvQuNGH0L3QuNGPINGA0LDQudC+0L0g0L3QsCDQv9GA0L7Rg9GH0LLQsNC90LXRgtC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAn0JDQutC+INGC0L7Qt9C4INGA0LXQs9C10LrRgSDRgdGK0LLQv9Cw0LTQsCwg0L3Rj9C80LAg0LTQsCDQsdGK0LTQtSDQuNC30L/RgNCw0YLQtdC90L4g0L/RgNC+0YPRh9Cy0LDQvdC1INC90LAg0LrQu9C40LXQvdGC0LjRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0L3QsCDRgdGC0YDQsNC90LjRhtC40YLQtSAo0LIg0LrQvtC40YLQviDRgdCwINC/0L7QutCw0LfQsNC90Lgg0L/RgNC+0YPRh9Cy0LDQvdC40Y/RgtCwKSDQvdCwINC+0LHRidC40Y8g0L/RgNC10LPQu9C10LQg0L3QsCDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn0J/Rg9Cx0LvQuNGH0L3QviDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQt9CwINC00LAg0YDQtdC00LDQutGC0LjRgNCwINC/0YDQvtGD0YfQstCw0L3QtSDQsiDQvdC10LPQvtCy0LjRjyDQvNCw0YnQsNCx0LXQvSDQuNC30LPQu9C10LQg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQt9CwINC00LAg0YDQtdC00LDQutGC0LjRgNCwINCy0YrQv9GA0L7RgdC4INC+0YIg0L/RgNC+0YPRh9Cy0LDQvdC10YLQviDQsiDQvdC10LPQvtCy0LjRjyDQuNC30LPQu9C10LQg0LfQsCDRg9Cy0LXQu9C40YfQtdC90LjQtSDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LDQvdC1INC90LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviwg0LfQsCDQtNCwINGB0LUg0LLRitGA0L3QtSDQsiDQuNC30LPQu9C10LTQsCDQt9CwINGD0LLQtdC70LjRh9C10L3QuNC1INC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LDQvdC1INC90LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviwg0LfQsCDQtNCwINC/0YDQuNCx0LvQuNC20Lgg0L/QvtC00YDQvtCx0L3QvtGB0YLQuNGC0LUg0LIg0YHRgtCw0YLQuNGB0YLQuNGH0LXRgdC60LjRgtC1INC00LDQvdC90Lgg0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LXRgtC+INCyINC10LrRgNCw0L3QsCDQt9CwINGD0LLQtdC70LjRh9C10L3QuNC1INC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICfQodGC0LDRgtC40YHRgtC40LrQsC/QlNC10YLQsNC50LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICfQlNC+0LHQsNCy0Y/QvdC1INC90LAg0LzQvtC00YPQuy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQnNC+0LTRg9C7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Cf0YDQtdCz0LvQtdC0INC90LAg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+INC30LAgItCc0LDQu9GK0LoiINC70LjQvNC40YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7ICLQodGC0LDRgtC40YHRgtC40LrQsCDQvdCwINC/0YDQvtGD0YfQstCw0L3QuNGP0YLQsCIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC30LAg0YPQstC10LvQuNGH0LDQstCw0L3QtSDQvdCwINC90LDQsdC70Y7QtNC10L3QuNC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICfQk9GA0LDQvdC40YbQsCDQvdCwINC40LfRgdC70LXQtNCy0LDQvdC10YLQviDQvdCwINGB0YLRgNCw0L3QuNGG0LAg0LfQsCDQv9GA0LXQs9C70LXQtCDQvdCwICLQnNCw0LvQutC4Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICfQn9GA0L7Rg9GH0LLQsNC90LjRj9GC0LAg0L3Rj9C80LAg0LTQsCDQsdGK0LTQsNGCINC40LfQv9GA0LDRgtC10L3QuCDQtNC+INC60L7QvdGE0LjQs9GD0YDQuNGA0LDQvdC40YLQtSDQuNC80LXQudC7INCw0LTRgNC10YHQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YrRgiDQt9CwINC/0YDQvtGD0YfQstCw0L3QtSwg0L3QsNC/0YAuINCf0YDQvtGD0YfQstCw0L3QtSAjLCBNeVN1cnZleSAjLiDQn9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQtSAi0J/RgNC+0YPRh9Cy0LDQvdC1ICMiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGK0LHQuNGC0LjQtSDQvdCwINCx0LjQu9C10YLQuCDQt9CwINCw0LLRgtC+0LzQsNGC0LjRh9C90L4g0LjQt9C/0YDQsNGJ0LDQvdC1INC90LAg0LfQsNGP0LLQutC4INC30LAg0LXQu9C10LrRgtGA0L7QvdC90LAg0L/QvtGJ0LAg0LTQviDQutC70LjQtdC90YLQuNGC0LUsINCw0LrQviDQsdC40LvQtdGC0YrRgiDQtSDQt9Cw0YLQstC+0YDQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdUcmlnZ2VyINC40LfQv9GA0LDRidCwINC30LDQutGK0YHQvdC10LvQuCDQt9Cw0Y/QstC60Lgg0LfQsCDQv9GA0L7Rg9GH0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAn0KPQstC10LvQuNGH0LXRgtC1INGB0YLQsNGC0LjRgdGC0LjRh9C10YHQutC40YLQtSDQtNCw0L3QvdC4Lic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmNzX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1Z5dHZvxZlpdCBub3bDvSBwcsWvemt1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfDmnZvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnw5p2b2QgUHLFr3prdW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnVMSbbG8gTm90aWZpa2FjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUeXB5IFRpY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0ludGVybsOtIFBvcGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICdWZcWZZWpuw70ga2zDrcSNIHByxa96a3VtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJ1Vrw6F6a292w70gcHLFr3prdW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdVcHJhdml0IFrDoWtsYWRuw60gSW5mbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ1VwcmF2aXQgT3TDoXpreSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdKc3RlIHpkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnT3TDoXpreSBQxa9yemt1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnUMWZaWRhdCBPdMOhemt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnTmFwacWhdGUgb3TDoXprdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdPZHBvdsSbxI8gamUgcG/FvmFkb3bDoW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnUHLFr3prdW0gbmVvYnNhaHVqZSDFvsOhZG7DqSBvdMOhemt5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ090w6F6a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnT2Rwb3bEm8SPIGplIHBvxb5hZG92w6FuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnQcW+IHVrb27EjcOtdGUgw7pwcmF2dSBvdMOhemVrLCB0YWsgamVuIHphdsWZZXRlIG9rbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdVcHJhdml0IE90w6F6a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICd2csOhdGl0IHNlIHpwxJt0IGsgb3TDoXprw6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ090w6F6a2E6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTW/Fvm7DqSBPZHBvdsSbZGkgcHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdQxZlpZGF0IE9kcG92xJvEjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ090w6F6a2EgbmVtw6EgZGVmaW5vdmFuw6kgb2Rwb3bEm2RpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnVXByYXZpdCBPZHBvdsSbxI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAndnLDoXRpdCBzZSB6cMSbdCBrIG90w6F6Y2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ09kcG92xJvEjzonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnTmFzdGF2ZW7DrSBwxZllaGxlZHUgcHLFr3prdW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICfEjGFzIHZ5dHZvxZllbsOtIFByxa96a3VtdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnUG91emUgcHLFr3prdW15IHZ5dHZvxZllbsOpIG1lemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTWF4aW11bSBwcsWvemt1bcWvIG5hIHN0csOhbmt1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdOb3RpZmlrYWNlIE9kZXPDrWxhdGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnTm90aWZpa2FjZSBQxZllZG3Em3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ1ptxJtuxJtubyDFmWXFoWl0ZWxlbSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnQW5vL05lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUeXAgT3TDoXpreSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0Rva29uxI1lbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdOZWRva29uxI1lbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ0NoeWJuw70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05vdsO9IFN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdQb3BpcyBQcsWvemt1bXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdvZHBvdsSbemVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICduZXpvZHBvdsSbemVubyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRhX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdTYWdzdHlwZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdEdSBlciBoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdVbmRlcnPDuGdlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnS2FuIGlra2Ugc8OmdHRlIG55IHN0YXR1cyEgRGVyIGVyIGlra2UgZGVmaW5lcmV0IG5vZ2VuIHNww7hyZ3Ntw6VsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdTdGF0dXMgw6ZuZHJldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdVZ3lsZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnYmVzdmFyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnaWtrZSBiZXN2YXJldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnVGFrIGZvciBkaW4gYmVzdmFyZWxzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRXQgdW5kZXJzw7hnZWxzZXNtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmRlX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ05ldWUgVW1mcmFnZSBlcnN0ZWxsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnRWlubGVpdHVuZ3N0ZXh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdVbWZyYWdlIEVpbmxlaXR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdCZW5hY2hyaWNodGlndW5nIFRleHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlja2V0LVR5cGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnSW50ZXJuZSBCZXNjaHJlaWJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ0t1bmRlbmJlZGluZ3VuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnQml0dGUgd8OkaGxlbiBTaWUgZWluZSBLdW5kZW5laWdlbnNjaGFmdCwgdW0gZWluZSBCZWRpbmd1bmcgaGluenV6dWbDvGdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICfDlmZmZW50bGljaGVyIFVtZnJhZ2VzY2hsw7xzc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnQmVpc3BpZWx1bWZyYWdlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnQWxsZ2VtZWluZSBBbmdhYmVuIGJlYXJiZWl0ZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdGcmFnZW4gYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdTaWUgc2luZCBoaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdVbWZyYWdlLUZyYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdGcmFnZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0ZyYWdlIGVpbmdlYmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ0FudHdvcnQgZXJmb3JkZXJsaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnRsO8ciBkaWVzZSBVbWZyYWdlIHNpbmQga2VpbmUgRnJhZ2VuIGdlc3BlaWNoZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ0ZyYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ0FudHdvcnQgZXJmb3JkZXJsaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdOYWNoIGRlbSBCZWFyYmVpdGVuIGRlciBVbWZyYWdlIGRpZXNlcyBGZW5zdGVyIGVpbmZhY2ggc2NobGllw59lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICdEaWVzZXMgRmVuc3RlciBzY2hsaWXDn2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdGcmFnZSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAnWnVyw7xjayB6dSBkZW4gRnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ0ZyYWdlOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ03DtmdsaWNoZSBBbnR3b3J0ZW4gZsO8cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQW50d29ydCBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ0bDvHIgZGllc2UgRnJhZ2Ugc2luZCBrZWluZSBBbnR3b3J0ZW4gZ2VzcGVpY2hlcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdEaWVzZSBGcmFnZSBoYXQgbmljaHQgbWVocmVyZSBBbnR3b3J0ZW4sIGVpbiBUZXh0ZWluZ2FiZWZlbGQgd2lyZCBoaW56dWdlZsO8Z3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnQW50d29ydCBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ1p1csO8Y2sgenVtIEJlYXJiZWl0ZW4gZGVyIEZyYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdBbnR3b3J0Oic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICdVbWZyYWdlLcOcYmVyc2ljaHRzb3B0aW9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnU3VjaHQgaW4gZGVuIEF0dHJpYnV0ZW46IE5hbWUsIFRpdGVsLCBFaW5sZWl0dW5nLCBCZXNjaHJlaWJ1bmcsIEJlbmFjaHJpY2h0aWd1bmdzLUFic2VuZGVyLCBCZW5hY2hyaWNodGlndW5ncy1CZXRyZWZmIHVuZCBCZW5hY2hyaWNodGlndW5ncy1UZXh0LCDDvGJlcnNjaHJlaWJ0IGFuZGVyZSBBdHRyaWJ1dGUgbWl0IGRlbSBnbGVpY2hlbiBOYW1lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnVW1mcmFnZS1FcnN0ZWxsemVpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJ0tlaW5lIEJlc2NocsOkbmt1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ051ciBlcnN0ZWxsdGUgVW1mcmFnZW4gendpc2NoZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTWF4aW1hbGUgQW56YWhsIGFuZ2V6ZWlndGVyIFVtZnJhZ2VuIHBybyBTZWl0ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnQmVuYWNocmljaHRpZ3VuZ3MtQWJzZW5kZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdCZW5hY2hyaWNodGlndW5ncy1CZXRyZWZmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdHZcOkbmRlcnQgdm9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1N0YXRpc3Rpa8O8YmVyc2ljaHQgdm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnQW5mcmFnZW50YWJlbGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICdBbGxlIEFuZnJhZ2VuIGF1c3fDpGhsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnU2VuZGV6ZWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0Fic3RpbW11bmdzemVpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnRGllc2UgQW5mcmFnZSBhdXN3w6RobGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnU2llaGUgRGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICdTdGF0aXN0aWtlbiBsw7ZzY2hlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnVW1mcmFnZS1TdGF0aXN0aWtkZXRhaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdadXLDvGNrIHp1ciDDnGJlcnNpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICdWb3JoZXJpZ2UgQmV3ZXJ0dW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ07DpGNoc3RlIEJld2VydHVuZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdVbWZyYWdlaW5mb3JtYXRpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnR2VzZW5kZXRlIEFuZnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdFcmhhbHRlbmUgVW1mcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdVbWZyYWdlZGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdUaWNrZXQtRGllbnN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ1VtZnJhZ2VlcmdlYm5pc3NlLUdyYXBoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdLZWluZSBTdGF0aXN0aWtlcmdlYm5pc3NlLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdVbWZyYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnQml0dGUgYmVhbnR3b3J0ZW4gU2llIGRpZXNlIEZyYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdaZWlnZSBtZWluZSBBbnR3b3J0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0RpZXMgc2luZCBJaHJlIEFudHdvcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdVbWZyYWdldGl0ZWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ05ldWUgVW1mcmFnZSBoaW56dWbDvGdlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICdTaWUgaGFiZW4ga2VpbmUgQmVyZWNodGlndW5nIGbDvHIgZGllc2UgVW1mcmFnZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnS2VpbmUgU3VydmV5SUQgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1VtZnJhZ2UgYmVhcmJlaXRlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICdTaWUgaGFiZW4ga2VpbmUgQmVyZWNodGlndW5nIGbDvHIgZGllc2UgVW1mcmFnZSBvZGVyIEZyYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ1NpZSBoYWJlbiBrZWluZSBCZXJlY2h0aWd1bmcgZsO8ciBkaWVzZSBVbWZyYWdlLCBGcmFnZSBvZGVyIEFudHdvcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0ZyYWdlbiBkZXIgVW1mcmFnZSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0phL05laW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnT3B0aW9uc2ZlbGQgKExpc3RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdLb250cm9sbGvDpHN0Y2hlbiAoTGlzdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJ05ldCBQcm9tb3RlciBQdW5rdHphaGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0ZyYWdldHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnVm9sbHN0w6RuZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdVbnZvbGxzdMOkbmRpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRnJhZ2UgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0FudHdvcnQgYmVhcmJlaXRlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdTdGF0aXN0aWvDvGJlcnNpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICdTaWUgaGFiZW4ga2VpbmUgQmVyZWNodGlndW5nIGbDvHIgZGllc2UgVW1mcmFnZS0gb2RlciBTdGF0aXN0aWtkZXRhaWxzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdTdGF0aXN0aWtkZXRhaWwnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdOZXVlciBTdGF0dXMga29ubnRlIG5pY2h0IGdlc2V0enQgd2VyZGVuISBLZWluZSBGcmFnZW4gZGVmaW5pZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJ05ldWVyIFN0YXR1cyBrb25udGUgbmljaHQgZ2VzZXR6dCB3ZXJkZW4hIEZyYWdlbiBuaWNodCBrb21wbGV0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnU3RhdHVzIGdlw6RuZGVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBLZWluZSBRdWV1ZSBhdXNnZXfDpGhsdCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0gS2VpbiBUaWNrZXQtVHlwIGF1c2dld8OkaGx0IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLSBLZWluIFRpY2tldC1TZXJ2aWNlIGF1c2dld8OkaGx0IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIFN0YXR1cyDDpG5kZXJuIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTWFzdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdVbmfDvGx0aWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05ldWVyIFN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdVbWZyYWdlbi1CZXNjaHJlaWJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdiZWFudHdvcnRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICduaWNodCBiZWFudHdvcnRldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnRGFua2UgZsO8ciBJaHIgRmVlZGJhY2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnRGllIFVtZnJhZ2UgaXN0IGJlZW5kZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJ1VtZnJhZ2VuYWNocmljaHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdNb2R1bCBuaWNodCBha2l2aWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ1VtZnJhZ2VmZWhsZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJ1VtZnJhZ2VzdGltbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnU2llIGhhYmVuIGRpZSBVbWZyYWdlIHNjaG9uIGJlYW50d29ydGV0Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnVW1mcmFnZW4tTGlzdGUnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdXb2xsZW4gU2llIGRpZXNlIEZyYWdlIHdpcmtsaWNoIGzDtnNjaGVuPyBBbGxlIGRhcmluIGVudGhhbHRlbmVuIERhdGVuIHdlcmRlbiBHRUzDllNDSFQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBGcmFnZSB3aXJrbGljaCBsw7ZzY2hlbj8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRWluIFVtZnJhZ2UtTW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFaW4gTW9kdWwsIHVtIFVtZnJhZ2VuIHp1IGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbGxlIFBhcmFtZXRlciBmw7xyIGRhcyBVbWZyYWdlLU1vZHVsIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdBbnphaGwgYW4gVGFnZW4gbmFjaCBkZW0gVmVyc2FuZCBlaW5lciBVbWZyYWdlLUUtTWFpbCBpbiBkZW5lbiBrZWluZSBuZXVlIFVtZnJhZ2UtRS1NYWlsIGFuIGRlbiBnbGVpY2hlbiBLdW5kZW4gdmVyc2VuZGV0IHdpcmQuIFfDpGhsZW4gU2llIDAsIHVtIGltbWVyIFVtZnJhZ2UtRS1NYWlscyB6dSB2ZXJzZW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1ZvcmVpbmdlc3RlbGx0ZXIgVGV4dCBmw7xyIEJlbmFjaHJpY2h0aWd1bmdzLUUtTWFpbHMgYW4gZGVuIEt1bmRlbiDDvGJlciBuZXVlIFVtZnJhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1ZvcmVpbmdlc3RlbGx0ZXIgQWJzZW5kZXIgZsO8ciBCZW5hY2hyaWNodGlndW5ncy1FLU1haWxzIGFuIGRlbiBLdW5kZW4gw7xiZXIgbmV1ZSBVbWZyYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnVm9yZWluZ2VzdGVsbHRlciBCZXRyZWZmIGbDvHIgQmVuYWNocmljaHRpZ3VuZ3MtRS1NYWlscyBhbiBkZW4gS3VuZGVuIMO8YmVyIG5ldWUgVW1mcmFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBlaW4gw5xiZXJzaWNodHMtTW9kdWwsIGRhc3MgZWluZSBMaXN0ZSBhbGxlciBVbWZyYWdlbiBhbnplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICdEYXMgQXJyYXkgaXN0IHN0YW5kYXJkbcOkw59pZyBsZWVyIHVuZCBBZ2VudGVuIGF1cyBhbGxlbiBHcnVwcGVuIGvDtm5uZW4gZGVuIFN0YXR1cyBkZXIgVW1mcmFnZSDDpG5kZXJuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgb2IgVW1mcmFnZS1BbmZyYWdlbiBudXIgYW4gcmVhbGUgS3VuZGVuIGdlc2VuZGV0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgbWF4aW1hbGUgQW56YWhsIHZvbiBVbWZyYWdlbiBkaWUgZWluIEt1bmRlIGlubmVyaGFsYiB2b24gMzAgVGFnZW4genVnZXNhbmR0IGJla29tbXQuICggMCBzdGVodCBmw7xyIGtlaW4gTWF4aW11bSwgYWxsZSBVbWZyYWdlLUUtTWFpbHMgd2VyZGVuIHZlcnNhbmR0LiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgQW56YWhsIGFuIFN0dW5kZW4gZsO8ciBkaWUgZWluIFRpY2tldCBnZXNjaGxvc3NlbiBzZWluIG11c3MsIHVtIGRlbiBWZXJzYW5kIGVpbmVyIFVtZnJhZ2UgYXVzenVsw7ZzZW4gKCAwIGJlZGV1dGV0LCBzb2ZvcnQgbmFjaCBTY2hsaWXDn2VuIGVpbmVzIFRpY2tldHMgc2VuZGVuICkuIEhpbndlaXM6IERhcyBBYnNlbmRlbiBkZXIgdmVyesO2Z2VydGVuIFVtZnJhZ2Ugd2lyZCBkdXJjaCBkZW4gT1RSUyBEYWVtb24gZXJsZWRpZ3QsIHZvcmhlcmlnZSBBa3RpdmllcnVuZyBkdXJjaCBkaWUgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIEVpbnN0ZWxsdW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFNwYWx0ZW4gZsO8ciBkaWUgRHJvcGRvd24tTGlzdGUgZsO8ciBkaWUgRXJzdGVsbHVuZyB2b24gU2VuZGViZWRpbmd1bmdlbiAoMCA9PiBpbmFrdGl2LCAxID0+IGFrdGl2KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZGjDtmhlIGVpbmVzIFJpY2h0ZXh0LUJlcmVpY2hzIGbDvHIgZGllIFVtZnJhZ2UtRGV0YWlsYW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnRGVmaW5pZXJ0IGRpZSBHcnVwcGVuIChydyksIGRpZSBVbWZyYWdlc3RhdGlzdGlrZW4gbMO2c2NoZW4ga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBtYXhpbWFsZSBIw7ZoZSBmw7xyIFJpY2h0ZXh0LUFuc2ljaHRlbiBmw7xyIEVsZW1lbnRlIGRlciBVbWZyYWdlLURldGFpbGFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gZGVyIFVtZnJhZ2Utw5xiZXJzaWNodC4gRGllc2UgT3B0aW9uIGhhdCBrZWluZSBBdXN3aXJrdW5nIGF1ZiBkaWUgUG9zaXRpb24gZGVyIFNwYWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICdCZXN0aW1tdCwgb2IgZGFzIFN0YXRpc3Rpay1Nb2R1bCBVbWZyYWdlbGlzdGVuIGVyemV1Z2VuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnQWxsZ2VtZWluZSBVbWZyYWdlLUluZm9ybWF0aW9uZW4gYmVhcmJlaXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VtZnJhZ2UtRnJhZ2VuIGJlYXJiZWl0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0FrdGl2aWVyZW4gb2RlciBkZWFrdGl2aWVyZW4gZGllIFNob3dWb3RlRGF0YSBBbnplaWdlbiBpbiBkZXIgw7ZmZmVudGxpY2hlbiBPYmVyZmzDpGNoZSwgdW0gQWJzdGltbXVuZ3NkYXRlbiBhbnp1emVpZ2VuLCB3ZW4gZWluIEt1bmRlIHZlcnN1Y2h0LCBlaW4gendlaXRlcyBtYWwgYWJ6dXN0aW1tZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnQWt0aXZpZXJlbiBvZGVyIERlYWt0aXZpZXJlbiBkZXIgUHLDvGZ1bmcgZGVyIFZlcnNhbmRiZWRpbmd1bmdlbiBmw7xyIGRlbiBTZXJ2aWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FrdGl2aWVyZW4gb2RlciBEZWFrdGl2aWVyZW4gZGVyIFByw7xmdW5nIGRlciBWZXJzYW5kYmVkaW5ndW5nZW4gZsO8ciBkZW4gVGlja2V0LVR5cC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQtTW9kdWwtUmVnaXN0cmllcnVuZyBmw7xyIGRhcyBIaW56dWbDvGdlbiBlaW5lciBVbWZyYWdlIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQtTW9kdWwtUmVnaXN0cmllcnVuZyBmw7xyIGRpZSBVbWZyYWdlYmVhcmJlaXR1bmcgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQtTW9kdWwtUmVnaXN0cmllcnVuZyBmw7xyIGRpZSBVbWZyYWdlZGV0YWlsYW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kLU1vZHVsLVJlZ2lzdHJpZXJ1bmcgZsO8ciBkaWUgVW1mcmFnZS1EZXRhaWxhbnNpY2h0IGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnRnJvbnRlbmQtTW9kdWwtUmVnaXN0cmllcnVuZyBmw7xyIGRpZSDDtmZmZW50bGljaGUgVW1mcmFnZcO8YmVyc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdXZW5uIGRpZXNlciByZWd1bMOkcmUgQXVzZHJ1Y2sgenV0cmlmZnQsIHdpcmQga2VpbmUgVW1mcmFnZSBhbiBkZW4gS3VuZGVuIGdlc2VuZGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICdMaW1pdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgU2VpdGVuIGRlciBVbWZyYWdlw7xiZXJzaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfDlmZmZW50bGljaGUgVW1mcmFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnRXJnZWJuaXNzZSwgZGllIMOkbHRlciBhbHMgZGllIGtvbmZpZ3VyaWVydGUgQW56YWhsIHZvbiBUYWdlbiBzaW5kLCB3ZXJkZW4gZ2Vsw7ZzY2h0LiBIaW53ZWlzOiBMw7ZzY2hlbiBTaWUgZGllIEVyZ2Vibmlzc2UgZGVzIE9UUlMtRGFlbW9ucywgYmV2b3IgU2llIGRpZSBFaW5zdGVsbHVuZyBcJ1Rhc2sjIyMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgYWt0aXZpZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbSBNZW7DvCBkZXIgRGV0YWlsYW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGVpbmUgVW1mcmFnZSB6dSBiZWFyYmVpdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIGRlciBlcyBlcm3DtmdsaWNodCBkaWUgRnJhZ2VuIGVpbmVyIFVtZnJhZ2UgenUgYmVhcmJlaXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW0gTWVuw7wgZGVyIERldGFpbGFuc2ljaHQgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4sIG1pdCBkZW0genVtIFVtZnJhZ2UtWm9vbSB6dXLDvGNrZ2VnYW5nZW4gd2VyZGVuIGthbm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZWluZW4gTGluayBpbSBNZW7DvCBkZXIgRGV0YWlsYW5zaWNodCBpbSBBZ2VudGVuLUludGVyZmFjZSBhbiwgbWl0IGRlbSBkaWUgRGV0YWlscyBlaW5lciBVbWZyYWdlIGFuZ2V6ZWlndCB3ZXJkZW4ga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ1N0YXRpc3Rpa2RldGFpbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnIlVtZnJhZ2UgaGluenVmw7xnZW4iLU1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnIlVtZnJhZ2UgYmVhcmJlaXRlbiItTW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnVW1mcmFnZcO8YmVyc2ljaHQgIktsZWluIiAtIExpbWl0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnVW1mcmFnZXN0YXRpc3Rpay1Nb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ1VtZnJhZ2UtRGV0YWlsYW5zaWNodC1Nb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICdVbWZyYWdlbi1MaW1pdCBwcm8gU2VpdGUgaW4gZGVyIFVtZnJhZ2XDvGJlcnNpY2h0ICJLbGVpbiIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnVW1mcmFnZW4gd2VyZGVuIG5pY2h0IGFuIGRpZSBrb25maWd1cmllcnRlbiBFLU1haWwtQWRyZXNzZW4gZ2VzZW5kZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdEaWUgZWluZGV1dGlnZSBCZXplaWNobnVuZyBmw7xyIGVpbmUgVW1mcmFnZSwgei4gQi4gU3VydmV5IyBvZGVyIE15U3VydmV5Iy4gU3RhbmRhcmQgaXN0IFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnVGlja2V0LUV2ZW50LU1vZHVsLCB1bSBhdXRvbWF0aXNjaCBVbWZyYWdlLUUtTWFpbHMgYW4gS3VuZGVuIHp1IHNlbmRlbiwgd2VubiBlaW4gVGlja2V0IGdlc2NobG9zc2VuIHdpcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICdBdXNsw7ZzZXIgenVtIEzDtnNjaGVuIHZvbiBFcmdlYm5pc3NlbiAoaW5rbHVzaXZlIEFic3RpbW11bmdzZGF0ZW4gdW5kIEFuZnJhZ2VuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ0F1c2zDtnNlciB6dW0gU2VuZGVuIHZvbiB2ZXJ6w7ZnZXJ0ZW4gQW5mcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICdTdGF0aXN0aWstRGV0YWlscyBlcmjDtmhlbi4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVsX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfOlc65z4POsc6zz4nOs86uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnzqTPjc+Azr/OuSDOlM61zrvPhM6vz4nOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfOhs66z4XPgc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVuX0dCX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1Y3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUaWNrZXQgVHlwZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdZb3UgYXJlIGhlcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnSW52YWxpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX01YX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWFyIE51ZXZhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDdWVycG8gZGUgTm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUaXBvcyBkZSBUaWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gSW50ZXJuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnQ29uZGljaW9uZXMgZGVsIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICdQb3IgZmF2b3IgZWxpamEgdW5hIHByb3BpZWRhZCBkZWwgQ2xpZW50ZSBwYXJhIGHDsWFkaXIgbGEgY29uZGljacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICdMbGF2ZSBww7piaWNhIGRlIGxhIGVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnRWplbXBsbyBkZSBlbmN1ZXN0YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkaXRhciBpbmZvcm1hY2nDs24gR2VuZXJhbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnVXN0ZWQgZXN0w6EgYXF1w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1ByZWd1bnRhcyBkZSBFc3RhZGlzdGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdBZ3JlZ2FyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmliYSBsYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXNwdWVzdGEgcmVxdWVyaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTm8gaGF5IHByZWd1bnRhcyBhbG1hY2VuYWRhcyBwYXJhIGVzdGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnUmVzcHVlc3RhIFJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnQ3VhbmRvIGhheWEgdGVybWluYWRvIGRlIGVkaXRhciBzdSBlbmN1ZXN0YSBzb2xvIGNpZXJyZSBlc3RhIHBhbnRhbGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ0NlcnJhciBlc3RhIHZlbnRhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0VkaXRhciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3JlZ3Jlc2FyIGEgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1ByZWd1bnRhOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ1Bvc2libGVzIHJlc3B1ZXN0YXMgcGFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWdyZWdhciBSZXNwdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdObyBoYXkgcmVzcHVlc3RhcyBhbG1hY2VuYWRhcyBwYXJhIGVzdGEgcHJlZ3VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdFc3RhIHByZWd1bnRhIG5vIHRpZW5lIHZhcmlhcyByZXNwdWVzdGFzLCB1biBhcmVhIGRlIHRleHRvIHNlcsOhIG1vc3RyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdGFyIFJlc3B1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICd2b2x2ZXIgYSBlZGl0YXIgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ1Jlc3B1ZXN0YTonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnT3BjaW9uZXMgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBsYXMgZW5jdWVuc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICdCdXNjYSBlbiBsb3MgYXRyaWJ1dG9zIE7Dum1lcm8sIFTDrXR1bG8sIEludHJvZHVjY2nDs24sIERlc2NyaXBjacOzbiwgUmVtaXRlbnRlIGRlIE5vdGlmaWNhdGlvbiwgQXN1bnRvIGRlIGxhIE5vdGlmaWNhY2nDs24sIHkgQ3VlcnBvIGRlIGxhIG5vdGlmaWNhY2nDs24sIHNvYnJlIGVzY3JpYmllbmRvIG90cm9zIGF0cmlidXRvcyBjb24gZWwgbWlzbW8gbm9tYnJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICdGZWNoYSBkZSBDcmVhY2nDs24gZGVsIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnU2luIHJlc3RyaWNjaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ1NvbG8gZW5jdWVzdGFzIGNyZWFkYXMgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTsO6bS4gTcOheGltbyBkZSBlbmN1ZXN0YXMgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1JlbWl0ZW50ZSBkZSBOb3RpZmljYWNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdBc3VudG8gZGUgTm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnTW9kaWZpY2FjbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnUmVzdW1lbiBkZSBFc3RhZMOtc3RpY2FzIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFibGEgZGUgU29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ1NlbGVjY2lvbmFyIHRvZGFzIGxhcyBwZXRpY2lvbmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1RpZW1wbyBkZSBFbnbDrW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnVGllbXBvIGRlIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJ1NlbGVjY2lvbmFyIGVzdGEgcGV0aWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmVyIERldGFsbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ0VsaW1pbmFyIGVzdGFkw61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVzdGFkaXN0aWNhcyBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAncmVncmVzYXIgYSByZXPDum1lbiBkZSBlc3RhZGlzdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ1ZvdG8gcHJldmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ1NpZ3VpZW50ZSB2b3RvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnU29saWNpdHVkZXMgZW52aWFkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1NvbGljaXR1ZGVzIHJlY2liaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ1NlcnZpY2lvcyBkZSBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmljYSBkZSBSZXN1bHRhZG9zIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdObyBoYXkgZ3JhZmljYXMgZGUgcmVzdWx0YWRvcy4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQb3IgZmF2b3IgY29udGVzdGUgZXN0YXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ01vc3RyYXIgbWlzIHJlc3B1ZXN0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHNvbiBzdXMgcmVzcHVlc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUw610dWxvIGRlIGxhIEVuY3Vlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdBw7FhZGlyIE51ZXZhIEVuY3Vlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ1VzdGVkIG5vdCB0aWVuZSBwZXJtaXNvcyBlbiBlc3RhIGVuY3Vlc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICdObyBzZSBoYSBkYWRvIGVsIFN1cnZleUlEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnRWRpdGFyIEVuY3Vlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ1VzdGVkIG5vIHRpZW5lIHBlcm1pc29zIGVuIGVzdGEgZW5jdWVzdGEgbyBwcmVndW50YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICdVc3RlZCBubyB0aWVuZSBwZXJtaXNvcyBlbiBlc3RhIGVuY3Vlc3RhLCBwcmVndW50YSBvIHJlc3B1ZXN0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyBkZSBFc3RhZMOtc3RpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnU2kvTm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnT3BjacOzbiAobGlzdGEpICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdDYXNpbGxhIGRlIHZlcmlmaWNhY2nDs24gKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICdQdW50YWplIFByb21vdG9yIE5ldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcG8gZGUgUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSW5jb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRWRpdGFyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdGFyIFJlc3B1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdSZXN1bWVuIGRlIEVzdGFkaXN0aWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnVXN0ZWQgbm8gdGllbmUgcGVybWlzb3MgZW4gZXN0YSBlbmN1ZXN0YSBvIGRldGFsbGUgZXN0YWTDrXN0aWNvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdEZXRhbGxlIGRlIEVzdGFkw61zdGljYXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdObyBzZSBwdWVkZSBlc3RhYmxlY2VyIG51ZXZvIGVzdGFkbyEgTm8gaGF5IHByZWd1bnRhcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnTm8gcHVlZGUgY2FtYmlhcnNlIGVsIGVzdGFkbyEgUHJlZ3VudGFzIEluY29tcGxldGFzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdFc3RhZG8gY2FtYmlhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gTm8gc2UgaGEgc2VsZWNjaW9uYWRvIG5pbmd1bmEgY29sYSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0gVGlwbyBkZSB0aWNrZXQgbm8gc2VsZWNjaW9uYWRvIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLSBTZXJ2aWNpbyBkZSB0aWNrZXQgbm8gc2VsZWNjaW9uYWRvIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIENhbWJpYXIgRXN0YWRvIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTWFlc3Rybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnSW52YWxpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ051ZXZvIEVzdGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdyZXNwb25kaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25vIHJlc3BvbmRpZG8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0dyYWNpYXMgcG9yIHN1IHJldHJvYWxpbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xhIGVuY3Vlc3RhIGhhIHRlcm1pbmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnTWVuc2FqZSBkZSBsYSBFbmN1ZXN0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ03Ds2R1bG8gbm8gaGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICdFc3RhIGZ1bmNpb25hbGlkYWQgbm8gZXN0YSBoYWJpbGl0YWRhLCBwb3IgZmF2b3IgY29udGFjdGUgYWwgYWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnRXJyb3IgZW4gbGEgRW5jdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICdMbGF2ZSBkZSBlbmN1ZXN0YSBpbnbDoWxpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICdMYSBsbGF2ZSBpbnNlcnRhZGEgZGUgbGEgZW5jdWVzdGEgZXMgaW52w6FsaWRhLCAgc2kgaGEgc2VndWlkbyB1bmEgbGlnYSwgcXVpesOhIGVzdGUgb2Jzb2xldGEgbyByb3RhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICdWb3RhY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0RhdG9zIGRlIFZvdGFjacOzbiBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVXN0ZWQgeWEgaGEgY29udGVzdGFkbyBlc3RhIGVuY3Vlc3RhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnTGlzdGEgZGUgRW5jdWVzdGFzJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSBwcmVndW50YT8gVE9ET1MgbG9zIGRhdG9zIGFzb2NpYWRvcyBkZSBQRVJERVLDgU4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSByZXNwdWVzdGE/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ1VuIE3Ds2R1bG8gZGUgRW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW4gbcOzZHVsbyBwYXJhIGVkaXRhciBsYXMgcHJlZ3VudGFzIGRlIHVuYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb2RvcyBsb3MgcGFyYW1ldHJvcyBwYXJhIGVsIG9iamV0byBFbmN1ZXN0YSBlbiBsYSBpbnRlcmZhc2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdDYW50aWRhZCBkZSBkw61hcyBkZXNwdcOpcyBkZSBoYWJlciBtYW5kYW5kbyB1biBjb3JyZW8gZWxlY3Ryw7NuaWNvIGRlIGVuY3Vlc3RhIGVuIGxvcyBxdWUgbm8gc2UgbWFuZGFyw6FuIG51ZXZhcyBlbmN1ZXN0YXMgaGFjaWEgZWwgbWlzbW8gY2xpZW50ZS4gU2VsZWNjaW9uYXIgMCBtYW5kYXLDoSBudWV2b3MgY29ycmVvcyBlbGVjdHLDs25pY29zIGRlIGVuY3Vlc3RhIHNpZW1wcmUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdDdWVycG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnUmVtaXRlbnRlIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBc3VudG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bmEgbcOzZHVsbyByZXN1bWVuIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSBsYSBsaXN0YSBkZSBlbmN1ZXN0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgZ3J1cG9zIHF1ZSB0aWVuZW4gcGVybWlzb3MgcGFyYSBjYW1iaWFyIGVsIGVzdGFkbyBkZSBsYXMgZW5jdWVzdGFzLiBMYSBsaXN0YSBlc3RhIHZhY8OtYSBwb3Igb21pc2nDs24geSBsb3MgYWdlbnRlcyBkZSB0b2RvcyBsb3MgZ3J1cG9zIHB1ZWRlbiBjYW1iaWFyIGVsIGVzdGFkbyBkZSBsYXMgZW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ0RlZmluZSBzaSBsYXMgcGV0aWNpb25lcyBkZSBlbmN1ZXN0YXMgc2Vyw6FuIG1hbmRhZGFzIHNvbG8gYSBsb3MgY2xpZW50ZXMgcmVhbGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGNhbnRpZGFkIG3DoXhpbWEgZGUgZW5jdWVzdGFzIHF1ZSBzZSBtYW5kYXLDoW4gYSB1biBjbGllbnRlIGNhZGEgMzAgZMOtYXMuICggMCBzaWduaWZpY2EgcXVlIG5vIGhheSB1biBtw6F4aW1vLCB0b2RhcyBsYXMgZW5jdWVzdGFzIHNlcsOhbiBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICdEZWZpbmUgbGEgY2FudGlkYWQgZGUgaG9yYXMgcXVlIHRpZW5lIHF1ZSB0ZW5lciBjZXJyYXIgdW4gdGlja2V0IHBhcmEgZGlzcGFyYXIgZWwgZW52w61vIGRlIHVuYSBlbmN1ZXN0YSwgKDAgc2lnbmlmaWNhIG1hbmRhciBpbm1lZGlhdGFtZW50ZSBhbCBjZXJyYXIpLiBOb3RhOiBlbCBlbnbDrW8gcmV0YXJkYWRvIGVzIHJlYWxpemFkbyBwb3IgZWwgIk9UUlMgRGFlbW9uIiB1bmEgdmV6IGFjdGl2YWRvIGVsIGFqdXN0ZSBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGUgbGEgbGlzdGEgZGVzcGxlZ2FibGUgcGFyYSBjb25zdHJ1aXIgbGFzIGNvbmRpY2lvbmVzIGRlIGVudsOtbyAoIDAgPT4gaW5hY3Rpdm8sIDEgPT4gYWN0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBwcmVkZWZpbmlkYSBwYXJhIGxhIHZpc3RhIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgbG9zIGVsZW1lbnRvcyBkZSBsYSBwYW50YWxsIGRlIGRldGFsbGUgZGUgZXN0YWRpc3RpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICdEZWZpbmUgbG9zIGdydXBvcyAocncpIHF1ZSBwb2Ryw6FuIGVsaW1pbmFyIGxhcyBlc3RhZMOtc3RpY2FzIGRlIGxhcyBlbmN1ZXN0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgbcOheGltYSBwYXJhIGxhIHZpc3RhIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgbG9zIGVsZW1lbnRvcyBkZSBsYSBwYW50YWxsYSBkZSBkZXRhbGxlIGRlIGVzdGFkaXN0aWNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgcmVzdW1lbiBkZSBlbmN1ZXN0YXMuIEVzdGEgb3BjacOzbiBubyB0aWVuZW4gbmluZ8O6biBlZmVjdG8gZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJ0RldGVybWluYSBzaSBlbCBtw7NkdWxvIGRlIGVzdGFkw61zdGljYXMgcHVlZGEgZ2VuZXJhciBsaXN0YXMgZGUgZW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ0VkaXRhciBsYSBpbmZvcm1hY2nDs24gZ2VuZXJhbCBkZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VkaXRhciBsYXMgcHJlZ3VudGFzIGRlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmEgbyBkZXNhY3RpdmEgbGEgcGFudGFsbGEgZGUgIk1vc3RyYXIgRGF0b3MgZGUgVm90b3MiIGVuIGxhIGludGVyZmFjZSBww7pibGljYSBwYXJhIG1vc3RyYXIgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGVuY3Vlc3RhIGVzcGVjw61maWNhIGN1YW5kbyB1biBjbGllbnRlIHF1aWVyZSByZXNwb25kZXIgdW5hIGVuY3Vlc3RhIHBvciBzZWd1bmRhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdBY3RpdmEgbyBkZXNhY3RpdmEgbGEgY29tcHJvYmFjacOzbiBkZSBsYSBjb25kaWNpw7NuIGRlIGVudsOtbyBwYXJhIGVsIHNlcnZpY2lvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FjdGl2YSBvIGRlc2FjdGl2YSBsYSBjb21wcm9iYWNpw7NuIGRlIGxhIGNvbmRpY2nDs24gZGUgZW52w61vIHBhcmEgZWwgdGlwbyBkZSB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5QWRkIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlFZGl0IGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5U3RhdHMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleVpvb20gZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFB1YmxpY1N1cnZleSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdTaSBlc3RhIGV4cHJlc2nDs24gcmVndWxhciBjb25jdWVyZGEsIGxhIGVuY3Vlc3RhIG5vIHNlcsOhIGVudmlhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJ0zDrW1pdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0cm9zIHBhcmEgbGFzIHDDoWdpbmFzIChlbiBxdWUgbGFzIGVuY3Vlc3RhcyBzb24gbW9zdHJhZGFzKSBkZSBsYSB2aXN0YSBkZSByZXN1bWVuIHBlcXVlw7FhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ0VuY3Vlc3RhIFDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICdMb3MgcmVzdWx0YWRvcyBtw6FzIGFudGlndW9zIHF1ZSBsYSBjYW50aWRhZCBkZSBkw61hcyBjb25maWd1cmFkb3MsIHNlcsOhbiBlbGltaW5hZG9zLiBOb3RhOiBlbGltaW5hciBsb3MgcmVzdWx0YWRvcyBlcyByZWFsaXphZG8gcG9yIGVsICJPVFJTIERhZW1vbiIgcHJldmlhIGFjdGl2YWNpw7NuIGRlbCBhanVzdGUgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBkZSBlZGljacOzbiBkZSB1bmEgZW5jdWVzdGEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IGRlIGVkaWNpw7NuIHByZWd1bnRhcyBkZSB1bmEgZW5jdWVzdGEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBpciBoYWNpYSBhdHLDoXMgZW4gdmlzdGEgZGUgZGV0YWxsZSBkZSB1bmEgZW5jdWVzdGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBwYXJhIGlyIGRldGFsbGUgZGUgbGFzIGVzdGFkw61zdGljYXMgZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGxlIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gcGFyYSBhZ3JlZ2FyIEVuY3Vlc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBFZGljacOzbiBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGUgbGEgdmlzdGEgZGUgcmVzdW1lbiBwZXF1ZcOxYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIFN0YWTDrXN0aWNhcyBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ01vZHVsbyBkZSBEZXRhbGxlIGRlIEVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJ0zDrW1pdGUgZGUgZW5jdWVudGFzIHBvciBww6FnaW5hIHBhcmEgZWwgUmVzdW1lbiBkZSBFbmN1ZXN0YSAiUGVxdWXDsW8iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0xhcyBlbmN1ZXN0YXMgbm8gZGUgbWFuZGFyw6FuIGEgbGFzIGRpcmVjY2lvbmVzIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gYXF1w60gY29uZmlndXJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuYSBlbmN1ZXN0YSwgZWplbXBsbyBTdXJ2ZXkjLCBNeVN1cnZleSMuIFBvciBkZWZlY3RvIGVzIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgdGlja2V0IHF1ZSBtYW5kYSBjb3JyZW9zIGVsZWN0csOzbmljb3MgZGUgZW5jdWVzdGFzIGhhY2lhIGxvcyBjbGllbnRlcyBzaSB1biB0aWNrZXQgZXMgY2VycmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJ0Rpc3BhcmEgbGEgZWxpbWluYWNpw7NuIGRlIHJlc3VsdGFkb3MgKGluY2x1eWVuZG8gZGF0b3MgZGUgdm90b3MgeSBwZXRpY2lvbmVzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ0Rpc3BhcmFkb3IgcGFyYSBzb2xpY2l0dWRlcyBkZSBlbnbDrW8gZGUgZW5jdWVzdGFzIHJldHJhc2FkYXMgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnSXIgYSBsb3MgZGV0YWxsZXMgZGUgbGEgZXN0YWTDrXN0aWNhLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmVzX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWFyIG51ZXZhIGVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDdWVycG8gZGUgTm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUaXBvcyBkZSBUaWNrZXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcGNpw7NuIEludGVybmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ0NvbmRpY2lvbmVzIGRlbCBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnRWxsaWphIHVuYSBwcm9waWVkYWQgZGVsIGNsaWVudGUgcGFyYSBhZ3JlZ2FyIHVuYSBjb25kaWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ0NsYXZlIGRlIGVuY3Vlc3RhIHDDumJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnRW5jdWVzdGEgZGUgZWplbXBsbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkaXRhciBpbmZvcm1hY2nDs24gR2VuZXJhbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnVXN0ZWQgZXN0w6EgYXF1w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1ByZWd1bnRhcyBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdBZ3JlZ2FyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmliYSBsYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXNwdWVzdGEgcmVxdWVyaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTm8gaGF5IHByZWd1bnRhcyBndWFyZGFkYXMgcGFyYSBlc3RhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1ByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jlc3B1ZXN0YSBSZXF1ZXJpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1YW5kbyB0ZXJtaW5lIGRlIGVkaXRhciBsYXMgcHJlZ3VudGFzIGRlIGxhIGVuY3Vlc3RhLCBjaWVycmUgZXN0YSB2ZW50YW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ0NlcnJhciDDqXN0YSB2ZW50YW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0YXIgUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdyZWdyZXNhciBhIHByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdQcmVndW50YTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdQb3NpYmxlcyByZXNwdWVzdGFzIHBhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0FncmVnYXIgUmVzcHVlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnTm8gaGF5IHJlc3B1ZXN0YXMgYWxtYWNlbmFkYXMgcGFyYSBlc3RhIHByZWd1bnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRXN0YSBwcmVndW50YSBubyB0aWVuZSB2YXJpYXMgcmVzcHVlc3RhcywgdW4gYXJlYSBkZSB0ZXh0byBzZXLDoSBtb3N0cmFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkaXRhciBSZXNwdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAndm9sdmVyIGEgZWRpdGFyIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdSZXNwdWVzdGE6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ09wY2lvbmVzIGRlIHJlc3VtZW4gZGUgZW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnQnVzY2EgZW4gbG9zIGF0cmlidXRvczogTsO6bWVybywgVMOtdHVsbywgSW50cm9kdWNjacOzbiwgRGVzY3JpcGNpw7NuLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgeSBOb3RpZmljYXRpb25Cb2R5LCBhbnVsYW5kbyBvdHJvcyBhdHJpYnV0b3MgY29uIGVsIG1pc21vIG5vbWJyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnRmVjaGEgY3JlYWNpw7NuIGRlIGxhIGVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnU2luIHJlc3RyaWNjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnU29sbyBlbmN1ZXN0YXMgY3JlYWRhcyBlbnRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdFbmN1ZXN0YXMgbW9zdHJhZGFzIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdSZW1pdGVudGUgZGUgTm90aWZpY2FjaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQXN1bnRvIGRlIE5vdGlmaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ01vZGlmaWNhZG8gcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1Jlc3VtZW4gZGUgRXN0YWTDrXN0aWNhcyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmxhIGRlIFNvbGljaXR1ZGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICdTZWxlY2Npb25hciB0b2RhcyBsYXMgc29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVGllbXBvIGRlIEVudsOtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdUaWVtcG8gZGUgVm90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnU2VsZWNjaW9uYXIgZXN0YSBzb2xpY2l0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdWZXIgRGV0YWxsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnQm9ycmFyIGVzdGFkw61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVzdGFkaXN0aWNhcyBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAncmVncmVzYXIgYSByZXPDum1lbiBkZSBlc3RhZGlzdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ1ZvdG8gYW50ZXJpb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnVm90byBwcsOzeGltbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGUgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NvbGljaXR1ZGVzIGVudmlhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdFbmN1ZXN0YXMgcmVjaWJpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgZGUgZW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnU2VydmljaW9zIGRlIFRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcsOhZmljYSBkZSBSZXN1bHRhZG9zIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdObyBoYXkgZ3JhZmljYXMgZGUgcmVzdWx0YWRvcy4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQb3IgZmF2b3IgY29udGVzdGUgZXN0YXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ01vc3RyYXIgbWlzIHJlc3B1ZXN0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHNvbiBzdXMgcmVzcHVlc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUw610dWxvIGRlIGxhIEVuY3Vlc3RhICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnQcOxYWRpciBudWV2YSBFbmN1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfCoU5vIHRpZW5lIHBlcm1pc28gcGFyYSBlc3RhIGVuY3Vlc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGRhIG5pbmd1bmEgSUQgZGUgbGEgZW5jdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnRWRpdGFyIEVuY3Vlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ8KhTm8gdGllbmUgcGVybWlzbyBwYXJhIGVzdGEgZW5jdWVzdGEgbyBwcmVndW50YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICfCoU5vIHRpZW5lIHBlcm1pc28gcGFyYSBlc3RhIGVuY3Vlc3RhLCBwcmVndW50YSBvIHJlc3B1ZXN0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdTaS9Obyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdPcGNpw7NuIChsaXN0YSkgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0Nhc2lsbGEgZGUgdmVyaWZpY2FjacOzbiAobGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJ1B1bnR1YWNpw7NuIE5ldCBQcm9tb3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVGlwbyBkZSBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0NvbXBsZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdJbmNvbXBsZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdFZGl0YXIgUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdFZGl0YXIgUmVzcHVlc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1Jlc3VtZW4gZGUgRXN0YWRpc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICfCoU5vIHRpZW5lIHBlcm1pc28gcGFyYSBlc3RhIGVuY3Vlc3RhIG8gZGV0YWxsZSBkZSBlc3RhZMOtc3RpY2FzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdEZXRhbGxlIGRlIEVzdGFkw61zdGljYXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfCoU5vIHNlIHB1ZWRlIGVzdGFibGVjZXIgbnVldm8gZXN0YWRvISBObyBoYXkgcHJlZ3VudGFzIGRlZmluaWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICfCoU5vIHNlIHB1ZWRlIGVzdGFibGVjZXIgdW4gbnVldm8gZXN0YWRvISBQcmVndW50YXMgaW5jb21wbGV0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0VzdGFkbyBjYW1iaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBObyBzZSBoYSBzZWxlY2Npb25hZG8gbmluZ3VuYSBjb2xhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnLSBObyBzZSBoYSBzZWxlY2Npb25hZG8gbmluZ8O6biB0aXBvIGRlIHRpY2tldCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0gTm8gc2Ugc2VsZWNjaW9uw7MgZWwgc2VydmljaW8gZGUgdGlja2V0LSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQ2FtYmlhciBFc3RhZG8gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdNYWVzdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdObyB2w6FsaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOdWV2byBFc3RhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcGNpw7NuIGRlIGxhIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAncmVzcG9uZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdubyByZXNwb25kaWRvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdHcmFjaWFzIHBvciB0dXMgY29tZW50YXJpb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnTGEgZW5jdWVzdGEgaGEgdGVybWluYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICfCoU1lbnNhamUgZGUgRW5jdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdNw7NkdWxvIG5vIGhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnRXN0YSBmdW5jacOzbiBubyBlc3TDoSBoYWJpbGl0YWRhLCBww7NuZ2FzZSBlbiBjb250YWN0byBjb24gc3UgYWRtaW5pc3RyYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ8KhRXJyb3IgZW4gbGEgZW5jdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICdDbGF2ZSBkZSBlbmN1ZXN0YSBubyB2w6FsaWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnTGEgY2xhdmUgZGUgZW5jdWVzdGEgaW5zZXJ0YWRhIG5vIGVzIHZhbGlkYSwgc2kgc2lndWnDsyB1biB2w61uY3VsbyB0YWwgdmV6IGVzdGUgb2Jzb2xldG8gbyByb3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJ1ZvdG8gZGUgbGEgZW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0RhdG9zIGRlIHZvdGFjacOzbiBkZSBsYSBlbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVXN0ZWQgeWEgaGEgY29udGVzdGFkbyBlc3RhIGVuY3Vlc3RhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnTGlzdGEgZGUgZW5jdWVzdGFzJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSBwcmVndW50YT8gVE9ET1MgbG9zIGRhdG9zIGFzb2NpYWRvcyBzZSBQRVJERVLDgU4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSByZXNwdWVzdGE/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ1VuIE3Ds2R1bG8gZGUgRW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW4gbcOzZHVsbyBwYXJhIGVkaXRhciBsYXMgcHJlZ3VudGFzIGRlIHVuYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb2RvcyBsb3MgcGFyYW1ldHJvcyBwYXJhIGVsIG9iamV0byBFbmN1ZXN0YSBlbiBsYSBpbnRlcmZhc2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdDYW50aWRhZCBkZSBkw61hcyBkZXNwdcOpcyBkZSBoYWJlciBtYW5kYW5kbyB1biBjb3JyZW8gZWxlY3Ryw7NuaWNvIGRlIGVuY3Vlc3RhIGVuIGxvcyBxdWUgbm8gc2UgbWFuZGFyw6FuIG51ZXZhcyBlbmN1ZXN0YXMgaGFjaWEgZWwgbWlzbW8gY2xpZW50ZS4gU2VsZWNjaW9uYXIgMCBtYW5kYXLDoSBudWV2b3MgY29ycmVvcyBlbGVjdHLDs25pY29zIGRlIGVuY3Vlc3RhIHNpZW1wcmUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdDdWVycG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnUmVtaXRlbnRlIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBc3VudG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bmEgbcOzZHVsbyByZXN1bWVuIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSBsYSBsaXN0YSBkZSBlbmN1ZXN0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgZ3J1cG9zIHF1ZSB0aWVuZW4gcGVybWlzbyBwYXJhIGNhbWJpYXIgZWwgZXN0YWRvIGRlIGxhIGVuY3Vlc3RhLiBMYSBtYXRyaXogZXN0w6EgdmFjw61hIHBvciBkZWZlY3RvIHkgbG9zIGFnZW50ZXMgZGUgdG9kb3MgbG9zIGdydXBvcyBwdWVkZW4gY2FtYmlhciBlbCBlc3RhZG8gZGUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhcyBzb2xpY2l0dWRlcyBkZSBlbmN1ZXN0YSBzb2xvIHNlIGVudmlhcsOhbiBhIGNsaWVudGVzIHJlYWxlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBjYW50aWRhZCBtw6F4aW1hIGRlIGVuY3Vlc3RhcyBxdWUgc2UgbWFuZGFyw6FuIGEgdW4gY2xpZW50ZSBjYWRhIDMwIGTDrWFzLiAoIDAgc2lnbmlmaWNhIHF1ZSBubyBoYXkgdW4gbcOheGltbywgdG9kYXMgbGFzIGVuY3Vlc3RhcyBzZXLDoW4gZW52aWFkYXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGNhbnRpZGFkIGVuIGhvcmFzIGVuIHF1ZSBzZSBkZWJlIGNlcnJhciB1biB0aWNrZXQgcGFyYSBhY3RpdmFyIGVsIGVudsOtbyBkZSB1bmEgZW5jdWVzdGEsICgwIHNpZ25pZmljYSBlbnZpYXIgaW5tZWRpYXRhbWVudGUgZGVzcHXDqXMgZGVsIGNpZXJyZSkuIE5vdGE6IGVsIGVudsOtbyB0YXJkw61vIGRlIGxhIGVuY3Vlc3RhIGVzIHJlYWxpemFkbyBwb3IgRGFlbW9uIE9UUlMsIHByZXZpYSBhY3RpdmFjacOzbiBkZSBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBwYXJhIGxhIGxpc3RhIGRlc3BsZWdhYmxlIHBhcmEgY3JlYXIgY29uZGljaW9uZXMgIGRlIGVudsOtbyAoMCA9PiBpbmFjdGl2bywgMSA9PiBhY3Rpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmUgbGEgYWx0dXJhIHByZWRlZmluaWRhIHBhcmEgbGEgdmlzdGEgZGUgdGV4dG8gZW5yaXF1ZWNpZG8gcGFyYSBsb3MgZWxlbWVudG9zIGRlIGxhIHBhbnRhbGwgZGUgZGV0YWxsZSBkZSBlc3RhZGlzdGljYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJ0RlZmluZSBsb3MgZ3J1cG9zIChydykgcXVlIHB1ZWRlbiBlbGltaW5hciBsYXMgZXN0YWTDrXN0aWNhcyBkZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBtw6F4aW1hIHBhcmEgbGFzIHZpc3RhcyBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGxvcyBlbGVtZW50b3MgZGUgem9vbSBkZSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgcmVzdW1lbiBkZSBlbmN1ZXN0YXMuIEVzdGEgb3BjacOzbiBubyB0aWVuZW4gbmluZ8O6biBlZmVjdG8gZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJ0RldGVybWluYSBzaSBlbCBtw7NkdWxvIGRlIGVzdGFkw61zdGljYXMgcHVlZGUgZ2VuZXJhciBsaXN0YXMgZGUgZW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ0VkaXRhciBpbmZvcm1hY2nDs24gZ2VuZXJhbCBkZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VkaXRhciBwcmVndW50YXMgZGUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2YSBvIGRlc2FjdGl2YSBsYSBwYW50YWxsYSBkZSAiTW9zdHJhciBEYXRvcyBkZSBWb3RvcyIgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhIHBhcmEgbW9zdHJhciBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgZW5jdWVzdGEgZXNwZWPDrWZpY2EgY3VhbmRvIHVuIGNsaWVudGUgcXVpZXJlIHJlc3BvbmRlciB1bmEgZW5jdWVzdGEgcG9yIHNlZ3VuZGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FjdGl2YSBvIGRlc2FjdGl2YSBsYSBjb21wcm9iYWNpw7NuIGRlIGxhIGNvbmRpY2nDs24gZGUgZW52w61vIHBhcmEgZWwgc2VydmljaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnQWN0aXZhIG8gZGVzYWN0aXZhIGxhIGNvbXByb2JhY2nDs24gZGUgbGEgY29uZGljacOzbiBkZSBlbnbDrW8gcGFyYSBlbCB0aXBvIGRlIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlBZGQgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleUVkaXQgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlTdGF0cyBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5Wm9vbSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgUHVibGljU3VydmV5IGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NpIGVzdGEgZXhwcmVzacOzbiByZWd1bGFyIGNvbmN1ZXJkYSwgbm8gc2UgZW52aWFyw6EgbmluZ3VuYSBlbmN1ZXN0YSBhbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICdMw61taXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyb3MgcGFyYSBsYXMgcMOhZ2luYXMgKGVuIHF1ZSBsYXMgZW5jdWVzdGFzIHNvbiBtb3N0cmFkYXMpIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnRW5jdWVzdGEgUMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ0xvcyByZXN1bHRhZG9zIGFudGVyaW9yZXMgYSBsYSBjYW50aWRhZCBjb25maWd1cmFkYSBkZSBkw61hcyBzZXLDoW4gZWxpbWluYWRvcy4gTm90YTogZWxpbWluZSBsb3MgcmVzdWx0YWRvcyByZWFsaXphZG9zIHBvciBEYWVtb24gT1RSUywgYW50ZXMgZGUgbGEgYWN0aXZhY2nDs24gZGUgbGEgY29uZmlndXJhY2nDs24gXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBkZSBlZGljacOzbiBkZSB1bmEgZW5jdWVzdGEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IGRlIGVkaWNpw7NuIHByZWd1bnRhcyBkZSB1bmEgZW5jdWVzdGEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBpciBoYWNpYSBhdHLDoXMgZW4gdmlzdGEgZGUgZGV0YWxsZSBkZSB1bmEgZW5jdWVzdGEgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBwYXJhIGlyIGRldGFsbGUgZGUgbGFzIGVzdGFkw61zdGljYXMgZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGxlcyBkZSBFc3RhZMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ0FncmVnYXIgbcOzZHVsbyBkZSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgRWRpY2nDs24gZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBTdGFkw61zdGljYXMgZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bG8gZGUgRGV0YWxsZSBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICdMw61taXRlIGRlIGVuY3Vlc3RhcyBwb3IgcMOhZ2luYSBwYXJhIGxhIHZpc3RhIGdlbmVyYWwgZGUgZW5jdWVzdGEgwqtwZXF1ZcOxYcK7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0xhcyBlbmN1ZXN0YXMgbm8gZGUgbWFuZGFyw6FuIGEgbGFzIGRpcmVjY2lvbmVzIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gYXF1w60gY29uZmlndXJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBwYXJhIHVuYSBlbmN1ZXN0YSwgZWplbXBsbyBTdXJ2ZXkjLCBNeVN1cnZleSMuIFBvciBkZWZlY3RvIGVzIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgdGlja2V0IHF1ZSBtYW5kYSBjb3JyZW9zIGVsZWN0csOzbmljb3MgZGUgZW5jdWVzdGFzIGhhY2lhIGxvcyBjbGllbnRlcyBzaSB1biB0aWNrZXQgZXMgY2VycmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJ0Rlc2VuY2FkZW5hciByZXN1bHRhZG9zIGRlIGVsaW1pbmFjacOzbiAoaW5jbHVpZG9zIGRhdG9zIHkgc29saWNpdHVkZXMgZGUgdm90bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdEZXNlbmNhZGVuYXIgZWwgZW52w61vIGRlIHNvbGljaXR1ZGVzIGRlIGVuY3Vlc3RhIGNvbiByZXRyYXNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ0lyIGEgbG9zIGRldGFsbGVzIGRlIGxhIEVzdGFkw61zdGljYS4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZhX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICfYp9mG2YjYp9i5INiv2LHYrtmI2KfYs9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAn2KrZiCDYp9uM2YbYrNin24zbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfZhtin2YXYudiq2KjYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZpX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0x1byB1dXNpIGt5c2VseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdFc2l0dGVseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnS3lzZWx5biBlc2l0dGVseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ011aXN0dXR1a3NlbiB2aWVzdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnU2lzw6RpbmVuIGt1dmF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnTXVva2thYSB0aWV0b2phJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnTXVva2thYSBreXN5bXlrc2nDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0t5c2VseW4ga3lzeW15a3NldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdMaXPDpMOkIGt5c3lteXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdTecO2dMOkIGt5c3lteXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnS3lzZWx5eW4gZWkgb2xlIHRhbGxlbm5ldHR1IGt5c3lteWtzacOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ0t5c3lteXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ011b2trYWEga3lzeW15c3TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ21lbmUgdGFrYWlzaW4ga3lzeW15a3NpaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnVmFzdGF1c3ZhaWh0b2VoZG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdMaXPDpMOkIHZhc3RhdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ1TDpHNzw6QgZWkgb2xlIHVzZWl0YSB2YXN0YXVrc2lhLCBuw6R5dGV0w6TDpG4gdGVrc3RpYWx1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdNdW9ra2FhIHZhc3RhdXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICdtZW5lIHRha2Fpc2luIG11b2trYWFtYWFuIGt5c3lteXN0w6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnTXVpc3R1dHVrc2VuIGzDpGhldHTDpGrDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ011aXN0dXR1a3NlbiBvdHNpa2tvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNdW9ra2FhamEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnVHVsb3N0ZW4geWh0ZWVudmV0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ0zDpGhldHlzYWlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfDhMOkbmVzdHlzYWlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnS3lzZWx5biB0dWxvc3RlbiB5a3NpdHlpc2tvaGRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnbWVuZSB0YWthaXNpbiB5aHRlZW52ZXRvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnS3lzZWx5biB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ0zDpGhldGV0dHlqw6Qga3lzZWx5aXTDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnVmFzdGF1c3RlbiBtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0t5c2VseW4geWtzaXR5aXNrb2hkYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnVHVsb3N0ZW4gZ3JhYWZpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnRWkgdHVsb2tzaWEuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0t5c2VseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ1Zhc3RhYSBzZXVyYWF2aWluIGt5c3lteWtzaWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ07DpHl0w6QgdmFzdGF1a3NlbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ07DpG3DpCBvdmF0IHZhc3RhdWtzZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ0t5c2VseW4gb3RzaWtrbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnTGlzw6TDpCB1dXNpIGt5c2VseSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnTXVva2thYSBreXNlbHnDpCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnTXVva2thYSBreXN5bXlrc2nDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdLeWxsw6QgLyBFaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdWYWxpdHNlIHlrc2kgbW9uZXN0YSAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ1ZhbGl0c2UgeWtzaSB0YWkgdXNlYW1waWEgKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ1ZhbG1pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnS2Vza2VuZXLDpGluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0t5c3lteXN0ZW4gbXVva2thdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdWYXN0YXVzdGVuIG11b2trYXVzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1R1bG9zdGVuIHlodGVlbnZldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdZa3NpdHlpc2tvaHRhaXNldCB0dWxva3NldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ1V1ZGVuIHRpbGFuIGFzZXR0YW1pbmVuIGVpIG9ubmlzdHUhIEV0IG9sZSBtw6TDpHJpdHTDpG55dCBreXN5bXlrc2nDpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnVGlsYSBtdXV0ZXR0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIE11dXRhIHRpbGFhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdLeXNlbHluIGt1dmF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ1Zhc3Rhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnRWkgdmFzdGFubnV0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdLaWl0b3MgcGFsYXV0dGVlc3Rhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnS3lzZWx5IG9uIHZhbG1pcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnT2xldCBqbyB2YXN0YW5udXQgdMOkaMOkbiBreXNlbHl5bi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdLeXNlbHlvbWluYWlzdXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdNb2R1dWxpIGt5c2VseWlkZW4gbHVvbnRpaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdUdWxvc3RlbiB5a3NpdHlpc2tvaGRhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmZyX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0Nyw6llciB1biBub3V2ZWF1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnUHLDqXNlbnRhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnUHLDqXNlbnRhdGlvbiBkdSBzb25kYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnQ29ycHMgZGUgbGEgbm90aWZpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1R5cGVzIGRlIHRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwdGlvbiBpbnRlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICdFeGVtcGxlIGRlIHNvbmRhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdNb2RpZmllciBsZXMgaW5mb3JtYXRpb25zIGfDqW7DqXJhbGVzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnTW9kaWZpZXIgbGVzIHF1ZXN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdWb3VzIMOqdGVzIGljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUXVlc3Rpb25zIGR1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWpvdXRlciBkZXMgcXVlc3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnw4ljcml2ZXogbGEgcXVlc3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnUsOpcG9uc2UgcmVxdWlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0F1Y3VuZSBxdWVzdGlvbiBzYXV2ZWdhcmTDqWUgcG91ciBjZXR0ZSBlbnF1w6p0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1F1ZXN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1LDqXBvbnNlIHJlcXVpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ0FwcsOocyBhdm9pciB0ZXJtaW7DqSBsXCfDqWRpdGlvbiBkdSBzb25kYWdlLCBmZXJtZXogY2V0dGUgZmVuw6p0cmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnRmVybWVyIGNldHRlIGZlbsOqdHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdNb2RpZmllciBsYSBxdWVzdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ1JldG91ciBhdXggcXVlc3Rpb25zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1F1ZXN0aW9uIDonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdSw6lwb25zZXMgcG9zc2libGVzIHBvdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0Fqb3V0ZXIgdW5lIHLDqXBvbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnQXVjdW5lIHLDqXBvbnNlIG5cJ2Egw6l0w6kgdHJvdXbDqWUgcG91ciBjZXR0ZSBxdWVzdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ2lsIG5cJ3kgYSBwYXMgZGUgcsOpcG9uc2VzIHBvc3NpYmxlLCB1bmUgem9uZSBkZSB0ZXh0ZSBzZXJhIGFmZmljaMOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ01vZGlmaWVyIGxhIHLDqXBvbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ1JldG91ciDDoCBsYSBtb2RpZmljYXRpb24gZGVzIHF1ZXN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnUsOpcG9uc2UgOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICdWdWUgZFwnZW5zZW1ibGUgZGVzIG9wdGlvbnMgZGUgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnUGFzIGRlIHJlc3RyaWN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ1NvbmRhZ2VzIG1heGltdW0gcGFyIHBhZ2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ0V4cMOpZGl0ZXVyIGRlIGxhIG5vdGlmaWNhdGlvbiAgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnU3VqZXQgZGUgbGEgbm90aWZpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmnDqSBwYXInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlIGRlcyBzdGF0aXN0aXF1ZXMgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJsZWF1IGRlcyBkZW1hbmRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnU8OpbGVjdGlvbm5lciB0b3V0ZXMgbGVzIGRlbWFuZGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1RlbXBzIGRlIGxcJ2Vudm9pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ1RlbXBzIGRlIHZvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJ1PDqWxlY3Rpb25uZXIgY2V0dGUgZGVtYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZvaXIgbGVzIGTDqXRhaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRMOpdGFpbCBzdGF0aXN0aXF1ZSBzb25kYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdSZXRvdXIgw6AgbGEgdnVlIGRcJ2Vuc2VtYmxlIGRlcyBzdGF0aXN0aXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnRW52b3nDqSBkZW1hbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdTb25kYWdlIHJlw6d1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRMOpdGFpbHMgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdTZXJ2aWNlIFRpY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYXBoaXF1ZSByw6lzdWx0YXQgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnUGFzIGRlIHN0YXRpc3RpcXVlIHNvbmRhZ2UuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0VucXXDqnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnTWVyY2kgZGUgcsOpcG9uZHJlIMOgIGNlcyBxdWVzdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnVm9pciBtZXMgcsOpcG9uc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdWb2ljaSB2b3MgcsOpcG9uc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1RpdHJlIEVucXXDqnRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdBam91dGVyIHVuIHNvbmRhZ2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ01vZGlmaWVyIGxlIHNvbmRhZ2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ01vZGlmaWVyIGxlcyBxdWVzdGlvbnMgZHUgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdPdWkvTm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ0JvdXRvbiBSYWRpbyAoTGlzdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0Nhc2Ugw6AgY29jaGVyIChMaXN0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUeXBlIGRlIFF1ZXN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnVGVybWluw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0luY29tcGxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnTW9kaWZpZXIgbGEgcXVlc3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdNb2RpZmllciBsYSByw6lwb25zZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdWdWUgZFwnZW5zZW1ibGUgZGVzIHN0YXRpc3RpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ0TDqXRhaWwgU3RhdHMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdJbXBvc3NpYmxlIGRlIG1ldHRyZSDDoCBqb3VyICEgYXVjdW5lIHF1ZXN0aW9uIG5cJ2VzdCBkZWZpbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0xlIHN0YXR1dCBhIMOpdMOpIGNoYW5nw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gQXVjdW5lIGZpbGUgc8OpbGVjdGlvbm7DqWUgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBDaGFuZ2VyIGxlIHN0YXR1dCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01hw650cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ05vbiB2YWxpZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05vdXZlYXUgU3RhdHV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXB0aW9uIGR1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdSw6lwb25kdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdOb24gcsOpcG9uZHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ01lcmNpIHBvdXIgdm90cmUgcmV0b3VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xlIHNvbmRhZ2UgZXN0IHRlcm1pbsOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdWb3VzIGF2ZXogZMOpasOgIHLDqXBvbmR1IMOgIGNldHRlIEVucXXDqnRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdFdGVzIHZvdXMgc3VyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNldHRlIHF1ZXN0aW9uID8gVG91dGVzIGxlcyBkb25uw6llcyBhc3NvY2nDqWVzIHNlcm9udCBwZXJkdWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0V0ZXMgdm91cyBzdXIgZGUgdm91bG9pciBzdXBwcmltZXIgY2V0dGUgcXVlc3Rpb24gPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBtb2R1bGUgZFwnRW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VuIG1vZHVsZSBwb3VyIG1vZGlmaWVyIGxlcyBxdWVzdGlvbnMgZFwndW4gc29uZGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb3VzIGxlcyBwYXJhbcOodHJlcyBwb3VyIGxlIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ05vbWJyZSBkZSBqb3VycyBhcHLDqHMgYXZvaXIgZW52b3nDqSB1biBtYWlsIGRlIHNvbmRhZ2UsIHBlbmRhbnQgbGVxdWVsIGF1Y3VuIG5vdXZlYXUgc29uZGFnZSBuZSBzZXJhIHJlbnZvecOpIGF1IG3Dqm1lIHV0aWxpc2F0ZXVyLiBFbiBjaG9pc2lzc2FudCAwIHVuIG1haWwgZGUgc29uZGFnZSBzZXJhIGVudm95w6kgw6AgY2hhcXVlIGZvaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NvcnBzIHBhciBkw6lmYXV0IGRlIGxhIG5vdGlmaWNhdGlvbiBDbGllbnQgcGFyIG1haWwgw6AgcHJvcG9zIGRcJ3VuZSBub3V2ZWxsZSBlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdFeHDDqWRpdGV1ciBwYXIgZMOpZmF1dCBwb3VyIGxhIG5vdGlmaWNhdGlvbiBDbGllbnQgcGFyIG1haWwgw6AgcHJvcG9zIGRcJ3VuZSBub3V2ZWxsZSBlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnU3VqZXQgcGFyIGTDqWZhdXQgcG91ciBsYSBub3RpZmljYXRpb24gQ2xpZW50IHBhciBtYWlsIMOgIHByb3BvcyBkXCd1bmUgbm91dmVsbGUgZW5xdcOqdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIHVuIG1vZHVsZSBk4oCZYXBlcsOndSBvw7kgbW9udHJlciBsYSBsaXN0ZSBkZXMgc29uZGFnZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdEw6lmaW5pIGxlIG5vbWJyZSBtYXhpbXVtIGRcJ2VucXXDqnRlcyBxdWkgc2Vyb250IGVudm95w6llcyBhIHVuIENsaWVudCBwYXIgcMOpcmlvZGUgZGUgMzAgam91cnMuICgwIHNpZ25pZmllIHBhcyBkZSBtYXhpbXVtLCB0b3V0ZXMgbGVzIGVucXXDqnRlcyBzZXJvbnQgZXhww6lkacOpZXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEw6lmaW5pciBsYSBoYXV0ZXVyIHBhciBkw6lmYXV0IGRlIGxhIHZ1ZSB6b29tw6llIGRlcyDDqWzDqW1lbnRzIGR1IHNvbmRhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGxlcyBjb2xvbm5lcyB2aXNpYmxlIGRlIGzigJlhcGVyw6d1IGR1IHNvbmRhZ2UuIGNldHRlIG9wdGlvbiBuXCdhIHBhcyBkXCdlZmZldCBzdXIgbGEgcG9zaXRpb24gZGVzIGNvbG9ubmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnYWN0aXZlIG91IGTDqXNhY3RpdmUgbGEgdnVlIGRlcyByw6lzdWx0YXRzIGRcJ3VuIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgcHVibGlxdWUgbG9yc3F1XCd1biBjbGllbnQgZXNzYWllIGRlIHLDqXBvbmRyZSB1bmUgZGV1eGnDqG1lIGZvaXMgYSB1biBzb25kYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FjdGl2ZSBvdSBkw6lzYWN0aXZlIGxhIHbDqXJpZmljYXRpb24gZGUgbGEgY29uZGl0aW9uIGRcJ2Vudm9pIHBvdXIgbGUgc2VydmljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBY3RpdmUgb3UgZMOpc2FjdGl2ZSBsYSB2w6lyaWZpY2F0aW9uIGRlIGxhIGNvbmRpdGlvbiBkXCdlbnZvaSBwb3VyIGNlIHR5cGUgZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbnRlcmZhY2UgZHUgbW9kdWxlIGRcJ2VucmVnaXN0cmVtZW50IGRcJ3VuIGFqb3V0IGRlIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbnRlcmZhY2UgZHUgbW9kdWxlIGRcJ2VucmVnaXN0cmVtZW50IGRlIGxcJ8OpZGl0aW9uIGRcJ3VuIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2kgY2V0dGUgZXhwcmVzc2lvbiByw6lndWxpw6hyZSBlc3QgdsOpcmlmacOpZSwgYXVjdW5lIGVucXXDqnRlIENsaWVudCBuZSBzZXJhIGVudm95w6llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICdMaW1pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnRW5xdcOqdGUgcHVibGlxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEw6l0YWlscyBTdGF0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsZSBkXCfDqWRpdGlvbiBkXCdlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1bGUgc3RhdGlzdGlxdWUgZFwnZW5xdcOqdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWxlIGRlIGxhIHZ1ZSBkw6l0YWlsbMOpZSBkXCdlbnF1w6p0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnTGVzIGVucXXDqnRlIG5lIHNlcm9udCBwYXMgZW52b3nDqWVzIGF1eCBhZHJlc3NlcyBlbWFpbCBjb25maWd1csOpZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdMXCdpZGVudGlmaWFudCBwb3VyIHVuZSBlbnF1w6p0ZS4gcGFyIGV4LiBTdXJ2ZXkjLCBNeVN1cnZleSMuIHBhciBkw6lmYXV0IDogU3VydmV5Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmdsX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWFyIHVuaGEgZW5xdWlzYSBub3ZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWNpw7NuIMOhIGVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdUZXh0byBkYSBub3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG9zIGRlIHTDrWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmljacOzbiBpbnRlcm5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdFZGl0YXIgYSBpbmZvcm1hY2nDs24geGVyYWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdFZGl0YXIgYXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ1Zvc3RlZGUgZXN0w6EgYXF1w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1ByZWd1bnRhcyBkYSBlbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0VuZ2FkaXIgdW5oYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0VzY3JpYmEgYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXF1w61yZXNlIHVuaGEgcmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdOb24gaGFpIHByZWd1bnRhcyBnYXJkYWRhcyBwYXJhIGVzdGEgZW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdSZXF1w61yZXNlIHVuaGEgcmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnRWRpdGFyIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAncmV0b3JuYXIgw6FzIHByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdSZXNwb3N0YXMgcG9zw61iZWlzIGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0VuZ2FkaXIgdW5oYSByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ05vbiBoYWkgcmVzcG9zdGFzIGdhcmRhZGFzIHBhcmEgZXN0YSBwcmVndW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0lzdG8gbm9uIHRlbiB2YXJpYXMgcmVzcG9zdGFzOyBtw7NzdHJhc2UgdW4gY2Fkcm8gcGFyYSBlc2NyaWJpciB0ZXh0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdFZGl0YXIgYSByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICdyZXRvcm5hciDDoSBlZGljacOzbiBkYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdSZW1pdGVudGUgZGEgbm90aWZpY2FjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ0FzdW50byBkYSBub3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdDYW1iaWFkbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnVmlzdGEgeGVyYWwgZGFzIGVzdGF0w61zdGljYXMgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUw6Fib2EgZGUgc29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdIb3JhIGRlIGVudsOtbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdIb3JhIGRlIHZvdGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmVyIG9zIGRldGFsbGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgRXN0YXTDrXN0aWNvcyBFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2b2x0ZSBhIHZpc3RhIHhlcmFsIGRhcyBlc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkYSBlbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdFbnZpYXIgc29saWNpdHVkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ0VucXVpc2FzIHJlY2liaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRhIGVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnU2Vydml6b3MgVGlja2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3LDoWZpY28gUmVzdWx0YWRvcyBFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdObyByZXN1bHRhZG9zIGVzdGF0w61zdGljYSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUmVzcG9uZGEgYSBlc3RhcyBwcmVndW50YXMsIHNlIGZhaSBvIGZhdm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ01vc3RyYXIgYXMgbWnDsWFzIHJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnRXN0YXMgc29uIGFzIHPDumFzIHJlc3Bvc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUw610dWxvIGRhIGVucXVpc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0VuZ2FkaXIgdW5oYSBlbnF1aXNhIG5vdmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBlbnF1aXNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdFZGl0YXIgUHJlZ3VudGFzIGRhIEVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnU2kvTm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ09wY2nDs24gZXhjbHXDrW50ZSAobGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ09wY2nDs24gbm9uIGV4Y2x1w61udGUgKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcG8gZGUgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSW5jb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRWRpdGFyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdGFyIFJlc3Bvc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1Zpc3RhIHhlcmFsIGRhcyBlc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnRGV0YWxsZSBkYXMgZXN0YXTDrXN0aWNhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ05vbiBzZSBwb2RlIGVzdGFibGVjZXIgbyBub3ZvIHN0YXR1cyFOb24gaGFpIHByZWd1bnRhcyBkZWZpbmlkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0VzdGFkbyBjYW1iaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBOb24gaGFpIG5pbmd1bmhhIGZpbGEgc2VsZWNjaW9uYWRhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gQ2FtYmlhciBvIGVzdGFkbyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ1ByaW5jaXBhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnSW5jb3JyZWN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnTm92byBlc3RhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpY2nDs24gZGEgZW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ3Jlc3BvbmRpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbm9uIHJlc3BvbmRpZGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0dyYXphcyBwb2xhIHPDumEgb3BpbmnDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQSBlbnF1aXNhIGVzdMOhIHJlbWF0YWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdYYSByZXNwb25kZXUgYSBlc3RhIGVucXVpc2EuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdDb25maXJtYSBxdWUgZGVzZXhhIGVsaW1pbmFyIGVzdGEgcHJlZ3VudGEuIEhhbnNlIFBFUkRFUiBUT0RPUyBvcyBkYXRvcyBhc29jaWFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnQ29uZmlybWEgcXVlIGRlc2V4YSBlbGltaW5hciBlc3RhIHByZWd1bnRhPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBtw7NkdWxvIGRlIGVucXVpc2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW4gbcOzZHVsbyBwYXJhIGVkaXRhciBwcmVndW50YXMgZGUgZW5xdWlzYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVMOzZG9sb3MgcGFyYW1ldHJvcyBwYXJhIMOzIG9ieGV0byBFbnF1aXNhIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ0NhbnRpZGFkZSBkZSBkw61hcyBkZXNwb2lzIGRlIGVudmlhciB1bmhhIGVucXVpc2EgZGUgY29ycmVvIG5vIHF1ZSBub24gc2UgZW52w61hbiBub3ZhcyBwZXRpY2nDs25zIGRlIGVucXVpc2EgYW8gbWVzbW8gY2xpZW50ZS4gU2VsZWNjaW9uYW5kbyAwIGVudmlhcsOhIHNlbXByZSBvIGNvcnJlbyBkZSBlbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdDb3JwbyBwb3IgZGVmZWN0byBwYXJhIG8gY29ycmVvIGVsZWN0csOzbmljbyBkZSBub3RpZmljYWNpw7NuIGEgY2xpZW50ZXMgc29icmUgbm92YSBlbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1JlbWl0ZW50ZSBwb3IgZGVmZWN0byBwYXJhIG8gY29ycmVvIGVsZWN0csOzbmljbyBkZSBub3RpZmljYWNpw7NuIGEgY2xpZW50ZXMgc29icmUgbm92YSBlbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdUZW1hIHBvciBkZWZlY3RvIHBhcmEgbyBjb3JyZW8gZWxlY3Ryw7NuaWNvIGRlIG5vdGlmaWNhY2nDs24gYSBjbGllbnRlcyBzb2JyZSBub3ZhIGVucXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIHhlcmFsIHBhcmEgbW9zdHJhciBhIHZpc3RhIHBlcXVlbmEgZHVuaGEgbGlzdGEgZGUgZW5xdWlzYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGEgY2FudGlkYWRlIG3DoXhpbWEgZGUgZW5xdWlzYXMgcXVlIGVudsOtYW5zZSBhb3MgY2xpZW50ZXMgcG9yIDMwIGTDrWFzLiAoMCBzaWduaWZpY2Egbm8gbcOheGltbywgdMOzZGFsYXMgcGV0aWNpw7NucyBkZSBlbnF1aXNhIHNlcsOhbiBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBwb3IgZGVmZWN0byBwYXJhIHZpc3RhcyB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGVsZW1lbnRvcyBkZSBab29tRW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBuYSB2aXNpw7NuIHhlcmFsIGRlIGVucXVpc2EuIEVzdGEgb3BjacOzbiBub24gdGVuIG5pbmfDum4gZWZlY3RvIHNvYnJlIGEgcG9zaWNpw7NuIGRhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBvdSBkZXNhY3RpdmUgYSBwYW50YWxsYSBNb3N0cmFyRGF0b3NWb3RvIG5hIGludGVyZmFjZSBww7pibGljYSBwYXJhIG1vc3RyYXIgZGF0b3MgZHVuIHJlc3VsdGFkbyBkZSBlbnF1aXNhIGVzcGVjaWZpY2EgY2FuZG8gbyBjbGllbnRlIGludGVudGEgcmVzcG9uZGVyIGEgZW5xdWlzYSBwb3Igc2VndW5kYSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnQWN0aXZlIG91IGRlc2FjdGl2ZSBhIGNvbmRpY2lvbiBkZSBjb21wcm9iYWNpb24gZW52aWFyIHBhcmEgbyBzZXJ2aXpvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBvdSBkZXNhY3RpdmUgYSBjb21wcm9iYWNpw7NuIGVudmlhciBjb25kaWNpw7NuIHBhcmEgbyB0aXBvIGRlIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVuZ2FkaXIgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVkaXRhciBlbnF1aXNhIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVzdGF0w61zdGljYXMgZGUgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIHpvb20gZGUgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIG9ieGVjdG8gRW5xdWlzYVB1YmxpY2EgbmEgw6FyZWEgRW5xdWlzYSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NlIGEgZXhwcmVzacOzbiByZWd1bGFyIGNvaW5jaWRlLCBub24gZW52aWFyw6FzZSBlbnF1aXNhIGFvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgYXMgcMOheGluYXMgKG5hcyBjYWxlcyBhcyBlbnF1aXNhcyBzb24gbW9zdHJhZGFzKSBkYSB2aXN0YSB4ZXJhbCBwZXF1ZW5hIGRhIGVucXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnRW5xdWlzYSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHByZWd1bnRhcyBkZSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgdm9sdGFyIGF0csOhcyBuYSB2aXN0YSB6b29tIGRlIGVucXVpc2EgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBmYWNlciB6b29tIG5vcyBkZXRhbGxlcyBkYXMgZXN0YXTDrXN0aWNhcyBkYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgZGFzIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNw7NkdWxvIEVkaXRhciBFbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0zDrW1pdGUgIlBlcXVlbm8iIFZpc3RhIFhlcmFsIEVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7NkdWxvIEVzdGF0w61zdGljYXMgRW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ03Ds2R1bG8gWm9vbSBFbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0VucXVpc2FzIG5vbiBzZXLDoW4gZW52aWFkYXMgYW9zIGVuZGVyZXpvcyBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIGNvbmZpZ3VyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVuaGEgZW5xdWlzYSwgZXguIEVucXVpc2EjLCBNacOxYUVucXVpc2EjLCBQb3IgZGVmZWN0byDDqSBFbnF1aXNhIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdNw7NkdWxvIGV2ZW50byB0aWNrZXQgcGFyYSBlbnZpYXIgYXV0b21hdGljYW1lbnRlIHBldGljacOzbnMgZGUgZW5xdWlzYSBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIHNlIHVuIHRpY2tldCDDqSBwZWNoYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmhyX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1N0dm9yaSBub3Z1IGFua2V0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdVdm9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdVdm9kIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ1phYmlsamXFvmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG92aSBrYXJ0aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnSW50ZXJuaSBvcGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdVcmVkaSBvcMSHZSBpbmZvcm1hY2lqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ1VyZWRpIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdBbmtldG5hIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnRG9kYWogcGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1VwacWhaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ09kZ292b3IgamUgbmVvcGhvZGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTmVtYSBzcHJlbWxqZW5paCBwaXRhbmphIHphIG92dSBhbmtldHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdPZGdvdm9yIGplIG9iYXZlemFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ1VyZWRpIHBpdGFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICd2cmF0aSBzZSBuYXRyYWcgbmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdNb2d1xIdpIG9kZ292b3JpIHphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdEb2RhaiBvZGdvdm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnTmVtYSBzcHJlbWxqZW5paCBvZGdvdm9yYSB6YSBvdm8gcGl0YW5qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ1VyZWRpIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAndnJhdGkgc2UgbmF0cmFnIG5hIHVyZcSRaXZhbmplIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnWmFiaWxqZcW+YmEgcG/FoWlsamF0ZWxqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1phYmlsamXFvmJhIG5hc2xvdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ01pamVuamFvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1ByZWdsZWQgc3RhdGlzdGlrZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmxpY2EgemFodGpldmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdWcmlqZW1lIHNsYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdWcmlqZW1lIGdsYXNvdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZpZGkgcG9kcm9ibmlqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsamkgYW5rZXRuZSBzdGF0aXN0aWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2cmF0aSBzZSBuYXRyYWcgbmEgcHJlZ2xlZCBzdGF0aXN0aWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjaWplIG8gYW5rZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdQb3NsYW5pIHphaHRqZXZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdQcmltbGplbmUgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxqaSBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnUmV6dWx0YXRpIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTmVtYSByZXp1bHRhdGEuICc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdBbmtldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdNb2xpbW8gdmFzIGRhIG9kZ292b3JpdGUgbmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdQcmlrYcW+aSBtb2plIG9kZ292b3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdPdm8gc3UgdmHFoWkgb2Rnb3ZvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnTmFzbG92IGFua2V0ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnRG9kYWogbm92dSBhbmtldHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1VyZWRpIGFua2V0dSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnVXJlZGkgYW5rZXRuYSBwaXRhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0RhL25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICcgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVGlwIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdEb3ZyxaFlbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ05lZG92csWhZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdVcmVkaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnVXJlZGkgb2Rnb3Zvcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdQcmVnbGVkIHN0YXRpc3Rpa2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdTdGF0aXN0aWthIGRldGFsam5vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnTmVtb2d1xIdlIHBvc3Rhdml0aSBub3ZpIHN0YXR1cyEgUGl0YW5qYSBuaXN1IHBvc3RhdmxqZW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdTdGF0dXMgcHJvbWlqZW5qZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBQcm9taWplbmkgc3RhdHVzIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdPcGlzIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ29kZ292b3Jlbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbmlqZSBvZGdvdm9yZW5vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdIdmFsYSB2YW0gemEgcG92cmF0bnUgaW5mb3JtYWNpanUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQW5rZXRhIGplIHphdnLFoWVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVmXEhyBzdGUgaXNwdW5qYXZhbGkgYW5rZXR1Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnxb1lbGl0ZSBsaSB6YWlzdGEgaXpicmlzYXRpIG92byBwaXRhbmplPyBTdmkgcG9kYWNpIHByaSB0b21lIMSHZSBiaXRpIGl6Z3VibGplbmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnxb1lbGl0ZSBsaSB6YWlzdGEgb2JyaXNhdGkgb3ZhaiBvZGdvdm9yPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdBbmtldG5pIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnTW9kdWwgemEgdXJlxJFpdmFuamUgYW5rZXRuaWggcGl0YW5qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdKYXZuYSBhbmtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnU2F0aXN0aWthIGRldGFsam5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ8OaaiBrw6lyZMWRw612IGzDqXRyZWhvesOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnQmV2ZXpldMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnS8OpcmTFkcOtdiBiZXZlemV0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ8OJcnRlc8OtdMOpcyB0w7ZyenNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ0plZ3l0w61wdXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0JlbHPFkSBsZcOtcsOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnw5xneWbDqWwgZmVsdMOpdGVsZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICdWw6FsYXNzem9uIGVneSDDvGd5ZsOpbHR1bGFqZG9uc8OhZ290IGVneSBmZWx0w6l0ZWxoZXogdmFsw7MgaG96esOhYWTDoXNob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnTnlpbHbDoW5vcyBrw6lyZMWRw612a3VsY3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICdQw6lsZGEga8OpcmTFkcOtdic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ8OBbHRhbMOhbm9zIGluZm9ybcOhY2nDs2sgc3plcmtlc3p0w6lzZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0vDqXJkw6lzZWsgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfDlm4gaXR0IMOhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0vDqXJkxZHDrXYga8OpcmTDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdLw6lyZMOpcyBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdHw6lwZWxqZSBiZSBhIGvDqXJkw6lzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdWw6FsYXN6IGvDtnRlbGV6xZEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdOaW5jc2VuZWsga8OpcmTDqXNlayBlbG1lbnR2ZSBlaGhleiBhIGvDqXJkxZHDrXZoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnS8OpcmTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnVsOhbGFzeiBrw7Z0ZWxlesWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdBbWlrb3IgYmVmZWplenRlIGEga8OpcmTFkcOtdiBrw6lyZMOpc2VpbmVrIHN6ZXJrZXN6dMOpc8OpdCwgYWtrb3IgZWd5c3plcsWxZW4gesOhcmphIGJlIGV6dCBhIGvDqXBlcm55xZF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ0FibGFrIGJlesOhcsOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0vDqXJkw6lzIHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICd2aXNzemEgYSBrw6lyZMOpc2VraGV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ0vDqXJkw6lzOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ0xlaGV0c8OpZ2VzIHbDoWxhc3pvayBhIGvDtnZldGtlesWRaMO2eic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnVsOhbGFzeiBob3p6w6FhZMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdOaW5jc2VuZWsgdsOhbGFzem9rIGVsbWVudHZlIGVoaGV6IGEga8OpcmTDqXNoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdFbm5layBuaW5jcyB0w7ZiYiB2w6FsYXN6YSwgZWd5IHN6w7Z2ZWdkb2JveiBsZXN6IG1lZ2plbGVuw610dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnVsOhbGFzeiBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3Zpc3N6YSBhIGvDqXJkw6lzIHN6ZXJrZXN6dMOpc8OpaGV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdWw6FsYXN6Oic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICdLw6lyZMWRw612IMOhdHRla2ludMWRIGxlaGV0xZFzw6lnZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnQSBzesOhbSwgY8OtbSwgYmV2ZXpldMOpcywgbGXDrXLDoXMsIMOpcnRlc8OtdMOpcyBrw7xsZMWRamUsIMOpcnRlc8OtdMOpcyB0w6FyZ3lhIMOpcyDDqXJ0ZXPDrXTDqXMgdMO2cnpzZSBhdHRyaWLDunR1bW9rYmFuIGtlcmVzLCBmZWzDvGxiw61yw6FsdmEgYXogdWd5YW5pbHllbiBuZXbFsSBlZ3nDqWIgYXR0cmliw7p0dW1va2F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICdLw6lyZMWRw612IGzDqXRyZWhvesOhc2kgaWRlamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICdOaW5jcyBtZWdrw7Z0w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICdDc2FrIGV6ZWsga8O2esO2dHQgbMOpdHJlaG96b3R0IGvDqXJkxZHDrXZlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdPbGRhbGFua8OpbnQgbWVnamVsZW7DrXRldHQgbGVndMO2YmIga8OpcmTFkcOtdic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnw4lydGVzw610w6lzIGvDvGxkxZFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ8OJcnRlc8OtdMOpcyB0w6FyZ3lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNw7Nkb3PDrXRvdHRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ0Ega8O2dmV0a2V6xZEgc3RhdGlzenRpa8OhaW5hayDDoXR0ZWtpbnTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnS8OpcsOpc2VrIHTDoWJsw6F6YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ0F6IMO2c3N6ZXMga8OpcsOpcyBraWplbMO2bMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnS8O8bGTDqXMgaWRlamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnU3phdmF6w6FzIGlkZWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICdFemVuIGvDqXLDqXMga2lqZWzDtmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnUsOpc3psZXRlayBtZWd0ZWtpbnTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ1N0YXRpc3p0aWvDoWsgdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdLw6lyZMWRw612IHN0YXRpc3p0aWthIHLDqXN6bGV0ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ3Zpc3N6YSBhIHN0YXRpc3p0aWvDoWsgw6F0dGVraW50xZFqw6loZXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ0VsxZF6xZEgc3phdmF6YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnS8O2dmV0a2V6xZEgc3phdmF6YXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnS8OpcmTFkcOtdiBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdFbGvDvGxkw7Z0dCBrw6lyw6lzZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ0Jlw6lya2V6ZXR0IGvDqXJkxZHDrXZlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0vDqXJkxZHDrXYgcsOpc3psZXRlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdKZWd5c3pvbGfDoWx0YXTDoXNvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0vDqXJkxZHDrXYgZXJlZG3DqW55ZWsgZ3JhZmlrb25qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTmluY3NlbmVrIHN0YXRpc3p0aWthIGVyZWRtw6lueWVrLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdLw6lyZMWRw612JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnVsOhbGFzem9sam9uIGV6ZWtyZSBhIGvDqXJkw6lzZWtyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdTYWrDoXQgdsOhbGFzemFpbSBtZWdqZWxlbsOtdMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0V6ZWsgYXogw5ZuIHbDoWxhc3phaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdLw6lyZMWRw612IGPDrW1lJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICfDmmoga8OpcmTFkcOtdiBob3p6w6FhZMOhc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnYSBlaGhleiBhIGvDqXJkxZHDrXZoZXohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJ05pbmNzIGvDqXJkxZHDrXYtYXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdLw6lyZMWRw612IHN6ZXJrZXN6dMOpc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnYSBlaGhleiBhIGvDqXJkxZHDrXZoZXogdmFneSBrw6lyZMOpc2hleiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICdOaW5jcyBqb2dvc3VsdHPDoWdhIGVoaGV6IGEga8OpcmTFkcOtdmhleiwga8OpcmTDqXNoZXogdmFneSB2w6FsYXN6aG96ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdLw6lyZMWRw612IGvDqXJkw6lzZWsgc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdJZ2VuL05lbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdWw6FsYXN6dMOzZ29tYiAobGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0plbMO2bMWRbsOpZ3l6ZXQgKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICdWYWzDs3Mgw7xneWbDqWx0w6Ftb2dhdG90dHPDoWdpIMOpcnTDqWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0vDqXJkw6lzIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdLw6lzeic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnQmVmZWplemV0bGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdLw6lyZMOpcyBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnVsOhbGFzeiBzemVya2VzenTDqXNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1N0YXRpc3p0aWvDoWsgw6F0dGVraW50xZFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnYSBlaGhleiBhIGvDqXJkxZHDrXZoZXogdmFneSBhIHN0YXRpc3p0aWvDoWsgcsOpc3psZXRlaWhleiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnU3RhdGlzenRpa8OhayByw6lzemxldGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdOZW0gw6FsbMOtdGhhdMOzIGJlIGF6IMO6aiDDoWxsYXBvdCEgTmluY3NlbmVrIGvDqXJkw6lzZWsgbWVnaGF0w6Fyb3p2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICdOZW0gw6FsbMOtdGhhdMOzIGJlIMO6aiDDoWxsYXBvdCEgQSBrw6lyZMOpc2VrIG5pbmNzZW5layBiZWZlamV6dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ8OBbGxhcG90IG3Ds2Rvc8OtdHZhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIE5pbmNzIHbDoXLDs2xpc3RhIGtpamVsw7ZsdmUgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICctIE5pbmNzIGplZ3l0w61wdXMga2l2w6FsYXN6dHZhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLSBOaW5jcyBqZWd5c3pvbGfDoWx0YXTDoXMga2l2w6FsYXN6dHZhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIMOBbGxhcG90IG3Ds2Rvc8OtdMOhc2EgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdNZXN0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ8OJcnbDqW55dGVsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ8OaaiDDoWxsYXBvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdLw6lyZMWRw612IGxlw61yw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ21lZ3bDoWxhc3pvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbmVtIG1lZ3bDoWxhc3pvbHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0vDtnN6w7ZuasO8ayBhIHZpc3N6YWplbHrDqXPDqXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQSBrw6lyZMWRw612IGJlZmVqZXrFkWTDtnR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICdLw6lyZMWRw612IMO8emVuZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdBIG1vZHVsIG5pbmNzIGVuZ2Vkw6lseWV6dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnRXogYSBmdW5rY2lvbmFsaXTDoXMgbmluY3MgZW5nZWTDqWx5ZXp2ZS4gVmVneWUgZmVsIGEga2FwY3NvbGF0b3QgYSByZW5kc3plcmdhemTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ0vDqXJkxZHDrXYgaGliYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ8OJcnbDqW55dGVsZW4ga8OpcmTFkcOtdmt1bGNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnQSBiZXN6w7pydCBrw6lyZMWRw612a3VsY3Mgw6lydsOpbnl0ZWxlbi4gSGEgZWd5IGhpdmF0a296w6FzdCBrw7Z2ZXRldHQsIGFra29yIGF6IHRhbMOhbiBlbGF2dWx0IHZhZ3kgc8OpcsO8bHQgbGVoZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnS8OpcmTFkcOtdiBzemF2YXrDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0vDqXJkxZHDrXYgc3phdmF6w6FzIGFkYXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnTcOhciBraXTDtmx0w7Z0dGUgYSBrw6lyZMWRw612ZXQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICdLw6lyZMWRw612bGlzdGEnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIGvDqXJkw6lzdD8gTUlOREVOIGthcGNzb2zDs2TDsyBhZGF0IGVsIGZvZyBWRVNaTkkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSB2w6FsYXN6dD8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRWd5IGvDqXJkxZHDrXYgbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFZ3kgbW9kdWwgYSBrw6lyZMWRw612IGvDqXJkw6lzZWluZWsgc3plcmtlc3p0w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7Zzc3plcyBwYXJhbcOpdGVyIGEga8OpcmTFkcOtdiBvYmpla3R1bWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ0EgbmFwb2sgc3rDoW1hIGVneSBvbHlhbiBrw6lyZMWRw612IGxldsOpbCBraWvDvGxkw6lzZSB1dMOhbiwgYW1lbHliZW4gbmluY3NlbmVrIMO6aiBrw6lyZMWRw612IGvDqXLDqXNlayBlbGvDvGxkdmUgdWd5YW5hbm5hayBheiDDvGd5ZsOpbG5lay4gQSAwIHbDoWxhc3p0w6FzYSBtaW5kaWcgZWwgZm9namEga8O8bGRlbmkgYSBrw6lyZMWRw612IGxldmVsZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmZWxla25layBheiDDumoga8OpcmTFkcOtdnZlbCBrYXBjc29sYXRiYW4gZWxrw7xsZMO2dHQgw6lydGVzw610xZEgZS1tYWlsIGFsYXDDqXJ0ZWxtZXpldHQgdMO2cnpzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBeiDDvGd5ZmVsZWtuZWsgYXogw7pqIGvDqXJkxZHDrXZ2ZWwga2FwY3NvbGF0YmFuIGVsa8O8bGTDtnR0IMOpcnRlc8OtdMWRIGUtbWFpbCBhbGFww6lydGVsbWV6ZXR0IGvDvGxkxZFqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQXogw7xneWZlbGVrbmVrIGF6IMO6aiBrw6lyZMWRw612dmVsIGthcGNzb2xhdGJhbiBlbGvDvGxkw7Z0dCDDqXJ0ZXPDrXTFkSBlLW1haWwgYWxhcMOpcnRlbG1lemV0dCB0w6FyZ3lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdFZ3kgw6F0dGVraW50xZEgbW9kdWx0IGhhdMOhcm96IG1lZyBlZ3kga8OpcmTFkcOtdmxpc3RhIGtpcyBuw6l6ZXTDqW5layBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6b2thdCBhIGNzb3BvcnRva2F0LCBhbWVseWVrbmVrIGpvZ29zdWx0c8OhZ2EgdmFuIGEga8OpcmTFkcOtdiDDoWxsYXBvdMOhbmFrIG1lZ3bDoWx0b3p0YXTDoXPDoXJhLiBBbGFww6lydGVsbWV6ZXR0ZW4gYSB0w7ZtYiDDvHJlcywgw6lzIGF6IMO8Z3lpbnTDqXrFkWsgYXogw7Zzc3plcyBjc29wb3J0YsOzbCBtZWd2w6FsdG96dGF0aGF0asOhayBhIGvDqXJkxZHDrXYgw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBhIGvDqXJkxZHDrXYga8OpcsOpc2VrIGNzYWsgdmFsw7NkaSDDvGd5ZmVsZWtuZWsgbGVneWVuZWsga2lrw7xsZHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGvDqXJkxZHDrXZlayBsZWduYWd5b2JiIG1lbm55aXPDqWfDqXQsIGFtZWx5ZXQgMzAgbmFwb250YSBlbGvDvGxkaGV0bmVrIGVneSDDvGd5ZsOpbG5layAoYSAwIGF6dCBqZWxlbnRpLCBob2d5IG5pbmNzIG1heGltdW0sIG1pbmRlbiBrw6lyZMWRw612IGvDqXLDqXMgZWxrw7xsZMOpc3JlIGtlcsO8bCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6dCBhIG1lbm55aXPDqWdldCDDs3LDoWJhbiwgYW3DrWcgYSBqZWd5ZXQgbGUga2VsbCB6w6FybmksIGhvZ3kgYWt0aXbDoWxqYSBhIGvDqXJkxZHDrXYga2lrw7xsZMOpc8OpdCAoYSAwIGplbGVudMOpc2UsIGhvZ3kgYXpvbm5hbCBrw7xsZGplIGEgbGV6w6Fyw6FzIHV0w6FuKS4gTWVnamVneXrDqXM6IGEga8Opc2xlbHRldGV0dCBrw6lyZMWRw612IGtpa8O8bGTDqXPDqXQgYXogT1RSUyBkw6ltb24gdsOpZ3ppIGVsIGEg4oCeRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmTigJ0gYmXDoWxsw610w6FzIGVsxZF6ZXRlcyBiZWthcGNzb2zDoXNhIHV0w6FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IG9zemxvcG9rYXQgYSBsZWfDtnJkw7xsxZEgbGlzdMOhbsOhbCBhIGvDvGxkw6lzaSBmZWx0w6l0ZWxlayDDtnNzemXDoWxsw610w6Fzw6Fob3ogKDAgPT4gaW5ha3TDrXYsIDEgPT4gYWt0w612KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIFJpY2ggVGV4dCBuw6l6ZXRlayBhbGFww6lydGVsbWV6ZXR0IG1hZ2Fzc8OhZ8OhdCBhIGvDqXJkxZHDrXYgbmFnecOtdMOhcyBlbGVtZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICdNZWdoYXTDoXJvenphIGF6b2thdCBhIGNzb3BvcnRva2F0ICjDrXLDoXMsIG9sdmFzw6FzKSwgYW1lbHllayB0w7Zyw7ZsaGV0aWsgYSBrw6lyZMWRw612IHN0YXRpc3p0aWvDoWthdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIFJpY2ggVGV4dCBuw6l6ZXRlayBsZWduYWd5b2JiIG1hZ2Fzc8OhZ8OhdCBhIGvDqXJkxZHDrXYgbmFnecOtdMOhcyBlbGVtZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIG1lZ2plbGVuw610ZXR0IG9zemxvcG9rYXQgYSBrw6lyZMWRw612IMOhdHRla2ludMWRYmVuLiBFbm5layBhIGJlw6FsbMOtdMOhc25hayBuaW5jcyBoYXTDoXNhIGF6IG9zemxvcG9rIGhlbHl6ZXTDqXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBhIHN0YXRpc3p0aWthIG1vZHVsIGVsxZHDoWxsw610aGF0LWUga8OpcmTFkcOtdmxpc3TDoWthdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICdLw6lyZMWRw612IMOhbHRhbMOhbm9zIGluZm9ybcOhY2nDs2luYWsgc3plcmtlc3p0w6lzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0vDqXJkxZHDrXYga8OpcmTDqXNlayBzemVya2VzenTDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdBIHN6YXZhesOhc2kgYWRhdG9rIG1lZ2plbGVuw610w6lzZSBrw6lwZXJuecWRIGVuZ2Vkw6lseWV6w6lzZSB2YWd5IGxldGlsdMOhc2EgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4gZWd5IGFkb3R0IGvDqXJkxZHDrXZlcmVkbcOpbnkgYWRhdGFpbmFrIG1lZ2plbGVuw610w6lzw6loZXosIGFtaWtvciBheiDDvGd5ZsOpbCBtw6Fzb2Rzem9yIHByw7Niw6FsIG1lZyB2w6FsYXN6b2xuaSBhIGvDqXJkxZHDrXZyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdBIGvDvGxkw6lzaSBmZWx0w6l0ZWwgZWxsZW7FkXJ6w6lzw6luZWsgZW5nZWTDqWx5ZXrDqXNlIHZhZ3kgbGV0aWx0w6FzYSBhIHN6b2xnw6FsdGF0w6FzbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBIGvDvGxkw6lzaSBmZWx0w6l0ZWwgZWxsZW7FkXJ6w6lzw6luZWsgZW5nZWTDqWx5ZXrDqXNlIHZhZ3kgbGV0aWx0w6FzYSBhIGplZ3l0w61wdXNuw6FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbMWRdMOpdHByb2dyYW0gbW9kdWwgcmVnaXN6dHLDoWNpw7MgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGzDqXbFkSBrw6lyZMWRw612IGhvenrDoWFkw6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbMWRdMOpdHByb2dyYW0gbW9kdWwgcmVnaXN6dHLDoWNpw7MgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGzDqXbFkSBrw6lyZMWRw612IHN6ZXJrZXN6dMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsxZF0w6l0cHJvZ3JhbSBtb2R1bCByZWdpc3p0csOhY2nDsyBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbMOpdsWRIGvDqXJkxZHDrXYgc3RhdGlzenRpa8Oha2hvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsxZF0w6l0cHJvZ3JhbSBtb2R1bCByZWdpc3p0csOhY2nDsyBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbMOpdsWRIGvDqXJkxZHDrXYgbmFnecOtdMOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnRWzFkXTDqXRwcm9ncmFtIG1vZHVsIHJlZ2lzenRyw6FjacOzIGEgbnlpbHbDoW5vcyBrw6lyZMWRw612IG9iamVrdHVtaG96IGEgbnlpbHbDoW5vcyBrw6lyZMWRw612IHRlcsO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdIYSBleiBhIHJlZ3Vsw6FyaXMga2lmZWplesOpcyBpbGxlc3prZWRpaywgYWtrb3IgYXogw7xneWbDqWxrw6lyZMWRw612IG5lbSBrZXLDvGwga2lrw7xsZMOpc3JlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICdLb3Jsw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGtpcyBrw6lyZMWRw612IMOhdHRla2ludMWRIG9sZGFsYWlob3ogKGFtZWx5ZWtiZW4gYSBrw6lyZMWRw612ZWsgbWVnamVsZW5uZWspLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ055aWx2w6Fub3Mga8OpcmTFkcOtdi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnQSBiZcOhbGzDrXRvdHQgbmFwb2sgc3rDoW3DoW7DoWwgcsOpZ2ViYmkgZXJlZG3DqW55ZWsgdMO2cmzDqXNyZSBrZXLDvGxuZWsuIE1lZ2plZ3l6w6lzOiBheiBlcmVkbcOpbnllayB0w7ZybMOpc8OpdCBheiBPVFJTIGTDqW1vbiB2w6lnemkgZWwgYSDigJ5UYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGXigJ0gYmXDoWxsw610w6FzIGFrdGl2w6Fsw6FzYSBlbMWRdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGvDqXJkxZHDrXYgc3plcmtlc3p0w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBhIGvDqXJkxZHDrXYga8OpcmTDqXNlaW5layBzemVya2VzenTDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrw6lyZMWRw612IG5hZ3nDrXTDoXNpIG7DqXpldMOpYmUgdmFsw7Mgdmlzc3phdMOpcsOpc2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrw6lyZMWRw612IHN0YXRpc3p0aWthIHLDqXN6bGV0ZWliZSB2YWzDsyBuYWd5w610w6FzaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnU3RhdGlzenRpa8OhayByw6lzemxldGVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ0vDqXJkxZHDrXYgaG96esOhYWTDoXMgbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdLw6lyZMWRw612IHN6ZXJrZXN6dMOpcyBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdLw6lyZMWRw612IMOhdHRla2ludMWRIOKAnmtpc+KAnSBrb3Jsw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnS8OpcmTFkcOtdiBzdGF0aXN6dGlrw6FrIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnS8OpcmTFkcOtdiBuYWd5w610w6FzIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJ09sZGFsYW5rw6ludGkga8OpcmTFkcOtdiBrb3Jsw6F0IGEg4oCea2lz4oCdIGvDqXJkxZHDrXYgw6F0dGVraW50xZFuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0Ega8OpcmTFkcOtdmVrIG5lbSBrZXLDvGxuZWsgZWxrw7xsZMOpc3JlIGEgYmXDoWxsw610b3R0IGUtbWFpbCBjw61tZWtyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ0VneSBrw6lyZMWRw612IGF6b25vc8OtdMOzamEsIHDDqWxkw6F1bCBTdXJ2ZXkjLCBNeVN1cnZleSMuIEF6IGFsYXDDqXJ0ZWxtZXpldHQ6IFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnSmVneSBlc2Vtw6lueSBtb2R1bCBhdXRvbWF0aWt1cyBrw6lyZMWRw612IGUtbWFpbCBrw6lyw6lzZWsga8O8bGTDqXPDqWhleiBheiDDvGd5ZmVsZWtuZWssIGhhIGVneSBqZWd5IGxlIHZhbiB6w6FydmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICdUw7ZybMOpc2kgZXJlZG3DqW55ZWsgYWt0aXbDoWzDoXNhIChiZWxlw6lydHZlIGEgc3phdmF6YXRpIGFkYXRva2F0IMOpcyBrw6lyw6lzZWtldCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdLw6lzbGVsdGV0ZXR0IGvDqXJkxZHDrXZrw6lyw6lzZWsga8O8bGTDqXPDqW5layBha3RpdsOhbMOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnTmFnecOtdMOhcyBhIHN0YXRpc3p0aWvDoWsgcsOpc3psZXRlaWJlLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmlkX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0J1YXQgc3VydmV5IGJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnUGVuZ2FudGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdLZXRhIHBlbmdhbnRhciBzdXJ2ZXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnSXNpIG5vdGlmaWthc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlwZS10aXBlIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnRGVza3JpcHNpIGludGVybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdVYmFoIGluZm9ybWFzaSB1bXVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnVWJhaCBwZXJ0YW55YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ0FuZGEgYmVyYWRhIGRpc2luaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUGVydGFueWFhbiBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnVGFtYmFoIHBlcnRhbnlhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnS2V0aWsgcGVydGFueWFhbm55YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnSmF3YWJhbiBkaWJ1dHVoa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ1RpZGFrIGFkYSBwZXJ0YW55YWFuIHlhbmcgZGkgc2ltcGFuIHVudHVrIHN1cnZleSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUGVydGFueWFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdKYXdhYmFuIGRpYnV0dWhrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ0tldGlrYSBhbmRhIHNlbGVzYWkgbWVuZ3ViYWggcGVydGFueWFhbiBzdXJ2ZXkgaW5pLCBzaWxhaGthbiB0dXR1cCB0YW1waWxhbiBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdVYmFoIHBlcnRhbnlhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdLZW1iYWxpIGtlIHBlcnRhbnlhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1BlcnRhbnlhYW46ICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ0phd2FiYW4geWFuZyBtZW11bmdraW5rYW4gdW50dWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ1RhbWJhaCBqYXdhYmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnVGlkYWsgYWRhIGphd2FiYW4geWFuZyBkaSBzaW1wYW4gdW50dWsgcGVydGFueWFhbiBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ1RpZGFrIG1lbWlsaWtpIGJlYmVyYXBhIGphd2FiYW4sIGJpZGFuZ3Rla3MgYWthbiBkaSB0YW1waWxrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAndWJhaCBqYXdhYmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ0tlbWJhbGkga2UgdWJhaCBwZXJ0YW55YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdKYXdhYmFuOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ0p1bWxhaCBtYWtzaW1hbCBzdXJ2ZXkgeWFuZyBkaSB0YW1waWxrYW4gcGVyIGhhbGFtYW4uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdQZW5naXJpbSBub3RpZmlrYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1N1YmplayBub3RpZmlrYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdkaXViYWggb2xlaCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdHYW1iYXJhbiBzdGF0dXMgZGFyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsIHBlcm1pbnRhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnV2FrdHUgcGVuZ2lyaW1hbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnV2FrdHUgcGVtaWxpaGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnTGloYXQgcmluY2lhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ1JpbmNpYW4gc3RhdHVzIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnS2VtYmFsaSBrZSBnYW1iYXJhbiBzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXNpIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnUGVybWludGFhbiB5YW5nIHRlbGFoIGRpa2lyaW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1N1cnZleSB5YW5nIGRpdGVyaW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnUmluY2lhbiBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnTGF5YW5hbiB0aWtldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYWZpayBoYXNpbCBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ1RpZGFrIGFkYSBoYXNpbCBzdGF0JzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1N1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ01vaG9uIGphd2FiIHBlcnRhbnlhYW4gYmVyaWt1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnVGFtcGlsa2FuIGphd2FiYW4gc2F5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnQmVyaWt1dCBpbmkgYWRhbGFoIGphd2FiYW4gYW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdKdWR1bCBzdXJ2ZXknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ1RhbWJhaGthbiBzdXJ2ZXkgYmFydSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnVWJhaCBzdXJ2ZXknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ1ViYWggcGVydGFueWFhbiBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnWWEvVGlkYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKGRhZnRhciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnS290YWsgY2VudGFuZyAoZGFmdGFyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcGUgcGVydGFueWFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0xlbmdrYXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdUaWRhayBsZW5na2FwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnVWJhaCBwZXJ0YW55YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnVWJhaCBqYXdhYmFuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ0dhbWJhcmFuIHN0YXR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdSaW5jaWFuIFN0YXR1cyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ1RpZGFrIGRhcGF0IG1lbWJ1YXQgc3RhdHVzIGJhcnUhICBUaWRhayBhZGEgcGVydGFueWFhbiB5YW5nIGRpIGRlZmluaXNpa2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdTdGF0dXMgZGl1YmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gVGlkYWsgYWRhIGFudHJpYW4geWFuZyBkaXBpbGloIC0gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIE1lbmd1YmFoIFN0YXR1cyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ0luZHVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdUaWRhayB2YWxpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnU3RhdHVzIGJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVza3JpcHNpIHN1cnZleS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdUZXJqYXdhYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdCZWx1bSBkaWphd2FiJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdUZXJpbWEga2FzaWggYXRhcyB0YW5nZ2FwYW4gYW5kYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdTdXJ2ZXkgdGVsYWggc2VsZXNhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnQW5kYSB0ZWxhaCBtZW5qYXdhYiBzdXJ2ZXkgaW5pLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnQXBha2FoIGFuZGEgeWFraW4gaW5naW4gbWVuZ2hhcHVzIHBlcnRhbnlhYW4gaW5pPyBTRU1VQSBkYXRhIHlhbmcgYmVyaHVidW5nYW4gYWthbiBISUxBTkchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnQXBha2FoIGFuZGEgeWFraW4gaW5naW4gbWVuZ2hhcHVzIGphd2FiYW4gaW5pPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdTZWJ1YWggbW9kdWwgc3VydmV5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdTZWJ1YWggbW9kdWwgdW50dWsgbWVuZ3ViYWggamF3YWJhbiBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTZW11YSBwYXJhbWV0ZXIgdW50dWsgb2JqZWsgc3VydmV5IGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdKdW1sYWggaGFyaSBzZXRlbGFoIG1lbmdpcmlta2FuIHN1cmF0IHN1cnZleSBkaW1hbmEgdGlkYWsgYWRhIHBlbmdpcmltYW4gc3VydmV5IGJhcnUga2VwYWRhIHBlbGFuZ2dhbiB5YW5nIHNhbWEuIE1lbWlsaWggMCBha2FuIHNlbGFsdSBtZW5naXJpbWthbiBzdXJhdCBzdXJ2ZXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0lzaSBkZWZhdWx0IHVudHVrIGVtYWlsIHBlbWJlcml0YWh1YW4gdGVudGFuZyBzdXJ2ZXkgYmFydSBrZXBhZGEgcGVsYW5nZ2FuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1BlbmdpcmltIGRlZmF1bHQgdW50dWsgZW1haWwgcGVtYmVyaXRhaHVhbiB0ZW50YW5nIHN1cnZleSBiYXJ1IGtlcGFkYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1N1YmplY3QgZGVmYXVsdCB1bnR1ayBlbWFpbCBwZW1iZXJpdGFodWFuIHRlbnRhbmcgc3VydmV5IGJhcnUga2VwYWRhIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gZ2FtYmFyYW4gbW9kdWwgdW50dWsgbWVuYW1waWxrYW4gdGFtcGlsYW4ga2VjaWwgZGFmdGFyIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIEp1bWxhaCBzdXJ2ZXkgbWFrc2ltdW0geWFuZyBkaWtpcmlta2FuIGtlcGFkYSBwZWxhbmdnYW4gcGVyIDMwIGhhcmkuICggMCBiZXJhcnRpIHRpZGFrIGFkYSBiYXRhcyBtYWtzaW11bSwgc2VtdWEgcGVybWludGFhbiBzdXJ2ZXkgYWthbiBkaWtpcmltKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gdGluZ2dpIGRlZmF1bHQgdW50dWsgdGFtcGlsYW4gUmljaHRleHQgdW50dWsgZWxlbWVuIFN1cnZleVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4ga29sb20geWFuZyBkaSB0YW1waWxrYW4gcGFkYSBnYW1iYXJhbiBzdXJ2ZXkuIFBpbGloYW4gaW5pIHRpZGFrIG1lbWlsaWtpIGVmZWsgcGFkYSBwb3Npc2kga29sb20gdGVyc2VidXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdha3RpZiBhdGF1IG5vbi1ha3RpZmthbiBsYXlhciBTaG93Vm90ZURhdGEgcGFkYSBhbnRhcm11a2EgdW11bSB1bnR1ayBtZW5hbXBpbGthbiBkYXRhIGRhcmkgaGFzaWwgc3VydmV5IHNwZXNpZmlrIGtldGlrYSBwZWxhbmdnYW4gbWVuY3ViYSB1bnR1ayBtZW5qYXdhYiBzdXJ2ZXkga2VkdWEga2FsaW55YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdBa3RpZiBhdGF1IG5vbi1ha3RpZmthbiBwZW1lcmlrc2FhbiBrb25kaXNpIHBlbmdpcmltYW4gdW50dWsgbGF5YW5hbiB0ZXJzZWJ1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBa3RpZiBhdGF1IG5vbi1ha3RpZmthbiBwZW1lcmlrc2FhbiBrb25kaXNpIHBlbmdpcmltYW4gdW50dWsgdGlwZSB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVuZGFmdGFyYW4gbW9kdWwgZnJvbnRlbmQgIHVudHVrIG1lbmFtYmFoIHN1cnZleSBkaSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVuZGFmdGFyYW4gbW9kdWwgZnJvbnRlbmQgIHVudHVrIG1lbmd1YmFoIHN1cnZleSBkaSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIGZyb250ZW5kICB1bnR1ayBzdGF0cyBzdXJ2ZXkgZGkgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIGZyb250ZW5kICB1bnR1ayB6b29tIHN1cnZleSBkaSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnUGVuZGFmdGFyYW4gbW9kdWwgZnJvbnRlbmQgIHVudHVrIG9iamVrIFB1YmxpY1N1cnZleSBkaSBhcmVhIHN1cnZleS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ0ppa2EgcmVnZXggaW5pIGNvY29rLCBtYWthIHRpZGFrIGFkYSBzdXJ2ZXkgcGVsYW5nZ2FuIHlhbmcgYWthbiBkaSBraXJpbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGhhbGFtYW4gKGRpbWFuYSBzdXJ2ZXkgdGVyc2VidXQgZGkgdGFtcGlsa2FuKSBnYW1iYXJhbiBrZWNpbCBzdXJ2ZXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnU3VydmV5IHVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIG1lbmd1YmFoIHN1cnZleSBwYWRhIHRhbXBpbGFuIHpvb21ueWEgZGkgYW50YXIgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIG1lbmd1YmFoIHBlcnRhbnlhYW4gc3VydmV5IHBhZGEgdGFtcGlsYW4gem9vbW55YSBkaSBhbnRhciBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1waWxrYW4gdGF1dGFuIHBhZGEgbWVudSB1bnR1ayBrZW1iYWxpIHBhZGEgdGFtcGlsYW4gem9vbSBzdXJ2ZXkgZGkgYW50YXIgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIHpvb20ga2UgcmluY2lhbiBzdGF0aXN0aWsgc3VydmV5IHBhZGEgdGFtcGlsYW4gem9vbW55YSBkaSBhbnRhciBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdSaW5jaWFuIFN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICdNb2R1bCBtZW5hbWJhaCBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsIG1lbmd1YmFoIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0dhbWJhcmFuIGJhdGFzICJLZWNpbCIgc3VydmV5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTW9kdWwgc3RhdGlzdGlrIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWwgem9vbSBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdTdXJ2ZXkgdGlkYWsgYWthbiBkaSBraXJpbSBrZXBhZGEgYWxhbWF0IGVtYWlsIHlhbmcgdGVsYWggZGkga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ1BlbmdpZGVudGlmaWthc2kgdW50dWsgc3VydmV5LCBtaXNhbG55YSBTdXJ2ZXkjLCBNeVN1cnZleSMuIFNlY2FyYSBkZWZhdWx0bnlhIFN1cnZleSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdNb2R1bCB0aWtldCBwZXJpc3Rpd2EgdW50dWsgc2VjYXJhIG90b21hdGlzIG1lbmdpcmlta2FuIHBlcm1pbnRhYW4gZW1haWwgc3VydmV5IGtlcGFkYSBwZWxhbmdnYW4gamlrYSB0aWtldCB0ZWxhaCBkaXR1dHVwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdNdWxhaSBwZW5naXJpbWFuIHBlcm1pbnRhYW4gc3VydmV5IHlhbmcgeWFuZyBkaXR1bmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Oml0X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyZWF6aW9uZSBudW92byBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1emlvbmUgZGVsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0NvcnBvIGRlbCBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlwaSB0aWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcml6aW9uZSBhZCB1c28gaW50ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnTW9kaWZpY2EgbGUgaW5mb3JtYXppb25pIGdlbmVyYWxpJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnTW9kaWZpY2EgbGUgZG9tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdTZWkgcXVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdWb2NpIGRlbCBTb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWdnaXVuZ2kgZG9tYW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0luc2VyaXNjaSBsYSBkb21hbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1Jpc3Bvc3RhIHJpY2hpZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ05vbiBjaSBzb25vIHZvY2kgcGVyIHF1ZXN0byBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdEb21hbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jpc3Bvc3RhIHJpY2hpZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnUXVhbmRvIGNvbXBsZXRpIGxhIG1vZGlmaWNhIGRlbGxlIGRvbWFuZGUgZGVsIHNvbmRhZ2dpbywgYmFzdGEgY2hpdWRlcmUgcXVlc3RhIHNjaGVybWF0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ01vZGlmaWNhIGRvbWFuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdSaXRvcm5hIGFsbGUgZG9tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdEb21hbmRhOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ1Bvc3NpYmlsaSByaXNwb3N0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWdnaXVuZ2kgcmlzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdOZXNzdW5hIHJpc3Bvc3RhIHNhbHZhdGEgcGVyIHF1ZXN0YSBkb21hbmRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnTm9uIHNvbm8gcHJldmlzdGUgcmlzcG9zdGUgbXVsdGlwbGUsIGlsIGRlc3RpbmF0YXJpbyBpbnNlcmlzY2UgZGVsIHRlc3RvIGxpYmVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ01vZGlmaWNhIHJpc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ1JpdG9ybmEgYSBtb2RpZmljYXJlIGxlIGRvbWFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ1Jpc3Bvc3RhOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJ05lc3N1bmEgcmVzdHJpemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdOdW1lcm8gbWFzc2ltbyBkaSBzb25kYWdnaSBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdNaXR0ZW50ZSBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnT2dnZXR0byBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYXRvIGRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1JpZXBpbG9nbyBzdGF0aXN0aWNoZSBkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsbGEgZGVsbGUgcmljaGllc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnRGF0YSBlIE9yYSBkaSBpbnZpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdEYXRhIGUgT3JhIGRpIGNvbXBpbGF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmVkaSBpIGRldHRhZ2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0dGFnbGkgc3RhdGlzdGljaSBzdWwgU29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdSaXRvcm5hIGFsbGUgc3RhdGlzdGljaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXppb25pIHN1bCBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NvbmRhZ2dpIGludmlhdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1NvbmRhZ2dpIHJpY2V2dXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0dGFnbGkgc3VsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdTZXJ2aXppIHRpY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYWZpY2kgc3VsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTm9uIGNpIHNvbm8gcmlzdWx0YXRpIGRhIG1vc3RyYXJlJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1NvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ1RpIGNoaWVkaWFtbywgY29ydGVzZW1lbnRlLCBkaSByaXNwb25kZXJlIGEgcXVlc3RlIGRvbWFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnTW9zdHJhIGxlIG1pZSByaXNwb3N0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnUXVlc3RlIHNvbm8gbGUgdHVlIHJpc3Bvc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1RpdG9sbyBkZWwgc29uZGFnZ2lvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdBZ2dpdW5naSBudW92byBzb25kYWdnaW8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnTm9uIGhhaSBpIHBlcm1lc3NpIHBlciBxdWVzdG8gU29uZGFnZ2lvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICdOb24gw6ggc3RhdG8gc3BlY2lmaWNhdG8gdW4gU3VydmV5SUQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdNb2RpZmljYSBTb25kYWdnaW8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ01vZGlmaWNhIGxlIGRvbWFuZGUgZGVsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdTw6wvTm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKGVsZW5jbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnQ2FzZWxsYSBkaSBzZWxlemlvbmUgKGVsZW5jbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUaXBvIGRpIGRvbWFuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdTb25kYWdnaSBjb21wbGV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnU29uZGFnZ2kgaW5jb21wbGV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnTW9kaWZpY2EgZG9tYW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ01vZGlmaWNhIHJpc3Bvc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1Jpc3VsdGF0aSBzdGF0aXN0aWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnRGV0dGFnbGlvIHN0YXRpc3RpY2hlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnSW1wb3NzaWJpbGUgaW1wb3N0YXJlIGlsIG51b3ZvIHN0YXRvISBOZXNzdW5hIGRvbWFuZGEgZGVmaW5pdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ1N0YXRvIGNhbWJpYXRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIE5lc3N1bmEgY29kYSBzZWxlemlvbmF0YSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0gTmVzc3VuYSB0aXBvbG9naWEgZGkgdGlja2V0IHNlbGV6aW9uYXRhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBDYW1iaWEgc3RhdG8gLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdQcmluY2lwYWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdOb24gdmFsaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOdW92byBzdGF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcml6aW9uZSBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAncmlzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbm9uIHJpc3Bvc3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdHcmF6aWUgcGVyIGlsIHR1byByaXNjb250cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnSWwgc29uZGFnZ2lvIMOoIHRlcm1pbmF0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnSGFpIGdpw6AgcmlzcG9zdG8gYWwgc29uZGFnZ2lvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnVnVvaSBkYXZ2ZXJvIGVsaW1pbmFyZSBxdWVzdGEgZG9tYW5kYT8gVFVUVEkgaSBkYXRpIGFzc29jaWF0aSBzYXJhbm5vIFBFUlNJISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ1Z1b2kgZGF2dmVybyBlbGltaW5hcmUgcXVlc3RhIHJpc3Bvc3RhPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBtb2R1bG8gcGVyIGkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdVbiBtb2R1bG8gcGVyIG1vZGlmaWNhcmUgbGUgZG9tYW5kZSBkZWkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVHV0dGkgaSBwYXJhbWV0cmkgZGVsIHNvbmRhZ2dpbyBuZWxsXCdpbnRlcmZhY2NpYSBBZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ051bWVybyBkaSBnaW9ybmkgZG9wbyBsXCdpbnZpbyBkaSB1biBzb25nZ2lvIGluIGN1aSBub24gdmVycmFubm8gaW52aWF0ZSBudW92ZSByaWNoaWVzdGUgYWxsbyBzdGVzc28gY2xpZW50ZSAoMCBpbnZpZXLDoCBpIHNvbmRhZ2dpIHNlbXByZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NvcnBvIGRlbCB0ZXN0byBkaSBkZWZhdWx0IHBlciBsYSBub3RpZmljYSB2aWEgZW1haWwgYWwgY2xpZW50ZSByaWd1YXJkbyB1biBudW92byBzb25kYWdnaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnTWl0dGVudGUgZGkgZGVmYXVsdCBwZXIgbGEgbm90aWZpY2EgdmlhIGVtYWlsIGFsIGNsaWVudGUgcmlndWFyZG8gdW4gbnVvdm8gc29uZGFnZ2lvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdPZ2dldHRvIGRpIGRlZmF1bHQgcGVyIGxhIG5vdGlmaWNhIHZpYSBlbWFpbCBhbCBjbGllbnRlIHJpZ3VhcmRvIHVuIG51b3ZvIHNvbmRhZ2dpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIG1vZHVsbyBwZXIgbW9zdHJhcmUgbGEgdmlzdWFsaXp6YXppb25lIGNvbXBhdHRhIGRpIHVuYSBsaXN0YSBkaSBzb25kYWdnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdEZWZpbmlzY2kgaWwgbnVtZXJvIG1hc3NpbW8gZGkgc29uZGFnZ2kgY2hlIHBvc3Nvbm8gZXNzZXJlIGludmlhdGkgYWwgY2xpZW50ZSBpbiB1biBpbnRlcnZhbGxvIGRpIDMwIGdpb3JuaSAoMCBpbmRpY2EgdW4gbnVtZXJvIGlsbGltaXRhdG8sIHR1dHRpIGkgc29uZGFnZ2kgc2FyYW5ubyBpbnZpYXRpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ0RlZmluaXNjaSBpbCBudW1lcm8gZGkgb3JlIGRvcG8gbGEgY2hpdXN1cmEgZGVsIHRpY2tldCBwZXIgbFwnaW52aW8gZGVsIHNvbmRhZ2dpbyAoMCBpbmRpY2EgbFwnaW52aW8gaW1tZWRpYXRvIGRvcG8gbGEgY2hpdXN1cmEpLiBOb3RhOiBsXCdpbnZpbyByaXRhcmRhdG8gZGVpIHNvbmRhZ2dpIHZpZW5lIGVzZWd1aXRvIGRhbCBEYWVtb24gT1RSUyBjb24gbFwnYXR0aXZhemlvbmUgZGVsbGEgcHJlZmVyZW56YSAgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxcJ2FsdGV6emEgZGkgZGVmYXVsdCBwZXIgbGEgdmlzdGEgY29tcGxldGEgcGVyIGdsaSBlbGVtZW50aSBTdXJ2ZXlab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FiaWxpdGEgbyBkaXNhYmlsaXRhIGlsIGNvbnRyb2xsbyBkZWxsYSBjb25kaXppb25lIGRpIGludmlvIHBlciBpbCBzZXJ2aXppby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBYmlsaXRhIG8gZGlzYWJpbGl0YSBpbCBjb250cm9sbG8gZGVsbGEgY29uZGl6aW9uZSBkaSBpbnZpbyBwZXIgaWwgdGlwbyBkaSB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bG8gZGkgcmVnaXN0cmF6aW9uZSBwZXIgaWwgc29uZGFnZ2lvIG5lbGxcJ2FyZWEgQWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTW9kdWxvIGRpIHJlZ2lzdHJhemlvbmUgcGVyIGlsIHNvbmRhZ2dpbyBuZWxsXCdhcmVhIGRpIFNvbmRhZ2dpIFB1YmJsaWNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2UgcXVlc3RhIHNvdHRvc3RyaW5nYSB2aWVuZSByaWNvbm9zY2l1dGEsIGlsIHNvbmRhZ2dpbyBub24gdmllbmUgaW52aWF0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsYSB2aXN1YWxpenphemlvbmUgImNvbXBhdHRhIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdTb25kYWdnaW8gcHViYmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRGV0dGFnbGkgc3RhdGlzdGljaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTW9kdWxvIGRpIGFnZ2l1bnRhIGRlaSBzb25kYWdnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsbyBkaSBtb2RpZmljYSBkZWkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIHBlciB2aXN1YWxpenphemlvbmUgImNvbXBhdHRhIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1bG8gZGkgc3RhdGlzdGljaGUgZGVpIHNvbmRhZ2dpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWxvIGRpIHpvb20gcGVyIGkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnSSBzb25kYWdnaSBub24gc2FyYW5ubyBpbnZpYXRpIGFnbGkgaW5kaXJpenppIGVtYWlsIGNvbmZpZ3VyYXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnSWRlbnRpZmljYXRpdm8gcGVyIGlsIHNvbmRhZ2dpbywgcGVyIGVzZW1waW8gU29uZGFnZ2lvIywgSW5jaGllc3RhIy4gSWwgZGVmYXVsdCBTb25kYWdnaW8jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OmphX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+aWsOimj+OCouODs+OCseODvOODiOOBruS9nOaIkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfntLnku4vmlocnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ+OCouODs+OCseODvOODiOOBrue0ueS7i+aWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+mAmuefpeOBruacrOaWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICfjg4HjgrHjg4Pjg4jjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICflhoXpg6jlkJHjgZHoqqzmmI4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ+OBiuWuouanmOOBruadoeS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJ+adoeS7tuOCkui/veWKoOOBmeOCi+OBq+OBr+OAgemhp+WuouODl+ODreODkeODhuOCo+OCkumBuOaKnuOBl+OBpuS4i+OBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ+WFrOmWi+OCouODs+OCseODvOODiOOCreODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJ+OCouODs+OCseODvOODiOS+iyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ+S4gOiIrOaDheWgseOBrue3qOmbhic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ+izquWVj+OBrue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfjgYLjgarjgZ/jga7nj77lnKjlnLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+OCouODs+OCseODvOODiOizquWVjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfos6rllY/jga7ov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfos6rllY/jga7lhaXlipsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn5Zue562U5b+F6aCI44Gn44GZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn44GT44Gu44Ki44Oz44Kx44O844OI44Gr5a++44GZ44KL6LOq5ZWP44GM5L+d5a2Y44GV44KM44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn6LOq5ZWPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+WbnuetlOOBjOW/hemgiOOBrumgheebruOBp+OBmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAn44GT44Gu44Ki44Oz44Kx44O844OI44Gu6Kit5ZWP44KS57eo6ZuG44GX44Gf44KJ44CB55S76Z2i44KS6ZaJ44GY44Gm5LiL44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAn44GT44Gu44Km44Kk44Oz44OJ44Km44KS6ZaJ44GY44Gm5LiL44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfos6rllY/nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfos6rllY/jgbjmiLvjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn6Kit5ZWPOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ+mBuOaKnuiCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAn5Zue562U44Gu6L+95YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAn44GT44Gu6LOq5ZWP44G444Gu5Zue562U44Gv44G+44Gg44GC44KK44G+44Gb44KTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfjgZPjga7os6rllY/jgavjga/pgbjmip7ogqLjgYzjgYLjgorjgb7jgZvjgpPjgILjg4bjgq3jgrnjg4jjgqjjg6rjgqLjgYzooajnpLrjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICflm57nrZTjga7nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAn6LOq5ZWP44Gu57eo6ZuG44Gr5oi744KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICflm57nrZQ6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ+OCouODs+OCseODvOODiOOBruamguimgeOCquODl+OCt+ODp+ODsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICdOdW1iZXLjgIFUaXRsZeOAgUludHJvZHVjdGlvbuOAgURlc2NyaXB0aW9u44CBTm90aWZpY2F0aW9uU2VuZGVy44CBTm90aWZpY2F0aW9uU3ViamVjdOOAgU5vdGlmaWNhdGlvbkJvZHnjga7lkITlsZ7mgKfjgpLmpJzntKLjgZfjgIHlkIzjgZjlkI3liY3jga7ku5bjga7lsZ7mgKfjgpLjgqrjg7zjg5Djg7zjg6njgqTjg4njgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAn44Ki44Oz44Kx44O844OI5L2c5oiQ5pmC6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAn5Yi26ZmQ44Gq44GXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICfmnJ/plpPjgavkvZzmiJDjgZXjgozjgZ/jgqLjg7PjgrHjg7zjg4jjga7jgb8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAn44Oa44O844K444GC44Gf44KK44Gu5pyA5aSn5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfpgJrnn6Xjga7pgIHkv6HogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfpgJrnn6Xjga7ku7blkI0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ+abtOaWsOiAhSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfntbHoqIjkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICflm57nrZTkuIDopqcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ+WFqOOBpuOBruODquOCr+OCqOOCueODiOOCkumBuOaKnuOBl+OBpuS4i+OBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICfpgIHkv6Hml6XmmYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAn6L+U5L+h5pel5pmCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICfjgZPjga7jg6rjgq/jgqjjgrnjg4jjgpLpgbjmip7jgZfjgabkuIvjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfoqbPntLDjgpLnorroqo0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAn57Wx6KiI44KS5YmK6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfjgqLjg7PjgrHjg7zjg4jntbHoqIjjga7oqbPntLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ+e1seioiOS4gOimp+OBq+aIu+OCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAn5YmN44Gu5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ+asoeOBruaKleelqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7mg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ+mAgeS/oeaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn6L+U5L+h5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn44Ki44Oz44Kx44O844OI44Gu6Kmz57SwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ+ODgeOCseODg+ODiOODu+OCteODvOODk+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ+OCouODs+OCseODvOODiOe1kOaenOOBruOCsOODqeODlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn57Wx6KiI57WQ5p6c44GM44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ+OCouODs+OCseODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ+OBk+OCjOOCieOBruizquWVj+OBq+WbnuetlOOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfpgY7ljrvjga7lm57nrZTjgpLooajnpLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ+OBk+OCjOOCieOBr+mBjuWOu+OBq+WbnuetlOOBleOCjOOBn+OCguOBruOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7jgr/jgqTjg4jjg6snOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ+aWsOimj+OCouODs+OCseODvOODiOOBrui/veWKoCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfjgYLjgarjgZ/jga/jgZPjga7jgqLjg7PjgrHjg7zjg4jjga7mqKnpmZDjgYzjgYLjgorjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnU3VydmV5SUTjgYzmjIflrprjgZXjgozjgabjgYTjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7nt6jpm4YnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAn44GC44Gq44Gf44Gv44GT44Gu44Ki44Oz44Kx44O844OI44KE6LOq5ZWP44Gu5qip6ZmQ44GM44GC44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAn44GC44Gq44Gf44Gv44GT44Gu44Ki44Oz44Kx44O844OI44CB6LOq5ZWP44CB44G+44Gf44Gv5Zue562U44Gu5qip6ZmQ44GM44GC44KK44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ+OCouODs+OCseODvOODiOOBruizquWVj+OCkue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICfjga/jgYQv44GE44GE44GIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ+ODqeOCuOOCquODnOOCv+ODsyAo5LiA6KanKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICfjg4Hjgqfjg4Pjgq/jg5zjg4Pjgq/jgrkgKOS4gOimpyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAn44ON44OD44OI44O744OX44Ot44Oi44O844K/44O844O744K544Kz44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICfos6rllY/jgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICflrozmiJAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ+acquWujOaIkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAn6LOq5ZWP44Gu57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAn5Zue562U44Gu57eo6ZuGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ+e1seioiOS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ+e1seioiOOBruips+e0sCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ+aWsOOBl+OBhOeKtuaFi+OCkuioreWumuOBp+OBjeOBvuOBm+OCkyEg6LOq5ZWP44GM5a6a576p44GV44KM44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ+eKtuaFi+OBjOWkieabtOOBleOCjOOBvuOBl+OBn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICfjgq3jg6Xjg7zjgYzpgbjmip7jgZXjgozjgabjgYTjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g44K544OG44O844K/44K55aSJ5pu0IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAn44Oe44K544K/44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfnhKHlirknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ+aWsOOBl+OBhOeKtuazgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7oqqzmmI4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICflm57nrZTjgYLjgoonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn5Zue562U44Gq44GXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfjg5XjgqPjg7zjg4njg5Djg4Pjgq/jgYTjgZ/jgaDjgY3jgYLjgorjgYzjgajjgYbjgZTjgZbjgYTjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjgYzlrozkuobjgZfjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAn44Ki44Oz44Kx44O844OI44Gu44Oh44OD44K744O844K4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAn44Oi44K444Ol44O844Or44GM5pyJ5Yq544Gr44Gq44Gj44Gm44GE44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAn44GT44Gu5qmf6IO944Gv5pyJ5Yq544Gr44Gq44Gj44Gm44GE44G+44Gb44KT44CC566h55CG6ICF44Gr6YCj57Wh44GX44Gm5LiL44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICfoqr/mn7vjga7jgqjjg6njg7zvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ+OCouODs+OCseODvOODiOODu+OCreODvOOBjOeEoeWKueOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAn5oy/5YWl44GV44KM44Gf44Ki44Oz44Kx44O844OI44O744Kt44O844Gv54Sh5Yq544Gn44GZ44CC44Oq44Oz44Kv44KS44Gf44Gp44Gj44Gf5aC05ZCI44CB44GT44KM44Gv5pmC5Luj6YGF44KM44Gn44GC44KL44GL56C05pCN44GX44Gm44GE44KL5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAn44Ki44Oz44Kx44O844OI5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICfjgqLjg7PjgrHjg7zjg4jmipXnpajjg4fjg7zjgr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ+OCouODs+OCseODvOODiOOBq+WbnuetlOa4iOOBv+OBp+OBmeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAn44Ki44Oz44Kx44O844OI44O744Oq44K544OIJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAn44GT44Gu6LOq5ZWP44KS5pys5b2T44Gr5YmK6Zmk44GX44Gm44KC44GE44GE44Gn44GZ44GL77yf44CA6Zai6YCj44GX44Gm44GE44KL44GZ44G544Gm44Gu44OH44O844K/44O844GM5aSx44KP44KM44G+44GZISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ+acrOW9k+OBq+OBk+OBruetlOOBiOOCkuWJiumZpOOBl+OBpuOCguOBhOOBhOOBp+OBmeOBi++8nyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjg7vjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ+OCouODs+OCseODvOODiOizquWVj+OCkue3qOmbhuOBmeOCi+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBq+OBiuOBkeOCi+OCouODs+OCseODvOODiOODu+OCquODluOCuOOCp+OCr+ODiOOBq+WvvuOBmeOCi+WFqOOBpuOBruODkeODqeODoeODvOOCvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICfjgqLjg7PjgrHjg7zjg4jjg6Hjg7zjg6vjgpLpgIHkv6HjgZfjgZ/lvozjgIHlkIzjgZjpoaflrqLjgavmlrDjgZfjgYToqr/mn7vopoHmsYLjgYzpgIHkv6HjgZXjgozjgarjgYTml6XmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn5paw44GX44GE44Ki44Oz44Kx44O844OI44Gr44Gk44GE44Gm6aGn5a6i44Gr6YCa55+l44GZ44KL44Oh44O844Or44Gu5pys5paH44Gu44OH44OV44Kp44Or44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn5paw44GX44GE44Ki44Oz44Kx44O844OI44KS44Gr44Gk44GE44Gm6aGn5a6i44Gr6YCa55+l44GZ44KL44Oh44O844Or44Gu6YCB5L+h6ICF44Gu44OH44OV44Kp44Or44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ+aWsOOBl+OBhOOCouODs+OCseODvOODiOOCkuOBq+OBpOOBhOOBpumhp+WuouOBq+mAmuefpeOBmeOCi+ODoeODvOODq+OBruS7tuWQjeOBruODh+ODleOCqeODq+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfjgqLjg7PjgrHjg7zjg4jkuIDopqcoUynjgpLooajnpLrjgZnjgovjgZ/jgoHjga7kuIDopqfjg6Ljgrjjg6Xjg7zjg6vjga7lrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAn44Ki44Oz44Kx44O844OI44Gu44K544OG44O844K/44K544KS5aSJ5pu044GZ44KL5qip6ZmQ44KS5oyB44Gk44Kw44Or44O844OX44KS5a6a576p44GX44G+44GZ44CCIOOCouODrOOCpOOBr+ODh+ODleOCqeODq+ODiOOBp+OBr+epuuOBp+OAgeWFqOOBpuOBruOCsOODq+ODvOODl+OBruaLheW9k+iAheOBjOOCouODs+OCseODvOODiOOBruOCueODhuODvOOCv+OCueOCkuWkieabtOOBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ+OCouODs+OCseODvOODiOOBjOWun+mam+OBrumhp+WuouOBq+mAgeS/oeOBleOCjOOCi+OBi+OBqeOBhuOBi+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnMzDml6Xjga7plpPjgavpoaflrqLjgavpgIHkv6HjgZnjgovoqr/mn7vjga7mnIDlpKfmlbDjgpLlrprnvqnjgZfjgb7jgZnjgIIoMOOBr+eEoeWItumZkOOCkuaEj+WRs+OBl+OAgeWFqOOBpuOBruiqv+afu+imgeaxguOBjOmAgeS/oeOBleOCjOOBvuOBmSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ+OCouODs+OCseODvOODiOOBrumAgeS/oeOCkuODiOODquOCrOODvOOBmeOCi+OBn+OCgeOBq+ODgeOCseODg+ODiOOCkuOCr+ODreODvOOCuuOBmeOCi+aZgumWk+aVsOOCkuWumue+qeOBl+OBvuOBme+8iDDjga/jgq/jg63jg7zjgrrnm7TlvozjgavpgIHkv6HjgZXjgozjgb7jgZnvvInjgIIg5rOo77ya6YGF5bu244Ki44Oz44Kx44O844OI6YCB5L+h44Gv44CBT1RSU+ODh+ODvOODouODs+OBq+OCiOOBo+OBpuWun+ihjOOBleOCjOOAgeS6i+WJjeOBqyBcJ0RhZW1vbiA6OiBTY2hlZHVsZXJDcm9uVGFza01hbmFnZXIgOjogVGFzayAjIyMgU3VydmV5UmVxdWVzdHNTZW5kXCfjga7oqK3lrprjgYzmnInlirnjgavjgarjgaPjgabjgYTjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAn6YCB5L+h5p2h5Lu244KS5L2c5oiQ44GZ44KL44Gf44KB44Gu44OJ44Ot44OD44OX44OA44Km44Oz44Oq44K544OI44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC77yIMCA9PueEoeWKueOAgTEgPT7mnInlirnvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn6Kq/5p+75ouh5aSn55S76Z2i44Gu6KaB57Sg44Gr5a++44GX44Gm44Oq44OD44OB44OG44Kt44K544OI44Gr5a++44GZ44KL44OH44OV44Kp44Or44OI44Gu6auY44GV44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJ+OCouODs+OCseODvOODiOe1seioiOOCkuWJiumZpOOBp+OBjeOCi+OCsOODq+ODvOODl++8iHJ377yJ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ1N1cnZleVpvb23opoHntKDjga7jg6rjg4Pjg4Hjg4bjgq3jgrnjg4jjg5Pjg6Xjg7zjga7mnIDlpKfpq5jjgZXjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ+OCouODs+OCseODvOODiOS4gOimp+OBp+ihqOekuuOBleOCjOOCi+WIl+aVsOOCkuWumue+qeOBl+OBvuOBmeOAguOBk+OBruOCquODl+OCt+ODp+ODs+OBr+WIl+OBruS9jee9ruOBq+OBr+S9nOeUqOOBl+OBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAn57Wx6KiI44Oi44K444Ol44O844Or44GM6Kq/5p+744Oq44K544OI44KS55Sf5oiQ44GZ44KL44GL44Gp44GG44GL44KS5rG65a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAn44Ki44Oz44Kx44O844OI5LiA6Iis5oOF5aCx44KS57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7os6rllY/jgpLkv67mraMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44O844K544Gr44GK44GE44Gm44CB6aGn5a6i44GMMuW6puWbnuetlOOBl+OCiOOBhuOBqOOBl+OBn+mam+OBq+OAgeOBk+OCjOOBvuOBp+OBruWbnuetlOODh+ODvOOCv+OCkuihqOekuuOBmeOCi1Nob3dWb3RlRGF0YeeUu+mdouOCkuacieWKueOBq+OBmeOCi+OBi+WQpuOBiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ+OCteODvOODk+OCueOBrumAgeS/oeadoeS7tuOCkuacieWKueOBvuOBn+OBr+eEoeWKueOBq+OBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ+ODhuOCo+OCseODg+ODiOOCv+OCpOODl+OBrumAgeS/oeadoeS7tuOCkuacieWKueOBvuOBn+OBr+eEoeWKueOBq+OBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njg7vjg6Ljgrjjg6Xjg7zjg6vjga7nmbvpjLLjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBrue1seioiOOBruWkieabtOeUu+mdouODleODreODs+ODiOOCqOODs+ODieODu+ODouOCuOODpeODvOODq+OBrueZu+mMsuOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBrue1seioiOeKtuazgeODleODreODs+ODiOOCqOODs+ODieODu+ODouOCuOODpeODvOODq+OBrueZu+mMsuOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44O844K544Gu6Kq/5p+75ouh5aSn44Gr5a++44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44O744Oi44K444Ol44O844Or44Gu55m76Yyy44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICflhazplovjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjga5QdWJsaWNTdXJ2ZXnjgqrjg5bjgrjjgqfjgq/jg4jjgavlr77jgZnjgovjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njg7vjg6Ljgrjjg6Xjg7zjg6vjga7nmbvpjLLjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ+OBk+OBruato+imj+ihqOePvuOBq+ODnuODg+ODgeOBmeOCi+WgtOWQiOOAgeiqv+afu+OBr+mhp+WuouOBq+mAgeS/oeOBleOCjOOBvuOBm+OCk+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICfjg6rjg5/jg4Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfjgqLjg7PjgrHjg7zjg4jkuIDopqcgKFNtYWxsKSDjga4gKOOCouODs+OCseODvOODiOOBjOihqOekuuOBleOCjOOCiykg44Oa44O844K444Gr5a++44GZ44KL44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44O844K544GuUHVibGljU3VydmV544Kq44OW44K444Kn44Kv44OI44Gr5a++44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44Oi44K444Ol44O844Or55m76Yyy44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ+ioreWumuOBleOCjOOBn+aXpeaVsOOCiOOCiuWPpOOBhOe1kOaenOOBr+WJiumZpOOBleOCjOOBvuOBmeOAgiDms6jvvJogXCdUYXNrICMjIyBTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwn6Kit5a6a44KS5pyJ5Yq544Gr44GZ44KL5YmN44Gr44CBT1RSU+ODh+ODvOODouODs+OBq+OCiOOBo+OBpuihjOOCj+OCjOOBn+e1kOaenOOCkuWJiumZpOOBl+OBpuS4i+OBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjjgrrjg7zjg6Djg5Pjg6Xjg7zjgafnt6jpm4bjg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgpLooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjos6rllY/jgrrjg7zjg6Djg5Pjg6Xjg7zjgafjga7nt6jpm4bjg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp+ihqOekuuOBl+OBpuOBhOOCi+e1seioiOOBrue3qOmbhuODquODs+OCr+OCkuODoeODi+ODpeODvOOCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODleOCp+ODvOOCueOBruOCuuODvOODoOODk+ODpeODvOOBp+ihqOekuuOBl+OBpuOBhOOCi+e1seioiOOBrue3qOmbhuODquODs+OCr+OCkuODoeODi+ODpeODvOOCkuihqOekuuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn57Wx6KiI44Gu6Kmz57SwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ+OCouODs+OCseODvOODiOODouOCuOODpeODvOODq+i/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn44Ki44Oz44Kx44O844OI57eo6ZuG44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn44Ki44Oz44Kx44O844OI5LiA6KanKFMp44Gu6KGo56S65pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAn44Ki44Oz44Kx44O844OI57Wx6KiI44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjg7vjgrrjg7zjg6Djg7vjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICfjgqLjg7PjgrHjg7zjg4jjga7kuIDopqfjgIzlsI/jgI3jgavplqLjgZnjgosx44Oa44O844K444GC44Gf44KK44Gu44Ki44Oz44Kx44O844OI44Gu5LiK6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAn44Ki44Oz44Kx44O844OI44Gv6Kit5a6a44GV44KM44Gf6Zu75a2Q44Oh44O844Or44Ki44OJ44Os44K544Gr44Gv6YCB5L+h44GV44KM44G+44Gb44KT44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfkvovjgYjjgbBTdXJ2ZXkjLCBNeVN1cnZleSPjgarjganjga7jg4HjgrHjg4Pjg4jjga7orZjliKXlrZDjgafjgZnjgILjg4fjg5Xjgqnjg6vjg4jjga9TdXJ2ZXkj44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAn44OB44Kx44OD44OI44GM5a6M5LqG44GX44Gf6Zqb44Gr44CB6aGn5a6i44Gr6Ieq5YuV55qE44Gr6Kq/5p+744Oh44O844Or44KS6YCB5L+h44GZ44KL44OB44Kx44OD44OI44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICfvvIjmipXnpajjg4fjg7zjgr/jgajjg6rjgq/jgqjjgrnjg4jjgpLlkKvjgoDvvInntZDmnpzjgpLliYrpmaTjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ+i/veOBo+OBpuOBruOCouODs+OCseODvOODiOimgeaxguOCkumAgeS/oeOBmeOCi+ODiOODquOCrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ+e1seioiOaDheWgseOBruips+e0sOOCkuOCuuODvOODoOOCpOODs+OBmeOCi+OAgic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1rX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ9Ca0YDQtdC40YDQsNGYINC90L7QstCwINCw0L3QutC10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfQktC+0LLQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICfQktC+0LLQtdC0INCy0L4g0LDQvdC60LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAn0JjQt9Cy0LXRgdGC0YPQstCw0ZrQtSDQt9CwINCh0L7QtNGA0LbQuNC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAn0KLQuNC/INC90LAg0KLQuNC60LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAn0JLQvdCw0YLRgNC10YjQtdC9INCe0L/QuNGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfQo9GA0LXQtNC4INCz0Lgg0J7Qv9GI0YLQuNGC0LUg0LjQvdGE0L7RgNC80LDRhtC40LgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICfQo9GA0LXQtNC4INCz0Lgg0J/RgNCw0YjQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICfQn9GA0LDRiNCw0ZrQsCDQvtC0INCQ0L3QutC10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfQlNC+0LTQsNC00Lgg0L/RgNCw0YjQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfQktC90LXRgdC10YLQtSDQs9C+INC/0YDQsNGI0LDRmtC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICcg0J/QvtGC0YDQtdCx0L3QuCDQvtC00LPQvtCy0L7RgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn0J3QtdC80LAg0LfQsNGH0YPQstCw0L3QuCDQv9GA0LDRiNCw0ZrQsCDQt9CwINC+0LLQsNCwINCw0L3QutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICfQn9GA0LDRiNCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICfQl9Cw0LTQvtC70LbQuNGC0LXQu9C10L0g0J7QtNCz0L7QstC+0YAgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ9Cj0YDQtdC00Lgg0LPQuCDQn9GA0LDRiNCw0ZrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfQstGA0LDRgtC4INC80LUg0L3QsCDQv9GA0LDRiNCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICfQnNC+0LbQvdC4INC+0LTQs9C+0LLQvtGA0Lgg0LfQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAn0JTQvtC00LDQtNC4INCe0LTQs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAn0JfQsCDQvtCy0LAg0L/RgNCw0YjQsNGa0LUg0L3QtSDQtSDQt9Cw0YfRg9Cy0LDQvSDQvtC00LPQvtCy0L7RgC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ9Ce0LLQsCDQvdC10LzQsCDQv9C+0LLQtdGc0LUg0L7QtNCz0L7QstC+0YDQuCwg0L/QvtC70LXRgtC+INC30LAg0YLQtdC60YHRgiDRnNC1INCx0LjQtNC1INC/0YDQuNC60LDQttCw0L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn0KPRgNC10LTQuCDQs9C+INCe0LTQs9C+0LLQvtGA0L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfQstGA0LDRgtC4INGB0LUg0L3QsCDRg9GA0LXQtNGD0LLQsNGa0LUg0L3QsCDQv9GA0LDRiNCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfQmNGB0L/RgNCw0YLQuCDQuNC30LLQtdGB0YLRg9Cy0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAn0JjQt9Cy0LXRgdGC0YPQstCw0ZrQtSDQt9CwINCf0YDQtdC00LzQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICfQn9GA0L7QvNC10L3QtdGC0L4g0L7QtCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfQn9GA0LXQs9C70LXQtCDQvdCwINCh0YLQsNGC0LjRgdGC0LjQutCwINC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICfQsdCw0YDQsNGa0LDRgtCwINC30LAg0KLQsNCx0LXQu9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn0JjRgdC/0YDQsNGC0Lgg0JLRgNC10LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfQktGA0LXQvNC1INC30LAg0LPQu9Cw0YHQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ9CS0LjQtNC4INCU0LXRgtCw0LvQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJyDQlNC10YLQsNC70Lgg0LfQsCDRgdGC0LDRgtC40YHRgtC40LrQsCDQvdCwINCQ0L3QutC10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAn0LLRgNCw0YLQuCDQvNC1INC90LAg0L/RgNC10LPQu9C10LQg0L3QsCDRgdGC0LDRgtC40YHRgtC40LrQsCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn0LjQvdGE0L7RgNC80LDRhtC40Lgg0LfQsCDQsNC90LrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ9CY0YHQv9GA0LDRgtC10L3QuCDQsdCw0YDQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ9CU0L7QsdC40LXQvdC4INCw0L3QutC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0LvQuCDQt9CwINCw0L3QutC10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICfQo9GB0LvRg9Cz0Lgg0LfQsCDRgtC40LrQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAn0JPRgNCw0YTQuNC60L7QvSDQt9CwINCg0LXQt9GD0LvRgtCw0YLQuNGC0LUg0L7QtCDQuNGB0YLRgNCw0LbRg9Cy0LDRmtC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn0J3QtdC80LAg0YHRgtCw0YLQuNGB0YLQuNGH0LrQuCDRgNC10LfRg9C70YLQsNGC0LguJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ9CQ0L3QutC10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ9CU0L7QtNCw0LTQuCDQndC+0LJhINCQ0L3QutC10YLQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAn0KPRgNC10LTQuCDRmNCwINCw0L3QutC10YLQsNGC0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ9Cj0YDQtdC00Lgg0LPQuCDQv9GA0LDRiNCw0ZrQsNGC0LAg0LfQsCDQsNC90LrQtdGC0LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ9CU0LAv0J3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICfQm9C40YHRgtCwINC+0LQg0LrQvtC/0YfQuNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn0J7QsdC10LvQtdC20YPQstCw0YcgKNCb0LjRgdGC0LApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn0KLQuNC/INC90LAg0L/RgNCw0YjQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICfQmtC+0LzQv9C70LXRgtC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ9Cd0LXQutC+0LzQv9C70LXRgtC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ9Cj0YDQtdC00Lgg0LPQuCDQv9GA0LDRiNCw0ZrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfQo9GA0LXQtNC4INCz0Lgg0L7QtNCz0L7QstC+0YDQuNGC0LUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAn0J/RgNC10LPQu9C10LQg0L3QsCDQodGC0LDRgtC40YHRgtC40LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ9CU0LXRgtCw0Zkg0L7QtCDQodGC0LDRgtC40YHRgtC40LrQsNGC0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfQndC1INC80L7QttC1INC00LAg0L/QvtGB0YLQsNCy0Lgg0L3QvtCyINGB0YLQsNGC0YPRgSEg0J3QtdC80LAg0LTQtdGE0LjQvdC40YDQsNC90Lgg0L/RgNCw0YjQsNGa0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ9Ch0YLQsNGC0YPRgdC+0YIg0LUg0L/RgNC+0LzQtdC90LXRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLdCd0LUg0LUg0LjQt9Cx0YDQsNC9INGA0LXQtC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g0J/RgNC+0LzQtdC90LAg0L3QsCDRgdGC0LDRgtGD0YHQvtGCIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfQndC10LLQsNC70LjQtNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ9Cd0L7QsiDQodGC0LDRgtGD0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YEg0L3QsCDQsNC90LrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICfQvtC00LPQvtCy0L7RgNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICfQvdC1INC+0LTQs9C+0LLQvtGA0LXQvdC+JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfQlNCw0LvQuCDQvdCw0LLQuNGB0YLQuNC90LAg0YHQsNC60LDRgtC1INC00LAg0LPQviDQuNC30LHRgNC40YjQtdGC0LUg0L7QstCwINC/0YDQsNGI0LDRmtC1PyDQodC40YLQtSDQv9C+0LLRgNC30LDQvdC4INC/0L7QtNCw0YLQvtGG0Lgg0ZzQtSDQsdC40LTQsNGCINCY0JfQk9Cj0JHQldCd0JghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn0JTQsNC70Lgg0L3QsNCy0LjRgdGC0LjQvdCwINGB0LDQutCw0YLQtSDQtNCwINCz0L4g0LjQt9Cx0YDQuNGI0LXRgtC1INC+0LLQvtGYINC+0LTQs9C+0LLQvtGAPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC30LAg0JDQvdC60LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfQnNC+0LTRg9C7INC30LAg0YPRgNC10LTRg9Cy0LDRmtC1INC90LAg0LDQvdC60LXRgtC90Lgg0L/RgNCw0YjQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodC40YLQtSDQv9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQvtCx0ZjQtdC60YLQvtGCINC90LAg0JDQvdC60LXRgtCw0YLQsCDQstC+INC40L3RgtC10YDRhNC10ZjRgdC+0YIg0L3QsCDQsNCz0LXQvdGC0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C40L3QsCDQvdCwINC00LXQvdC+0LLQuCDQv9C+INC/0YDQsNGc0LDRmtC1INC90LAg0LDQvdC60LXRgtC90LjQvtGCIGUtbWFpbCDQstC+INC60L7RmCDQvdC1INGB0LUg0L/RgNCw0YLQtdC90Lgg0L3QuNGC0YMg0LXQtNC90LAg0LjRgdGC0LAg0LDQvdC60LXRgtCwINC90LAg0LjRgdGCINC60L7RgNC40YHQvdC40LouINCh0L4g0L7QtNCx0LjRgNCw0ZrQtSDQvdCwIDAg0YHQtdC60L7Qs9Cw0Ygg0ZzQtSDQsdC40LTQsNGCINC/0YDQsNGC0LXQvdC4INCw0L3QutC10YLQvdC4IGUtbWFpbC3QvtCy0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Ch0YLQsNC90LTQsNGA0LTQvdCwINGB0L7QtNGA0LbQuNC90LAg0L3QsCDQtS3Qv9C+0YjRgtCwINC30LAg0LjQt9Cy0LXRgdGC0YPQstCw0ZrQtSDQvdCwINC60LvQuNC10L3RgtC40YLQtSDQt9CwINC90L7QstCw0YLQsCDQsNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0KHRgtCw0L3QtNCw0YDQtNC10L0g0LjRgdC/0YDQsNGc0LDRhyDQvdCwINC1LdC/0L7RiNGC0LAg0LfQsCDQuNC30LLQtdGB0YLRg9Cy0LDRmtC1INC90LAg0LrQu9C40LXQvdGC0LjRgtC1INC30LAg0L3QvtCy0LDRgtCwINCw0L3QutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0KHRgtCw0L3QtNCw0YDQtNC10L0g0L/RgNC10LTQvNC10YIg0L3QsCDQtS3Qv9C+0YjRgtCwINC30LAg0LjQt9Cy0LXRgdGC0YPQstCw0ZrQtSDQvdCwINC60LvQuNC10L3RgtC40YLQtSDQt9CwINC90L7QstCw0YLQsCDQsNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LDRmtC1INC90LAg0LzQvtC00YPQuyDQt9CwINC/0YDQtdCz0LvQtdC0INC30LAg0LTQsCDRgdC1INC/0YDQuNC60LDQttC1INC80LDQuyDQv9C+0LPQu9C10LQg0L3QsCDQsNC90LrQtdGC0LDRgtCwINC70LjRgdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQvNCw0LrRgdC40LzQsNC70LXQvSDQuNC30L3QvtGBINC90LAg0LDQvdC60LXRgtC4INC60L7QuCDRgdC1INC40YHQv9GA0LDRgtC10L3QuCDQvdCwINC60LvQuNC10L3RgtC40YLQtSDQv9C+IDMwINC00LXQvdCwLiAoMCDQt9C90LDRh9C4INCx0LXQtyDQvNCw0LrRgdC40LzRg9C8LCDRgdC40YLQtSDQsdCw0YDQsNGa0LAg0ZzQtSDQsdC40LTQsNGCINC40YHQv9GA0LDRgtC10L3QuCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ9CI0LAg0LTQtdGE0LjQvdC40YDQsCDRgdGC0LDQvdC00LDRgNC00L3QsNGC0LAg0LLQuNGB0L7Rh9C40L3QsCDQvdCwIFJpY2h0ZXh0INC/0YDQtdCz0LvQtdC00L7RgiDQt9CwIFN1cnZleVpvb20g0LXQu9C10LzQtdC90YLQuNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/RgNC40LrQsNC20LDQvdC4INC60L7Qu9C+0L3QuCDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDQvdCwINCw0L3QutC10YLQuC4g0J7QstCw0LAg0L7Qv9GG0LjRmNCwINC90LXQvNCwINC10YTQtdC60YIg0LLRgNC3INC/0L7Qt9C40YbQuNGY0LDRgtCwINC90LAg0LrQvtC70L7QvdC40YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ9CS0LrQu9GD0YfQtdGC0LUg0LjQu9C4INC40YHQutC70YPRh9C10YLQtSDRmNCwINC/0YDQvtCy0LXRgNC60LDRgtCwINC90LAg0YHQvtGB0YLQvtGY0LHQsNGC0LAg0LfQsCDQuNGB0L/RgNCw0ZzQsNGa0LUg0L3QsCDRg9GB0LvRg9Cz0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAn0JLQutC70YPRh9C10YLQtSDQuNC70Lgg0LjRgdC60LvRg9GH0LXRgtC1INGY0LAg0L/RgNC+0LLQtdGA0LrQsNGC0LAg0L3QsCDRgdC+0YHRgtC+0ZjQsdCw0YLQsCDQt9CwINC40YHQv9GA0LDRnNCw0ZrQtSDQvdCwINGC0LjQv9C+0YIg0L3QsCDRgtC40LrQtdGC0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwINC90LAg0LzQvtC00YPQuyDQt9CwINC00L7QtNCw0LLQsNGa0LUg0L3QsCDQsNC90LrQtdGC0Lgg0LLQviDQuNC90YLQtdGA0YTQtdGY0YHQvtGCINC90LAg0LDQs9C10L3RgtC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAg0L3QsCDQvNC+0LTRg9C7INC30LAg0LjQt9C80LXQvdCwINC90LAg0LDQvdC60LXRgtC4INCy0L4g0LjQvdGC0LXRgNGE0LXRmNGB0L7RgiDQvdCwINCw0LPQtdC90YLQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40ZjQsCDQvdCwINC80L7QtNGD0Lsg0LfQsCDQsNC90LrQtdGC0L3QuCDQt9Cw0L/QuNGB0Lgg0LLQviDQuNC90YLQtdGA0YTQtdGY0YHQvtGCINC90LAg0LDQs9C10L3RgtC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAg0L3QsCDQvNC+0LTRg9C7INC30LAg0LTQtdGC0LDQu9C90L4g0LDQvdC60LXRgtC40YDQsNGa0LUg0LLQviDQuNC90YLQtdGA0YTQtdGY0YHQvtGCINC90LAg0LDQs9C10L3RgtC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ9CQ0LrQviDQvtCy0L7RmCDQuNC30YDQsNC3INGB0LUg0YHQvtCy0L/QsNGT0LAsINCw0L3QutC10YLQsCDQvdC10LzQsCDQtNCwINCx0LjQtNC1INC40YHQv9GA0LDRgtC10L3QsCDQvdCwINC60LvQuNC10L3RgtC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLRgNCw0L3QuNGG0LggKNCy0L4g0LrQvtGYINGB0LUg0L/RgNC40LrQsNC20YPQstCw0LDRgiDQsNC90LrQtdGC0LjRgtC1KSDQvdCwINC80LDQu9CwINC/0YDQtdCz0LvQtdC0INC90LAg0LDQvdC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC30LAg0YPRgNC10LTRg9Cy0LDRmtC1INC90LAg0LDQvdC60LXRgtC4INCy0L4g0LTQtdGC0LDQu9C90LjQvtGCINC/0L7Qs9C70LXQtCDQstC+INC40L3RgtC10YDRhNC10ZjRgdC+0YIg0L3QsCDQsNCz0LXQvdGC0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LLQviDQvNC10L3QuNGC0L4g0LvQuNC90LrQvtGCINC30LAg0YPRgNC10LTRg9Cy0LDRmtC1INC90LAg0LDQvdC60LXRgtC90Lgg0L/RgNCw0YjQsNGa0LAg0LLQviDQtNC10YLQsNC70LXQvSDQv9C+0LPQu9C10LQg0LLQviDQuNC90YLQtdGA0YTQtdGY0YHQvtGCINC90LAg0LDQs9C10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQstC+INC80LXQvdC40YLQviDQu9C40L3QutC+0YIg0LfQsCDQstGA0LDRnNCw0ZrQtSDQstC+INC00LXRgtCw0LvQtdC9INC/0L7Qs9C70LXQtCDQstC+INC40L3RgtC10YDRhNC10ZjRgdC+0YIg0L3QsCDQsNCz0LXQvdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQstC+INC80LXQvdC40YLQviDQu9C40L3QutC+0YIg0LfQsCDQtNC10YLQsNC70LXQvSDQv9GA0LjQutCw0Lcg0L3QsCDRgdGC0LDRgtC40YHQuNGC0LjQutC4INCy0L4g0LTQtdGC0LDQu9C10L0g0L/QvtCz0LvQtdC0INCy0L4g0LjQvdGC0LXRgNGE0LXRmNGB0L7RgiDQvdCwINCw0LPQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0LvQuCDQvtC0INCh0YLQsNGC0LjRgdGC0LjQutCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQo9GA0LXQtNGD0LLQsNGa0LUg0L3QsCDQkNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0J7Qs9GA0LDQvdC40YfRg9Cy0LDRmtC1INC90LAg0J/RgNC10LPQu9C10LQg0L3QsCDQkNC90LrQtdGC0LAgLSAi0JzQsNC70LrRgyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC30LAg0KHRgtCw0YLQuNGB0YLQuNC60LAg0L3QsCDQkNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC30LAg0JTQtdGC0LDQu9C10L0g0L/RgNC40LrQsNC3INC90LAg0JDQvdC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ9CQ0L3QutC10YLQuCDQvdC10LzQsCDQtNCwINCx0LjQtNC1INC40YHQv9GA0LDRgtC10L3QuCDQtNC+INC60L7QvdGE0LjQs9GD0YDQuNGA0LDQvdC4INC1LdC/0L7RiNGC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwINCw0L3QutC10YLQsNGC0LAsINC90LAg0L/RgNC40LzQtdGAOiBTdXJ2ZXkjLCBNeVN1cnZleSMuINCh0YLQsNC90LTQsNGA0LTQvdC+INC1IFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAn0JzQvtC00YPQu9CwINC90LAg0KLQuNC60LXRgiDQt9CwINCw0LLRgtC+0LzQsNGC0YHQutC+INC/0YDQsNGc0LDRmtC1INC90LAg0LDQvdC60LXRgtC90LggZS1tYWlsINCx0LDRgNCw0ZrQsCDQtNC+INC60LvQuNC10L3RgtC40YLQtSDQsNC60L4g0YLQuNC60LXRgtC+0YIg0LUg0LfQsNGC0LLQvtGA0LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om1zX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0J1YXQgU3VydmV5IEJhcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnUGVuZ2VuYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnUGVueWlhc2F0YW4gUGVuZ2VuYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0JhZGFuIFBlbWJlcml0YWh1YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnSmVuaXMgVGlja2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcHRpb24gZGFsYW1hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWRpdCBNYWtsdW1hdCBVbXVtJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdCBTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnQW5kYSBkaSBzaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQZW55aWFzYXRhbiBTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnVGFtYmFoIFNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1RhaXAgc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ0phd2FwYW4gZGlwZXJsdWthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ1RpYWRhIHNvYWxhbiB5YW5nIGRpc2ltcGFuIHVudHVrIGthamlhbiBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnU29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ0phd2FwYW4gZGlwZXJsdWthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnQXBhYmlsYSBhbmRhIHN1ZGFoIHNlbGVzYWkgbWVuZ3ViYWggc29hbGFuIGthamkgc2VsaWRpayBoYW55YSB0dXR1cCBza3JpbiBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0IFNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ2tlbWJhbGkga2VwYWRhIHNvYWxhbi1zb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnU29hbGFuOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ0phd2FwYW4gS2VtdW5na2luYW4gVW50dWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ1RhbWJhaCBKYXdhYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ1RpYWRhIGphd2FwYW4geWFuZyBkaXNpbXBhbiB1bnR1ayBzb2FsYW4gaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnSW5pIHRpZGFrIG1lbXB1bnlhaSBiZWJlcmFwYSBqYXdhcGFuLCB0ZXh0YXJlYSBha2FuIGRpcGFwYXJrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdCBKYXdhcGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ2tlbWJhbGkgdW50dWsgbWVuZ2VkaXQgc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdKYXdhcGFuOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ01ha3NpbXVtIHNvYWwgc2VsaWRpayBkaXR1bmp1a2thbiBzZXRpYXAgaGFsYW1hbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnUGVtYmVyaXRhaHVhbiBQZW5naXJpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1RlcnRha2x1ayBQZW1iZXJpdGFodWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdEaXR1a2FyIGRlbmdhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdHYW1iYXJhbiBLZXNlbHVydWhhbiBTdGF0aXN0aWsgZGFyaXBhZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdKYWR1YWwgcGVybWludGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ01hc2EgSGFudGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ01hc2EgVW5kaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnTGloYXQgbWFrbHVtYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdQZW55aWFzYXRhbiBEZXRhaWxzIFN0YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ2tlbWJhbGkga2UgU3RhdGlzdGlrIGdhbWJhcmFuIGtlc2VsdXJ1aGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ01ha2x1bWF0IFVrdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ21lbmdoYW50YXIgcGVybWludGFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnZGl0ZXJpbWEga2FqaSBzZWxpZGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnUGVueWlhc2F0YW4gdGVycGVyaW5jaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnUGVya2hpZG1hdGFuIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnVWt1ciBLZXB1dHVzYW4gR3JhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnVGlhZGEgc3RhdCBrZXB1dHVzYW4uJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1BlbnlpYXNhdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnU2lsYSBqYXdhYiBzb2FsYW4tc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ1R1bmp1a2thbiBqYXdhcGFuIHNheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0luaSBhZGFsYWggamF3YXBhbiBhbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1RhanVrIFVrdXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ1RhbWJhaCBVa3VyIEJhcnUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1VrdXIgRWRpdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnUGVueWlhc2F0YW4gRWRpdCBTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnWWEvVGlkYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKFNlbmFyYWkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0NoZWNrYm94IChTZW5hcmFpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0plbmlzIHNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ2xlbmdrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ3RpZGFrIGxlbmdrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkaXQgc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdCBKYXdhcGFuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1N0YXRpc3RpayBUaW5qYXVhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1N0YXRpc3RpayBUZXJwZXJpbmNoaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ1RpZGFrIGJvbGVoIG1lbmV0YXBrYW4gc3RhdHVzIGJhcnUhIFRpYWRhIHNvYWxhbiB5YW5nIGRpdGFrcmlma2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdzdGF0dXMgYmVydWJhaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLVRpYWRhIGdpbGlyYW4gZGlwaWxpaC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gVWJhaCBTdGF0dXMgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdJbmR1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnVGlkYWsgU2FoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdTdGF0dXMgYmFoYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0h1cmFpYW4gcGVueWlhc2F0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdEaWphd2FiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ1RpZGFrIGRpamF3YWInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ1RlcmltYSBrYXNpaCBhdGFzIG1ha2x1bSBiYWxhcyBhbmRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0thamkgc2VsaWRpayBpdHUgc2VsZXNhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnQW5kYSB0ZWxhaCBtZW5qYXdhYiBrYWppIHNlbGlkaWsuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdBZGFrYWggYW5kYSBiZW5hci1iZW5hciBpbmdpbiBtZW1hZGFtIHNvYWxhbiBpbmk/IFNFTVVBIGRhdGEgYmVya2FpdGFuIGFrYW4gSElMQU5HISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0FkYWthaCBhbmRhIGJlbmFyLWJlbmFyIGluZ2luIG1lbWFkYW0gamF3YXBhbiBpbmk/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ1NhdHUgTW9kdWwgUGVueWlhc2F0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1NhdHUgbW9kdWwgdW50dWsgbWVuZ2VkaXQgc29hbGFuIHRpbmphdWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2VtdWEgcGFyYW1ldGVyIGJhZ2kgb2JqZWsgVWt1ciBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdKdW1sYWggaGFyaSBzZWxlcGFzIG1lbmdoYW50YXIgbWVsIGthamkgc2VsaWRpayBkaSBtYW5hIHRpYWRhIHBlcm1pbnRhYW4ga2FqaSBzZWxpZGlrIGJhcnUgZGloYW50YXIga2VwYWRhIHBlbGFuZ2dhbiB5YW5nIHNhbWEuIE1lbWlsaWggMCBha2FuIHNlbnRpYXNhIG1lbmdoYW50YXIgbWVsIGthamkgc2VsaWRpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnRGVmYXVsdCBiYWRhbiB1bnR1ayBwZW1iZXJpdGFodWFuIGUtbWVsIGtlcGFkYSBwZWxhbmdnYW4gdGVudGFuZyBrYWppIHNlbGlkaWsgYmFydS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdQZW5naGFudGFyIGxhbGFpIHVudHVrIHBlbWJlcml0YWh1YW4gZS1tZWwga2VwYWRhIHBlbGFuZ2dhbiB0ZW50YW5nIGthamkgc2VsaWRpayBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdUZXJ0YWtsdWsgbGFsYWkgdW50dWsgcGVtYmVyaXRhaHVhbiBlLW1lbCBrZXBhZGEgcGVsYW5nZ2FuIHRlbnRhbmcga2FqaSBzZWxpZGlrIGJhcnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBtb2R1bCBnYW1iYXJhbiB1bnR1ayBtZW51bmp1a2thbiBwYW5kYW5nYW4geWFuZyBrZWNpbCBzZW5hcmFpIGthamkgc2VsaWRpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ganVtbGFoIG1ha3NpbXVtIGthamkgc2VsaWRpayB5YW5nIG1lbmRhcGF0IGRpaGFudGFyIGtlcGFkYSBwZWxhbmdnYW4gc2V0aWFwIDMwIGhhcmkuICgwIGJlcm1ha25hIHRpZGFrIG1ha3NpbXVtLCBzZW11YSBwZXJtaW50YWFuIGthamkgc2VsaWRpayBha2FuIGRpaGFudGFyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBqdW1sYWggamFtIHN1YXR1IHRpa2V0IGFrYW4gZGl0dXR1cCB1bnR1ayBtZW5jZXR1c2thbiBwZW5naGFudGFyYW4gc3VhdHUga2FqaSBzZWxpZGlrLCAoMCBiZXJlcnRpIG1lbmdoYW50YXIgc2VnZXJhIHNlbGVwYXMgcGVudXR1cGFuKS4gTm90YTogcGVuZ2hhbnRhcmFuIGthamkgc2VsaWRpayB0ZXJ0dW5kYSBhZGFsYWggZGlsYWt1YW4gb2xlaCBPVFJTIERhZW1vbiwgcGVuZ2FrdGlmYW4gc2ViZWx1bW55YSB0ZXRhcGFuIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZXRpbmdnaWFuIGxhbGFpIHVudHVrIHBlbm9udG9uIFRla3MgS2F5YSB1bnR1ayBlbGVtZW4gWm9vbSBVa3VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcnVhbmdhbiBtZW51bmp1a2thbiBkYWxhbSBnYW1iYXJhbiBrYWppYW4uUGlsaWhhbiBpbmkgdGlkYWsgbWVtcHVueWFpIGtlc2FuIGtlIGF0YXMga2VkdWR1a2FuIHRpYW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnRGF5YWthbiBhdGF1IG55YWhkYXlha2FuIFVuZGkgUGFwYXIgRGF0YSBza3JpbiBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtIHVudHVrIG1lbnVuanVra2FuIGRhdGEgaGFzaWwga2FqaWFuIHRlcnRlbnR1IGFwYWJpbGEgcGVsYW5nZ2FuIGN1YmEgdW50dWsgbWVuamF3YWIga2FqaSBzZWxpZGlrIGthbGkga2VkdWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnTWVtYm9sZWhrYW4gYXRhdSBtZWx1bXB1aGthbiBtZW5naGFudGFyIHNlbWFrYW4ga2VhZGFhbiB1bnR1ayBwZXJraGlkbWF0YW4gaXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ01lbWJvbGVoa2FuIGF0YXUgbWVsdW1wdWhrYW4gbWVuZ2hhbnRhciBzZW1ha2FuIGtlYWRhYW4gdW50dWsgamVuaXMgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JhaGFnaWFuIGRlcGFuIHBlbmRhZnRhcmFuIG1vZHVsIHVudHVrIG1lbmFtYmFoIGthamkgc2VsaWRpayBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmFoYWdpYW4gZGVwYW4gcGVuZGFmdGFyYW4gbW9kdWwgdW50dWsgbWVueXVudGluZyBrYWppIHNlbGlkaWsgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCYWhhZ2lhbiBEZXBhbiBwZW5kYWZ0YXJhbiBtb2R1bCBzdGF0aXN0aWsga2FqaWFuIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCBwZW5kYWZ0YXJhbiBtb2R1bCB1bnR1ayB6b29tIGthamkgc2VsaWRpayBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnRnJvbnRlbmQgcGVuZGFmdGFyYW4gbW9kdWwgYmFnaSBvYmplayBVa3VyIEF3YW0gZGkga2F3YXNhbiBVa3VyIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdKaWthIHBlcmxhd2FuYW4gcmVnZXggaW5pLCB0aWFkYSBrYWppYW4gcGVsYW5nZ2FuIGFrYW4gZGloYW50YXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBoYWxhbWFuIChkaSBtYW5hIGthamkgc2VsaWRpayBkaXR1bmp1a2thbikgZ2FtYmFyYW4ga2FqaWFuIGtlY2lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ1BlbnlpYXNhdGFuIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW55dW50aW5nIGthamkgc2VsaWRpayBkYWxhbSBwYXBhcmFuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbnl1bnRpbmcgc29hbGFuIGthamkgc2VsaWRpayBkYWxhbSBwYXBhcmFuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsga2VtYmFsaSBrZSBwYXBhcmFuIHp1bSBrYWppIHNlbGlkaWsgYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayB6dW0gbWFrbHVtYXQgc3RhdGlzdGlrIGthamkgc2VsaWRpayBkYWxhbSBwYXBhcmFuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnTWFrbHVtYXQgc3RhdGlzdGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ01vZHVsIFRhbWJhaCBTb2FsIFNlbGlkaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ0thamkgc2VsaWRpayBzdW50aW5nYW4gbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdVa3VyIFRpbmphdWFuIEhhZCAiS2VjaWwiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnS2FqaSBzZWxpZGlrIE1vZHVsIFN0YXRpc3Rpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnUGVueWlhc2F0YW4gWm9vbSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ1VrdXIgdGlkYWsgYWthbiBkaWhhbnRhciBrZSBhbGFtYXQgZS1tZWwgeWFuZyBkaWtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnUGVuZ2VjYW0gdW50dWsga2FqaSBzZWxpZGlrLCBtaXNhbG55YSBQZW55aWFzYXRhbiAjIE15U3VydmV5ICMuIExhbGFpIGFkYWxhaCBQZW55aWFzYXRhbiMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnVGlrZXQgbW9kdWwgYWNhcmEgdW50dWsgbWVuZ2hhbnRhciBwZXJtaW50YWFuIGUtbWVsIHNlY2FyYSBhdXRvbWF0aWsga2FqaSBzZWxpZGlrIGtlcGFkYSBwZWxhbmdnYW4gamlrYSB0aWtldCBkaXR1dHVwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdQZW5jZXR1cyBtZW5naGFudGFyIHBlcm1vaG9uYW4gc29hbCBzZWxpZGlrIGRpdGFuZ2d1aGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5iX05PX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0xhZyBueSBzcMO4cnJldW5kZXJzw7hrZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1a3Nqb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ01lbGRpbmcgaSB2YXJzZWwtZS1wb3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1Nha3N0eXBlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0ludGVybiBiZXNrcml2ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnUmVkaWdlciBnZW5lcmVsbCBpbmZvcm1hc2pvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ1JlZGlnZXIgc3DDuHJzbcOlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdEdSBlciBoZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1Nww7hyc23DpWwgdGlsIHNww7hycmV1bmRlcnPDuGtlbHNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdMZWdnIHRpbCBzcMO4cnNtw6VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnU2tyaXYgaW5uIHNww7hyc23DpWxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdJbmdlbiBzcMO4cnNtw6VsIGxhZ3JldCBmb3IgZGVubmUgc3DDuHJyZXVuZGVyc8O4a2Vsc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1Nww7hyc23DpWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ1JlZGlnZXIgc3DDuHJzbcOlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3RpbGJha2UgdGlsIHNww7hyc23DpWxlbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTXVsaWdlIHN2YXJhbHRlcm5hdGl2ZXIgZm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdMZWdnIHRpbCBzdmFyYWx0ZXJuYXRpdmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdEZXR0ZSBzcMO4cnNtw6VsZXQgaGFyIGlra2UgbXVsaWdoZXQgZm9yIHN2YXJhbHRlcm5hdGl2ZXIuIEhlciB2aWwgZGV0IGt1biBibGkgdmlzdCBlbiB0ZWtzdGJva3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnUmVkaWdlciBzdmFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ2fDpSB0aWxiYWtlIGZvciDDpSByZWRpZ2VyZSBzcMO4cnNtw6VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ0F2c2VuZGVyIGF2IHZhcnNlbC1lLXBvc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdUaXR0ZWwgaSB2YXJzZWwtZS1wb3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdFbmRyZXQgYXYnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFiZWxsZm9yZXNww7hyc2VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVGlkIHNlbmR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ1RpZCBzdmFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxqc3RhdGlzdGlrayBmb3Igc3DDuHJyZXVuZGVyc8O4a2Vsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ2fDpSB0aWxiYWtlIHRpbCBzdGF0aXN0aWtrb3ZlcnNpa3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2pvbiBvbSBzcMO4cnJldW5kZXJzw7hrZWxzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NlbmR0ZSBmb3Jlc3DDuHJzbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdNb3R0YXR0ZSBzcMO4cnJldW5kZXJzw7hrZWxzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdEZXRhbGplciBvbSBzcMO4cnJldW5kZXJzw7hrZWxzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmlzayBmcmVtc3RpbGxpbmcgYXYgc3ZhcmVuZSBpIHNww7hycmV1bmRlcnPDuGtlbHNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnSW5nZW4gcmVzdWx0YXRlcic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdTcMO4cnJldW5kZXJzw7hrZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnUmVkaWdlciBzcMO4cnJldW5kZXJzw7hrZWxzZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnUmVkaWdlciBzcMO4cnNtw6VsIHRpbCBzcMO4cnJldW5kZXJzw7hrZWxzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVN0YXRzLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1N0YXRpc3Rpa2tvdmVyc2lrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdVZ3lsZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ0VuIG1vZHVsIGZvciBzcMO4cnJldW5kZXJzw7hrZWxzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VuIG1vZHVsIGZvciDDpSByZWRpZ2VyZSBzcMO4cnJldW5kZXJzw7hrZWxzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1N0YW5kYXJkIG1lbGRpbmcgaSB2YXJzZWwtZS1wb3N0IHRpbCBrdW5kZXIgb20gZW4gbnkgc3DDuHJyZXVuZGVyc8O4a2Vsc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnU3RhbmRhcmQgYXZzZW5kZXIgaSB2YXJzZWwtZS1wb3N0IHRpbCBrdW5kZXIgb20gZW4gbnkgc3DDuHJyZXVuZGVyc8O4a2Vsc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1N0YW5kYXJkIG92ZXJza3JpZnQgaSB2YXJzZWwtZS1wb3N0IHRpbCBrdW5kZXIgb20gZW4gbnkgc3DDuHJyZXVuZGVyc8O4a2Vsc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdIdmlzIGRlbm5lIHJlZ2V4ZW4gc3RlbW1lciwgdmlsIGRldCBpa2tlIGJsaSBzZW5kdCB1dCBlbiBzcMO4cnJldW5kZXJzw7hrZWxzZSB0aWwga3VuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnU3RhbmRhcmQgaWRlbnRpZmlrYXRvciBmb3IgZW4gdW5kZXJzw7hrbHNlLCBmLmVrcy4gU3DDuHJyZXVuZGVyc8O4a2Vsc2UjLCBNaW5TcMO4cnJldW5kZXJzw7hrZWxzZSMuIFN0YW5kYXJkIGVyIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Om5sX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ05pZXV3ZSBlbnF1w6p0ZSBhYW5tYWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1Y3RpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWN0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdCb2R5IHRleHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlja2V0IHR5cGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnSW50ZXJuZSBvbXNjaHJpanZpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0Jld2VyayBhbGdlbWVuZSBpbmZvcm1hdGllJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnQmV3ZXJrIHZyYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdIaWVyIGJlbnQgdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnVnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ1ZyYWFnIHRvZXZvZWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1ZyYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1ZlcnBsaWNodCBhbnR3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnRXIgemlqbiBnZWVuIHZyYWdlbiBvcGdlc2xhZ2VuIHZvb3IgZGV6ZSBlbnF1w6p0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1ZyYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1ZlcnBsaWNodCBBbnR3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0Jld2VyayB2cmFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ2dhIHRlcnVnIG5hYXIgZGUgdnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1ZyYWFnOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01vZ2VsaWprZSBhbnR3b29yZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBbnR3b29yZCB0b2V2b2VnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdHZWVuIGFudHdvb3JkIG9wZ2VzbGFnZW4gdm9vciBkZXplIHZyYWFnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRGV6ZSBoZWVmdCBuaWV0IG1lZXJkZXJlIGFudHdvb3JkZW4uIEVyIHphbCBlZW4gdGVrc3R2YWsgZ2V0b29uZCB3b3JkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnQW50d29vcmQgYmV3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnZ2EgdGVydWcgbmFhciBkZSB2cmFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnQW50d29vcmQ6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTWF4LiBnZXRvb25kZSBvbmRlcnpvZWtlbiBwZXIgcGFnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdBZnplbmRlciBub3RpZmljYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ09uZGVyd2VycCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnR2V3aWp6aWdkIGRvb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnRGV0YWlsb3ZlcnppY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVmVyem9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVmVyc3R1dXJkIG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0luZ2V2dWxkIG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdaaWUgRGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFpbG92ZXJ6aWNodCBzdGF0aXN0aWVrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ2dhIHRlcnVnIG5hYXIgaGV0IG92ZXJ6aWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdEZXRhaWxzIGVucXXDqnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdWZXJzdHV1cmRlIHZlcnpvZWtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnT250dmFuZ2VuIGVucXXDqnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFpbHMgZW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnVGlja2V0IFNlcnZpY2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnUmVzdWx0YXRlbiAoZ3JhZmllayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ0dlZW4gcmVzdWx0YXRlbi4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnRW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdCZWFudHdvb3JkdCB1IGRlIHZvbGdlbmRlIHZyYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdUb29uIG1pam4gYW50d29vcmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnRGl0IHppam4gdXcgYW50d29vcmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdFbnF1w6p0ZXRpdGVsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdOaWV1d2UgZW5xdcOqdGUgdG9ldm9lZ2VuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdCZXdlcmsgZW5xdcOqdGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0Jld2VyayB2cmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnSmEvTmVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ0tldXplcm9uZGplIChsaWpzdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnU2VsZWN0aWV2YWsgKGxpanN0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1ZyYWFndHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ1ZvbGxlZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdPbnZvbGxlZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdCZXdlcmsgdnJhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdCZXdlcmsgYW50d29vcmQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnU3RhdGlzdGlla2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnRGV0YWlsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnS2FuIHN0YXR1cyBuaWV0IHdpanppZ2VuLCB2b2VnIGVlcnN0IHZyYWdlbiB0b2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ1N0YXR1cyBiaWpnZXdlcmt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIEdlZW4gcmlqIGdlc2VsZWN0ZWVyZCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIFN0YXR1cyB3aWp6aWdlbiAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01hc3Rlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnT25nZWxkaWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05pZXV3ZSBTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnT21zY2hyaWp2aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnYmVhbnR3b29yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICduaWV0IGJlYW50d29vcmQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0JlZGFua3Qgdm9vciB1dyBmZWVkYmFjay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdEZSBlbnF1w6p0ZSBpcyBpbmdlc3R1dXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdVIGhlZWZ0IGRlemUgZW5xdcOqdGUgYWwgYmVhbnR3b29yZC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ1dlZXQgdSB6ZWtlciBkYXQgdSBkZXplIHZyYWFnIHdpbHQgdmVyd2lqZGVyZW4/IEFMTEUgZ2Vhc3NvY2llZXJkZSBkYXRhIHphbCB2ZXJsb3JlbiBnYWFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ1dlZXQgdSB6ZWtlciBkYXQgdSBkaXQgYW50d29vcmQgd2lsdCB2ZXJ3aWpkZXJlbj8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRWVuIG1vZHVsZSBvbSBlbnF1w6p0ZXMgdGUgb25kZXJob3VkZW4gZW4gdGUgdmVyc3R1cmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFZW4gbW9kdWxlIG9tIGVucXXDqnRlcyB0ZSBvbmRlcmhvdWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdTdGF0cyBEZXRhaWxzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnBsX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1V0d8Ozcnogbm93xIUgYW5raWV0xJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnV3Byb3dhZHplbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdXc3TEmXAgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ1RyZcWbxIcgcG93aWFkb21pZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUeXB5IHpnxYJvc3plxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdXZXduxJl0cnpueSBvcGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICdXYXJ1bmtpIGtsaWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICdXeWJpZXJ6IHfFgmHFm2Npd2/Fm2NpIGtsaWVudGEgYWJ5IGRvZGHEhyB3YXJ1bmVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ0tsdWN6IGFua2lldHkgcHVibGljem5laic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJ1ByenlrxYJhZG93YSBhbmtpZXRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWR5dHVqIGluZm9ybWFjamUgb2fDs2xuZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkeXR1aiBweXRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ0plc3RlxZsgdHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1B5dGFuaWEgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdEb2RhaiBweXRhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnV3Byb3dhZMW6IHB5dGFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnV3ltYWdhbmEgb2Rwb3dpZWTFuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0JyYWsgcHl0YcWEIHphcGlzYW55Y2ggdyB0ZWogYW5raWVjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUHl0YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdXeW1hZ2FuYSBvZHBvd2llZMW6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdLaWVkeSB6YWtvxYRjenlzeiBlZHljasSZIHB5dGHFhCBhbmtpZXR5IHBvIHByb3N0dSB6YW1rbmlqIHRvIG9rbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnWmFta25paiB0byBva25vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZHl0dWogcHl0YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3Bvd3LDs3QgZG8gcHl0YcWEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1B5dGFuaWU6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTW/FvGxpd2Ugb2Rwb3dpZWR6aSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnRG9kYWogb2Rwb3dpZWTFuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ0JyYWsgemFwaXNhbnljaCBvZHBvd2llZHppIG5hIHRvIHB5dGFuaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdOaWUgcG9zaWFkYSB3aWVsdSBvZHBvd2llZHppLCBixJlkemllIHd5xZt3aWV0bGFuZSBwb2xlIHRla3N0b3dlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkeXR1aiBvZHBvd2llZMW6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3Bvd3LDs3QgZG8gZWR5Y2ppIHB5dGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ09kcG93aWVkejonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnT3BjamUgcHJ6ZWdsxIVkdSBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICdDemFzIHV0d29yemVuaWEgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJ0JleiBvZ3JhbmljemXFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnVHlsa28gYW5raWV0eSB1dHdvcnpvbmUgbWnEmWR6eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdNYWtzLiBsaWN6YmEgd3nFm3dpZXRsYW55Y2ggYW5raWV0IG5hIHN0cm9uxJknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ05hZGF3Y2EgcG93aWFkb21pZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1RlbWF0IHBvd2lhZG9taWVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ1ptaWVuaW9uZSBwcnpleic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdQcnplZ2zEhWQgc3RhdHlzdHlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsYSDFvMSFZGHFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnWmF6bmFjeiB3c3p5c3RraWUgxbzEhWRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ0N6YXMgd3lzxYJhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0N6YXMgZ8WCb3Nvd2FuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJ1phem5hY3ogdG8gxbzEhWRhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnWm9iYWN6IHN6Y3plZ8OzxYJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ1VzdcWEIHN0YXR5c3R5a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ1N6Y3plZ8OzxYJ5IHN0YXR5c3R5a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ1dzdGVjeiBkbyBwcnplZ2zEhWR1IHN0YXR5c3R5a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ1BvcHJ6ZWRuaSBnxYJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICdOYXN0xJlwbnkgZ8WCb3MnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNqZSBvIGFua2llY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdXeXPFgmFuZSDFvMSFZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ090cnp5bWFuZSBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnU3pjemVnw7PFgnkgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdaZ8WCb3N6ZW5pZSBVc8WCdWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdXeWtyZXMgd3luaWvDs3cgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnQnJhayB3eW5pa8OzdyBhbmtpZXR5Lic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdBbmtpZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUHJvc3rEmSBvZHBvd2llZHppZcSHIG5hIHRlIHB5dGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnUG9rYcW8IG1vamUgb2Rwb3dpZWR6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnT3RvIFR3b2plIG9kcG93aWVkemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVHl0dcWCIGFua2lldHknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0RvZGFqIG5vd8SFIGFua2lldMSZJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ05pZSBtYXN6IHVwcmF3bmllxYQgZG8gdGVqIGFua2lldHkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJ05pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgYW5raWV0eSBTdXJ2ZXlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdFZHljamEgYW5raWV0eSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICdOaWUgbWFzeiB1cHJhd25pZcWEIGRvIHRlaiBhbmtpZXR5IGx1YiBweXRhbmlhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ05pZSBtYXN6IHVwcmF3bmllxYQgZG8gdGVqIGFua2lldHksIHB5dGFuaWEgbHViIG9kcG93aWVkemkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkeWNqYSBweXRhxYQgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdUYWsvTmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ1JhZGlvIChMaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnUG9sZSB3eWJvcnUgKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1R5cCBweXRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnS29tcGxldG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdOaWVrb21wbGV0bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkeWNqYSBweXRhxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdFZHljamEgb2Rwb3dpZWR6aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdTdGF0eXN0eWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICdOaWUgbWFzeiB1cHJhd25pZcWEIGRvIHRlaiBhbmtpZXR5IGx1YiBzemN6ZWfDs8WCw7N3IHN0YXR5c3R5a2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1N6Y3plZ8OzxYJ5IHN0YXR5c3R5a2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdOaWUgbW/FvG5hIHptaWVuacSHIHN0YW51ISBCcmFrIHpkZWZpbmlvd2FueWNoIHB5dGHFhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICdOaWUgbW/FvG5hIHptaWVuacSHIHN0YW51ISBQeXRhbmllIG5pZWtvbXBsZXRuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnWm1pZW5pb25vIHN0YW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gTmllIHd5YnJhbm8ga29sZWpraSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0gTmllIHd5YnJhbm8gdHlwdSB6Z8WCb3N6ZW5pYSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0gTmllIHd5YnJhbm8gemfFgm9zemVuaWEgdXPFgnVnIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIFptaWXFhCBzdGFuIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnTmFkcnrEmWRueSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnTmllYWt0dWFsbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05vd3kgc3Rhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdPcGlzIGFua2lldHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdvZHBvd2llZHppYW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25pZSBvZHBvd2llZHppYW5vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdEemnEmWt1asSZbXkgemEgd3lwZcWCbmllbmllIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQW5raWV0YSB6YWtvxYRjem9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnV2lhZG9tb8WbxIcgYW5raWV0eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ01vZHXFgiBuaWUgd8WCxIVjem9ueS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICdUYSBmdW5rY2pvbmFsbm/Fm8SHIG5pZSBqZXN0IHfFgsSFY3pvbmEuIFByb3N6xJkgc2tvbnRha3R1aiBzacSZwqB6IGFkbWluaXN0cmF0b3JlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ0LFgsSFZCBhbmtpZXR5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnTmllcHJhd2lkxYJvd3kga2x1Y3ogYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJ1dwcm93YWR6b255IGtsdWN6IGFua2lldHkgamVzdCBuaWVwcmF3aWTFgm93eS4gSmXFm2xpIHRyYWZpxYJlxZsgdHV0YWogcHJ6eSBwb21vY3kgbGlua3UsIGJ5xIcgbW/FvGUgamVzdCBvbiBuaWVha3R1YWxueSBsdWIgbmllcHJhd2lkxYJvd3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnV3luaWsgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnRGFuZSB3eW5pa293ZSBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdKdcW8IG9kcG93aWVkemlhxYJlxZsgbmEgdMSZIGFua2lldMSZLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnTGlzdGEgYW5raWV0JzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0byBweXRhbmllPyBXc3p5c3RraWUgendpxIV6YW5lIGRhbmUgYsSZZMSFIFVTVU5JxJhURSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICdDenkgbmEgcGV3bm8gY2hjZXN6IHVzdW7EhcSHIHTEmSBvZHBvd2llZMW6Pyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdNb2R1xYIgYW5raWV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnTW9kdcWCIGRvIGVkeWNqaSBweXRhxYQgYW5raWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3N6eXN0a2llIHBhcmFtZXRyeSBkbGEgYW5raWV0IHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdMaWN6YmEgZG5pIHBvIGt0w7NyeWNoIG5hc3TEhXBpIHd5c8WCYW5pZSDFvMSFZGFuaWEgd3lwZcWCbmllbmlhIGFua2lldHkuIFdwcm93YWR6ZW5pZSAiMCIgc3Bvd29kdWplIHd5c8WCYW5pZSBlLW1haWxhIHphd3N6ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnRG9tecWbbG5hIGJ1ZG93YSBpbmZvcm1hY2ppIGRsIHXFvHl0a293bmlrYSBvZG5vxZtuaWUgbm93ZWogYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdEb215xZtsbnkgbmFkYXdjYSBpbmZvcm1hY2ppIG8gbm93ZWogYW5raWVjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0RvbXnFm2xueSB0ZW1hdCBpbmZvcm1hY2ppIG8gbm93ZWogYW5raWV0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmbml1amUgbW9kdcWCIHByemVnbMSFZHUgd3nFm3dpZXRsYW5pYSBsaXN0IGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnT2tyZcWbbGEgZ3J1cHksIGt0w7NyZSBtYWrEhSBkb3N0xJlwIGRvIHptaWFueSBzdGF0dXPDs3cgYW5raWV0LiBUYWJlbGEgamVzdCBkb215xZtsbmllIHB1c3RhIGkgYWdlbmNpIHplIHdzenlzdGtpY2ggZ3J1cCBtb2fEhSB6bWllbmlhxIcgc3RhdHVzeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBtYWtzeW1hbG7EhSBsaWN6YsSZIGFua2lldCB3eXN5xYJhbml1IGRvIEtsaWVudGEgdyBjacSFZ3UgMzAgZG5pLiAoMCBvem5hY3phIGJyYWsgb2dyYW5pY3plbmlhLCB3c3p5c3RraWUgxbzEhWRhbmlhIGLEmWTEhSB3eXN5xYJhbmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnVXN0YWxhIGxpY3pixJkgZ29kemluIGt0w7NyZSBtdXN6xIUgbWluxIXEhyBvZCB6YW1rbmnEmWNpYSB6Z8WCb3N6ZW5pYSBkbyB3eXPFgmFuaWEgYW5raWV0eSAoMCBvem5hY3phIGJlenp3xYJvY3puxIUgd3lzecWCa8SZIHByenkgemFteWthbml1IHpnxYJvc3plbmlhKS4gVXdhZ2E6IG9ww7PFum5pb25lIHd5c3nFgmFuaWUgYW5raWV0eSBqZXN0IHJlYWxpem93YW5lIHByemV6IERlbW9uYSBPVFJTLCBwbyB1cHJ6ZWRuaWVqIGFrdHl3YWNqaSB3IHVzdGF3aWVuaWFjaDogXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvbXnFm2xuxIUgd3lzb2tvxZvEhyB3aWRva8OzdyBSaWNodGV4dCBkbGEgZWxlbWVudMOzdyBTdXJ2ZXlab29tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pdWplIG1ha3N5bWFsbsSFIHd5c29rb8WbxIcgd2lkb2vDs3cgUmljaHRleHQgZGxhIGVsZW1lbnTDs3cgU3VydmV5Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3aWRvY3puZSBrb2x1bW55IHcgcHJ6ZWdsxIVkemllIGFua2lldC4gVGEgb3BjamEgbmllIHdwxYJ5d2EgbmEgcG96eWNqxJkga29sdW1uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnRWR5dHVqIGluZm9ybWFjamUgb2fDs2xuZSBhbmtpZXR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnRWR5dHVqIHB5dGFuaWEgYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnV8WCxIVjeiBsdWIgd3nFgsSFY3ogZWtyYW4gU2hvd1ZvdGVEYXRhIHcgaW50ZXJmZWpzaWUgcHVibGljem55bSBhYnkgcG9rYXphxIcgd3luaWtpIGFua2lldHkgZ2R5IGtsaWVudCBwcsOzYnVqZSBvZHBvd2llZHppZcSHIG5hIGFraWV0xJkgZHJ1Z2kgcmF6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ1fFgsSFY3phIGx1YiB3ecWCxIVjemEgc3ByYXdkemFuaWUgd2FydW5rdSB3eXN5xYJraSBkbGEgdXPFgnVnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdXxYLEhWN6YSBsdWIgd3nFgsSFY3phIHNwcmF3ZHphbmllIHdhcnVua3Ugd3lzecWCa2kgZGxhIHR5cHUgemfFgm9zemVuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHXFgiBmcm9udGVuZCByZWplc3RydWrEhWN5IGRvZGF3YW5pZSBhbmtpZXQgdyBwYW5lbHUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdcWCIGZyb250ZW5kIHJlamVzdHJ1asSFY3kgZWR5Y2rEmSBhbmtpZXQgdyBwYW5lbHUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHXFgiBmcm9udGVuZCByZWplc3RydWrEhWN5IHN0YXR5c3R5a8SZIGFua2lldCB3IHBhbmVsdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1xYIgZnJvbnRlbmQgcmVqZXN0cnVqxIVjeSBwb2RnbMSFZCBhbmtpZXQgdyBwYW5lbHUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTW9kdcWCIGZyb250ZW5kIHJlamVzdHJ1asSFY3kgb2JpZWt0IFB1YmxpY1N1cnZleSB3IG9ic3phcnplIHB1YmxpY3pueW0gYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ0dkeSB0byB3eXJhxbxlbmllIHJlZ3VsYXJuZSBqZXN0IHNwZcWCbmlvbmUsIG5pZSB6b3N0YW5pZSB3eXPFgmFuYSDFvGFkbmEgYW5raWV0YSBkbyBrbGllbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIHN0cm9uIChuYSBrdMOzcnljaCBwb2thenl3YW5lIHPEhSBhbmtpZXR5KSBkbGEgbWHFgmVnbyBwcnplZ2zEhWR1IGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdBbmtpZXRhIHB1YmxpY3puYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIGxpbmsgdyBtZW51IGRvIGVkeWNqaSBhbmtpZXR5IHcgamVqIHByenlibGnFvG9ueW0gd2lkb2t1IHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIGxpbmsgdyBtZW51IGRvIGVkeWNqaSBweXRhxYQgYW5raWV0eSB3IGplaiBwcnp5YmxpxbxvbnltIHdpZG9rdSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIHcgbWVudSBsaW5rIHdzdGVjeiB3IHdpZG9rdSBwcnp5YmxpxbxvbnltIGFua2lldHkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG9rYXp1amUgbGluayB3IG1lbnUgZG8gcHJ6eWJsacW8YW5pYSBzemN6ZWfDs8WCw7N3IHN0YXR5c3R5ayBhbmtpZXR5IHcgamVqIHdpZG9rdSBwcnp5YmxpxbxvbnltIHcgaW50ZXJmZWpzaWUgYWdlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdTemN6ZWfDs8WCeSBzdGF0eXN0eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTW9kdcWCIGRvZGF3YW5pYSBhbmtpZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNb2R1xYIgZWR5Y2ppIGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdCAibWHFgmVnbyIgcHJ6ZWdsxIVkdSBhbmtpZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1xYIgc3RhdHlzdHlrIGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ1BvZGdsxIVkIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnTGltaXQgaWxvxZtjaSBhbmtpZXQgdyAibWHFgnltIiBwcnplZ2zEhWR6aWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnQW5raWV0eSBuaWUgYsSZZMSFIHd5c3nFgmFuZSBuYSBza29uZmlndXJvd2FuZSBhZHJlc3kgZW1haWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdJZGVudHlmaWthY2phIGRsYSBhbmtpZXR5LCBucC4gU3VydmV5IywgTXlTdXJ2ZXkjLiBEb215xZtsbmllOiBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ1pkYXJ6ZW5pZSB6Z8WCb3N6ZW5pYSB3eXN5xYJhIGF1dG9tYXR5Y3puaWUgZS1tYWlsYSB6IHByb8WbYsSFIG8gd3lwZcWCbmllbmllIGFua2lldHkgcG8gemFta25pxJljaXUgemfFgm9zemVuaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ1d5endhbGFjeiBvcMOzxbpuaW9uZWogd3lzecWCa2kgcHLDs8WbYiBvIHd5cGXFgm5pZW5pZSBhbmtpZXR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ1BvZGdsxIVkIHN6Y3plZ8OzxYLDs3cgc3RhdHlzdHlrLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X0JSX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyaWFyIE5vdmEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1w6fDo28gZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDb3JwbyBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG9zIGRlIENoYW1hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8OjbyBJbnRlcm5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICdDb25kacOnw7VlcyBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnUG9yIGZhdm9yLCBlc2NvbGhhIHVtYSBwcm9wcmllZGFkZSBkbyBjbGllbnRlIHBhcmEgYWRpY2lvbmFyIHVtYSBjb25kacOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ0NoYXZlIGRlIHBlc3F1aXNhIHDDumJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnRXhlbXBsbyBkZSBwZXNxdWlzYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkaXRhciBJbmZvcm1hw6fDtWVzIEdlcmFpcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnVm9jw6ogZXN0YSBhcXVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQZXJndW50YXMgZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWRpY2lvbmFyIFBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmV2YSBhIHBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1Jlc3Bvc3RhIHJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ05lbmh1bWEgcXVlc3TDo28gc2FsdmEgcGFyYSBlc3RhIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1Blcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jlc3Bvc3RhIFJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnUXVhbmRvIHZvY8OqIHRlcm1pbmFyIGRlIGVkaXRhciBhcyBxdWVzdMO1ZXMgZGEgcGVzcXVpc2EsIGFwZW5hcyBmZWNoZSBhIHRlbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnRmVjaGFyIGVzdGEgamFuZWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0YXIgUGVyZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICd2b2x0YXIgw6BzIHBlcmd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdRdWVzdMOjbzonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdQb3Nzw612ZWlzIFJlc3Bvc3RhcyBQYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBZGljaW9uYXIgUmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdOw6NvIGjDoSByZXNwb3N0YXMgc2FsdmFzIHBhcmEgZXN0YSBxdWVzdMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRXN0YSBwZXJndW50YSBuw6NvIHBvc3N1aSB2w6FyaWFzIHJlc3Bvc3RhcywgdW1hIMOhcmVhIGRlIHRleHRvIHNlcsOhIG1vc3RyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdGFyIFJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3ZvbHRhciBwYXJhIGVkaXRhciBwZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnUmVzcG9zdGE6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ09ww6fDtWVzIGRlIHZpc8OjbyBnZXJhbCBkYSBwZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICdCdXNjYXMgbm9zIGF0cmlidXRvcyBOw7ptZXJvLCBUw610dWxvLCBJbnRyb2R1w6fDo28sIERlc2NyacOnw6NvLCBFbnZpYWRvciBkZSBOb3RpZmljYcOnw6NvLCBBc3N1bnRvIGRlIE5vdGlmaWNhw6fDo28gZSBDb3JwbyBkZSBOb3RpZmljYcOnw6NvLCBzb2JyZXNjcmV2ZW5kbyBhdHJpYnV0b3MgZGUgbWVzbW8gbm9tZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnSG9yYSBkZSBDcmlhw6fDo28gZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICdTZW0gcmVzdHJpw6fDtWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICdBcGVuYXMgcGVzcXVpc2FzIGNyaWFkYXMgZW50cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnUXRkLiBtw6F4LiBkZSBwZXNxdWlzYXMgZXhpYmlkYXMgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1JlbWV0ZW50ZSBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQXNzdW50byBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYWRvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdSZXN1bW8gZGUgRXN0YXTDrXN0aWNhcyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsYSBkZSBSZXF1aXNpw6fDtWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICdTZWxlY2lvbmFyIHRvZG9zIG9zIHBlZGlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnSG9yYSBkZSBFbnZpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdIb3JhIGRvIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJ1NlbGVjaW9uYXIgZXN0ZSBwZWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdWZXIgZGV0YWxoZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnRXhjbHVpciBlc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdEZXRhbGhlcyBkZSBFc3RhdMOtc3RpY2FzIGRhIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2b2x0YXIgYW8gcmVzdW1vIGRlIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJ1ZvdG8gYW50ZXJpb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnUHLDs3hpbW8gdm90byc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDo28gZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NvbGljaXRhw6fDtWVzIGVudmlhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdTb2xpY2l0YcOnw7VlcyByZWNlYmlkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdEZXRhbGhlcyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdTZXJ2acOnbyBkbyBjaGFtYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3LDoWZpY29zIGRlIFJlc3VsdGFkb3MgZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ1NlbSByZXN1bHRhZG9zIGRlIGVzdGF0w61zdGljYXMuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1Blc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUG9yIGZhdm9yLCByZXNwb25kYSBlc3RhcyBxdWVzdMO1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnTW9zdHJhciBtaW5oYXMgcmVzcG9zdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdFc3RhcyBzw6NvIHN1YXMgcmVzcG9zdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1TDrXR1bG8gZGEgUGVzcXVpc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0FkaWNpb25hciBOb3ZhIFBlc3F1aXNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ1ZvY8OqIG7Do28gdGVtIHBlcm1pc3PDo28gcGFyYSBlc3RhIHBlc3F1aXNhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICdOZW5odW0gSUQgZGEgUGVzcXVpc2EgaW5mb3JtYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBQZXNxdWlzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICdWb2PDqiBuw6NvIHRlbSBwZXJtaXNzw6NvIHBhcmEgZXN0YSBwZXNxdWlzYSBvdSBwZXJndW50YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICdWb2PDqiBuw6NvIHRlbSBwZXJtaXNzw6NvIHBhcmEgZXN0YSBwZXNxdWlzYSwgcGVyZ3VudGEgb3UgcmVzcG9zdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQZXJndW50YXMgZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnU2ltL07Do28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdDaGVja2JveCAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJ1BvbnR1YcOnw6NvIGzDrXF1aWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUaXBvIGRlIHF1ZXN0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnQ29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0luY29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkacOnw6NvIGRlIFBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpw6fDo28gZGUgUmVzcG9zdGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnUmVzdW1vIGRlIEVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJ1ZvY8OqIG7Do28gdGVtIHBlcm1pc3PDo28gcGFyYSBlc3RhIHBlc3F1aXNhIG91IGRldGFsaGVzIGRlIGVzdGF0w61zdGljYXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ0RldGFsaGUgZGEgZXN0YXTDrXN0aWNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgY29uZmlndXJhciBvIG5vdm8gZXN0YWRvLiBOZW5odW1hIHF1ZXN0w6NvIGRlZmluaWRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJ07Do28gw6kgcG9zc8OtdmVsIGRlZmluaXIgbm92byBzdGF0dXMhIFBlcmd1bnRhcyBpbmNvbXBsZXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnRXN0YWRvIGFsdGVyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICdOZW5odW1hIGZpbGEgc2VsZWNpb25hZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnLSBOZW5odW0gdGlwbyBkZSBjaGFtYWRvIHNlbGVjaW9uYWRvIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLSBOZW5odW0gc2VydmnDp28gZGUgY2hhbWFkbyBzZWxlY2lvbmFkbyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBBbHRlcmFyIEVzdGFkbyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01lc3RyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnSW52w6FsaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOb3ZvIGVzdGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8OjbyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ1Jlc3BvbmRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnTsOjbyByZXNwb25kaWRvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdPYnJpZ2FkbyBwZWxhIHN1YSBwYXJ0aWNpcGHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdBIHBlc3F1aXNhIGVzdMOhIGZpbmFsaXphZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJ01lbnNhZ2VtIGRhIFBlc3F1aXNhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnTcOzZHVsbyBuw6NvIGhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnRXN0YSBmdW5jaW9uYWxpZGFkZSBuw6NvIGVzdMOhIGF0aXZhLCBwb3IgZmF2b3IgY29udGF0ZSBzZXUgYWRtaW5pc3RyYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ0Vycm8gbmEgUGVzcXVpc2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICdDaGF2ZSBkYSBwZXNxdWlzYSBpbnbDoWxpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICdBIGNoYXZlIGRhIHBlc3F1aXNhIGluc2VyaWRhIMOpIGludsOhbGlkYSwgc2Ugdm9jw6ogYWNlc3NvdSB1bSBsaW5rLCB0YWx2ZXogZWxlIGVzdGVqYSBvYnNvbGV0byBvdSBxdWVicmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICdWb3RvIGRhIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICdEYWRvcyBkbyB2b3RvIGRhIHBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdWb2PDqiBqw6EgcmVzcG9uZGV1IGEgcGVzcXVpc2EuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICdMaXN0YSBkZSBlbnF1ZXRlcyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ1ZvY8OqIHJlYWxtZW50ZSBkZXNlamEgZXhjbHVpciBlc3NhIHF1ZXN0w6NvPyBUT0RPUyBvcyBkYWRvcyBhc3NvY2lhZG9zIHNlcsOjbyBQRVJESURPUyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICdWb2PDqiByZWFsbWVudGUgcXVlciBleGNsdWlyIGVzc2EgcmVzcG9zdGEgPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbSBNw7NkdWxvIGRlIFBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW0gbcOzZHVsbyBwYXJhIGVkaXRhciBwZXJndW50YXMgZGUgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9kb3Mgb3MgcGFyw6JtZXRyb3MgcGFyYSBhIFBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ0ludGVydmFsbyBkZSBkaWFzIGFww7NzIGVudmlhciB1bSBlLW1haWwgZGUgcGVzcXVpc2EgZGVudHJvIGRvIHF1YWwgbm92YXMgcmVxdWlzacOnw7VlcyBkZSBwZXNxdWlzYSBuw6NvIHNlcsOjbyBlbnZpYWRhcyBwYXJhIG8gbWVzbW8gY2xpZW50ZS4gU2VsZWNpb25hciAwIGlyw6Egc2VtcHJlIGVudmlhciBvIGUtbWFpbCBkZSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQ29ycG8gcGFkcsOjbyBwYXJhIG8gZS1tYWlsIGRlIG5vdGlmaWNhw6fDo28gZGUgY2xpZW50ZXMgc29icmUgbm92YSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdSZW1ldGVudGUgcGFkcsOjbyBwYXJhIG8gZS1tYWlsIGRlIG5vdGlmaWNhw6fDo28gZGUgY2xpZW50ZXMgc29icmUgbm92YSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQXNzdW50byBwYWRyw6NvIHBhcmEgbyBlLW1haWwgZGUgbm90aWZpY2HDp8OjbyBkZSBjbGllbnRlcyBzb2JyZSBub3ZhIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgbyBtw7NkdWxvIGRlIHZpc8OjbyBnZXJhbCBwYXJhIGV4aWJpciBhIHZpc8OjbyBwZXF1ZW5hIGRlIHVtYSBsaXN0YSBkZSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnRGVmaW5lIGdydXBvcyBxdWUgdMOqbSBwZXJtaXNzw6NvIHBhcmEgYWx0ZXJhciBvIHN0YXR1cyBkYSBwZXNxdWlzYS4gIEEgbWF0cml6IGVzdMOhIHZhemlhIHBvciBwYWRyw6NvIGUgYWdlbnRlcyBkZSB0b2RvcyBvcyBncnVwb3MgcG9kZW0gYWx0ZXJhciBvIHN0YXR1cyBkYSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICdEZWZpbmUgc2UgYXMgc29saWNpdGHDp8O1ZXMgZGUgcGVxdWlzYSBzZXLDo28gZW52aWFkYXMgYXBlbmFzIHBhcmEgY2xpZW50ZXMgcmVhaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdEZWZpbmUgYSBtw6F4aW1hIHF1YW50aWRhZGUgZGUgcGVzcXVpc2FzIHF1ZSBzw6NvIGVudmlhZGFzIHBhcmEgdW0gY2xpZW50ZSBhIGNhZGEgMzAgZGlhcyAoMCBzaWduaWZpY2EgcXVlIG7Do28gaMOhIG3DoXhpbW87IHRvZGFzIGFzIHJlcXVpc2nDp8O1ZXMgZGUgcGVzcXVpc2Egc2Vyw6NvIGVudmlhZGFzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHF1YW50aWRhZGUgZGUgaG9yYXMgcXVlIHVtIGNoYW1hZG8gZGV2ZSBlc3RhciBmZWNoYWRvIHBhcmEgZW52aW8gZGUgdW1hIHBlc3F1aXNhICgwIHNpZ25pZmljYSBlbnZpYXIgaW1lZGlhdGFtZW50ZSBhcMOzcyBmZWNoYW1lbnRvKS4gTm90YTogdW0gZW52aW8gdGFyZGlvIGRlIHBlc3F1aXNhIMOpIGZlaXRvIHBlbG8gT1RSUyBEYWVtb24sIHNvYiBhdGl2YcOnw6NvIGRhIGNvbmZpZ3VyYcOnw6NvICBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkYSBsaXN0YSBzdXNwZW5zYSBwYXJhIGNyaWHDp8OjbyBkZSBjb25kacOnw7VlcyBkZSBlbnZpbyAoMD0+IGluYXRpdm8sIDE9PiBhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBwYWRyw6NvIHBhcmEgUmljaHRleHQgbm9zIGVsZW1lbnRvcyBkYSBTdXJ2ZXlab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJ0RlZmluZSBvcyBncnVwb3MgKHJ3KSBxdWUgcG9kZW0gZXhjbHVpciBhcyBlc3RhdMOtc3RpY2FzIGRhIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmUgYSBhbHR1cmEgbcOheGltYSBwYXJhIHZpc3VhbGl6YcOnw7VlcyBkbyBSaWNodGV4dCBub3MgZWxlbWVudG9zIGRvIFN1cnZleVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBleGliaWRhcyBuYSB2aXPDo28gZ2VyYWwgZGUgcGVzcXVpc2EuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGFzIGNvbHVuYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICdEZXRlcm1pbmEgc2UgbyBtw7NkdWxvIGRlIGVzdGF0w61zdGljYXMgcG9kZSBnZXJhciBsaXN0YXMgZGUgcGVzcXVpc2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ0VkaXRhciBpbmZvcm1hw6fDo28gZ2VyYWwgZGEgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFZGl0YXIgYXMgcXVlc3TDtWVzIGRhIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdIYWJpbGl0YSBvdSBkZXNhYmlsaXRhIGEgdGVsYSBTaG93Vm90ZURhdGEgbmEgaW50ZXJmYWNlIHDDumJsaWNhIHBhcmEgZXhpYmlyIGRhZG9zIGRvIHJlc3VsdGFkbyBkZSB1bWEgcGVzcXVpc2EgZXNwZWPDrWZpY2EgcXVhbmRvIG8gY2xpZW50ZSB0ZW50YSByZXNwb25kZXIgdW1hIHBlc3F1aXNhIHBlbGEgc2VndW5kYSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnQXRpdmEgb3UgZGVzYXRpdmEgdmVyaWZpY2HDp8OjbyBkZSBjb25kacOnw7VlcyBkZSBzZXJ2acOnb3MgcGFyYSBlbnZpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBdGl2YSBvdSBkZXNhdGl2YSB2ZXJpZmljYcOnw6NvIGRlIGNvbmRpw6fDtWVzIGRlIHRpcG9zIHBhcmEgZW52aW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgYWRpw6fDo28gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgZWRpw6fDo28gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGRlIGludGVyZmFjZSBwYXJhIGVzdGF0w61zdGljYSBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBkZSBpbnRlcmZhY2UgcGFyYSBkZXRhbGhlcyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBkZSBpbnRlcmZhY2UgcGFyYSBvIG9iamV0byBQdWJsaWNTdXJ2ZXkgbmEgw6FyZWEgZGUgcGVzcXVpc2EgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdTZSBlc3RhIHJlZ2V4IGZvciBlbmNvbnRyYWRhLCBuZW5odW1hIHBlc3F1aXNhIHNlcsOhIGVudmlhZG8gcGFyYSBvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnTGltaXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYXMgcMOhZ2luYXMgKG5hcyBxdWFpcyBhcyBwZXNxdWlzYXMgc8OjbyBtb3N0cmFkYXMpIGRhIHZpc8OjbyBnZXJhbCBkZSBwZXNxdWlzYSBwZXF1ZW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ1Blc3F1aXNhIFDDumJsaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ1Jlc3VsdGFkb3MgbWFpcyBhbnRpZ29zIHF1ZSBhIHF1YW50aWRhZGUgY29uZmlndXJhZGEgZGUgZGlhcyBzZXLDo28gZXhjbHXDrWRvcy4gTm90YTogZXhjbHVhIHJlc3VsdGFkb3MgZmVpdG9zIHBlbG8gRGFlbW9uIE9UUlMsIGF0aXZhw6fDo28gcHLDqXZpYSBkYSBjb25maWd1cmHDp8OjbyBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW1hIHBlc3F1aXNhIGVtIHN1YSB2aXPDo28gZGUgZGV0YWxoZXMgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBlZGl0YXIgcXVlc3TDtWVzIGRlIHBlc3F1aXNhIGVtIHN1YSB2aXPDo28gZGUgZGV0YWxoZXMgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtIGxpbmsgbm8gbWVudSBwYXJhIHZvbHRhciBkYSB2aXPDo28gZGUgZGV0YWxoZXMgZGUgdW1hIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW0gbGluayBubyBtZW51IHBhcmEgZGV0YWxoYXIgYXMgZXN0YXTDrXN0aWNhcyBkYSBwZXNxdWlzYSBlbSBzdWEgdmlzw6NvIGRlIGRldGFsaGVzIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGhlcyBkYSBlc3RhdMOtc3RpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBhZGnDp8OjbyBkZSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgZWRpw6fDo28gZGUgcGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGEgVmlzw6NvIEdlcmFsIGRlIFBlc3F1aXNhICJQZXF1ZW5hIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgRXN0YXTDrXN0aWNhcyBkZSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBEZXRhbGhlIGRlIFBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJ0xpbWl0ZSBkZSBwZXNxdWlzYSBwb3IgcMOhZ2luYSBwYXJhIFZpc8OjbyBHZXJhbCBkYSBwZXNxdWlzYSAiUGVxdWVubyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnQXMgcGVzcXVpc2FzIG7Do28gc2Vyw6EgZW52aWFkYXMgcGFyYSBvcyBlbmRlcmXDp29zIGRlIGUtbWFpbCBjb25maWd1cmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdPIGlkZW50aWZpY2Fkb3IgZGUgdW1hIHBlc3F1aXNhLCBleC4gUGVzcXVpc2EjLCBNaW5oYVBlc3F1aXNhIy4gTyBwYWRyw6NvIMOpIFBlc3F1aXNhIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBjaGFtYWRvIHBhcmEgZW52aWFyIHJlcXVpc2nDp8O1ZXMgZGUgcGVzcXVpc2EgdmlhIGUtbWFpbCBhdXRvbWF0aWNhbWVudGUgcGFyYSBjbGllbnRlcyBzZSB1bSBjaGFtYWRvIGZvciBmZWNoYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnQWNpb25hciBvcyByZXN1bHRhZG9zIGRhIGV4Y2x1c8OjbyAoIGluY2x1aW5kbyBkYWRvcyBkZSB2b3RvIGUgc29saWNpdGHDp8O1ZXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICdEaXNwYXJhciBvIGVudmlvIGRlIHNvbGljaXRhw6fDtWVzIGRlIHBlc3F1aXNhIGF0cmFzYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICdab29tIGVtIGRldGFsaGVzIGRlIGVzdGF0w61zdGljYXMuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnB0X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ0NyaWFyIG5vdm8gcXVlc3Rpb27DoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1w6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHXDp8OjbyBkZSBxdWVzdGlvbsOhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnQ29ycG8gZGEgTm90aWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUaXBvcyBkZSB0aWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8OjbyBpbnRlcm5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICdDb25kacOnw7VlcyBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnUG9yIGZhdm9yLCBlc2NvbGhhIHVtYSBwcm9wcmllZGFkZSBkbyBjbGllbnRlIHBhcmEgYWRpY2lvbmFyIHVtYSBjb25kacOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ0NoYXZlIHDDumJsaWNhIGRvIHF1ZXN0aW9uw6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICdFeGVtcGxvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWRpdGFyIEluZm9ybWHDp8O1ZXMgR2VyYWlzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFBlcmd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdFc3TDoSBhcXVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQZXJndW50YXMgZG8gcXVlc3Rpb27DoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdBZGljaW9uYXIgUXVlc3TDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdJbnRyb2R1emEgYSBxdWVzdMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXNwb3N0YSBvYnJpZ2F0w7NyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdOZW5odW1hIHBlcmd1bnRhIGRlZmluaWRhIHBhcmEgZXN0ZSBxdWVzdGlvbsOhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1F1ZXN0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jlc3Bvc3RhIE9icmlnYXTDs3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnUXVhbmRvIHRlcm1pbmFyIGRlIGVkaXRhciBhcyBwZXJndW50YXMgZG8gcXVlc3Rpb27DoXJpbywgYXBlbmFzIGZlY2hlIGEgamFuZWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ0ZlY2hhciBlc3RhIGphbmVsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnRWRpdGFyIFF1ZXN0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAndm9sdGFyIMOgcyBwZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnUXVlc3TDo286JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnUG9zc8OtdmVpcyBSZXNwb3N0YXMgUGFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWRpY2lvbmFyIHJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnTsOjbyBow6EgcmVzcG9zdGFzIGRlZmluaWRhcyBwYXJhIGVzdGEgcGVyZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0VzdGEgcGVyZ3VudGEgbsOjbyBwb3NzdWkgdsOhcmlhcyByZXNwb3N0YXMsIHVtYSDDoXJlYSBkZSB0ZXh0byBzZXLDoSBtb3N0cmFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkaXRhciByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICd2b2x0YXIgcGFyYSBlZGl0YXIgcGVyZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ1Jlc3Bvc3RhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ09ww6fDtWVzIGRhIHZpc8OjbyBnZXJhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICdQcm9jdXJhIG5vcyBhdHJpYnV0b3MgTsO6bWVybywgVMOtdHVsbywgSW50cm9kdcOnw6NvLCBEZXNjcmnDp8OjbywgRW52aWFkb3IgZGUgTm90aWZpY2HDp8OjbywgQXNzdW50byBkZSBOb3RpZmljYcOnw6NvIGUgQ29ycG8gZGUgTm90aWZpY2HDp8Ojbywgc29icmVzY3JldmVuZG8gYXRyaWJ1dG9zIGNvbSBvIG1lc21vIG5vbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJ0hvcmEgZGUgY3JpYcOnw6NvIGRvIHF1ZXN0aW9uw6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICdTZW0gcmVzdHJpw6fDtWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICdBcGVuYXMgcXVlc3Rpb27DoXJpb3MgY3JpYWRvcyBlbnRyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdRdGQuIG3DoXguIGRlIHF1ZXN0aW9uw6FyaW9zIGV4aWJpZG9zIHBvciBww6FnaW5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdSZW1ldGVudGUgZGEgTm90aWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ0Fzc3VudG8gZGEgTm90aWZpY2HDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnTW9kaWZpY2FkbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnUmVzdW1vIGRlIEVzdGF0w61zdGljYXMgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJlbGEgZGUgUGVkaWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnU2VsZWNpb25hciB0b2RvcyBvcyBwZWRpZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ0hvcmEgZGUgRW52aW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnSG9yYSBkbyBWb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICdTZWxlY2lvbmFyIGVzdGUgcGVkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmVyIGRldGFsaGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ0FwYWdhciBlc3RhdMOtc3RpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsaGVzIGRhIGVzdGF0w61zdGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAndm9sdGFyIGFvIHJlc3VtbyBkZSBlc3RhdMOtc3RpY2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICdWb3RvIGFudGVyaW9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ1Byw7N4aW1vIHZvdG8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGFjZXJjYSBkbyBxdWVzdGlvbsOhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdQZWRpZG9zIGVudmlhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdQZWRpZG9zIHJlY2ViaWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsaGVzIGRvIHF1ZXN0aW9uw6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnU2VydmnDp29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3LDoWZpY28gZGUgcmVzdWx0YWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnU2VtIHJlc3VsdGFkb3MuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1F1ZXN0aW9uw6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQb3IgZmF2b3IsIHJlc3BvbmRhIGVzdGFzIHF1ZXN0w7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdNb3N0cmFyIG1pbmhhcyByZXNwb3N0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHPDo28gc3VhcyByZXNwb3N0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVMOtdHVsbyBkYSBQZXNxdWlzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnQWRpY2lvbmFyIE5vdm8gUXVlc3Rpb27DoXJpbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICdOw6NvIHRlbSBwZXJtaXNzw6NvIHBhcmEgZXN0ZSBxdWVzdGlvbsOhcmlvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICdJRCBkbyBxdWVzdGlvbsOhcmlvIGVtIGZhbHRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBRdWVzdGlvbsOhcmlvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ07Do28gdGVtIHBlcm1pc3PDo28gcGFyYSBlc3RlIHF1ZXN0aW9uw6FyaW8gb3UgcGVyZ3VudGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnTsOjbyB0ZW0gcGVybWlzc8OjbyBwYXJhIGVzdGUgcXVlc3Rpb27DoXJpbywgcGVyZ3VudGEgb3UgcmVzcG9zdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQZXJndW50YXMgZGUgUXVlc3Rpb27DqXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdTaW0vTsOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdSYWRpbyAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0NhaXhhIGRlIHZlcmlmaWNhw6fDo28gKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcG8gZGUgcXVlc3TDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb25jbHXDrWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdJbmNvbXBsZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdFZGl0YXIgUGVyZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdGFyIFJlc3Bvc3Rhcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdSZXN1bW8gZGUgZXN0YXTDrXN0aWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAnTsOjbyB0ZW0gcGVybWlzc8OjbyBwYXJhIGVzdGUgcXVlc3Rpb27DoXJpbyBvdSBkZXRhbGhlcyBkZSBlc3RhdMOtc3RpY2FzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICdEZXRhbGhlIGRhIGVzdGF0w61zdGljYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ07Do28gw6kgcG9zc8OtdmVsIGRlZmluaXIgbm92byBlc3RhZG8hIE5lbmh1bWEgcGVyZ3VudGEgZGVmaW5pZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnTsOjbyDDqSBwb3Nzw612ZWwgZGVmaW5pciBub3ZvIGVzdGFkbyEgUGVyZ3VudGFzIGluY29tcGxldGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdFc3RhZG8gYWx0ZXJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJ05lbmh1bWEgZmlsYSBzZWxlY2lvbmFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICctIE5lbmh1bSB0aXBvIGRlIHRpY2tldCBzZWxlY2lvbmFkbyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0gTmVuaHVtIHNlcnZpw6dvIGRlIHRpY2tldCBzZWxlY2lvbmFkbyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBBbHRlcmFyIEVzdGFkbyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ01lc3RyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnSW52w6FsaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOb3ZvIGVzdGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8OjbyBkZSBxdWVzdGlvbsOhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnUmVzcG9uZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdOw6NvIHJlc3BvbmRpZG8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ09icmlnYWRvIHBlbGEgc3VhIHBhcnRpY2lwYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0EgcGVzcXVpc2EgZXN0w6EgZmluYWxpemFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnTWVuc2FnZW0gZGEgUGVzcXVpc2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdNw7NkdWxvIG7Do28gaGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICdFc3RhIGZ1bmNpb25hbGlkYWRlIG7Do28gZXN0w6EgYXRpdmEsIHBvciBmYXZvciBjb250YXRlIHNldSBhZG1pbmlzdHJhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnRXJybyBuYSBQZXNxdWlzYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ0NoYXZlIGRhIHBlc3F1aXNhIGludsOhbGlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJ0EgY2hhdmUgZGEgcGVzcXVpc2EgaW5zZXJpZGEgw6kgaW52w6FsaWRhLCBzZSB2b2PDqiBhY2Vzc291IHVtIGxpbmssIHRhbHZleiBlbGUgZXN0ZWphIG9ic29sZXRvIG91IHF1ZWJyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJ1ZvdG8gZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0RhZG9zIGRvIHZvdG8gZGEgcGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ1ZvY8OqIGrDoSByZXNwb25kZXUgYSBwZXNxdWlzYS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJ0xpc3RhIGRlIHF1ZXN0aW9uw6FyaW9zJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnVGVtIGEgY2VydGV6YSBxdWUgcHJldGVuZGUgYXBhZ2FyIGVzdGEgcGVyZ3VudGE/IFRPRE9TIG9zIGRhZG9zIGFzc29jaWFkb3Mgc2Vyw6NvIFBFUkRJRE9TISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ1RlbSBhIGNlcnRlemEgcXVlIHByZXRlbmRlIGFwYWdhciBlc3RhIHJlc3Bvc3RhPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbSBNw7NkdWxvIGRlIFF1ZXN0aW9uw6FyaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdVbSBtw7NkdWxvIHBhcmEgZWRpdGFyIHBlcmd1bnRhcyBkZSBxdWVzdGlvbsOhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RvZG9zIG9zIHBhcsOibWV0cm9zIGRvIFF1ZXN0aW9uw6FyaW8gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnSW50ZXJ2YWxvIGRlIGRpYXMgYXDDs3MgZW52aWFyIHVtIGUtbWFpbCBkZSBwZWRpZG8gZGVudHJvIGRvIHF1YWwgbm92b3MgcGVkaWRvcyBuw6NvIHNlcsOjbyBlbnZpYWRhcyBwYXJhIG8gbWVzbW8gY2xpZW50ZS4gU2VsZWNpb25hciAwIGlyw6Egc2VtcHJlIGVudmlhciBvIGUtbWFpbCBkZSBwZWRpZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NvcnBvIHBhZHLDo28gcGFyYSBvIGUtbWFpbCBkZSBub3RpZmljYcOnw6NvIGRlIGNsaWVudGVzIHNvYnJlIG5vdm8gcXVlc3Rpb27DoXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdSZW1ldGVudGUgcGFkcsOjbyBwYXJhIG8gZS1tYWlsIGRlIG5vdGlmaWNhw6fDo28gZGUgY2xpZW50ZXMgc29icmUgbm92byBxdWVzdGlvbsOhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBc3N1bnRvIHBhZHLDo28gcGFyYSBvIGUtbWFpbCBkZSBub3RpZmljYcOnw6NvIGRlIGNsaWVudGVzIHNvYnJlIG5vdm8gcXVlc3Rpb27DoXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIG8gbcOzZHVsbyBkZSB2aXPDo28gZ2VyYWwgcGFyYSBleGliaXIgYSB2aXPDo28gY29tcGFjdGEgZGUgdW1hIGxpc3RhIGRlIHF1ZXN0aW9uw6FyaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICdEZWZpbmUgZ3J1cG9zIHF1ZSB0w6ptIHBlcm1pc3PDo28gcGFyYSBhbHRlcmFyIG8gZXN0YWRvIGRvIHF1ZXN0aW9uw6FyaW8uICBBIG1hdHJpeiBlc3TDoSB2YXppYSBwb3IgcGFkcsOjbywgbG9nbywgYWdlbnRlcyBkZSB0b2RvcyBvcyBncnVwb3MgcG9kZW0gYWx0ZXJhciBvIGVzdGFkbyBkbyBxdWVzdGlvbsOhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ0RlZmluZSBzZSBvcyBwZWRpZG9zIGRlIHF1ZXN0aW9uw6FyaW8gc2Vyw6NvIGVudmlhZG9zIGFwZW5hcyBwYXJhIGNsaWVudGVzIHJlYWlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGEgcXVhbnRpZGFkZSBtw6F4aW1hIGRlIHF1ZXN0aW9uw6FyaW9zIHF1ZSBzw6NvIGVudmlhZG9zIHBhcmEgdW0gY2xpZW50ZSBhIGNhZGEgMzAgZGlhcyAoMCBzaWduaWZpY2EgcXVlIG7Do28gaMOhIG3DoXhpbW87IHRvZG9zIG9zIHBlZGlkb3MgZGUgcXVlc3Rpb27DoXJpbyBzZXLDo28gZW52aWFkb3MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnRGVmaW5lIGEgcXVhbnRpZGFkZSBkZSBob3JhcyBxdWUgdW0gdGlja2V0IGRldmUgZXN0YXIgZmVjaGFkbyBwYXJhIGVudmlhciB1bSBwZWRpZG8gZGUgcXVlc3Rpb27DoXJpbyAoMCBzaWduaWZpY2EgZW52aWFyIGltZWRpYXRhbWVudGUgYXDDs3MgZmVjaG8pLiBOb3RhOiB1bSBlbnZpbyB0YXJkaW8gZGUgcXVlc3Rpb27DoXJpbyDDqSBmZWl0byBwZWxvIE9UUlMgRGFlbW9uLCBzb2IgYXRpdmHDp8OjbyBkYSBjb25maWd1cmHDp8OjbyAgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGEgbGlzdGEgc3VzcGVuc2EgcGFyYSBjcmlhw6fDo28gZGUgY29uZGnDp8O1ZXMgZGUgZW52aW8gKDA9PiBpbmF0aXZvLCAxPT4gYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmUgYSBhbHR1cmEgcGFkcsOjbyBwYXJhIFJpY2h0ZXh0IG5vcyBlbGVtZW50b3MgZGEgU3VydmV5Wm9vbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICdEZWZpbmUgb3MgZ3J1cG9zIChydykgcXVlIHBvZGVtIGFwYWdhciBhcyBlc3RhdMOtc3RpY2FzIGRvIHF1ZXN0aW9uw6FyaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBtw6F4aW1hIHBhcmEgdmlzdWFsaXphw6fDtWVzIGRvIFJpY2h0ZXh0IG5vcyBlbGVtZW50b3MgZG8gU3VydmV5Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGV4aWJpZGFzIG5hIHZpc8OjbyBnZXJhbCBkbyBxdWVzdGlvbsOhcmlvLiBFc3RhIG9ww6fDo28gbsOjbyB0ZW0gZWZlaXRvIHNvYnJlIGEgcG9zacOnw6NvIGRhcyBjb2x1bmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnRGV0ZXJtaW5hIHNlIG8gbcOzZHVsbyBkZSBlc3RhdMOtc3RpY2FzIHBvZGUgZ2VyYXIgbGlzdGFzIGRlIHF1ZXN0aW9uw6FyaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ0VkaXRhciBpbmZvcm1hw6fDo28gZ2VyYWwgZG8gcXVlc3Rpb27DoXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VkaXRhciBhcyBxdWVzdMO1ZXMgZG8gcXVlc3Rpb27DoXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnSGFiaWxpdGEgb3UgZGVzYWJpbGl0YSBhIHRlbGEgU2hvd1ZvdGVEYXRhIG5hIGludGVyZmFjZSBww7pibGljYSBwYXJhIGV4aWJpciBkYWRvcyBkbyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIGVzcGVjw61maWNhIHF1YW5kbyBvIGNsaWVudGUgdGVudGEgcmVzcG9uZGVyIHVtYSBwZXNxdWlzYSBwZWxhIHNlZ3VuZGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0F0aXZhIG91IGRlc2F0aXZhIHZlcmlmaWNhw6fDo28gZGUgY29uZGnDp8O1ZXMgZGUgc2VydmnDp29zIHBhcmEgZW52aW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnQXRpdmEgb3UgZGVzYXRpdmEgdmVyaWZpY2HDp8OjbyBkZSBjb25kacOnw7VlcyBkZSB0aXBvcyBwYXJhIGVudmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgYWRpw6fDo28gZG8gcXVlc3Rpb27DoXJpbyBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0byBkZSBtw7NkdWxvIGRlIGludGVyZmFjZSBwYXJhIGVkacOnw6NvIGRvIHF1ZXN0aW9uw6FyaW8gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgZXN0YXTDrXN0aWNhIGRvIHF1ZXN0aW9uw6FyaW8gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdG8gZGUgbcOzZHVsbyBkZSBpbnRlcmZhY2UgcGFyYSBkZXRhbGhlcyBkZSBwZXNxdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBhdXRvIHJlZ2lzdG8gZGUgaW5xdcOpcml0b3MgZGUgY2xpZW50ZSBubyBpbnRlcmZhY2UgcMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NlIGVzdGEgcmVnZXggZm9yIGVuY29udHJhZGEsIG5lbmh1bSBxdWVzdGlvbsOhcmlvIHNlcsOhIGVudmlhZG8gcGFyYSBvIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnTGltaXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYXMgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBxdWVzdGlvbsOhcmlvcyBzw6NvIG1vc3RyYWRvcykgZGEgdmlzw6NvIGdlcmFsIGNvbXBhY3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ0lucXXDqXJpdG8gcMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bSBxdWVzdGlvbsOhcmlvIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW0gbGluayBubyBtZW51IHBhcmEgZWRpdGFyIHBlcmd1bnRhcyBkbyBxdWVzdGlvbsOhcmlvIG5hIGludGVyZmFjZSBkbyBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtIGxpbmsgbm8gbWVudSBwYXJhIHZvbHRhciBkYSB2aXPDo28gZGUgZGV0YWxoZXMgZGUgdW0gcXVlc3Rpb27DoXJpbyBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtIGxpbmsgbm8gbWVudSBwYXJhIGRldGFsaGFyIGFzIGVzdGF0w61zdGljYXMgZG8gcXVlc3Rpb27DoXJpbyBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRGV0YWxoZXMgZGEgZXN0YXTDrXN0aWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgYWRpw6fDo28gZGUgcXVlc3Rpb27DoXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgZWRpw6fDo28gZGUgcXVlc3Rpb27DoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSBWaXPDo28gR2VyYWwgZGUgUXVlc3Rpb27DoXJpbyAiUGVxdWVuYSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIEVzdGF0w61zdGljYXMgZGUgUXVlc3Rpb27DoXJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBEZXRhbGhlIGRlIFF1ZXN0aW9uw6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICdMaW1pdGUgZGUgcXVlc3Rpb27DoXJpb3MgcG9yIHDDoWdpbmEgbmEgVmlzw6NvIEdlcmFsIHBhcmEgYSB2aXN0YSAiUGVxdWVuYSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnT3MgcXVlc3Rpb27DoXJpb3MgbsOjbyBzZXLDo28gZW52aWFkb3MgcGFyYSBvcyBlbmRlcmXDp29zIGRlIGUtbWFpbCBjb25maWd1cmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdPIGlkZW50aWZpY2Fkb3IgZGUgdW0gcXVlc3Rpb27DoXJpbywgZXguIFF1ZXN0aW9uw6FyaW8jLCBNZXVRdWVzdGlvbsOhcmlvIy4gTyBwYWRyw6NvIMOpIFF1ZXN0aW9uw6FyaW8jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIHRpY2tldHMgcGFyYSBlbnZpYXIgcGVkaWRvcyBkZSBxdWVzdGlvbsOhcmlvIHZpYSBlLW1haWwgYXV0b21hdGljYW1lbnRlIHBhcmEgY2xpZW50ZXMgc2UgdW0gdGlja2V0IGZvciBmZWNoYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnQWNpb25hciBvcyByZXN1bHRhZG9zIGRhIGV4Y2x1c8OjbyAoIGluY2x1aW5kbyBkYWRvcyBkZSB2b3RvIGUgcGVkaWRvcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ0Rpc3BhcmFyIG8gZW52aW8gZGUgcGVkaWRvcyBkZSBxdWVzdGlvbsOhcmlvcyBhdHJhc2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnWm9vbSBlbSBkZXRhbGhlcyBkZSBlc3RhdMOtc3RpY2FzLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJvX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnJ1X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ9Ch0L7Qt9C00LDRgtGMINC90L7QstGL0Lkg0L7Qv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfQntC/0LjRgdCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICfQl9C90LDQutC+0LzRgdGC0LLQviDRgSDQvtC/0YDQvtGB0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ9Ci0LXQu9C+INGD0LLQtdC00L7QvNC70LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAn0KLQuNC/0Ysg0LfQsNGP0LLQvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAn0JLQvdGD0YLRgNC10L3QvdC10LUg0L7Qv9C40YHQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L7QsdGJ0YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINCy0L7Qv9GA0L7RgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ9CS0Ysg0LfQtNC10YHRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAn0JLQvtC/0YDQvtGB0Ysg0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ9CU0L7QsdCw0LLRgtGMINCy0L7Qv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ9CS0L7Qv9GA0L7RgSDQuCDRgtC40L8g0LLQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn0KLRgNC10LHRg9GO0YLRgdGPINC+0YLQstC10YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ9Ch0L7RhdGA0LDQvdC10L3Ri9GFINCy0L7Qv9GA0L7RgdC+0LIg0L3QtdGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ9CS0L7Qv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICfQotGA0LXQsdGD0Y7RgtGB0Y8g0J7RgtCy0LXRgtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfQn9C+INC+0LrQvtC90YfQsNC90LjQuCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINCy0L7Qv9GA0L7RgdC+0LIg0L7Qv9GA0L7RgdCwINC/0YDQvtGB0YLQviDQt9Cw0LrRgNC+0LnRgtC1INGN0YLQvtGCINGN0LrRgNCw0L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAn0JfQsNC60YDRi9GC0Ywg0Y3RgtC+INC+0LrQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstC+0L/RgNC+0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfQvdCw0LfQsNC0INC6INCy0L7Qv9GA0L7RgdCw0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn0JLQvtC/0YDQvtGBOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ9CS0L7Qt9C80L7QttC90YvQtSDQvtGC0LLQtdGC0Ysg0LTQu9GPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfQlNC+0LHQsNCy0LjRgtGMINC+0YLQstC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfQndC1INC30LDQtNCw0L3RiyDQstCw0YDQuNCw0L3RgtGLINC+0YLQstC10YLQvtCyINC00LvRjyDRjdGC0L7Qs9C+INCy0L7Qv9GA0L7RgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAn0K3RgtC+0YIg0LLQvtC/0YDQvtGBINC90LUg0L/RgNC10LTRg9GB0LzQsNGC0YDQuNCy0LDQtdGCINC90LXRgdC60L7Qu9GM0LrQviDQvtGC0LLQtdGC0L7Qsiwg0LHRg9C00LXRgiDQv9C+0LrQsNC30LDQvdC+INGC0LXQutGB0YLQvtCy0L7QtS90ZXh0YXJlYSDQv9C+0LvQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvtGC0LLQtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ9C90LDQt9Cw0LQg0Log0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjiDQstC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAn0J7RgtCy0LXRgjonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICfQnNCw0LrRgS4g0LrQvtC7LdCy0L4g0L7Qv9GA0L7RgdC+0LIg0L3QsCDRgdGC0YDQsNC90LjRhtGDJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfQntGC0L/RgNCw0LLQuNGC0LXQu9GMINGD0LLQtdC00L7QvNC70LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfQotC10LzQsCDRg9Cy0LXQtNC+0LzQu9C10L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICfQmNC30LzQtdC90LjQstGI0LjQuSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfQn9C+0LTRgNC+0LHQvdC+0YHRgtC4INC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ9Ci0LDQsdC70LjRhtCwINC+0YLQstC10YLQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn0JLRgNC10LzRjyDQvtGC0L/RgNCw0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ9CS0YDQtdC80Y8g0L7RgtCy0LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfQodC8LiDQv9C+0LTRgNC+0LHQvdC+0YHRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAn0J/QvtC00YDQvtCx0L3QvtGB0YLQuCDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ9C90LDQt9Cw0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40Y8g0L/QviDQvtC/0YDQvtGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ9Ce0YLQv9GA0LDQstC70LXQvdC90YvQtSDQt9Cw0L/RgNC+0YHRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn0J/QvtC70YPRh9C10L3QvdGL0LUg0L7Qv9GA0L7RgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn0JjQvdGE0L7RgNC80LDQuNGPINC/0L4g0L7Qv9GA0L7RgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ9Ch0LXRgNCy0LjRgdGLINC30LDRj9Cy0L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ9Cg0LXQt9GD0LvRjNGC0LDRgtGLINC+0L/RgNC+0YHQsCDQsiDQs9GA0LDRhNC40LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn0KHRgtCw0YLQuNGB0YLQuNC60Lgg0L3QtdGCLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICfQntC/0YDQvtGB0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICfQntGC0LLQtdGC0YzRgtC1INC90LAg0Y3RgtC4INCy0L7Qv9GA0L7RgdGLOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfQn9C+0LrQsNC30LDRgtGMINC80L7QuCDQvtGC0LLQtdGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ9CS0LDRiNC4INC+0YLQstC10YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfQndCw0LfQstCw0L3QuNC1INC+0L/RgNC+0YHQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAn0JTQvtCx0LDQstC40YLRjCDQvdC+0LLRi9C5INC+0L/RgNC+0YEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAn0KMg0LLQsNGBINC90LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0Y3RgtC+0LPQviDQvtC/0YDQvtGB0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC+0L/RgNC+0YEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAn0KMg0LLQsNGBINC90LXRgiDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0Y3RgtC+0LPQviDQvtC/0YDQvtGB0LAg0LjQu9C4INCy0L7Qv9GA0L7RgdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ9CjINCy0LDRgSDQvdC10YIg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINGN0YLQvtCz0L4g0L7Qv9GA0L7RgdCwLCDQstC+0L/RgNC+0YHQsCDQuNC70Lgg0L7RgtCy0LXRgtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstC+0L/RgNC+0YEg0LIg0L7Qv9GA0L7RgdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ9CU0LAv0J3QtdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ9Ci0L7Rh9C60LggKNCh0L/QuNGB0L7QuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn0JPQsNC70L7Rh9C60LggKNCh0L/QuNGB0L7QuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICfQotC40L8g0LLQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICfQl9Cw0LLQtdGA0YjQtdC90L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICfQndC10LfQsNCy0LXRgNGI0LXQvdC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LLQvtC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L7RgtCy0LXRgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICfQntCx0LfQvtGAINGB0YLQsNGC0LjRgdGC0LjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICfQoyDQstCw0YEg0L3QtdGCINGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDRjdGC0L7Qs9C+INC+0L/RgNC+0YHQsCDQuNC70Lgg0YHRgtCw0YLQuNGB0YLQuNC60LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ9Cf0L7QtNGA0L7QsdC90YvQuSDQvtGC0YfQtdGCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAn0J3QtdC70YzQt9GPINC30LDQtNCw0YLRjCDQvdC+0LLQvtC1INGB0L7RgdGC0L7Rj9C90LjQtSEg0J3QuNC60LDQutC40LUg0LLQvtC/0YDQvtGB0Ysg0L3QtSDQstGL0LTQtdC70LXQvdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC30LDQtNCw0YLRjCDQvdC+0LLRi9C5INGB0YLQsNGC0YPRgSEg0JLQvtC/0YDQvtGB0Ysg0L3QtSDQt9Cw0LLQtdGA0YjQtdC90YsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ9CY0LfQvNC10L3QuNGC0Ywg0YHQvtGB0YLQvtGP0L3QuNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctINCd0Lgg0L7QtNC90L7QuSDQvtGH0LXRgNC10LTQuCDQvdC1INCy0YvQsdGA0LDQvdC+IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAn0J3QtSDQstGL0LHRgNCw0L0g0YLQuNC/INC30LDRj9Cy0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICfQndC1INCy0YvQsdGA0LDQvSDRgdC10YDQstC40YEg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSDQmNC30LzQtdC90LjRgtGMINGB0L7RgdGC0L7Rj9C90LjQtSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ9CT0LvQsNCy0L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfQndC10LTQtdC50YHRgtCy0LjRgtC10LvRjNC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAn0J3QvtCy0L7QtSDRgdC+0YHRgtC+0Y/QvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICfQvtGC0LLQtdGC0LjQu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ9C90LUg0L7RgtCy0LXRgtC40LvQuCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAn0KHQv9Cw0YHQuNCx0L4g0LfQsCDQktCw0YjQuCDQvtGC0LLQtdGC0YsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAn0J7Qv9GA0L7RgSDQt9Cw0LLQtdGA0YjQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ9Cc0L7QtNGD0LvRjCDQvdC1INCy0LrQu9GO0YfQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ9Cd0LXQstC10YDQvdGL0Lkg0LrQvtC0INC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ9CS0Ysg0YPQttC1INC/0YDQvtGI0LvQuCDQvtC/0YDQvtGBLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAn0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLQvtGCINCy0L7Qv9GA0L7RgT8gINCS0KHQlSDRgdCy0Y/Qt9Cw0L3QvdGL0LUg0LTQsNC90L3Ri9C1INCx0YPQtNGD0YIg0J/QntCi0JXQoNCv0J3QqyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICfQktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INC20LXQu9Cw0LXRgtC1INGD0LTQsNC70LjRgtGMICDRjdGC0L7RgiDQvtGC0LLQtdGCPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C70Ywg0J7Qv9GA0L7RgdGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINCy0L7Qv9GA0L7RgdC+0LIg0LTQu9GPINC+0L/RgNC+0YHQvtCyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0YHQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINC+0LHRitC10LrRgtCwINCe0L/RgNC+0YHRiyDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC00L3QtdC5LCDQv9C+0YHQu9C1INC+0YLRgdGL0LvQutC4INC/0LjRgdC10Lwg0YEg0L7Qv9GA0L7RgdC+0LwsINCyINGC0LXRh9C10L3QuNC1INC60L7RgtC+0YDRi9GFINC90LjQutCw0LrQuNC1INC90L7QstGL0LUg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDQvtCxINC+0L/RgNC+0YHQtSDQvdC1INC/0L7RgdGL0LvQsNGO0YLRgdGPLCDQvtC00L3QvtC80YMg0Lgg0YLQvtC80YMg0LbQtSDQutC70LjQtdC90YLRgy4g0JLRi9Cx0L7RgCDQt9C90LDRh9C10L3QuNGPIDAg0YPQutCw0LfRi9Cy0LDQtdGCINCy0YHQtdCz0LTQsCDQv9C+0YHRi9C70LDRgtGMINC/0LjRgdGM0LzQviDRgSDQvtC/0YDQvtGB0L7QvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGC0LXQutGB0YIg0L/QuNGB0YzQvNCwINCyINC/0L7Rh9GC0L7QstC+0Lwg0YPQstC10LTQvtC80LvQtdC90LjQuCwg0L/QvtGB0YvQu9Cw0LXQvNC+0Lwg0LrQu9C40LXQvdGC0LDQvCwg0L4g0L3QvtCy0L7QvCDQvtC/0YDQvtGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0J7RgtC/0YDQsNCy0LjRgtC10LvRjCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLINCyINC90L7QstC+0Lwg0L7Qv9GA0L7RgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQotC10LzQsCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLINCyINC90L7QstC+0Lwg0L7Qv9GA0L7RgdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQvtC00YPQu9GMINC/0YDQvtGB0LzQvtGC0YDQsCDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyDRgdC/0LjRgdC60LAg0L7Qv9GA0L7RgdC+0LIg0LIgc21hbGwg0YTQvtGA0LzQsNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDQvtC/0YDQvtGB0L7QsiDQvtGC0YHRi9C70LDQtdC80YvRhSDQutC70LjQtdC90YLRgyDQt9CwINC60LDQttC00YvQtSAzMCDQtNC90LXQuS4gKCIwIiDQvtC30L3QsNGH0LDQtdGCLCDRh9GC0L4g0LLRgdC1INC30LDQv9GA0L7RgdGLINC+0L/RgNC+0YHQvtCyINCx0YPQtNGD0YIg0L7RgtGB0YvQu9Cw0YLRjNGB0Y8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LLRi9GB0L7RgtGDINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC+0LHQu9Cw0YHRgtC4INGE0L7RgNC80LDRgtC40YDQvtCy0LDQvdC90L7Qs9C+INGC0LXQutGB0YLQsCDQtNC70Y8g0Y3Qu9C10LzQtdC90YLQvtCyINC+0L/RgNC+0YHQsCDQv9GA0Lgg0L/QvtC00YDQvtCx0L3QvtC8INC/0YDQvtGB0LzQvtGC0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC/0LXRgNC10YfQtdC90Ywg0LrQvtC70L7QvdC+0LosINC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQsiDQvtCx0LfQvtGA0LUg0J7Qv9GA0L7RgdC+0LIuINCt0YLQvtGCINC/0LDRgNCw0LzQtdGC0YAg0L3QtSDQstC70LjRj9C10YIg0L3QsCDQv9C+0YDRj9C00L7QuiDQutC+0LvQvtC90L7Qui4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0J/RgNCw0LLQutCwINCy0L7Qv9GA0L7RgdC+0LIg0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQuNGC0LUg0LjQu9C4INC+0YLQutC70Y7Rh9C40YLRjCDQutC90L7Qv9C60YMgItCf0L7QutCw0LfQsNGC0Ywg0LzQvtC4INC+0YLQstC10YLRiyIsINGH0YLQvtCx0Ysg0L/QvtC60LDQt9Cw0YLRjCDQtNCw0L3QvdGL0LUg0L7Qv9GA0LXQtNC10LvQtdC90L3QvtCz0L4g0YDQtdC30YPQu9GM0YLQsNGC0LAg0L7Qv9GA0L7RgdCwLCDQutC+0LPQtNCwINC60LvQuNC10L3RgiDQv9C+0L/Ri9GC0LDQtdGC0YHRjyDQvtGC0LLQtdGC0LjRgtGMINC90LAg0L7Qv9GA0L7RgSDQstC+INCy0YLQvtGA0L7QuSDRgNCw0LcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAn0JLQutC70Y7Rh9C40YLRjCDQuNC70Lgg0L7RgtC60LvRjtGH0LjRgtGMINC/0YDQvtCy0LXRgNC60YMg0YPRgdC70L7QstC40Y8g0L7RgtC/0YDQsNCy0LrQuCDQtNC70Y8g0YHQtdGA0LLQuNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9C40YLRjCDQuNC70Lgg0L7RgtC60LvRjtGH0LjRgtGMINC/0YDQvtCy0LXRgNC60YMg0YPRgdC70L7QstC40Y8g0L7RgtC/0YDQsNCy0LrQuCDQtNC70Y8g0YLQuNC/0LAg0LfQsNGP0LLQutC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uINC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDQvtC/0YDQvtGB0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiDQtNC70Y8g0YDQtdC00LDQutGC0LjRgNC+0LLQsNC90LjRjyDQvtC/0YDQvtGB0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24g0LTQu9GPINC80L7QtNGD0LvRjyDQvtGC0YfQtdGC0L3QvtGB0YLQuCDQvtCxINC+0L/RgNC+0YHQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uINC00LvRjyDQv9C+0LTRgNC+0LHQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAg0L7Qv9GA0L7RgdCwINCyINC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24g0LTQu9GPINC+0LHRitC10LrRgtCwINCf0YPQsdC70LjRh9C90L7Qs9C+INC+0L/RgNC+0YHQsCDQsiDRgNCw0LfQtNC10LvQtSDQv9GD0LHQu9C40YfQvdGL0YUg0L7Qv9GA0L7RgdC+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICfQldGB0LvQuCDRjdGC0L4g0YDQtdCz0YPQu9GP0YDQvdC+0LUg0LLRi9GA0LDQttC10L3QuNC1INCy0LXRgNC90L4sINC+0L/RgNC+0YEg0LrQu9C40LXQvdGC0YMg0L3QtSDQv9C+0YHRi9C70LDQtdGC0YHRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0YHRgtGA0LDQvdC40YbRiyAo0L3QsCDQutC+0YLQvtGA0L7QuSDQvtGC0L7QsdGA0LDQttCw0Y7RgtGB0Y8g0L7Qv9GA0L7RgdGLKSDQv9GA0Lgg0L7QsdC30L7RgNC1INC+0L/RgNC+0YHQvtCyINCyIHNtYWxsINGE0L7RgNC80LDRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ9Ce0LHRidC10LTQvtGB0YLRg9C/0L3Ri9C5INC+0L/RgNC+0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INGA0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC+0L/RgNC+0YEg0L/RgNC4INC10LPQviDQv9C+0LTRgNC+0LHQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INGA0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINCy0L7Qv9GA0L7RgdGLINC+0L/RgNC+0YHQsCDQv9GA0Lgg0LXQs9C+INC/0L7QtNGA0L7QsdC90L7QvCDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDQstC10YDQvdGD0YLRjNGB0Y8g0L3QsNC30LDQtCDQv9GA0Lgg0L/RgNC+0YHQvNC+0YLRgNC1INC+0L/RgNC+0YHQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3Rjiwg0L/QvtC30LLQvtC70Y/RjtGJ0LjQuSDRg9Cy0LjQtNC10YLRjCDQv9C+0LTRgNC+0LHQvdC+0YHRgtC4INC+0YLRh9C10YLQsCDQvtCxINC+0L/RgNC+0YHQtSDQv9GA0Lgg0LXQs9C+INC00LXRgtCw0LvRjNC90L7QvCDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn0J/QvtC00YDQvtCx0L3QvtGB0YLQuCDQvtGC0YfQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQu9GMINCU0L7QsdCw0LLQu9C10L3QuNGPINC+0L/RgNC+0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LvRjCDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC+0L/RgNC+0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfQmtC+0LvQuNGH0LXRgdGC0LLQviDQt9Cw0L/QuNGB0LXQuSwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0L7Qv9GA0L7RgdC+0LIg0LIgIlNtYWxsIiDRhNC+0YDQvNCw0YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LvRjCDQv9C+0YHRgtGA0L7QtdC90LjRjyDQvtGC0YfQtdGC0L7QsiDQvtCxINC+0L/RgNC+0YHQsNGFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAn0JzQvtC00YPQu9GMINC/0L7QtNGA0L7QsdC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDQvtC/0YDQvtGB0L7Qsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICfQntC/0YDQvtGB0Ysg0L3QtSDQsdGD0LTRg9GCINC+0YLQv9GA0LDQstC70Y/RgtGM0YHRjyDQvdCwINGD0LrQsNC30LDQvdC90YvQtSDQv9C+0YfRgtC+0LLRi9C1INCw0LTRgNC10YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ9Ce0LHQvtC30L3QsNGH0LXQvdC40LUg0LTQu9GPINC40LTQtdC90YLQuNGE0LjQutCw0YbQuNC4INC+0L/RgNC+0YHQsCwg0L3QsNC/0YDQuNC80LXRgCwg0J7Qv9GA0L7RgeKEliwgU3VydmV5IywgTXlTdXJ2ZXkjLiDQn9C+INGD0LzQvtC70YfQsNC90LjRjiBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDRg9C/0YDQsNCy0LvQtdC90LjRjyDRgdC+0LHRi9GC0LjQtdC8INC00LvRjyDQt9Cw0Y/QstC60LgsINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4INC+0YLQv9GA0LDQstC70Y/RjtGJ0LjQuSDQv9C40YHRjNC80L4g0LrQu9C40LXQvdGC0YMg0YEg0L7Qv9GA0L7RgdC+0LwsINC/0YDQuCDQt9Cw0LrRgNGL0YLQuNC4INC30LDRj9Cy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAn0KLRgNC40LPQs9C10YAg0L7RgtC/0YDQsNCy0LrQuCDQt9Cw0LTQtdGA0LbQsNC90L3Ri9GFINC30LDQv9GA0L7RgdC+0LIg0L3QsCDQvtC/0YDQvtGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNsX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0N5cmxfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn0J3QsNC/0YDQsNCy0Lgg0L3QvtCy0YMg0LDQvdC60LXRgtGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ9Cj0LLQvtC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICfQo9Cy0L7QtCDRgyDQsNC90LrQtdGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICfQodCw0YDQtNC20LDRmCDQvtCx0LDQstC10YjRgtC10ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICfQotC40L/QvtCy0Lgg0YLQuNC60LXRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAn0JjQvdGC0LXRgNC90Lgg0L7Qv9C40YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ9Cj0YHQu9C+0LLQuCDQutC70LjRmNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAn0JzQvtC70LjQvNC+INC40LfQsNCx0LXRgNC40YLQtSDQsNGC0YDQuNCx0YPRgiDQutC70LjRmNC10L3RgtCwINC30LAg0LTQvtC00LDQstCw0ZrQtSDRg9GB0LvQvtCy0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAn0IjQsNCy0L3QuCDQutGZ0YPRhyDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICfQn9GA0LjQvNC10YAg0LDQvdC60LXRgtC1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn0KPRgNC10LTQuCDQvtC/0YjRgtC1INC40L3RhNC+0YDQvNCw0YbQuNGY0LUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICfQo9GA0LXQtNC4INC/0LjRgtCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfQktC4INGB0YLQtSDQvtCy0LTQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAn0JDQvdC60LXRgtC90LAg0L/QuNGC0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ9CU0L7QtNCw0Zgg0L/QuNGC0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAn0KPQvdC10YHQuCDQv9C40YLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn0J7QsdCw0LLQtdC30LDQvSDQvtC00LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ9CX0LAg0L7QstGDINCw0L3QutC10YLRgyDQvdC40YHRgyDRgdCw0YfRg9Cy0LDQvdCwINC/0LjRgtCw0ZrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICfQn9C40YLQsNGa0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAn0J7QsdCw0LLQtdC30LDQvSDQvtC00LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAn0JrQsNC00LAg0LfQsNCy0YDRiNC40YLQtSDRgdCwINGD0YDQtdGS0LjQstCw0ZrQtdC8INCw0L3QutC10YLQvdC40YUg0L/QuNGC0LDRmtCwINGB0LDQvNC+INC30LDRgtCy0L7RgNC40YLQtSDQvtCy0LDRmCDQv9GA0L7Qt9C+0YAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAn0JfQsNGC0LLQvtGA0Lgg0L7QstCw0Zgg0L/RgNC+0LfQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfQo9GA0LXQtNC4INC/0LjRgtCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ9C90LDQt9Cw0LQg0L3QsCDQv9C40YLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn0J/QuNGC0LDRmtC1Oic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ9Cc0L7Qs9GD0ZvQuCDQvtC00LPQvtCy0L7RgNC4INC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ9CU0L7QtNCw0Zgg0L7QtNCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfQl9CwINC+0LLQviDQv9C40YLQsNGa0LUg0L3QuNGB0YMg0YHQsNGH0YPQstCw0L3QuCDQvtC00LPQvtCy0L7RgNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAn0J7QstC+INC90LXQvNCwINCy0LjRiNC1INC+0LTQs9C+0LLQvtGA0LAsINC/0YDQvtGB0YLQvtGAINC30LAg0YLQtdC60YHRgiDRm9C1INCx0LjRgtC4INC/0YDQuNC60LDQt9Cw0L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn0KPRgNC10LTQuCDQvtC00LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfQvdCw0LfQsNC0INC90LAg0YPRgNC10ZLQuNCy0LDRmtC1INC/0LjRgtCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAn0J7QtNCz0L7QstC+0YA6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ9Cf0L7QtNC10YjQsNCy0LDRmtCwINC/0YDQtdCz0LvQtdC00LAg0LDQvdC60LXRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJ9Cf0YDQtdGC0YDQsNCz0LUg0YMg0LDRgtGA0LjQsdGD0YLQuNC80LAgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0INC4IE5vdGlmaWNhdGlvbkJvZHksINGA0LXQtNC10YTQuNC90LjRgyDQtNGA0YPQs9C1INCw0YLRgNC40LHRg9GC0LUg0YHQsCDQuNGB0YLQuNC8INC40LzQtdC90L7QvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAn0JLRgNC10LzQtSDQutGA0LXQuNGA0LDRmtCwINCw0L3QutC10YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJ9CR0LXQtyDQvtCz0YDQsNC90LjRh9C10ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KHQsNC80L4g0LDQvdC60LXRgtC1INC60YDQtdC40YDQsNC90LUg0LjQt9C80LXRktGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ9Cc0LDQutGB0LjQvNGD0Lwg0L/RgNC40LrQsNC30LDQvdC40YUg0LDQvdC60LXRgtCwINC/0L4g0YHRgtGA0LDQvdC4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfQn9C+0YjQuNGZ0LDQvtGGINC+0LHQsNCy0LXRiNGC0LXRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAn0J/RgNC10LTQvNC10YIg0L7QsdCw0LLQtdGI0YLQtdGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ9Cc0LXRmtCw0L4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAn0J/RgNC10LPQu9C10LQg0YHRgtCw0YLQuNGB0YLQuNC60LUg0LfQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ9Ci0LDQsdC10LvQsCDQt9Cw0YXRgtC10LLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAn0JjQt9Cw0LHQtdGA0Lgg0YHQstC1INC30LDRhdGC0LXQstC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ9CS0YDQtdC80LUg0YHQu9Cw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfQktGA0LXQvNC1INCz0LvQsNGB0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICfQmNC30LDQsdC10YDQuCDQvtCy0LDRmCDQt9Cw0YXRgtC10LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfQktC40LTQuCDQtNC10YLQsNGZ0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAn0J7QsdGA0LjRiNC4INGB0YLQsNGC0LjRgdGC0LjQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfQlNC10YLQsNGZ0Lgg0YHRgtCw0YLQuNGB0YLQuNC60LUg0LDQvdC60LXRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfQuNC00Lgg0L3QsNC30LDQtCDQvdCwINC/0YDQtdCz0LvQtdC0INGB0YLQsNGC0LjRgdGC0LjQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICfQn9GA0LXRgtGF0L7QtNC90Lgg0LPQu9Cw0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAn0KHQu9C10LTQtdGb0Lgg0LPQu9Cw0YEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40ZjQtSDQviDQsNC90LrQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ9Cf0L7RgdC70LDRgtC4INC30LDRhdGC0LXQstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfQn9GA0LjQvNGZ0LXQvdC1INCw0L3QutC10YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0ZnQuCDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAn0KPRgdC70YPQs9C1INC30LAg0YLQuNC60LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ9CT0YDQsNGE0LjQutC+0L0g0YDQtdC30YPQu9GC0LDRgtCwINCw0L3QutC10YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn0J3QtdC80LAg0YHRgtCw0YLQuNGB0YLQuNC60LUg0YDQtdC30YPQu9GC0LDRgtCwLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICfQkNC90LrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICfQnNC+0LvQuNC80L4g0LTQsCDQvtC00LPQvtCy0L7RgNC40YLQtSDQvdCwINC+0LLQsCDQv9C40YLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAn0J/QvtC60LDQttC4INC80L7RmNC1INC+0LTQs9C+0LLQvtGA0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ9Ce0LLQviDRgdGDINCy0LDRiNC4INC+0LTQs9C+0LLQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAn0J3QsNGB0LvQvtCyINCw0L3QutC10YLQtSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAn0JTQvtC00LDRmCDQvdC+0LLRgyDQsNC90LrQtdGC0YMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAn0J3QtdC80LDRgtC1INC00L7Qt9Cy0L7Qu9GDINC30LAg0L7QstGDINCw0L3QutC10YLRgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAn0J3QuNGY0LUg0LTQsNGCINCY0JQg0JDQvdC60LXRgtC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ9Cj0YDQtdC00Lgg0LDQvdC60LXRgtGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ9Cd0LXQvNCw0YLQtSDQtNC+0LfQstC+0LvRgyDQt9CwINC+0LLRgyDQsNC90LrQtdGC0YMg0LjQu9C4INC/0LjRgtCw0ZrQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICfQndC10LzQsNGC0LUg0LTQvtC30LLQvtC70YMg0LfQsCDQvtCy0YMg0LDQvdC60LXRgtGDLCDQv9C40YLQsNGa0LUg0LjQu9C4INC+0LTQs9C+0LLQvtGAISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfQo9GA0LXQtNC4INCw0L3QutC10YLQvdCwINC/0LjRgtCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICfQlNCwL9Cd0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAn0JTRg9Cz0LzQtSAo0JvQuNGB0YLQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn0J/QvtGZ0LUg0LfQsCDQv9C+0YLQstGA0LTRgyAo0JvQuNGB0YLQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAn0J7RhtC10L3QsCDQv9GA0L7QvNC+0YLQtdGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ9Ci0LjQvyDQv9C40YLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICfQmtC+0LzQv9C70LXRgtC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ9Cd0LXQutC+0LzQv9C70LXRgtC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ9Cj0YDQtdC00Lgg0L/QuNGC0LDRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAn0KPRgNC10LTQuCDQvtC00LPQvtCy0L7RgCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICfQn9GA0LXQs9C70LXQtCDRgdGC0LDRgtC40YHRgtC40LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAn0J3QtdC80LDRgtC1INC00L7Qt9Cy0L7Qu9GDINC30LAg0L7QstGDINCw0L3QutC10YLRgyDQuNC70Lgg0LTQtdGC0LDRmdC1INGB0YLQsNGC0LjRgdGC0LjQutC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICfQlNC10YLQsNGZINGB0YLQsNGC0LjRgdGC0LjQutC1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAn0J3QtSDQvNC+0LbQtSDRgdC1INC/0L7RgdGC0LDQstC40YLQuCDQvdC+0LLQuCDRgdGC0LDRgtGD0YEhINCd0LXQvNCwINC00LXRhNC40L3QuNGB0LDQvdC40YUg0L/QuNGC0LDRmtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLid9ID0gJ9Cd0LUg0LzQvtC20LUg0YHQtSDQv9C+0YHRgtCw0LLQuNGC0Lgg0L3QvtCy0Lgg0YHRgtCw0YLRg9GBISDQn9C40YLQsNGa0LAg0YHRgyDQvdC10L/QvtGC0L/Rg9C90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ9Ch0YLQsNGC0YPRgSDQv9GA0L7QvNC10ZrQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctINCd0LjRmNC1INC40LfQsNCx0YDQsNC9INGA0LXQtCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJy0g0J3QuNGY0LUg0LjQt9Cw0LHRgNCw0L0g0YLQuNC/INGC0LjQutC10YLQsCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0g0J3QuNGY0LUg0LjQt9Cw0LHRgNCw0L0g0YHQtdGA0LLQuNGBINGC0LjQutC10YLQsCAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSDQn9GA0L7QvNC10L3QuCDRgdGC0LDRgtGD0YEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICfQk9C70LDQstC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ9Cd0LXQstCw0LbQtdGb0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ9Cd0L7QstC4INGB0YLQsNGC0YPRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfQntC/0LjRgSDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICfQvtC00LPQvtCy0L7RgNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICfQvdC40ZjQtSDQvtC00LPQvtCy0L7RgNC10L3Qvic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAn0KXQstCw0LvQsCDQvdCwINCy0LDRiNC40Lwg0L7QtNCz0L7QstC+0YDQuNC80LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAn0JDQvdC60LXRgtCwINGY0LUg0LfQsNCy0YDRiNC10L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAn0J/QvtGA0YPQutCwINCw0L3QutC10YLQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ9Cc0L7QtNGD0Lsg0L3QuNGY0LUg0LDQutGC0LjQstC40YDQsNC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJ9Ce0LLQsCDRhNGD0L3RhtC40L7QvdCw0LvQvdC+0YHRgiDQvdC40ZjQtSDQvtC80L7Qs9GD0ZvQtdC90LAsINC80L7Qu9C40LzQviDQutC+0L3RgtCw0LrRgtC40YDQsNGY0YLQtSDQstCw0YjQtdCzINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICfQk9GA0LXRiNC60LAg0YMg0LDQvdC60LXRgtC4ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAn0J3QtdC40YHQv9GA0LDQstCw0L0g0LrRmdGD0Ycg0LDQvdC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAn0KPQvdC10YLQuCDQutGZ0YPRhyDQsNC90LrQtdGC0LUg0ZjQtSDQvdC10LjRgdC/0YDQsNCy0LDQvSwg0LDQutC+INGB0YLQtSDQv9GA0LDRgtC40LvQuCDQstC10LfRgyDQvNC+0LbQtNCwINGY0LUg0L7QvdCwINC90LXQstCw0LbQtdGb0LAg0LjQu9C4INC+0YjRgtC10ZvQtdC90LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAn0JPQu9Cw0YHQsNGa0LUg0YMg0LDQvdC60LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICfQn9C+0LTQsNGG0Lgg0L4g0LPQu9Cw0YHQsNGa0YMg0YMg0LDQvdC60LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICfQktC10Zsg0YHRgtC1INC+0LTQs9C+0LLQvtGA0LjQu9C4INC90LAg0LDQvdC60LXRgtGDLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAn0JvQuNGB0YLQsCDQsNC90LrQtdGC0LAnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfQlNCwINC70Lgg0LfQsNC40YHRgtCwINC20LXQu9C40YLQtSDQtNCwINC+0LHRgNC40YjQtdGC0LUg0L7QstC+INC/0LjRgtCw0ZrQtT8g0KHQktCYINC/0L7QstC10LfQsNC90Lgg0L/QvtC00LDRhtC4INGb0LUg0LHQuNGC0Lgg0JjQl9CT0KPQkdCJ0JXQndCYISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ9CU0LAg0LvQuCDQt9Cw0LjRgdGC0LAg0LbQtdC70LjRgtC1INC00LAg0LjQt9Cx0YDQuNGI0LXRgtC1INC+0LLQsNGYINC+0LTQs9C+0LLQvtGAPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfQkNC90LrQtdGC0L3QuCDQvNC+0LTRg9C7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0JzQvtC00YPQuyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0L3QuNGFINC/0LjRgtCw0ZrQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQodCy0Lgg0L/QsNGA0LDQvNC10YLRgNC4INCe0LHRmNC10LrRgtCwINCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ9CR0YDQvtGYINC00LDQvdCwINC/0L7RgdC70LUg0YHQu9Cw0ZrQsCDQuNC80LXRmNC70LAg0L4g0LDQvdC60LXRgtC4INC30LAg0LrQvtGY0LUg0LjRgdGC0L7QvCDQutC+0YDQuNGB0L3QuNC60YMg0L3QtdGb0LUg0LHQuNGC0Lgg0YHQu9Cw0L3QuCDQvdC+0LLQuCDQt9Cw0YXRgtC10LLQuC4g0JDQutC+INC40LfQsNCx0LXRgNC10YLQtSAwINC40LzQtdGY0Lsg0L4g0LDQvdC60LXRgtC4INGB0LUg0YPQstC10Log0YjQsNGZ0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGB0LDQtNGA0LbQsNGYINC40LzQtdGY0LvQsCDQvtCx0LDQstC10YjRgtC10ZrQsCDQviDQvdC+0LLQvtGYINCw0L3QutC10YLQuCDQt9CwINC60L7RgNC40YHQvdC40LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQn9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9C+0YjQuNGZ0LDQvtGGINC40LzQtdGY0LvQsCDQvtCx0LDQstC10YjRgtC10ZrQsCDQviDQvdC+0LLQvtC8INC40YHRgtGA0LDQttC40LLQsNGa0YMg0LfQsCDQutC+0YDQuNGB0L3QuNC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0YDQtdC00LzQtdGCINC40LzQtdGY0LvQsCDQvtCx0LDQstC10YjRgtC10ZrQsCDQviDQvdC+0LLQvtGYINCw0L3QutC10YLQuCDQt9CwINC60L7RgNC40YHQvdC40LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvNC+0LTRg9C7INC/0YDQtdCz0LvQtdC00LAg0LfQsCDQvNCw0LvQuCDQv9GA0LjQutCw0Lcg0LvQuNGB0YLQtSDQsNC90LrQtdGC0LAuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INCz0YDRg9C/0LUg0LrQvtGY0LUg0LjQvNCw0ZjRgyDQtNC+0LfQstC+0LvRgyDQtNCwINC80LXRmtCw0ZjRgyDRgdGC0LDRgtGD0YEg0LDQvdC60LXRgtC1LiDQotCw0LHQtdC70LAg0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QviDQv9GA0LDQt9C90LAg0Lgg0L7Qv9C10YDQsNGC0LXRgNC4INC40Lcg0YHQstC40YUg0LPRgNGD0L/QsCDQvNC+0LPRgyDQtNCwINC80LXRmtCw0ZjRgyDRgdGC0LDRgtGD0YEg0LDQvdC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LTQsCDQu9C4INGb0LUg0LfQsNGF0YLQtdCy0Lgg0LfQsCDQsNC90LrQtdGC0LUg0LHQuNGC0Lgg0L/QvtGB0LvQsNGC0Lgg0YHQsNC80L4g0L/RgNCw0LLQuNC8INC60LvQuNGY0LXQvdGC0LjQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCDQsNC90LrQtdGC0LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9C+0YHQu9Cw0YIg0LrQvtGA0LjRgdC90LjQutGDINGC0L7QutC+0LwgMzAg0LTQsNC90LAuICgwINC30L3QsNGH0Lgg0LTQsCDQvdC10LzQsCDQvNCw0LrRgdC40LzRg9C80LAsINGB0LLQuCDQt9Cw0YXRgtC10LLQuCDRm9C1INCx0LjRgtC4INC/0L7RgdC70LDRgtC4KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LHRgNC+0Zgg0YHQsNGC0Lgg0L7QtCDQt9Cw0YLQstCw0YDQsNGa0LAg0YLQuNC60LXRgtCwINC30LAg0L/QvtC60YDQtdGC0LDRmtC1INGB0LvQsNGa0LAg0LDQvdC60LXRgtC1LiAoMCDQt9C90LDRh9C4INC00LAg0YHQtSDRiNCw0ZnQtSDQvtC00LzQsNGFINC/0L4g0LfQsNGC0LLQsNGA0LDRmtGDKS4g0J3QsNC/0L7QvNC10L3QsDog0L7QtNC70LDQs9Cw0ZrQtSDRgdC70LDRmtCwINCw0L3QutC10YLQtSDQvtCx0LDQstGZ0LAg4oCeT1RSUyDigJ0g0YHQtdGA0LLQuNGBINC/0YDQtSDQsNC60YLQuNCy0LjRgNCw0ZrQsCDigJ5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZOKAnSDQv9C+0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC60L7Qu9C+0L3QtSDQt9CwINC70LjRgdGC0YMg0L/RgNC40LvQuNC60L7QvCDQv9GA0LDQstGZ0LXRmtCwINGD0YHQu9C+0LLQsCDQt9Cw0YXRgtC10LLQsCAoMCA9PiDQuNGB0LrRmdGD0YfQtdC90L4sIDEgPT4g0YPQutGZ0YPRh9C10L3QvikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90YMg0LLQuNGB0LjQvdGDINC+0LrQstC40YDQsCDQt9CwINC/0YDQuNC60LDQtyDRgtC10LrRgdGC0LAgINC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INC10LvQtdC80LXQvdCw0YLQsCDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJ9CU0LXRhNC40L3QuNGI0LUg0LPRgNGD0L/QtSAocncpINC60L7RmNC1INC80L7Qs9GDINC00LAg0LHRgNC40YjRgyDRgdGC0LDRgtC40YHRgtC40LrQtSDQsNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LzQsNC60YHQuNC80LDQu9C90YMg0LLQuNGB0LjQvdGDIOKAnlJpY2h0ZXh04oCdINC/0YDQuNC60LDQt9CwINGC0LXQutGB0YLQsCAg0LfQsCDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0LXQu9C10LzQtdC90LDRgtCwINCw0L3QutC10YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDRgyDQv9GA0LXQs9C70LXQtNGDINCw0L3QutC10YLQtS4g0J7QstCwINC+0L/RhtC40ZjQtSDQvdC10LzQsCDRg9GC0LjRhtCw0Zgg0L3QsCDQv9C+0LfQuNGG0LjRmNC1INC60L7Qu9C+0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LTQsCDQu9C4INC80L7QtNGD0Lsg0YHRgtCw0YLQuNGB0YLQuNC60LAg0LzQvtC20LUg0LPQtdC90LXRgNC40YHQsNGC0Lgg0LvQuNGB0YLQtSDQsNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAn0KPRgNC10LTQuCDQvtC/0YjRgtC1INC40L3RhNC+0YDQvNCw0YbQuNGY0LUg0L4g0LDQvdC60LXRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0KPRgNC10LTQuCDQsNC90LrQtdGC0L3QsCDQv9C40YLQsNGa0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ9Cj0LrRmdGD0YfQuCDQuNC70Lgg0LjRgdC60ZnRg9GH0Lgg0L/RgNC40LrQsNC3INC10LrRgNCw0L3QsCDQt9CwINCz0LvQsNGB0LDRmtC1INC90LAg0ZjQsNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDINGA0LDQtNC4INC/0YDQuNC60LDQt9CwINGA0LXQt9GD0LvRgtCw0YLQsCDQv9C+0ZjQtdC00LjQvdC1INCw0L3QutC10YLQtSDQutCw0LTQsCDQutC+0YDQuNGB0L3QuNC6INC/0L7QutGD0YjQsCDQtNCwINC+0LTQs9C+0LLQvtGA0Lgg0L3QsCDRg9C/0LjRgtC90LjQuiDQv9C+INC00YDRg9Cz0Lgg0L/Rg9GCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ9Cj0LrRmdGD0YfQuCDQuNC70Lgg0LjRgdC60ZnRg9GH0Lgg0L/RgNC+0LLQtdGA0YMg0YHRgtCw0YLRg9GB0LAg0YHQu9Cw0ZrQsCDQt9CwINGD0YHQu9GD0LPRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICfQo9C60ZnRg9GH0Lgg0LjQu9C4INC40YHQutGZ0YPRh9C4INC/0YDQvtCy0LXRgNGDINGB0YLQsNGC0YPRgdCwINGB0LvQsNGa0LAg0LfQsCDRgtC40L8g0YLQuNC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDQtNC+0LTQsNCy0LDRmtC1INCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDQuNC30LzQtdC90LUg0LDQvdC60LXRgtC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDRgdGC0LDRgtC40YHRgtC40LrRgyDQsNC90LrQtdGC0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwICJGcm9udGVuZCIg0LzQvtC00YPQu9CwINC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGY0LAgIkZyb250ZW5kIiDQvNC+0LTRg9C70LAg0LfQsCDRmNCw0LLQvdC1INCw0L3QutC10YLQvdC1INC+0LHRmNC10LrRgtC1INCw0L3QutC10YLQtSDRgyDQv9GA0L7RgdGC0L7RgNGDINGY0LDQstC90LjRhSDQsNC90LrQtdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICfQkNC60L4g0YHQtSDQvtCy0LDRmCDQuNC30YDQsNC3INC/0L7QutC70LDQv9CwLCDQsNC90LrQtdGC0LAg0L3QtdGb0LUg0LHQuNGC0Lgg0L/QvtGB0LvQsNGC0LAg0LrQvtGA0LjRgdC90LjQutGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0YHRgtGA0LDQvdC40YbQsCAo0L3QsCDQutC+0ZjQuNC80LAg0YHRgyDQsNC90LrQtdGC0LUg0LLQuNC00ZnQuNCy0LUpINC90LAg0LzQsNC70L7QvCDQv9GA0LjQutCw0LfRgyDQv9GA0LXQs9C70LXQtNCwINCw0L3QutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfQiNCw0LLQvdCwINCw0L3QutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAn0KDQtdC30YPQu9GC0LDRgtC4INGB0YLQsNGA0LjRmNC4INC+0LQg0L/QvtC00LXRiNC10L3QvtCzINCx0YDQvtGY0LAg0LTQsNC90LAg0ZvQtSDQsdC40YLQuCDQvtCx0YDQuNGB0LDQvdC4LiDQndCw0L/QvtC80LXQvdCwOiDRgNC10LfRg9C70YLQsNGC0LUg0LHRgNC40YjQtSBPVFJTINGB0LjRgdGC0LXQvNGB0LrQuCDRgdC10YDQstC40YEsINC/0L4g0LDQutGC0LjQstCw0YbQuNGY0Lgg0L/QvtC00LXRiNCw0LLQsNGa0LAgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0LUg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KMg0LzQtdC90LjRmNGDINC/0YDQuNC60LDQt9GD0ZjQtSDQstC10LfRgyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0L3QuNGFINC/0LjRgtCw0ZrQsCDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINC40L3RgtC10YDRhNC10ZjRgdCwINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQv9C+0LLRgNCw0YLQsNC6INGDINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQsNC90LrQtdGC0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0YHRgtCw0YLQuNGB0YLQuNC60LUg0LDQvdC60LXRgtC1INGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0L3QsCDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICfQlNC10YLQsNGZ0Lgg0YHRgtCw0YLQuNGB0YLQuNC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQt9CwINC00L7QtNCw0LLQsNGa0LUg0LDQvdC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQt9CwINGD0YDQtdGS0LjQstCw0ZrQtSDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0L/RgNC10LPQu9C10LTQsCDQsNC90LrQtdGC0LUgLSDigJ7QvNCw0LvQvuKAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGC0LDRgtC40YHRgtC40LrRgyDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INCw0L3QutC10YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQsNC90LrQtdGC0LUg0L/QviDRgdGC0YDQsNC90Lgg0LfQsCDQv9GA0LXQs9C70LXQtCDQvNCw0LvQvtCzINGE0L7RgNC80LDRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ9CQ0L3QutC10YLQsCDQvdC10ZvQtSDQsdC40YLQuCDQv9C+0YHQu9Cw0YLQsCDQvdCwINC/0L7QtNC10YjQtdC90YMg0LjQvNC10ZjQuyDQsNC00YDQtdGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwINCw0L3QutC10YLRgywg0L3Qv9GALiBTdXJ2ZXkjLCBNeVN1cnZleSMuINCf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC+INGY0LUgU3VydmV5Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC00L7Qs9Cw0ZLQsNGY0LAg0L3QsCDRgtC40LrQtdGC0YMg0LfQsCDQsNGD0YLQvtC80LDRgtGB0LrQviDRgdC70LDRmtC1INC40LzQtdGY0LvQsCDQviDQuNGB0YLRgNCw0LbQuNCy0LDRmtGDINC60L7RgNC40YHQvdC40YbQuNC80LAg0LDQutC+INGY0LUg0YLQuNC60LXRgiDQt9Cw0YLQstC+0YDQtdC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAn0J7QutC40LTQsCDQsdGA0LjRgdCw0ZrQtSDRgNC10LfRg9C70YLQsNGC0LAgKNGD0LrRmdGD0YfRg9GY0YPRm9C4INC/0L7QtNCw0YLQutC1INC/0YDQuNC80ZnQtdC90LjRhSDQs9C70LDRgdC+0LLQsCDQuCDQv9C+0YHQu9Cw0YLQuNGFINC30LDRhdGC0LXQstCwKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ9Ce0LrQuNC00LDRhyDQvtC00LvQvtC20LXQvdC+0LMg0YHQu9Cw0ZrQsCDQt9Cw0YXRgtC10LLQsCDQt9CwINCw0L3QutC10YLRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICfQo9C70LDQtyDRgyDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0YHRgtCw0YLQuNGB0YLQuNC60LUuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnNyX0xhdG5fU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnTmFwcmF2aSBub3Z1IGFua2V0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdVdm9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdVdm9kIHUgYW5rZXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnU2FyZMW+YWogb2JhdmXFoXRlbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG92aSB0aWtldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdJbnRlcm5pIG9waXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ1VzbG92aSBrbGlqZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJ01vbGltbyBpemFiZXJpdGUgYXRyaWJ1dCBrbGlqZW50YSB6YSBkb2RhdmFuamUgdXNsb3ZhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ0phdm5pIGtsanXEjSBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICdQcmltZXIgYW5rZXRlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnVXJlZGkgb3DFoXRlIGluZm9ybWFjaWplJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnVXJlZGkgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdWaSBzdGUgb3ZkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnQW5rZXRuYSBwaXRhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0RvZGFqIHBpdGFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdVbmVzaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ09iYXZlemFuIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdaYSBvdnUgYW5rZXR1IG5pc3Ugc2HEjXV2YW5hIHBpdGFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdPYmF2ZXphbiBvZGdvdm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdLYWRhIHphdnLFoWl0ZSBzYSB1cmXEkWl2YW5qZW0gYW5rZXRuaWggcGl0YW5qYSBzYW1vIHphdHZvcml0ZSBvdmFqIHByb3pvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICdaYXR2b3JpIG92YWogcHJvem9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdVcmVkaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAnbmF6YWQgbmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdQaXRhbmplOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01vZ3XEh2kgb2Rnb3ZvcmkgemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0RvZGFqIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdaYSBvdm8gcGl0YW5qZSBuaXN1IHNhxI11dmFuaSBvZGdvdm9yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ092byBuZW1hIHZpxaFlIG9kZ292b3JhLCBwcm9zdG9yIHphIHRla3N0IMSHZSBiaXRpIHByaWthemFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ1VyZWRpIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnbmF6YWQgbmEgdXJlxJFpdmFuamUgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnT2Rnb3ZvcjonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnUG9kZcWhYXZhbmphIHByZWdsZWRhIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICdQcmV0cmFnZSB1IGF0cmlidXRpbWEgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGkgTm90aWZpY2F0aW9uQm9keSwgcmVkZWZpbml1IGRydWdlIGF0cmlidXRlIHNhIGlzdGltIGltZW5vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnVnJlbWUga3JlaXJhbmphIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJ0JleiBvZ3JhbmnEjWVuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJ1NhbW8gYW5rZXRlIGtyZWlyYW5lIGl6bWXEkXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTWFrc2ltdW0gcHJpa2F6YW5paCBhbmtldGEgcG8gc3RyYW5pJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdQb8WhaWxqYW9jIG9iYXZlxaF0ZW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1ByZWRtZXQgb2JhdmXFoXRlbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNZW5qYW8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnUHJlZ2xlZCBzdGF0aXN0aWtlIHphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFiZWxhIHphaHRldmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ0l6YWJlcmkgc3ZlIHphaHRldmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnVnJlbWUgc2xhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ1ZyZW1lIGdsYXNhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICdJemFiZXJpIG92YWogemFodGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmlkaSBkZXRhbGplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ09icmnFoWkgc3RhdGlzdGlrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxqaSBzdGF0aXN0aWtlIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnaWRpIG5hemFkIG5hIHByZWdsZWQgc3RhdGlzdGlrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnUHJldGhvZG5pIGdsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnU2xlZGXEh2kgZ2xhcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2lqZSBvIGFua2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnUG9zbGF0aSB6YWh0ZXZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdQcmltbGplbmUgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxqaSBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnVXNsdWdlIHphIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmlrb24gcmV6dWx0YXRhIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTmVtYSBzdGF0aXN0aWtlIHJlenVsdGF0YS4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnQW5rZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnTW9saW1vIGRhIG9kZ292b3JpdGUgbmEgb3ZhIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnUG9rYcW+aSBtb2plIG9kZ292b3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdPdm8gc3UgdmHFoWkgb2Rnb3ZvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnTmFzbG92IGFua2V0ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnRG9kYWogbm92dSBhbmtldHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnTmVtYXRlIGRvenZvbHUgemEgb3Z1IGFua2V0dSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgSUQgQW5rZXRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1VyZWRpIGFua2V0dSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICdOZW1hdGUgZG96dm9sdSB6YSBvdnUgYW5rZXR1IGlsaSBwaXRhbmplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ05lbWF0ZSBkb3p2b2x1IHphIG92dSBhbmtldHUsIHBpdGFuamUgaWxpIG9kZ292b3IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ1VyZWRpIGFua2V0bmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdEYS9OZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdEdWdtZSAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ1BvbGplIHphIHBvdHZyZHUgKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICdPY2VuYSBwcm9tb3RlcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcCBwaXRhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnS29tcGxldG5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdOZWtvbXBsZXRubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnVXJlZGkgcGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ1VyZWRpIG9kZ292b3InOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnUHJlZ2xlZCBzdGF0aXN0aWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICdOZW1hdGUgZG96dm9sdSB6YSBvdnUgYW5rZXR1IGlsaSBkZXRhbGplIHN0YXRpc3Rpa2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ0RldGFsaiBzdGF0aXN0aWtlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnTmUgbW/FvmUgc2UgcG9zdGF2aXRpIG5vdmkgc3RhdHVzISBOZW1hIGRlZmluaXNhbmloIHBpdGFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnTmUgbW/FvmUgc2UgcG9zdGF2aXRpIG5vdmkgc3RhdHVzISBQaXRhbmphIHN1IG5lcG90cHVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnU3RhdHVzIHByb21lbmplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBOaWplIGl6YWJyYW4gcmVkIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnLSBOaWplIGl6YWJyYW4gdGlwIHRpa2V0YSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJy0gTmlqZSBpemFicmFuIHNlcnZpcyB0aWtldGEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gUHJvbWVuaSBzdGF0dXMgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXN0ZXInfSA9ICdHbGF2bm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ05ldmHFvmXEh2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05vdmkgc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ09waXMgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnb2Rnb3ZvcmVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICduaWplIG9kZ292b3Jlbm8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0h2YWxhIG5hIHZhxaFpbSBvZGdvdm9yaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0Fua2V0YSBqZSB6YXZyxaFlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJ1BvcnVrYSBhbmtldGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdNb2R1bCBuaWplIGFrdGl2aXJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICdPdmEgZnVuY2lvbmFsbm9zdCBuaWplIG9tb2d1xIdlbmEsIG1vbGltbyBrb250YWt0aXJhanRlIHZhxaFlZyBhZG1pbmlzdHJhdG9yYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ0dyZcWha2EgdSBhbmtldGkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICdOZWlzcHJhdmFuIGtsanXEjSBhbmtldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICdVbmV0aSBrbGp1xI0gYW5rZXRlIGplIG5laXNwcmF2YW4sIGFrbyBzdGUgcHJhdGlsaSB2ZXp1IG1vxb5kYSBqZSBvbmEgbmV2YcW+ZcSHYSBpbGkgb8WhdGXEh2VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICdHbGFzYW5qZSB1IGFua2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnUG9kYWNpIG8gZ2xhc2FuanUgdSBhbmtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ1ZlxIcgc3RlIG9kZ292b3JpbGkgbmEgYW5rZXR1Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnTGlzdGEgYW5rZXRhJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnRGEgbGkgemFpc3RhIMW+ZWxpdGUgZGEgb2JyacWhZXRlIG92byBwaXRhbmplPyBTVkkgcG92ZXphbmkgcG9kYWNpIMSHZSBiaXRpIElaR1VCTEpFTkkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnRGEgbGkgemFpc3RhIMW+ZWxpdGUgZGEgaXpicmnFoWV0ZSBvdmFqIG9kZ292b3I/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ0Fua2V0bmkgbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdNb2R1bCB6YSB1cmXEkWl2YW5qZSBhbmtldG5paCBwaXRhbmphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N2aSBwYXJhbWV0cmkgT2JqZWt0YSBhbmtldGUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnQnJvaiBkYW5hIHBvc2xlIHNsYW5qYSBpbWVqbGEgbyBhbmtldGkgemEga29qZSBpc3RvbSBrb3Jpc25pa3UgbmXEh2UgYml0aSBzbGFuaSBub3ZpIHphaHRldmkuIEFrbyBpemFiZXJldGUgMCBpbWVqbCBvIGFua2V0aSBzZSB1dmVrIMWhYWxqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnUG9kcmF6dW1ldmFuaSBzYWRyxb5haiBpbWVqbGEgb2JhdmXFoXRlbmphIG8gbm92b2ogYW5rZXRpIHphIGtvcmlzbmlrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5pIHBvxaFpbGphb2MgaW1lamxhIG9iYXZlxaF0ZW5qYSBvIG5vdm9tIGlzdHJhxb5pdmFuanUgemEga29yaXNuaWtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5pIHByZWRtZXQgaW1lamxhIG9iYXZlxaF0ZW5qYSBvIG5vdm9qIGFua2V0aSB6YSBrb3Jpc25pa2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtb2R1bCBwcmVnbGVkYSB6YSBtYWxpIHByaWtheiBsaXN0ZSBhbmtldGEuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICdPZHJlxJF1amUgZ3J1cGUga29qZSBpbWFqdSBkb3p2b2x1IGRhIG1lbmphanUgc3RhdHVzIGFua2V0ZS4gVGFiZWxhIGplIHBvZHJhenVtZXZhbm8gcHJhem5hIGkgb3BlcmF0ZXJpIGl6IHN2aWggZ3J1cGEgbW9ndSBkYSBtZW5qYWp1IHN0YXR1cyBhbmtldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGRhIGxpIMSHZSB6YWh0ZXZpIHphIGFua2V0ZSBiaXRpIHBvc2xhdGkgc2FtbyBwcmF2aW0ga2xpamVudGltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtYWtzaW1hbG5pIGJyb2ogYW5rZXRhIGtvamkgxIdlIGJpdGkgcG9zbGF0IGtvcmlzbmlrdSB0b2tvbSAzMCBkYW5hLiAoMCB6bmHEjWkgZGEgbmVtYSBtYWtzaW11bWEsIHN2aSB6YWh0ZXZpIMSHZSBiaXRpIHBvc2xhdGkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGJyb2ogc2F0aSBvZCB6YXR2YXJhbmphIHRpa2V0YSB6YSBwb2tyZXRhbmplIHNsYW5qYSBhbmtldGUuICgwIHpuYcSNaSBkYSBzZSDFoWFsamUgb2RtYWggcG8gemF0dmFyYW5qdSkuIE5hcG9tZW5hOiBvZGxhZ2FuamUgc2xhbmphIGFua2V0ZSBvYmF2bGphIOKAnk9UUlMg4oCdIHNlcnZpcyBwcmUgYWt0aXZpcmFuamEg4oCeRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmTigJ0gcG9zdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBrb2xvbmUgemEgbGlzdHUgcHJpbGlrb20gcHJhdmxqZW5qYSB1c2xvdmEgemFodGV2YSAoMCA9PiBpc2tsanXEjWVubywgMSA9PiB1a2xqdcSNZW5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbnUgdmlzaW51IG9rdmlyYSB6YSBwcmlrYXogdGVrc3RhICB6YSBkZXRhbGpuaSBwcmlrYXogZWxlbWVuYXRhIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnRGVmaW5pxaFlIGdydXBlIChydykga29qZSBtb2d1IGRhIGJyacWhdSBzdGF0aXN0aWtlIGFua2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnT2RyZcSRdWplIG1ha3NpbWFsbnUgdmlzaW51IOKAnlJpY2h0ZXh04oCdIHByaWthemEgdGVrc3RhICB6YSBkZXRhbGpuaSBwcmlrYXogZWxlbWVuYXRhIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIHUgcHJlZ2xlZHUgYW5rZXRlLiBPdmEgb3BjaWplIG5lbWEgdXRpY2FqIG5hIHBvemljaWplIGtvbG9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBkYSBsaSBtb2R1bCBzdGF0aXN0aWthIG1vxb5lIGdlbmVyaXNhdGkgbGlzdGUgYW5rZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ1VyZWRpIG9wxaF0ZSBpbmZvcm1hY2lqZSBvIGFua2V0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VyZWRpIGFua2V0bmEgcGl0YW5qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnVWtsanXEjWkgaWxpIGlza2xqdcSNaSBwcmlrYXogZWtyYW5hIHphIGdsYXNhbmplIG5hIGphdm5vbSBpbnRlcmZlanN1IHJhZGkgcHJpa2F6YSByZXp1bHRhdGEgcG9qZWRpbmUgYW5rZXRlIGthZGEga29yaXNuaWsgcG9rdcWhYSBkYSBvZGdvdm9yaSBuYSB1cGl0bmlrIHBvIGRydWdpIHB1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdVa2xqdcSNaSBpbGkgaXNrbGp1xI1pIHByb3ZlcnUgc3RhdHVzYSBzbGFuamEgemEgdXNsdWd1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ1VrbGp1xI1pIGlsaSBpc2tsanXEjWkgcHJvdmVydSBzdGF0dXNhIHNsYW5qYSB6YSB0aXAgdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgIkZyb250ZW5kIiBtb2R1bGEgemEgZG9kYXZhbmplIGFua2V0ZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphICJGcm9udGVuZCIgbW9kdWxhIHphIGl6bWVuZSBhbmtldGUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgIkZyb250ZW5kIiBtb2R1bGEgemEgc3RhdGlzdGlrdSBhbmtldGUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSAiRnJvbnRlbmQiIG1vZHVsYSB6YSBkZXRhbGpuaSBwcmlrYXogYW5rZXRlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgIkZyb250ZW5kIiBtb2R1bGEgemEgamF2bmUgYW5rZXRuZSBvYmpla3RlIGFua2V0ZSB1IHByb3N0b3J1IGphdm5paCBhbmtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdBa28gc2Ugb3ZhaiBpenJheiBwb2tsYXBhLCBhbmtldGEgbmXEh2UgYml0aSBwb3NsYXRhIGtvcmlzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnT2dyYW5pxI1lbmplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBzdHJhbmljYSAobmEga29qaW1hIHN1IGFua2V0ZSB2aWRsaml2ZSkgbmEgbWFsb20gcHJpa2F6dSBwcmVnbGVkYSBhbmtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnSmF2bmEgYW5rZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICdSZXp1bHRhdGkgc3RhcmlqaSBvZCBwb2RlxaFlbm9nIGJyb2phIGRhbmEgxIdlIGJpdGkgb2JyaXNhbmkuIE5hcG9tZW5hOiByZXp1bHRhdGUgYnJpxaFlIE9UUlMgc2lzdGVtc2tpIHNlcnZpcywgcG8gYWt0aXZhY2lqaSBwb2RlxaFhdmFuamEgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgdXJlxJFpdmFuamUgYW5rZXRlIHUgZGV0YWxqbm9tIHByaWthenUgaW50ZXJmZWpzYSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgdXJlxJFpdmFuamUgYW5rZXRuaWggcGl0YW5qYSB1IGRldGFsam5vbSBwcmlrYXp1IGludGVyZmVqc2Egb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgcG92cmF0YWsgdSBkZXRhbGpuaSBwcmlrYXogYW5rZXRlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgZGV0YWxqbmkgcHJpa2F6IHN0YXRpc3Rpa2UgYW5rZXRlIHUgZGV0YWxqbm9tIHByaWthenUgbmEgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGppIHN0YXRpc3Rpa2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTW9kdWwgemEgZG9kYXZhbmplIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsIHphIHVyZcSRaXZhbmplIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdPZ3JhbmnEjWVuamUgcHJlZ2xlZGEgYW5rZXRlIC0g4oCebWFsb+KAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ01vZHVsIHphIHN0YXRpc3Rpa3UgYW5rZXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWwgemEgZGV0YWxqbmkgcHJpa2F6IGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICdPZ3JhbmnEjWVuamUgYW5rZXRlIHBvIHN0cmFuaSB6YSBwcmVnbGVkIG1hbG9nIGZvcm1hdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnQW5rZXRhIG5lxIdlIGJpdGkgcG9zbGF0YSBuYSBwb2RlxaFlbnUgaW1lamwgYWRyZXN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvciB6YSBhbmtldHUsIG5wci4gU3VydmV5IywgTXlTdXJ2ZXkjLiBQb2RyYXp1bWV2YW5vIGplIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTW9kdWwgZG9nYcSRYWphIG5hIHRpa2V0dSB6YSBhdXRvbWF0c2tvIHNsYW5qZSBpbWVqbGEgbyBpc3RyYcW+aXZhbmp1IGtvcmlzbmljaW1hIGFrbyBqZSB0aWtldCB6YXR2b3Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJ09raWRhIGJyaXNhbmplIHJlenVsdGF0YSAodWtsanXEjXVqdcSHaSBwb2RhdGtlIHByaW1samVuaWggZ2xhc292YSBpIHBvc2xhdGloIHphaHRldmEpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnT2tpZGHEjSBvZGxvxb5lbm9nIHNsYW5qYSB6YWh0ZXZhIHphIGFua2V0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICdVbGF6IHUgZGV0YWxqbmkgcHJpa2F6IHN0YXRpc3Rpa2UuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN2X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnN3X1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1RlbmdlbmV6YSB0YWZpdGkgbXB5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdVdGFuZ3VsaXppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdVdGFuZ3VsaXppIHdhIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0tpaW5pIGNoYSB0YWFyaWZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ0FpbmEgemEgdGlrZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnTWFlbGV6byB5YSBuZGFuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnSGFyaXJpIHRhYXJpZmEgemEgdWp1bWxhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnSGFyaXJpIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdNYXN3YWxpIHlhIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdPbmdlemEgc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdDaGFwYSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdKaWJ1IGxpbmFoaXRhamlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0hha3VuYSBtYXN3YWxpIHlhbGl5byBoaWZhZGhpd2Ega3dhIGhpaSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdTd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdKaWJ1IGxpbmFoaXRhamlrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdIYXJpcmkgc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdydWRpIGt3ZW55ZSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01hamlidSB5YXdlemVrYW5hIGt3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnT25nZXphIGppYnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdIYWt1bmEgbWFqaWJ1IHlhbGl5b2hpZmFkaGl3YSBrd2EgaGlsaSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnSGlsaSBoYWxpbmEgbWFqaWJ1IG1lbmdpLCBzZWhlbXUgeWEgbmFrYWxhIGl0YW9ueWVzaHdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0hhcmlyaSBqaWJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ1J1ZGkgbnl1bWEga3VoYXJpcmkgc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnTXR1bWFqaSB0YWFyaWZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnU29tbyBsYSB0YWFmaWZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdJbWViYWRpbGlzaHdhIG5hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ01hcGl0aW8geWEgdGFrd2ltdSB5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ0plZHdhbGkgbGEgbWFvbWJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnTXVkYSB3YSBrdXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnTXVkYSB3YSBrdXBpZ2Ega3VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnT25hIG1hZWxlem8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdNYWVsZXpvIHlhIHRha3dpbXUgemEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdSdWRpIG55dW1hIGt3ZW55ZSBtYXBpdGlvIHlhIHRha3dpbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnVGFhcmlmYSB6YSB0YWt3aW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdNYW9tYmkgeWFsaXlvdHVtd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1RhZml0aSB6aWxpem9wb2tlbGV3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ01hZWxlem8geWEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ0h1ZHVtYSB6YSB0aWtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcmFmdSB5YSBtYXRva2VvIHlhIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnSGFrdW5hIG1hdG9rZW8geWEgdGFrd2ltdSc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdUYWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdUYWZhZGhhbGkgamlidSBoYXlhIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnT255ZXNoYSBtYWppYnUgeWFuZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0hheWEgbmkgbWFqaWJ1IHlha28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnS2ljaHdhIGNoYSBoYWJhcmkgY2hhIHV0YWZpdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ09uZ2V6YSB1dGFmaXRpIG1weWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0hhcmlyaSB1dGFmaXRpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdIYXJpcmkgbWFzd2FsaSB5YSB1dGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ05kaW8vSGFwYW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ1JlZGlvIChPcm9kaGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0NoZWtpIGJva3NpIChvcm9kaGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnQWluYSB5YSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0thbWlsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSXNpeW8ga2FtaWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdIYXJpcmkgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0hhcmlyaSBtYWppYnUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnTWFwaXRpbyB5YSB0YWt3aW11JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnTWFlbGV6byB5YSB0YWZpdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICdTaW9uaSBoYWxpIG1weWEhIEhha3VuYSBtYXN3YWxpIHlhbGl5b2ZhZmFudWxpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ0hhbGkgaW1lYmFkaWxpa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBIYWt1bmEgZm9sZW5pIGlsaXlvY2hhZ3VsaXdhLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCB0eXBlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gQ2hhbmdlIFN0YXR1cyAtJ30gPSAnLSBCYWRpbGlzaGEgSGFsaS0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnRnV6dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAnSXNpeW8gaGFsYWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdIYWxpIG1weWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnTWFlbGV6byB5YSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdZYWxpeW9qaWJpd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnWWFzaXlvamliaXdhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdBc2FudGUga3dhIG1hamlidSB5YWtvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ1V0YWZpdGkgdW1lbWFsaXppa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVW1la3dpc2hhamlidSB0YWZpdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ0plIHVuYXRha2Ega3VmdXRhIGhpbGkgc3dhbGk/IERhdGEgem90ZSB6aXRhIFBPVEVBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0plIHVuYXRha2Ega3VmdXRhIGhpbGkgamlidT8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnTW9kdWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ01vZHVsaSB5YSBrdWhhcmlyaSBtYXN3YWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0YSB6b3RlIHphIHZpdHUgdnlhIHNhdmVpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdJZGFkaSB5YSBzaWt1IGJhYWRhIHlhIGt1dHVtYSBiYXJ1YSBwZXBlIHlhIHRhZml0aSBhbWJhcG8gaGFrdW5hIG1hb21iaSBtYXB5YSB5YSB0YWZpdGkga3V0dW13YSBrd2EgbXRlamEgaHV5by4gS3VjaGFndWEgMCBkYWltYSBrdXRhdHVtYSBiYXJ1YSBwZXBlIHlhIHNhdmVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEga2lpbmkgY2hhIGJhcnVhIHBlcGUgeWEgdGFhcmlmYSBrd2Egd2F0ZWphIGt1aHVzdSBzYXZlaSBtcHlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEgbXR1bWFqaSB3YSBiYXJ1YSBwZXBlIHlhIHRhYXJpZmEga3VodXN1IHNhdmVpIG1weWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEgc29tbyBsYSBiYXJ1YSBwZXBlIHlhIHRhYXJpZmEga3dhIHdhdGVqYSBrdWh1c3Ugc2F2ZWkgbXB5YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtYXBpdGlvIHlhIG1vZHVsaSBrdW9ueWVzaGEgbXVvbmVrYW5vIG1kb2dvIHdhIG9yb2RoYSB5YSBzYXZlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGtpa29tbyBjaGEganV1IGNoYSBpZGFkaSB5YSBzYXZlaSB6aW5hem90dW13YSBrd2EgbXRlamEga3dhIHNpa3UgMzAuICgwIGluYW1hYW5pc2hhIGhha3VuYSBraWtvbW8sIHNhdmVpIHpvdGUgeml0YXR1bXdhKS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBsYSB1cmVmdSB3YSBtdW9uZWthbm8gd2EgUmljaHRleHQga3dhIGVsZW1lbnRpIHphIFV0YWZpdGlLdXp3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzYWZ1IGlsaXlvb255ZXNod2Ega3dlbnllIG1hcGl0aW8geWEgdXRhZml0aS4gSGlsaSBjaGFndW8gaGFsaW5hIGF0aGFyaSBrd2EgbmFmYXNpIHlhIHNhZnUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnV2V6ZXNoYSBhdSBVc2l3ZXplc2hlIHNrcmluaSB5YSBPbmVzaGFLdXJhRGF0YSBrd2Ega2lvbGVzdXJhIGNoYSB1bW1hIGlsaSBrdW9ueWVzaGEgZGF0YSB6YSB1dGFmaXRpIGZ1bGFuaSBtYWFsdW11IHBhbGUgbXRlamEgYW5hcG9qYXJpYnUga3VqaWJ1IHV0YWZpdGkga3dhIG1hcmEgeWEgcGlsaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdXZXplc2hhIGF1IFVzaXdlemVzaGUga3VjaGFndWEgaGFsaSB5YSBrdXR1bWEga3dhIGhpaSBodWR1bWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnV2V6ZXNoYSBhdSBVc2l3ZXplc2hlIGt1Y2hhZ3VhIGhhbGkgeWEga3V0dW1hIGt3YSBhaW5hIHlhIHRpa2V0aS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsaSB5YSBGcm9udGVuZCB5YSBrdXNhamlsaSBpbGkga3VvbmdlemEgIHV0YWZpdGkga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxpIHlhIEZyb250ZW5kIHlhIGt1c2FqaWxpIGlsaSBrdWhhcmlyaSB1dGFmaXRpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bGkgeWEgRnJvbnRlbmQgeWEga3VzYWppbGkgdGFrd2ltdSB6YSB1dGFmaXRpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsaSB5YSBGcm9udGVuZCB5YSBrdXNhamlsaSB1dGFmaXRpIGt1emEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTW9kdWxpIHlhIEZyb250ZW5kIHlhIGt1c2FqaWxpIGt3YSBhamlsaSB5YSBVdGFmaXRpVW1tYSBrYXRpa2EgZW5lbyBsYSB1dGFmaXRpIHdhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdLYW1hIGhpaSByZWdleCBpbmFmYW5hbmEsIHV0YWZpdGkgd2EgbXRlamEgaGF1dGF0dW13YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGEga3dhIGFqaWxpIHlhIGt1cmFzYSAoYW1iYXpvIG5kYW5pIHlha2UgdXRhZml0aSB1bWVvbnllc2h3YSkgemEgbWFwaXRpbyB5YSB1dGFmaXRpIG1kb2dvLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdTYXZlaSB5YSB1bW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1aGFyaXJpIHV0YWZpdGkga2F0aWthIG11b25la2FubyB1bGlva3V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGlsaSBrdWhhcmlyaSBtYXN3YWxpIHlhIHV0YWZpdGkga2F0aWthIG11b25la2FubyB1bGlva3V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1cnVkaSBrYXRpa2EgbXVvbmVrYW5vIHVsaW9rdXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1a3V6YSBtYWVsZXpvIHlhIHRha3dpbXUgemEgdXRhZml0aSBrYXRpa2EgbXVvbmVrYW5vIHVsaW9rdXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ01hZWxlem8geWEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnTW9kdWxpIHlhIGt1aGFyaXJpIHNhdmVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ01hcGl0aW8geWEgc2F2ZWkga2lrb21vICJjaGEgY2hpbmkiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTW9kdWxpIHlhIHRha3dpbXUgemEgc2F2ZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bGkgeWEga3VrdXphIHNhdmVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnU2F2ZWkgaGF6aXRhdHVtd2Ega3dhIGJhcnVhIHBlcGUgemlsaXpvd2Vrd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdLaXRhbWJ1bGlzaG8gY2hhIHV0YWZpdGksIG1mLiBVdGFmaXRpIywgVXRhZml0aSB3YW5ndSMuIENoYWd1by1tc2luZ2kgbmkgVXRhZml0aSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTW9kdWxpIHlhIHR1a2lvIGxhIHRpa2V0aSBrd2EgYWppbGkgeWEga3V0dW1hIGJhcnVhIHBlcGUgemEgbWFvbWJpIHlhIHRhZml0aSBtb2phIGt3YSBtb2phIGt3YSB3YXRlamEga2FtYSB0aWtldGkgaW1lZnVuZ3dhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnRoX1RIX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+C4quC4o+C5ieC4suC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4q+C4oeC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfguJrguJfguJnguLMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ+C4hOC4s+C4meC4s+C5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+C4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC4quC5iOC4p+C4meC5gOC4meC4t+C5ieC4reC5gOC4o+C4t+C5iOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICfguJvguKPguLDguYDguKDguJfguILguK3guIfguJXguLHguYvguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICfguKPguLLguKLguKXguLDguYDguK3guLXguKLguJTguKDguLLguKLguYPguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ+C5geC4geC5ieC5hOC4guC4guC5ieC4reC4oeC4ueC4peC4l+C4seC5iOC4p+C5hOC4myc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ+C5geC4geC5ieC5hOC4guC4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfguITguLjguJPguK3guKLguLnguYjguJfguLXguYjguJnguLXguYgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+C4hOC4s+C4luC4suC4oeC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfguYDguJ7guLTguYjguKHguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfguJvguKPguLDguYDguKDguJfguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LiE4Liz4LiV4Lit4LiaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn4LmE4Lih4LmI4Lih4Li14LiE4Liz4LiW4Liy4Lih4Lia4Lix4LiZ4LiX4Li24LiB4LmD4LiZ4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn4LiE4Liz4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+C4leC5ieC4reC4h+C4geC4suC4o+C4hOC4s+C4leC4reC4mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAn4LmA4Lih4Li34LmI4Lit4LiE4Li44LiT4LiB4Liy4Lij4LmB4LiB4LmJ4LmE4LiC4LiE4Liz4LiW4Liy4Lih4LmD4LiZ4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmA4Liq4Lij4LmH4LiI4Liq4Li04LmJ4LiZ4LmB4Lil4LmJ4Lin4LmA4Lie4Li14Lii4LiH4LmB4LiE4LmI4Lib4Li04LiU4Lir4LiZ4LmJ4Liy4LiI4Lit4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfguYHguIHguYnguYTguILguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfguIHguKXguLHguJrguYTguJvguJfguLXguYjguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn4LiE4Liz4LiW4Liy4LihOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ+C4hOC4s+C4leC4reC4muC4l+C4teC5iOC5gOC4m+C5h+C4meC5hOC4m+C5hOC4lOC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAn4LmA4Lie4Li04LmI4Lih4LiE4Liz4LiV4Lit4LiaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAn4LmE4Lih4LmI4Lih4Li14LiE4Liz4LiV4Lit4Lia4Lia4Lix4LiZ4LiX4Li24LiB4LmD4LiZ4LiE4Liz4LiW4Liy4Lih4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfguKHguLXguJrguLLguIfguITguLPguJbguLLguKHguJfguLXguYjguKLguLHguIfguYTguKHguYjguJXguK3guJogdGV4dGFyZWEg4LiI4Liw4Lib4Lij4Liy4LiB4LiPICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ+C5geC4geC5ieC5hOC4guC4hOC4s+C4leC4reC4mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfguIHguKXguLHguJrguYTguJvguJfguLXguYjguYHguIHguYnguYTguILguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ+C4hOC4s+C4leC4reC4mjonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICfguIjguLPguJnguKfguJnguKrguLnguIfguKrguLjguJTguJfguLXguYjguIjguLDguYHguKrguJTguIfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguJnguYHguJXguYjguKXguLDguKvguJnguYnguLInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ+C4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC4nOC4ueC5ieC4quC5iOC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ+C4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC5gOC4o+C4t+C5iOC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAn4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4LmC4LiU4LiiJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ+C4quC4luC4tOC4leC4tOC4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ+C4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4leC4suC4o+C4suC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ+C5gOC4p+C4peC4suC4quC5iOC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfguYDguKfguKXguLLguYLguKvguKfguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ+C4lOC4ueC5gOC4meC4t+C5ieC4reC4q+C4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ+C5gOC4meC4t+C5ieC4reC4q+C4suC4guC4reC4h+C4quC4luC4tOC4leC4tOC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAn4LiB4Lil4Lix4Lia4LmE4Lib4LiX4Li14LmI4Liq4LiW4Li04LiV4Li04Lig4Liy4Lie4Lij4Lin4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ+C4guC5ieC4reC4oeC4ueC4peC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAn4Liq4LmI4LiH4LiE4Liz4Lij4LmJ4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfguYTguJTguYnguKPguLHguJrguYHguJrguJrguKrguK3guJrguJbguLLguKHguYHguKXguYnguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICfguYDguJnguLfguYnguK3guKvguLLguILguK3guIfguYHguJrguJrguKrguK3guJrguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAn4LiB4Liy4Lij4Lia4Lij4Li04LiB4Liy4Lij4LiC4Lit4LiH4LiV4Lix4LmL4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAn4LiB4Lij4Liy4Lif4LiE4Liz4LiV4Lit4Lia4LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICfguYTguKHguYjguKHguLXguITguLPguJXguK3guJrguILguK3guIfguKrguJbguLTguJXguLQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAn4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAn4LmC4Lib4Lij4LiU4LiV4Lit4Lia4LiE4Liz4LiW4Liy4Lih4LmA4Lir4Lil4LmI4Liy4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ+C5geC4quC4lOC4h+C4hOC4s+C4leC4reC4muC4guC4reC4h+C4ieC4seC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAn4LiZ4Li14LmI4LiE4Li34Lit4LiE4Liz4LiV4Lit4Lia4LiC4Lit4LiH4LiE4Li44LiTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ+C4q+C4seC4p+C4guC5ieC4reC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAn4LmA4Lie4Li04LmI4Lih4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfguYHguIHguYnguYTguILguYHguJrguJrguKrguK3guJrguJbguLLguKEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC5geC4geC5ieC5hOC4guC4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICfguYPguIrguYgv4LmE4Lih4LmI4LmD4LiK4LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ+C5gOC4o+C4lOC4tOC5guC4rSjguKPguLLguKLguIrguLfguYjguK0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ+C4geC4peC5iOC4reC4h+C4leC4o+C4p+C4iOC4quC4reC4miAo4Lij4Liy4Lii4LiK4Li34LmI4LitKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4guC4reC4h+C4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ+C5gOC4quC4o+C5h+C4iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn4LmE4Lih4LmI4LmA4Liq4Lij4LmH4LiIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfguYHguIHguYnguYTguILguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfguYHguIHguYnguYTguILguITguLPguJXguK3guJonOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAn4Liq4LiW4Li04LiV4Li04Lig4Liy4Lie4Lij4Lin4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAn4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Liq4LiW4Li04LiV4Li0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAn4LmE4Lih4LmI4Liq4Liy4Lih4Liy4Lij4LiW4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4Lir4Lih4LmIISDguKLguLHguIfguYTguKHguYjguYTguJTguYnguIHguLPguKvguJnguJTguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lil4LmJ4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0g4LmE4Lih4LmI4Lih4Li14LiE4Li04Lin4LiX4Li14LmI4LiW4Li54LiB4LmA4Lil4Li34Lit4LiBIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHNlcnZpY2Ugc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0g4LmA4Lib4Lil4Li14LmI4Lii4LiZ4Liq4LiW4Liy4LiZ4LiwIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAn4Lih4Liy4Liq4LmA4LiV4Lit4Lij4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICfguYTguKHguYjguJbguLnguIHguJXguYnguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ+C4quC4luC4suC4meC4sOC5g+C4q+C4oeC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfguITguLPguK3guJjguLTguJrguLLguKLguYHguJrguJrguKrguK3guJrguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICfguJXguK3guJrguYHguKXguYnguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn4Lii4Lix4LiH4LmE4Lih4LmI4LiV4Lit4LiaJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfguILguK3guJrguITguLjguJPguKrguLPguKvguKPguLHguJrguITguKfguLLguKHguITguLTguJTguYDguKvguYfguJnguILguK3guIfguITguLjguJMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYDguKrguKPguYfguIjguYDguKPguLXguKLguJrguKPguYnguK3guKLguYHguKXguYnguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAn4LiE4Li44LiT4LmE4LiU4LmJ4LiV4Lit4Lia4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LiZ4Li14LmJ4LmB4Lil4LmJ4LinJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfguITguLjguJPguYHguJnguYjguYPguIjguKvguKPguLfguK3guYTguKHguYjguJfguLXguYjguIjguLDguKXguJrguITguLPguJbguLLguKHguJnguLXguYk/IOC4guC5ieC4reC4oeC4ueC4peC4l+C4teC5iOC5gOC4geC4teC5iOC4ouC4p+C4guC5ieC4reC4h+C4l+C4seC5ieC4h+C4q+C4oeC4lOC4iOC4sOC4q+C4suC4ouC5hOC4myEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICfguITguLjguJPguJXguYnguK3guIfguIHguLLguKPguKXguJrguIHguLLguKPguJXguK3guJrguJnguLXguYnguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ+C5guC4oeC4lOC4ueC4peC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn4LmC4Lih4LiU4Li54Lil4Liq4Liz4Lir4Lij4Lix4Lia4LmB4LiB4LmJ4LmE4LiC4LiE4Liz4LiW4Liy4Lih4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4Liq4Liz4Lir4Lij4Lix4Lia4Lit4Lit4Lia4LmA4LiI4LiB4LiV4LmM4LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ+C4iOC5jeC4suC4meC4p+C4meC4p+C4seC4meC4q+C4peC4seC4h+C4iOC4suC4geC4quC5iOC4h+C4reC4teC5gOC4oeC4peC5jOC5g+C4meC4geC4suC4o+C4quC4reC4muC4luC4suC4oeC4l+C4teC5iOC5hOC4oeC5iOC4oeC4teC4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4geC4suC4o+C4quC4reC4muC4luC4suC4oeC4hOC4o+C4seC5ieC4h+C5g+C4q+C4oeC5iOC4iOC4sOC4luC4ueC4geC4quC5iOC4h+C5hOC4m+C4ouC4seC4h+C4peC4ueC4geC4hOC5ieC4suC4o+C4suC4ouC5gOC4lOC4teC4ouC4p+C4geC4seC4mSDguYDguKXguLfguK3guIEgMCDguYDguJ7guLfguYjguK3guKrguYjguIfguK3guLXguYDguKHguKXguYzguYPguJnguIHguLLguKPguKrguK3guJrguJbguLLguKHguJXguKXguK3guJQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4Liq4LmI4Lin4LiZ4LmA4LiZ4Li34LmJ4Lit4LmA4Lij4Li34LmI4Lit4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4Lit4Li14LmA4Lih4Lil4LmM4LmA4LiB4Li14LmI4Lii4Lin4LiB4Lix4Lia4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4Lir4Lih4LmI4LiW4Li24LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4Lic4Li54LmJ4Liq4LmI4LiH4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4Lit4Li14LmA4Lih4Lil4LmM4LmA4LiB4Li14LmI4Lii4Lin4LiB4Lix4Lia4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4Lir4Lih4LmI4LiW4Li24LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ+C4hOC5iOC4suC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C5gOC4meC4t+C5ieC4reC4q+C4suC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5geC4iOC5ieC4h+C5gOC4leC4t+C4reC4meC4reC4teC5gOC4oeC4peC5jOC5gOC4geC4teC5iOC4ouC4p+C4geC4seC4muC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4q+C4oeC5iOC4luC4tuC4h+C4peC4ueC4geC4hOC5ieC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguYLguKHguJTguLnguKXguKDguLLguJ7guKPguKfguKHguJfguLXguYjguIjguLDguYHguKrguJTguIfguKHguLjguKHguKHguK3guIfguYDguKXguYfguIEg4LmGIOC4guC4reC4h+C4o+C4suC4ouC4iuC4t+C5iOC4reC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4iOC4s+C4meC4p+C4meC4quC4ueC4h+C4quC4uOC4lOC4guC4reC4h+C4geC4suC4o+C4quC4s+C4o+C4p+C4iOC4l+C4teC5iOC5hOC4lOC5ieC4o+C4seC4muC4geC4suC4o+C4quC5iOC4h+C5g+C4q+C5ieC4geC4seC4muC4peC4ueC4geC4hOC5ieC4suC4oOC4suC4ouC5g+C4mSAzMCDguKfguLHguJkgKDAg4Lir4Lih4Liy4Lii4LiW4Li24LiH4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiI4Liz4LiZ4Lin4LiZ4Liq4Li54LiH4Liq4Li44LiUIOC4i+C4tuC5iOC4h+C5geC4muC4muC4quC4s+C4o+C4p+C4iOC4l+C4teC5iOC5gOC4o+C4teC4ouC4geC4guC4reC4l+C4seC5ieC4h+C4q+C4oeC4lOC4iOC4sOC4luC4ueC4geC4quC5iOC4hyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4Lin4Liy4Lih4Liq4Li54LiH4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4Liq4Liz4Lir4Lij4Lix4Lia4Lih4Li44Lih4Lih4Lit4LiHIFJpY2h0ZXh0IOC4quC4s+C4q+C4o+C4seC4muC4reC4h+C4hOC5jOC4m+C4o+C4sOC4geC4reC4muC4guC4reC4hyBTdXJ2ZXlab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC4reC4peC4seC4oeC4meC5jOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5g+C4meC4oOC4suC4nuC4o+C4p+C4oeC4guC4reC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC4leC4seC4p+C5gOC4peC4t+C4reC4geC4meC4teC5ieC4iOC4sOC5hOC4oeC5iOC4oeC4teC4nOC4peC4leC5iOC4reC4leC4s+C5geC4q+C4meC5iOC4h+C4guC4reC4h+C4hOC4reC4peC4seC4oeC4meC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn4LmA4Lib4Li04LiU4Lir4Lij4Li34Lit4Lib4Li04LiU4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4Liq4LiB4Lij4Li14LiZIOC4l+C4teC5iOC5geC4quC4lOC4h+C4guC5ieC4reC4oeC4ueC4peC4geC4suC4o+C5guC4q+C4p+C4leC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4quC4suC4mOC4suC4o+C4k+C4sOC5gOC4nuC4t+C5iOC4reC4iOC4sOC5geC4quC4lOC4h+C4nOC4peC4guC4reC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oSDguYDguKHguLfguYjguK3guKXguLnguIHguITguYnguLLguJ7guKLguLLguKLguLLguKHguJfguLXguYjguIjguLDguJXguK3guJrguYHguJrguJrguKrguK3guJrguJbguLLguKHguITguKPguLHguYnguIfguJfguLXguYjguKrguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICfguYDguJvguLTguJTguKvguKPguLfguK3guJvguLTguJTguIHguLLguKPguJXguKPguKfguIjguKrguK3guJrguYDguIfguLfguYjguK3guJnguYTguILguIHguLLguKPguKrguYjguIfguKrguLPguKvguKPguLHguJrguIHguLLguKPguJrguKPguLTguIHguLLguKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICfguYDguJvguLTguJTguKvguKPguLfguK3guJvguLTguJTguIHguLLguKPguJXguKPguKfguIjguKrguK3guJrguYDguIfguLfguYjguK3guJnguYTguILguIHguLLguKPguKrguYjguIfguKrguLPguKvguKPguLHguJrguJvguKPguLDguYDguKDguJfguILguK3guIfguJXguLHguYvguKcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEZyb250ZW5kIOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4nuC4tOC5iOC4oeC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEZyb250ZW5kIOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5geC4geC5ieC5hOC4guC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBGcm9udGVuZCDguKrguLPguKvguKPguLHguJrguKrguJbguLTguJXguLTguILguK3guIfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBGcm9udGVuZCDguKrguLPguKvguKPguLHguJrguIHguLLguKPguIvguLnguKHguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ+C4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5guC4oeC4lOC4ueC4pSBGcm9udGVuZCDguKrguLPguKvguKPguLHguJrguK3guK3guJrguYDguIjguIHguITguYzguYHguJrguJrguKrguK3guJrguJbguLLguKHguJfguLHguYjguKfguYTguJvguYPguJnguJ7guLfguYnguJnguJfguLXguYjguKrguLPguKPguKfguIjguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ+C4luC5ieC4suC4q+C4suC4gSByZWdleCDguJXguKPguIfguIHguLHguJkg4LiI4Liw4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4Liq4LmI4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4Lir4LmJ4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC5gOC4nuC4iCAo4LiL4Li24LmI4LiH4LiI4Liw4LmB4Liq4LiU4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihKSDguILguK3guIfguKDguLLguJ7guKPguKfguKHguYHguJrguJrguKrguK3guJrguJbguLLguKHguILguJnguLLguJTguYDguKXguYfguIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfguYHguJrguJrguKrguK3guJrguJbguLLguKHguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC5geC4geC5ieC5hOC4guC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC5geC4geC5ieC5hOC4guC4hOC4s+C4luC4suC4oeC5g+C4meC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4i+C4ueC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4Lii4LmJ4Lit4LiZ4LiB4Lil4Lix4Lia4LmD4LiZ4LiB4Liy4Lij4LiL4Li54Lih4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lil4Li04LiH4LiE4LmM4LmD4LiZ4LmA4Lih4LiZ4Li54LmA4Lie4Li34LmI4Lit4LiL4Li54LiS4LmE4Lib4LiX4Li14LmI4Lij4Liy4Lii4Lil4Liw4LmA4Lit4Li14Lii4LiU4Liq4LiW4Li04LiV4Li04LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICfguYDguJnguLfguYnguK3guKvguLLguKrguJbguLTguJXguLQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAn4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmA4Lie4Li04LmI4Lih4LmC4Lih4LiU4Li54LilJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYHguIHguYnguYTguILguYLguKHguJTguLnguKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICfguIHguLLguKPguIjguLPguIHguLHguJTguKDguLLguJ7guKPguKfguKHguILguK3guIfguYHguJrguJrguKrguK3guJrguJbguLLguKEgIuC4guC4meC4suC4lOC5gOC4peC5h+C4gSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICfguIHguLLguKPguKrguLPguKPguKfguIjguKrguJbguLTguJXguLTguYLguKHguJTguLnguKUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ+C5guC4oeC4lOC4ueC4peC4i+C4ueC4oeC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ+C4iOC4sOC5hOC4oeC5iOC4oeC4teC4geC4suC4o+C4quC5iOC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC4l+C4teC5iOC4reC4teC5gOC4oeC4peC4l+C4teC5iOC4luC4ueC4geC4geC4s+C4q+C4meC4lOC4hOC5iOC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAn4LiV4Lix4Lin4Lia4LmI4LiH4LiK4Li14LmJ4Liq4Liz4Lir4Lij4Lix4Lia4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihLCDguJXguLHguKfguK3guKLguYjguLLguIfguYDguIrguYjguJkg4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihIyDguYHguJrguJrguKrguK3guJrguJbguLLguKHguILguK3guIfguInguLHguJkjLiDguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguITguLfguK3guYHguJrguJrguKrguK3guJrguJbguLLguKEjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ+C5guC4oeC4lOC4ueC4peC4leC4seC5i+C4p+C4geC4tOC4iOC4geC4o+C4o+C4oeC4l+C4teC5iOC4iOC4sOC4quC5iOC4h+C4reC4teC5gOC4oeC4peC5geC4muC4muC4quC4reC4muC4luC4suC4oeC4guC4reC4h+C4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4reC4seC4leC5guC4meC4oeC4seC4leC4tOC5g+C4q+C5ieC4peC4ueC4geC4hOC5ieC4suC5g+C4meC4geC4o+C4k+C4teC4l+C4teC5iOC4leC4seC5i+C4p+C4luC4ueC4geC4m+C4tOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICfguIHguLLguKPguIHguKPguLDguJXguLjguYnguJnguIHguLLguKPguKrguYjguIfguIHguLLguKPguKPguYnguK3guIfguILguK3guYHguJrguJrguKrguK3guJrguJfguLXguYjguKXguYjguLLguIrguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnVrX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ9Ch0YLQstC+0YDQuNGC0Lgg0L3QvtCy0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAn0J/RgNC10LTRgdGC0LDQstC70LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ9Cf0YDQtdC00YHRgtCw0LLQu9C10L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAn0KLRltC70L4g0ZbQvdGE0L7RgNC80YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ9Ci0LjQv9C4INC30LDRj9Cy0L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ9CS0L3Rg9GC0YDRltGI0L3RltC5INC+0L/QuNGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICfQo9C80L7QstC4INC60LvRltGU0L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAn0JHRg9C00Ywg0LvQsNGB0LrQsCDQstC40LHQtdGA0ZbRgtGMINC60L7RgNC10LrRgtC90L4g0LrQu9GW0ZTQvdGC0LAg0YnQvtCxINC00L7QtNCw0YLQuCDRg9C80L7QstGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAn0J/Rg9Cx0LvRltGH0L3QuNC5INC60LvRjtGHINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAn0J/RgNC40LrQu9Cw0LQg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQt9Cw0LPQsNC70YzQvdGDINGW0L3RhNC+0YDQvNCw0YbRltGOJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ9CS0Lgg0YLRg9GCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICfQl9Cw0L/QuNGC0LDQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAn0JTQvtC00LDRgtC4INC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ9Ci0LjQvyDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn0J3QtdC+0LHRhdGW0LTQvdCwINCy0ZbQtNC/0L7QstGW0LTRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ9Cd0LXQvNCw0ZQg0LfQsdC10YDQtdC20LXQvdC40YUg0LfQsNC/0LjRgtCw0L3RjCDQtNC70Y8g0YbRjNC+0LPQviDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ9CX0LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICfQndC10L7QsdGF0ZbQtNC90LAg0LLRltC00L/QvtCy0ZbQtNGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfQodC70ZbQtCDQt9Cw0LrRgNC40YLQuCDRhtC1INCy0ZbQutC90L4g0L/RltGB0LvRjyDQt9Cw0LLQtdGA0YjQtdC90L3RjyDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ9CX0LDQutGA0LjRgtC4INGG0LUg0LLRltC60L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAn0L/QvtCy0LXRgNC90YPRgtC40YHRjCDQtNC+INC30LDQv9C40YLQsNC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn0JfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn0JzQvtC20LvQuNCy0ZYg0LLRltC00L/QvtCy0ZbQtNGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfQlNC+0LTQsNGC0Lgg0LLRltC00L/QvtCy0ZbQtNGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAn0J3QtdC80LDRlCDQt9Cx0LXRgNC10LbQtdC90LjRhSDQstGW0LTQv9C+0LLRltC00LXQuSDQtNC+INGG0YzQvtCz0L4g0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfQptC1INC30LDQv9C40YLQsNC90L3RjyDQvdC1INC80ZbRgdGC0LjRgtGMINCy0LDRgNGW0LDQvdGC0ZbQsiDQstGW0LTQv9C+0LLRltC00ZYsINCx0YPQtNC1INC/0L7QutCw0LfQsNC90LUg0YLQtdC60YHRgtC+0LLQtSDQv9C+0LvQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INCy0ZbQtNC/0L7QstGW0LTRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfQv9C+0LLQtdGA0L3Rg9GC0LjRgdGMINC00L4g0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ9CS0ZbQtNC/0L7QstGW0LTRjCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICfQntC/0YbRltGPINC/0LXRgNC10LPQu9GP0LTRgyDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICfQn9C+0YjRg9C6INC/0L4g0LDRgtGA0LjQsdGD0YLQsNGFICjRgNGW0LfQvdGWKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICfQp9Cw0YEg0YHRgtCy0L7RgNC10L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAn0JHQtdC3INC+0LHQvNC10LbQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAn0KLRltC70YzQutC4INC+0L/QuNGC0YPQstCw0L3QvdGPINGB0YLQstC+0YDQtdC90ZYg0LzRltC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINC+0L/QuNGC0YPQstCw0L3RjCDQvdCwINGB0YLQvtGA0ZbQvdC60YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ9CS0ZbQtNC/0YDQsNCy0L3QuNC6INGW0L3RhNC+0YDQvNGD0LLQsNC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfQotC10LzQsCDRltC90YTQvtGA0LzRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ9CX0LzRltC90LXQvdC40LknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAn0J7Qs9C70Y/QtCDRgdGC0LDRgtC40YHRgtC40LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ9Ci0LDQsdC70LjRhtGPINC30LDQv9C40YLRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICfQktC40LHRgNCw0YLQuCDQstGB0ZYg0LfQsNC/0LjRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ9Cn0LDRgSDQvdCw0LTRgdC40LvQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfQp9Cw0YEg0LPQvtC70L7RgdGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAn0JLQuNCx0LXRgNGW0YLRjCDRhtC10Lkg0LfQsNC/0LjRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ9Cf0LXRgNC10LPQu9GP0L3Rg9GC0Lgg0LTQtdGC0LDQu9GWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJ9CS0LjQtNCw0LvQuNGC0Lgg0YHRgtCw0YLQuNGB0YLQuNC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0LvRliDRgdGC0LDRgtC40YHRgtC40LrQuCDQvtC/0LjRgtGD0LLQsNC90L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfQv9C+0LLQtdGA0L3Rg9GC0LjRgdGMINC00L4g0L/QtdGA0LXQs9C70Y/QtNGDINGB0YLQsNGC0LjRgdGC0LjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICfQn9C+0L/QtdGA0LXQtNC90Y8g0L7RhtGW0L3QutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ9Cd0LDRgdGC0YPQv9C90LAg0L7RhtGW0L3QutCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ9CG0L3RhNC+0YDQvNCw0YbRltGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICfQndCw0LTRltGB0LvQsNC90ZYg0LfQsNC/0LjRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfQntGC0YDQuNC80LDQvdGWINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn0JTQtdGC0LDQu9GWINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ9Ch0LXRgNCy0ZbRgdC4INC30LDRj9Cy0L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ9CT0YDQsNGE0ZbQuiDRgNC10LfRg9C70YzRgtCw0YLRltCyINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICfQndC10LzQsNGUINGB0YLQsNGC0LjRgdGC0LjQutC4JzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ9Ce0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAn0JHRg9C00Ywg0LvQsNGB0LrQsCwg0LTQsNC50YLQtSDQstGW0LTQv9C+0LLRltC00Ywg0L3QsCDQvdCw0YHRgtGD0L/QvdGWINC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfQn9C+0LrQsNC30LDRgtC4INC80L7RlyDQstGW0LTQv9C+0LLRltC00ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ9CS0LDRiNGWINCy0ZbQtNC/0L7QstGW0LvRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfQl9Cw0LPQvtC70L7QstC+0Log0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ9CU0L7QtNCw0YLQuCDQvdC+0LLQtSDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfQktC4INC90LUg0LzQsNGU0YLQtSDQv9C+0LLQvdC+0LLQsNC20LXQvdGMINC90LAg0YbQtSDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICfQndC1INC90LDQtNCw0L3QviBTdXJ2ZXlJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICfQktC4INC90LUg0LzQsNGU0YLQtSDQv9C+0LLQvdC+0LLQsNC20LXQvdGMINC90LAg0YbQtSDQvtC/0LjRgtGD0LLQsNC90L3RjyDRh9C4INC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ9CS0Lgg0L3QtSDQvNCw0ZTRgtC1INC/0L7QstC90L7QstCw0LbQtdC90Ywg0L3QsCDRhtC1INC+0L/QuNGC0YPQstCw0L3QvdGPLCDQt9Cw0L/QuNGC0LDQvdC90Y8g0YfQuCDQstGW0LTQv9C+0LLRltC00YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LfQsNC/0LjRgtCw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ9Ci0LDQui/QndGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ9Cg0LDQtNGW0L4gKNGB0L/QuNGB0L7QuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn0J/RgNCw0L/QvtGA0YbRliAo0YHQv9C40YHQvtC6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICfQn9C+0LrQsNC30L3QuNC6INC+0YbRltC90LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn0KLQuNC/INC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ9CX0LDQstC10YDRiNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn0J3QtSDQt9Cw0LLQtdGA0YjQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INCy0ZbQtNC/0L7QstGW0LTRjCAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAn0J/QtdGA0LXQs9C70Y/QtCDRgdGC0LDRgtC40YHRgtC40LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJ30gPSAn0JLQuCDQvdC1INC80LDRlNGC0LUg0L/QvtCy0L3QvtCy0LDQttC10L3RjCDQvdCwINGG0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0YfQuCDRgdGC0LDRgtC40YHRgtC40LrRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICfQlNC10YLQsNC70ZYg0YHRgtCw0YLQuNGB0YLQuNC60LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfQndC1INC80L7QttC70LjQstC+INCy0YHRgtCw0L3QvtCy0LjRgtC4INC90L7QstC40Lkg0YHRgtCw0YLRg9GBLiDQndC1INCy0LjQt9C90LDRh9C10L3RliDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICfQndC1INC80L7QttC70LjQstC+INC+0L3QvtCy0LjRgtC4INGB0YLQsNGC0YPRgSEg0JfQsNC/0LjRgtCw0L3QvdGPINC90LUg0LfQsNCy0LXRgNGI0LXQvdGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ9Ch0YLQsNGC0YPRgSDQt9C80ZbQvdC40LLRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctINCd0LUg0LLQuNCx0YDQsNC90L4g0YfQtdGA0LPRgyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJ9Cd0LUg0LLQuNCx0YDQsNC90L4g0YLQuNC/INC30LDRj9Cy0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICfQndC1INCy0LjQsdGA0LDQvdC+INGB0LXRgNCy0ZbRgSDQt9Cw0Y/QstC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctINCX0LzRltC90LjRgtC4INGB0YLQsNGC0YPRgSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ9CT0L7Qu9C+0LLQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCd9ID0gJ9Cd0LXQtNGW0LnRgdC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAn0J3QvtCy0LjQuSDRgdGC0LDRgtGD0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YEg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICfQstGW0LTQv9C+0LLRltC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn0L3QtSDQstGW0LTQv9C+0LLRltC70LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ9CU0Y/QutGD0ZTQvNC+INC30LAg0JLQsNGIINCy0ZbQtNCz0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ9Ce0L/QuNGC0YPQstCw0L3QvdGPINC30LDQstC10YDRiNC10L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICfQn9C+0LLRltC00L7QvNC70LXQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICfQnNC+0LTRg9C70Ywg0L3QtSDQtNC+0LfQstC+0LvQtdC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJ9Cm0LXQuSDRhNGD0L3QutGG0ZbQvtC90LDQuyDQvdC1INC00L7Qt9Cy0L7Qu9C10L3QuNC5LCDQsdGD0LTRjCDQu9Cw0YHQutCwINC30LLRj9C20ZbRgtGM0YHRjyDQtyDQsNC00LzRltC90ZbRgdGC0YDQsNGC0L7RgNC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ9Cf0L7QvNC40LvQutCwINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICfQndC1INCy0ZbRgNC90LjQuSDQutC70Y7RhyDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAn0JLQutC70LDQtNC10L3QuNC5INC60LvRjtGHINC+0L/QuNGC0YPQstCw0L3QvdGPINC90LUg0LLRltGA0L3QuNC5LCDQsNCx0L4g0JLQuCDQv9C10YDQtdC50YjQu9C4INC30LAg0YXQuNCx0L3QuNC8INGH0Lgg0L/QvtGI0LrQvtC00LbQtdC90LjQvCDQv9C+0YHQuNC70LDQvdC90Y/QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJ9CT0L7Qu9C+0YHRg9Cy0LDQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ9CU0LDQvdGWINCz0L7Qu9C+0YHRg9Cy0LDQvdC90Y8g0L/QviDQvtC/0LjRgtGD0LLQsNC90L3Rjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAn0JLQuCDQstC20LUg0LLRltC00L/QvtCy0ZbQu9C4INC90LAg0LLRgdGWINC30LDQv9C40YLQsNC90L3RjyDQsiDQvtC/0LjRgtGD0LLQsNC90L3Rlic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAn0J/QtdGA0LXQu9GW0Log0L7Qv9C40YLRg9Cy0LDQvdGMJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAn0JLQuCDQtNGW0LnRgdC90L4g0YXQvtGH0LXRgtC1INCy0LjQtNCw0LvQuNGC0Lgg0YbQtSDQt9Cw0L/QuNGC0LDQvdC90Y8/INCS0YHRliDQv9C+0LLRj9C30LDQvdGWINC00LDQvdGWINCx0YPQtNGD0YLRjCDQktCi0KDQkNCn0JXQndCGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn0JLQuCDQtNGW0LnRgdC90L4g0YXQvtGH0LXRgtC1INCy0LjQtNCw0LvQuNGC0Lgg0YbQtSDQt9Cw0L/QuNGC0LDQvdC90Y8/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LvRjCDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn0JzQvtC00YPQu9GMINC00LvRjyDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC30LDQv9C40YLQsNC90Ywg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktGB0ZYg0L/QsNGA0LDQvNC10YLRgNC4INC/0L4g0L7Qv9C40YLRg9Cy0LDQvdC90Y4g0ZQg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQtNC90ZbQsiDQv9GW0YHQu9GPINC90LDQtNGB0LjQu9Cw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPINC/0L4g0Y/QutC40YUg0L3QtdC80LDRlCDQstGW0LTQs9GD0LrRgyDRgtC+0LzRgyDRgdCw0LzQvtC80YMg0LrQu9GW0ZTQvdGC0YMgKDAt0LfQsNCy0LbQtNC4INC90LDQtNGB0LjQu9Cw0YLQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0KLRltC70L4g0LvQuNGB0YLQsCDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDRltC90YTQvtGA0LzRg9Cy0LDQvdC90Y8g0L/QviDQtdC70LXQutGC0YDQvtC90L3RltC5INC/0L7RiNGC0ZYg0LrQu9GW0ZTQvdGC0LDQvCDQv9GA0L4g0L3QvtCy0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQktGW0LTQv9GA0LDQstC90LjQuiDQv9C+INC30LDQvNC+0LLRh9GD0LLQsNC90L3RjiDQtNC70Y8g0ZbQvdGE0L7RgNC80YPQstCw0L3QvdGPINC/0L4g0LXQu9C10LrRgtGA0L7QvdC90ZbQuSDQv9C+0YjRgtGWINC60LvRltGU0L3RgtCw0Lwg0L/RgNC+INC90L7QstC1INC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Ci0LXQvNCwINC/0L4g0LfQsNC80L7QstGH0YPQstCw0L3QvdGOINC00LvRjyDRltC90YTQvtGA0LzRg9Cy0LDQvdC90Y8g0L/QviDQtdC70LXQutGC0YDQvtC90L3RltC5INC/0L7RiNGC0ZYg0LrQu9GW0ZTQvdGC0LDQvCDQv9GA0L4g0L3QvtCy0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC+0LTRg9C70Ywg0L/QtdGA0LXQs9C70Y/QtNGDLCDRidC+0LEg0L/QvtC60LDQt9Cw0YLQuCDQutC+0YDQvtGC0LrQuNC5INC+0LPQu9GP0LQg0YHQv9C40YHQutGDINC3INC+0L/QuNGC0YPQstCw0L3QvdGP0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINCz0YDRg9C/0Lgg0Y/QutGWINC80LDRjtGC0Ywg0L/QvtCy0L3QvtCy0LDQttC10L3QvdGPINC30LzRltC90LjRgtC4INGB0YLQsNC9INC+0L/QuNGC0YPQstCw0L3QvdGPLiDQnNCw0YHQuNCyINC/0L4g0LfQsNC80L7QstGH0YPQstCw0L3QvdGOINGUINC/0YPRgdGC0LjQuSDRliDQsNCz0LXQvdGC0Lgg0Lcg0YPRgdGW0YUg0LPRgNGD0L8g0LzQvtC20YPRgtGMINC30LzRltC90LjRgtC4INGB0YLQsNGC0YPRgSDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0YfQuCDQt9Cw0L/QuNGC0LDQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0L/QvtCy0LjQvdC90ZYg0LHRg9GC0Lgg0L3QsNC00ZbRgdC70LDQvdGWINC60LvRltGU0L3RgtCw0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0YLQsNC60YHQuNC80LDQu9GM0L3QtSDQt9C90LDRh9C10L3QvdGPINC60ZbQu9GM0LrQvtGB0YLRliDQvtC/0LjRgtGD0LLQsNC90YwsINGJ0L4g0LzQvtC20YPRgtGMINCx0YPRgtC4INC90LDRltGB0LvQsNC90ZYg0LrQvtGA0LjRgdGC0YPQstCw0YfRgyDQv9GA0L7RgtGP0LPQvtC8IDMwINC00L3RltCyICgwLdCy0YHRliknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LfQvdCw0YfQtdC90L3RjyDQt9Cw0YLRgNC40LzQutC4INC90LDQtNGB0LjQu9Cw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPINC/0ZbRgdC70Y8g0LfQsNC60YDQuNGC0YLRjyDQt9Cw0Y/QstC60Lgg0LIg0LPQvtC00LjQvdCw0YUgKDAt0L7QtNGA0LDQt9GDKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC60L7Qu9C+0L3QutC4INC00LvRjyDQstC40L/QsNC00LDRjtGH0L7Qs9C+INGB0L/QuNGB0LrRgyDQtNC70Y8g0L/QvtCx0YPQtNC+0LLQuCDRg9C80L7QsiAoMC8xIC0g0L3QtdCw0LrRgtC40LLQvdC40Lkv0LDQutGC0LjQstC90LjQuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQstC40YHQvtGC0YMgUmljaHRleHQgdmlld3Mg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0LfQsdGW0LvRjNGI0LXQvdC40YUg0LXQu9C10LzQtdC90YLRltCyINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJ9CX0LDQtNCw0ZQg0LPRgNGD0L/QuCAo0YfQuNGC0LDQvdC90Y8v0LfQsNC/0LjRgdGDKSDRj9C60ZYg0LzQvtC20YPRgtGMINCy0LjQtNCw0LvQuNGC0Lgg0YHRgtCw0YLQuNGB0YLQuNC60YMg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNCw0LrRgS4g0LLQuNGB0L7RgtGDIFJpY2h0ZXh0IHZpZXdzINC00LvRjyDQt9Cx0ZbQu9GM0YjQtdC90LjRhSDQtdC70LXQvNC10L3RgtGW0LIg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0Y/QutGWINC60L7Qu9C+0L3QutC4INC/0L7QutCw0LfRg9Cy0LDRgtC4INCyINC/0LXRgNC10LPQu9GP0LTRliDQvtC/0LjRgtGD0LLQsNC90L3Rjy4g0J3QtSDQstC/0LvQuNCy0LDRlCDQvdCwINGX0YUg0YDQvtC30YLQsNGI0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGH0Lgg0LzQvtC00YPQu9GMINGB0YLQsNGC0LjRgdGC0LjQutC4INC80L7QttC1INCz0LXQvdC10YDRg9Cy0LDRgtC4INC70LjRgdGC0Lgg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQt9Cw0LPQsNC70YzQvdGDINGW0L3RhNC+0YDQvNCw0YbRltGOINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfQoNC10LTQsNCz0YPQstCw0YLQuCDQt9Cw0L/QuNGC0LDQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn0JLQstGW0LzQutC90YPRgtC4L9Cy0LjQvNC60L3Rg9GC0Lgg0LLRltC00L7QsdGA0LDQttC10L3QvdGPINC00LDRgtC4INCz0L7Qu9C+0YHRg9Cy0LDQvdC90Y8g0LIg0L/Rg9Cx0LvRltGH0L3QvtC80YMg0ZbQvdGC0LXRgNGE0LXQudGB0ZYo0L/QvtC60LDQt9GD0ZTRgtGM0YHRjyDQutC70ZbRlNC90YLRgyDQv9GA0Lgg0L/QvtCy0YLQvtGA0L3RltC5INGB0L/RgNC+0LHRliDQv9GA0L7QudGC0Lgg0L7Qv9C40YLRg9Cy0LDQvdC90Y8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAn0JLQstGW0LzQutC90YPRgtC4L9Cy0LjQvNC60L3Rg9GC0Lgg0L/QtdGA0LXQstGW0YDQutGDINGD0LzQvtCy0Lgg0LLRltC00L/RgNCw0LLQutC4INC00LvRjyDRgdC10YDQstGW0YHRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ9CS0LLRltC80LrQvdGD0YLQuC/QstC40LzQutC90YPRgtC4INC/0LXRgNC10LLRltGA0LrRgyDRg9C80L7QstC4INCy0ZbQtNC/0YDQsNCy0LrQuCDQtNC70Y8g0YLQuNC/0YMg0LfQsNGP0LLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kINC80L7QtNGD0LvRjCDRgNC10ZTRgdGC0YDQsNGG0ZbRlywg0YnQviDQtNC+0LTQsNGUINC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGW0L3RgtC10YDRhNC10LnRgSDQsNCz0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kINC80L7QtNGD0LvRjCDRgNC10ZTRgdGC0YDQsNGG0ZbRlywg0YnQviDRgNC10LTQsNCz0YPRlCDQvtC/0LjRgtGD0LLQsNC90L3RjyDQsiDRltC90YLQtdGA0YTQtdC50YEg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQg0LzQvtC00YPQu9GMINGA0LXRlNGB0YLRgNCw0YbRltGXLCDRidC+INC00L7QtNCw0ZQg0YHRgtCw0YLQuNGB0YLQuNC60YMg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0LIg0ZbQvdGC0LXRgNGE0LXQudGBINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQg0LzQvtC00YPQu9GMINGA0LXRlNGB0YLRgNCw0YbRltGXLCDRidC+INCy0ZbQtNC60YDQuNCy0LDRlCDQvtC/0LjRgtGD0LLQsNC90L3RjyDQsiDRltC90YLQtdGA0YTQtdC50YEg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdGcm9udGVuZCDQvNC+0LTRg9C70Ywg0YDQtdGU0YHRgtGA0LDRhtGW0ZcsINGJ0L4g0LTQvtC00LDRlCDQn9GD0LHQu9GW0YfQvdC1INC+0L/QuNGC0YPQstCw0L3QvdGPINCyINC/0YPQsdC70ZbRh9C90LjQuSDRltC90YLQtdGA0YTQtdC50YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ9Cv0LrRidC+INGA0LXQs9GD0LvRj9GA0L3QuNC5INCy0LjRgNCw0Lcg0LLQuNC30L3QsNGH0LDRlCwg0LbQvtC00L3QtSDQvtC/0LjRgtGD0LLQsNC90L3RjyDQutC70ZbRlNC90YLRgyDQvdC1INCx0YPQtNC1INCy0ZbQtNC/0YDQsNCy0LvQtdC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INGB0YLQvtGA0ZbQvdC60LggKNCyINGP0LrQuNGFINC/0L7QutCw0LfRg9GO0YLRjNGB0Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8pINCyINC60L7RgNC+0YLQutC+0LzRgyDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90L3Rlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ9Cf0YPQsdC70ZbRh9C90LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAn0KDQtdC30YPQu9GM0YLQsNGC0LgsINGB0YLQsNGA0YjRliDQvdGW0LYg0LLQuNC30L3QsNGH0LXQvdCwINC60ZbQu9GM0LrRltGB0YLRjCDQtNC90ZbQsiDQsdGD0LTRg9GC0Ywg0LLQuNC00LDQu9C10L3Rli4g0JfQsNC80ZbRgtC60LA6INC90LDQu9Cw0YjRgtC+0LLRg9GU0YLRjNGB0Y8gT1RSUyBEYWVtb24gVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC70ZbQvdC6INCyINC80LXQvdGOINC00LvRjyDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGA0L7Qt9GI0LjRgNC10L3QvtC80YMg0L/QtdGA0LXQs9C70Y/QtNGWINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC70ZbQvdC6INCyINC80LXQvdGOINC00LvRjyDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC30LDQv9C40YLQsNC90Ywg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0LIg0YDQvtC30YjQuNGA0LXQvdC+0LzRgyDQv9C10YDQtdCz0LvRj9C00ZYg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQu9GW0L3QuiDQsiDQvNC10L3RjiDQtNC70Y8g0L/QvtCy0LXRgNC90LXQvdC90Y8g0LIg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0LIg0YDQvtC30YjQuNGA0LXQvdC+0LzRgyDQv9C10YDQtdCz0LvRj9C00ZYg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0LvRltC90Log0LIg0LzQtdC90Y4g0LTQu9GPINGB0YLQsNGC0LjRgdGC0LjQutC4INC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGA0L7Qt9GI0LjRgNC10L3QvtC80YMg0L/QtdGA0LXQs9C70Y/QtNGWINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn0JTQtdGC0LDQu9GWINGB0YLQsNGC0LjRgdGC0LjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ9CU0L7QtNCw0YLQuCDQvNC+0LTRg9C70Ywg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ9Cf0L7QtNGD0LvRjCDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0JvRltC80ZbRgiDQv9C10YDQtdCz0LvRj9C00YMg0L7Qv9C40YLRg9Cy0LDQvdGMINCa0L7RgNC+0YLQutC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAn0KHRgtCw0YLQuNGB0YLQuNC60LAg0LzQvtC00YPQu9GOINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfQl9Cx0ZbQu9GM0YjQuNGC0Lgg0LzQvtC00YPQu9GMINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAn0JvRltC80ZbRgiDQvtC/0LjRgtGD0LLQsNC90Ywg0L3QsCDRgdGC0L7RgNGW0L3QutGDINC00LvRjyDQv9C10YDQtdCz0LvRj9C00YMg0LIg0YDQtdC20LjQvNGWIFNtYWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAn0J7Qv9C40YLRg9Cy0LDQvdC90Y8g0L3QtSDQsdGD0LTRg9GC0Ywg0L3QsNC00YHQuNC70LDRgtC40YHRjCDQvdCwINCy0LrQsNC30LDQvdGWIGVtYWlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfQhtC00LXRgtC40YTRltC60LDRgtC+0YAg0L7Qv9C40YLRg9Cy0LDQvdC90Y8uINCf0L4g0LfQsNC80L7QstGH0YPQstCw0L3QvdGOINCe0L/QuNGC0YPQstCw0L3QvdGPIyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ9Cf0L7QtNGW0Y8g0LfQsNGP0LLQutC4LCDQtNC70Y8g0LDQstGC0L7QvNCw0YLQuNGH0L3QvtGXINCy0ZbQtNC/0YDQsNCy0LrQuCDQvtC/0LjRgtGD0LLQsNC90L3RjyDQutC70ZbRlNC90YLRgyDRj9C60YnQviDQt9Cw0Y/QstC60LAg0LfQsNC60YDQuNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJ9Ci0YDQuNCz0LXRgNC4INCy0LjQtNCw0LvQtdC90L3RjyDRgNC10LfRg9C70YzRgtCw0YLRltCyICjQstC60LvRjtGH0LDRjtGH0Lgg0L7RhtGW0L3QutC4INGWINC30LDQv9C40YLQuCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ9Ci0YDQuNCz0LXRgCDQstGW0LTQv9GA0LDQstC60Lgg0LLRltC00LrQu9Cw0LTQtdC90LjRhSDQt9Cw0L/QuNGC0ZbQsiDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ9Cf0LXRgNC10LnRgtC4INCyINC00LXRgtCw0LvRliDRgdGC0LDRgtC40YHRgtC40LrQuCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnZpX1ZOX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ1ThuqFvIGto4bqjbyBzw6F0IG3hu5tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0dp4bubaSB0aGnhu4d1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdHaeG7m2kgdGhp4buHdSBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ07hu5lpIGR1bmcgdGjDtG5nIGLDoW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnQ8OhYyBsb+G6oWkgdsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnTcO0IHThuqMgbuG7mWkgYuG7mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnU+G7rWEgdGjDtG5nIHRpbiBjaHVuZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ1Phu61hIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdDw6J1IGjhu49pIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ1Row6ptIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdOaOG6rXAgY8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdZw6p1IGPhuqd1IHBo4bqjaSB0cuG6oyBs4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0tow7RuZyBjw7MgY8OidSBo4buPaSBuw6BvIMSRxrDhu6NjIGzGsHUgY2hvIGto4bqjbyBzw6F0IG7DoHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnQ8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdZw6p1IGPhuqd1IHBo4bqjaSB0cuG6oyBs4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnS2hpIGvhur90IHRow7pjIHZp4buHYyBz4butYSBjw6J1IGjhu49pIGto4bqjbyBzw6F0LCBjaOG7iSBj4bqnbiDEkcOzbmcgbcOgbiBow6xuaCBuw6B5IGzhuqFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnU+G7rWEgY8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3F1YXkgbOG6oWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnQ8OidSBo4buPaTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICfEkMOhcCDDoW4gY8OzIHRo4buDIGNobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnVGjDqm0gxJHDoXAgw6FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnS2jDtG5nIGPDsyDEkcOhcCDDoW4gbsOgbyDEkcaw4bujYyBsxrB1IGNobyBjw6J1IGjhu49pIG7DoHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdDw6J1IGjhu49pIG7DoHkga2jDtG5nIGPDsyDEkcOhcCDDoW4sIG3hu5l0IGtodW5nIHNv4bqhbiB0aOG6o28gc+G6vSDEkcaw4bujYyBoaeG7g24gdGjhu4suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnU+G7rWEgxJHDoXAgw6FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3F1YXkgduG7gSBz4butYSBjw6J1IGjhu49pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICfEkMOhcCDDoW46JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnU+G7kSBiw6BpIGto4bqjbyBzw6F0IHThu5FpIMSRYSB0csOqbiBt4buZdCB0cmFuZyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnTmfGsOG7nWkgZ+G7rWkgdGjDtG5nIGLDoW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdDaOG7pyDEkeG7gSB0aMO0bmcgYsOhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnVGhheSDEkeG7lWkgYuG7n2knOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnVGjhu5FuZyBrw6ogdOG7lW5nIHF1w6F0IGPhu6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnQuG6o25nIHnDqnUgY+G6p3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdUaOG7nWkgZ2lhbiBn4butaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdUaOG7nWkgZ2lhbiBiw6xuaCBjaOG7jW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1hlbSBjaGkgdGnhur90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnQ2hpIHRp4bq/dCB0aOG7kW5nIGvDqiBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAncXVheSBs4bqhaSB0aOG7kW5nIGvDqiB04buVbmcgcXXDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnVGjDtG5nIHRpbiBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnR+G7rWkgecOqdSBj4bqndSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnTmjhuq1uIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnQ2hpIHRp4bq/dCBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdE4buLY2ggduG7pSBwaGnhur91IHnDqnUgY+G6p3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICfEkOG7kyB0aMOsIGvhur90IHF14bqjIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdLaMO0bmcgY8OzIGvhur90IHHhu6dhIHRo4buRbmcga8OqLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdLaOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ1hpbiB2dWkgbMOybmcgdHLhuqMgbOG7nWkgbmjhu69uZyBjw6J1IGjhu49pIG7DoHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnQ2hvIHTDtGkgeGVtIMSRw6FwIMOhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnxJDDonkgbMOgIMSRw6FwIMOhbiBj4bunYSBi4bqhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUacOqdSDEkeG7gSBraOG6o28gc8OhdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnVGjDqm0ga2jhuqNvIHPDoXQgbeG7m2knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1Phu61hIGLhuqNuIGto4bqjbyBzw6F0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdT4butYSBjw6J1IGjhu49pIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0PDsy9LaMO0bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnSOG7mXAgY2jhu41uIChkYW5oIHPDoWNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdI4buZcCBraeG7g20gKGRhbmggc8OhY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnTG/huqFpIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdIb8OgbiB04bqldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnQ2jGsGEgaG/DoG4gdOG6pXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ1Phu61hIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdT4butYSDEkcOhcCDDoW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAnVGjhu5FuZyBrw6ogdOG7lW5nIHF1w6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAnVGjhu5FuZyBrw6ogY2hpIHRp4bq/dCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIE5vIHF1ZXN0aW9ucyBkZWZpbmVkLid9ID0gJ0tow7RuZyB0aOG7gyDEkeG6t3QgdHLhuqFuZyB0aMOhaSBt4bubaSEgS2jDtG5nIGPDsyBjw6J1IGjhu49pIG7DoG8gxJHGsOG7o2MgxJHhu4tuaCBuZ2jEqWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ1Ry4bqhbmcgdGjDoWkgxJHDoyDEkeG7lWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gQ2jGsGEgY2jhu41uIGjDoG5nIMSR4bujaSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIMSQ4buVaSB0cuG6oW5nIHRow6FpIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFzdGVyJ30gPSAnQ2jDrW5oJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQnfSA9ICdLaMO0bmcgaOG7o3AgbOG7hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnVHLhuqFuZyB0aMOhaSBt4bubaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdNw7QgdOG6oyBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ8SRw6MgdHLhuqMgbOG7nWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnY2jGsGEgdHLhuqMgbOG7nWknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0PhuqNtIMahbiBi4bqhbiDEkcOjIHBo4bqjbiBo4buTaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdLaOG6o28gc8OhdCDEkcOjIGvhur90IHRow7pjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdC4bqhbiDEkcOjIHRoYW0gZ2lhIHRy4bqjIGzhu51pIGto4bqjbyBzw6F0Lic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnQuG6oW4gY8OzIHRo4bqtdCBz4buxIG114buRbiB4b8OhIGPDonUgaOG7j2kgbsOgeT8gVOG6pFQgQ+G6oiBjw6FjIGThu68gbGnhu4d1IGxpw6puIHF1YW4gc+G6vSBi4buLIE3huqRUISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0LhuqFuIGPDsyB0aOG6rXQgc+G7sSBtdeG7kW4geG/DoSDEkcOhcCDDoW4/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ03hu5l0IG3DtC3EkXVuIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdN4buZdCBtw7QtxJF1biDEkeG7gyBz4butYSBjw6J1IGjhu49pIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVOG6pXQgY+G6oyBjw6FjIHRoYW0gc+G7kSBjaG8gxJHhu5FpIHTGsOG7o25nIGto4bqjbyBzw6F0IHRyb25nIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ1Phu5EgbmfDoHkgc2F1IGtoaSBn4butaSBlbWFpbCBraOG6o28gc8OhdCBtw6AgdHJvbmcgbMO6YyDEkcOzIHPhur0ga2jDtG5nIGPDsyB5w6p1IGPhuqd1IGto4bqjbyBzw6F0IG7DoG8gxJHGsOG7o2MgZ+G7rWkgxJHhur9uIGPDuW5nIGtow6FjaCBow6BuZyDEkcOzLiBOaOG6rXAgMCBz4bq9IGx1w7RuIGfhu61pIGVtYWlsIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdO4buZaSBkdW5nIG5n4bqnbSDEkeG7i25oIGNobyBlbWFpbCB0aMO0bmcgYsOhbyB04bubaSBraMOhY2ggaMOgbmcgduG7gSBraOG6o28gc8OhdCBt4bubaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdOZ8aw4budaSBn4butaSBuZ+G6p20gxJHhu4tuaCBjaG8gZW1haWwgdGjDtG5nIGLDoW8gdOG7m2kga2jDoWNoIGjDoG5nIHbhu4Ega2jhuqNvIHPDoXQgbeG7m2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0No4bunIMSR4buBIG5n4bqnbSDEkeG7i25oIGNobyBlbWFpbCB0aMO0bmcgYsOhbyB04bubaSBraMOhY2ggaMOgbmcgduG7gSBraOG6o28gc8OhdCBt4bubaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnxJDhu4tuaCBuZ2jEqWEgbeG7mXQgbcO0LcSRdW4gdOG7lW5nIHF1w6F0IMSR4buDIGhp4buDbiB0aOG7iyBt4buZdCBkYW5oIHPDoWNoIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ8SQ4buLbmggbmdoxKlhIHPhu5Ega2jhuqNvIHPDoXQgdOG7kWkgxJFhIG3DoCDEkcaw4bujYyBn4butaSDEkeG6v24ga2jDoWNoIGjDoG5nIG3hu5dpIHRow6FuZy4gKDAgbmdoxKlhIGzDoCBraMO0bmcgZ2nhu5tpIGjhuqFuLCB04bqldCBj4bqjIHnDqnUgY+G6p3Uga2jhuqNvIHPDoXQgc+G6vSDEkcaw4bujYyBn4butaSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ8SQ4buLbmggbmdoxKlhIGNoaeG7gXUgY2FvIG5n4bqnbSDEkeG7i25oIGPhu6dhIGtodW5nIFJpY2h0ZXh0IGNobyDEkeG7kWkgdMaw4bujbmcgeGVtIGto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICfEkOG7i25oIG5naMSpYSBz4buRIGPhu5l0IGhp4buDbiB0aOG7iyB0cm9uZyBtw6BuIGjDrG5oIHThu5VuZyBxdcOhdC4gVHXhu7MgY2jhu41uIG7DoHkga2jDtG5nIOG6o25oIGjGsOG7n25nIMSR4bq/biB24buLIHRyw60gY+G7p2EgY+G7mXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdLw61jaCBob+G6oXQgaG/hurdjIGdp4bqjaSBob+G6oXQgbcOgbiBow6xuaCBTaG93Vm90ZURhdGEgdHJvbmcgZ2lhbyBkaeG7h24gY8O0bmcgY+G7mW5nIMSR4buDIGhp4buDbiB0aOG7iyBk4buvIGxp4buHdSBj4bunYSBt4buZdCBr4bq/dCBxdeG6oyBraOG6o28gc8OhdCBraGkga2jDoWNoIGjDoG5nIGPhu5EgdGjhu60gdHLhuqMgbOG7nWkgbeG7mXQgYuG6o24ga2jhuqNvIHPDoXQgaGFpIGzhuqduLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0vDrWNoIGhv4bqhdCBob+G6t2MgZ2nhuqNpIGhv4bqhdCBn4butaSBraeG7g20gdHJhIMSRaeG7gXUga2nhu4duIGNobyBk4buLY2ggduG7pS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdLw61jaCBob+G6oXQgaG/hurdjIGdp4bqjaSBob+G6oXQgZ+G7rWkga2nhu4NtIHRyYSDEkWnhu4F1IGtp4buHbiBjaG8gbG/huqFpIHBoaeG6v3UgecOqdSBj4bqndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxJDEg25nIGvDvSBtw7QtxJF1biB0aMOqbSBraOG6o28gc8OhdCB0cm9uZyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxJDEg25nIGvDvSBtw7QtxJF1biBz4butYSBraOG6o28gc8OhdCB0cm9uZyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8SQxINuZyBrw70gbcO0LcSRdW4gdGjhu5FuZyBrw6oga2jhuqNvIHPDoXQgdHJvbmcgZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8SQxINuZyBrw70gbcO0LcSRdW4geGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQgdHJvbmcgZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ8SQxINuZyBrw70gbcO0LcSRdW4gY2hvIMSR4buRaSB0xrDhu6NuZyBraOG6o28gc8OhdCBjw7RuZyBj4buZbmcgdHJvbmcgZ2lhbyBkaeG7h24ga2jhuqNvIHPDoXQgY8O0bmcgY+G7mW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnTuG6v3UgxJFp4buBdSBraeG7h24gdMOsbSBwaMO5IGjhu6NwLCBraMO0bmcgY8OzIGto4bqjbyBzw6F0IGtow6FjaCBow6BuZyBuw6BvIMSRxrDhu6NjIGfhu61pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW1pdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdUaGFtIHPhu5EgY2hvIHRyYW5nIChtw6AgaGnhu4NuIHRo4buLIGto4bqjbyBzw6F0KSBj4bunYSBkYW5oIHPDoWNoIGto4bqjbyBzw6F0IHThu5VuZyBxdcOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdLaOG6o28gc8OhdCBjw7RuZyBj4buZbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGPDonUgaOG7j2kga2jhuqNvIHPDoXQgdHJvbmcga2hpIHhlbSBjaGkgdGnhur90IGto4bqjbyBzw6F0IOG7nyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBxdWF5IGzhuqFpIHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHhlbSB0aOG7kW5nIGvDqiBjaGkgdGnhur90IGPhu6dhIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ1Ro4buRbmcga8OqIGNoaSB0aeG6v3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTcO0IMSRdW4gdGjDqm0gS2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNw7QtxJF1biBz4butYSBLaOG6o28gc8OhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdHaeG7m2kgaOG6oW4gZGFuaCBzw6FjaCBraOG6o28gc8OhdCB04buVbmcgcXXDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7QtxJF1biB0aOG7kW5nIGvDqiBraOG6o28gc8OhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ03DtC3EkXVuIHhlbSBraOG6o28gc8OhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdLaOG6o28gc8OhdCBz4bq9IGtow7RuZyDEkcaw4bujYyBn4butaSDEkeG6v24gxJHhu4thIGNo4buJIGVtYWlsIMSRw6MgdGhp4bq/dCBs4bqtcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ8SQ4buLbmggZGFuaCBjaG8ga2jhuqNvIHPDoXQsIHbDrSBk4bulOiBLaOG6o28gc8OhdCMsIEto4bqjbyBzw6F0IGPhu6dhIHTDtGkjLiBOZ+G6p20gxJHhu4tuaCBsw6AgS2jhuqNvIHPDoXQjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ03DtC3EkXVuIGLhuq90IHPhu7Ega2nhu4duIGPhu6dhIHBoaeG6v3UgecOqdSBj4bqndSDEkeG7gyBn4butaSBlbWFpbCB5w6p1IGPhuqd1IHThu7EgxJHhu5luZyDEkeG6v24ga2jDoWNoIGjDoG5nIG7hur91IHBoaeG6v3UgecOqdSBj4bqndSDEkcaw4bujYyDEkcOzbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ0Lhuqt5IGfhu61pIHnDqnUgY+G6p3Uga2jhuqNvIHPDoXQgYuG7iyB0cuG7hS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX0NOX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+WIm+W7uuaWsOeahOiwg+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfku4vnu40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ+iwg+afpeS7i+e7jSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+mAmuefpeato+aWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICflt6XljZXnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICflhoXpg6jmj4/ov7AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJ+WuouaIt+adoeS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJ+ivt+mAieaLqeS4gOS4quWuouaIt+WxnuaAp+S7pea3u+WKoOadoeS7tuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJ+WFrOWFseiwg+afpeWvhumSpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJ+iwg+afpeekuuS+iyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ+e8lui+keS4gOiIrOS/oeaBryc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ+e8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfkvaDlnKjov5nph4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+iwg+afpemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfmt7vliqDpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfpl67popjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn6ZyA6KaB5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn6L+Z5Liq6LCD5p+l5rKh5pyJ5L+d5a2Y55qE6Zeu6aKY44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn6Zeu6aKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+mcgOimgeWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAn5b2T5oKo5a6M5oiQ57yW6L6R6LCD5p+l6Zeu6aKY5ZCO77yM5YWz6Zet6L+Z5Liq56qX5Y+j5Y2z5Y+v44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAn5YWz6Zet5pys56qX5Y+jJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfnvJbovpHpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfov5Tlm57liLDpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn6Zeu6aKYOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ+WPr+iDveeahOWbnuetlCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ+a3u+WKoOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ+i/meS4qumXrumimOayoeacieS/neWtmOeahOWbnuetlOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAn6L+Z5Liq6Zeu6aKY5LiN6IO95pyJ5aSa5Liq5Zue562U77yM5bCG5pi+56S65LiA5Liq5paH5pys5Yy65Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn57yW6L6R5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ+i/lOWbnuWIsOe8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAn5Zue562U77yaJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJ+iwg+afpeamguiniOmAiemhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICflnKjnvJblj7fjgIHmoIfpopjjgIHnroDku4vjgIHmj4/ov7DjgIHpgJrnn6Xlj5Hku7bkurrjgIHpgJrnn6XmoIfpopjlkozpgJrnn6XmraPmloflsZ7mgKfkuK3mkJzntKLvvIzopobnm5blhbbku5blhbfmnInnm7jlkIzlkI3np7DnmoTlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAn6LCD5p+l5Yib5bu65pe26Ze0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAn5rKh5pyJ6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICfku4XlnKjmraTmnJ/pl7TliJvlu7rnmoTosIPmn6XvvJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAn5q+P6aG15pi+56S66LCD5p+l55qE5pyA5aSn5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfpgJrnn6Xlj5Hku7bkuronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfpgJrnn6XkuLvpopgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ+S/ruaUueS6uic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfnu5/orqHmpoLlhrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICfor7fmsYLooagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJ+mAieaLqeaJgOacieivt+axgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICflj5HpgIHml7bpl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAn5oqV56Wo5pe26Ze0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICfpgInmi6nov5nkuKror7fmsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfmn6XnnIvor6bmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAn5Yig6Zmk57uf6K6h6LWE5paZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfosIPmn6Xnu5/orqHor6bmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ+i/lOWbnue7n+iuoeamguWGtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAn5LiK5LiA5Liq5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJ+S4i+S4gOS4quaKleelqCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICfosIPmn6Xkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ+W3seWPkemAgeeahOivt+axgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn5bey5o6l5pS255qE6LCD5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn6LCD5p+l6K+m5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ+W3peWNleacjeWKoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ+iwg+afpee7k+aenOWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn5rKh5pyJ57uf6K6h57uT5p6c44CCJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ+iwg+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ+ivt+WbnuetlOi/meS6m+mXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfmmL7npLrmiJHnmoTlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ+i/meS6m+aYr+S9oOeahOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfosIPmn6XmoIfpopgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ+WIm+W7uuaWsOeahOiwg+afpSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfkvaDmsqHmnInmnYPpmZDkvb/nlKjmraTosIPmn6XvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6aU3VydmV5SUQg77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAn57yW6L6R6LCD5p+lJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ+S9oOayoeacieadg+mZkOS9v+eUqOatpOiwg+afpeaIlumXruWNt++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ+S9oOayoeacieadg+mZkOS9v+eUqOatpOiwg+afpeOAgemXruWNt+aIluetlOahiO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfnvJbovpHosIPmn6Xpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAn5pivL+WQpic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICfljZXpgInvvIjliJfooajvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn5aSN6YCJ5qGG77yI5YiX6KGo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJ+WHgOaOqOiNkOWAvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn6Zeu6aKY57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAn5a6M5pW0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICfkuI3lrozmlbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ+e8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ+e8lui+keWbnuetlCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlTdGF0cy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICfnu5/orqHmpoLop4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3Igc3RhdHMgZGV0YWlsISd9ID0gJ+S9oOayoeacieadg+mZkOS9v+eUqOatpOiwg+afpeaIluivpue7hue7n+iuoe+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWwnfSA9ICfnu5/orqHor6bmg4UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nfSA9ICfml6Dms5Xorr7nva7mlrDnmoTnirbmgIHvvIHov5jmnKrlrprkuYnpl67popjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nfSA9ICfml6Dms5Xorr7nva7mlrDnmoTnirbmgIHvvIHpl67popjkuI3lrozmlbTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHVzIGNoYW5nZWQuJ30gPSAn54q25oCB5bey5pu05pS544CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0g5rKh5pyJ6YCJ5oup6Zif5YiXIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJ30gPSAnLeayoeaciemAieaLqeW3peWNleexu+Weiy0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJ30gPSAnLeayoeaciemAieaLqeW3peWNleacjeWKoS0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIOabtOaUueeKtuaAgSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJ+S4uyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAn5peg5pWIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICfmlrDnmoTnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn6LCD5p+l5o+P6L+wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAn5bey5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ+acquWbnuetlCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAn5oSf6LCi5L2g55qE5Y+N6aaI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAn6LCD5p+l57uT5p2f44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJ+iwg+afpeeahOa2iOaBr++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAn5rKh5pyJ5ZCv55So5pys5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAn6L+Z5Liq5Yqf6IO95rKh5pyJ5ZCv55So77yM6K+36IGU57O757O757uf566h55CG5ZGY44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICfosIPmn6XmqKHlnZfplJnor6/vvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ+aXoOaViOeahOiwg+afpemUruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAn5o+S5YWl55qE6LCD5p+l6ZSu5peg5pWI77yM5aaC5p6c5L2g5piv6YCa6L+H6ZO+5o6l5omT5byA77yM5Y+v6IO96ZO+5o6l5aSx5pWI5oiW5Lit5pat44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAn6LCD5p+l5oqV56WoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICfosIPmn6XmipXnpajmlbDmja4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ+S9oOW3sue7j+WbnuetlOS6hui/meS4quiwg+afpeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAn6LCD5p+l5YiX6KGoJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAn5oKo55yf55qE6KaB5Yig6Zmk6L+Z5Liq6Zeu6aKY5ZCX77yf5omA5pyJ55u45YWz5pWw5o2u6YO95bCG5Lii5aSx77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn5oKo55yf55qE6KaB5Yig6Zmk6L+Z5Liq5Zue562U5ZCX77yfJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ+S4gOS4quiwg+afpeaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn57yW6L6R6LCD5p+l6Zeu6aKY55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i6LCD5p+l5a+56LGh55qE5omA5pyJ5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ+WPkemAgeiwg+afpemCruS7tuWQjueahOWkqeaVsO+8jOWcqOatpOacn+mXtOS4jeS8mue7meWQjOS4gOWuouaIt+WPkemAgeaWsOeahOiwg+afpeivt+axguOAgumAieaLqSDigJww4oCdIOWwhuaAu+aYr+WPkemAgeiwg+afpemCruS7tuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICflj5HpgIHnu5nlrqLmiLfnmoTmlrDosIPmn6XpgJrnn6Xpgq7ku7bnmoTpu5jorqTmraPmlofjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICflj5HpgIHnu5nlrqLmiLfnmoTmlrDosIPmn6XpgJrnn6Xpgq7ku7bnmoTpu5jorqTlj5Hku7bkurrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn5Y+R6YCB57uZ5a6i5oi355qE5paw6LCD5p+l6YCa55+l6YKu5Lu255qE6buY6K6k5Li76aKY44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ+WumuS5ieS4gOS4quaYvuekuuiwg+afpeWIl+ihqOeugOa0geinhuWbvueahOamguiniOaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICflrprkuYnmnInmnYPmm7TmlLnosIPmn6XnirbmgIHnmoTnu4TjgIIg6buY6K6k5oOF5Ya15LiL77yM5pWw57uE5Li656m677yM5omA5pyJ57uE55qE5pyN5Yqh5Zmo5Lq65ZGY6YO95Y+v5Lul5pu05pS56LCD5p+l54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAn5a6a5LmJ6LCD5p+l6K+35rGC5piv5ZCm5Y+q5Y+R6YCB57uZ55yf5a6e5a6i5oi344CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICflrprkuYnmr48zMOWkqeWPkemAgee7meS4gOS4quWuouaIt+eahOacgOWkp+iwg+afpeaVsO+8iCAwIOS7o+ihqOayoeacieacgOWkp+aVsOmZkOWItu+8jOWwhuWPkemAgeaJgOacieeahOiwg+afpeivt+axgu+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAn5a6a5LmJ5LiA5Liq5bel5Y2V5YWz6Zet5ZCO6Kem5Y+R5Y+R6YCB5LiA5Liq6LCD5p+l55qE5bCP5pe25pWw77yIIDAg5Luj6KGo5Zyo5bel5Y2V5YWz6Zet5ZCO56uL5Y2z5Y+R6YCB6LCD5p+l6K+35rGC77yJ44CC5rOo5oSP77ya5bu26L+f5Y+R6YCB55qE6LCD5p+l55SxT1RSU+WuiOaKpOeoi+W6j++8iOWNs+WFiOWJjea/gOa0u+eahOiuvue9rlwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJ++8ieWujOaIkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICflrprkuYnlu7rnq4vlj5HpgIHmnaHku7bnmoTkuIvmi4nliJfooajnmoTliJfvvIgwID0+IOS4jea/gOa0u++8jDEgPT4g5r+A5rS777yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ+iwg+afpeivpuaDheeql+WPo+WvjOaWh+acrOafpeeci+eahOm7mOiupOmrmOW6puOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICflrprkuYnlj6/ku6XliKDpmaTnu5/orqHmlbDmja7nmoTnu4TvvIhyd++8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICflrprkuYnosIPmn6Xor6bmg4Xnqpflj6Plr4zmlofmnKzmn6XnnIvop4blm77nmoTpu5jorqTpq5jluqbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ+WumuS5ieiwg+afpeamguiniOS4reaYvuekuueahOWtl+auteOAgui/meS4qumAiemhueS4jeS8muW9seWTjeWtl+auteeahOS9jee9ruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAn56Gu5a6a57uf6K6h5qih5Z2X5piv5ZCm5Y+v5Lul55Sf5oiQ6LCD5p+l5YiX6KGo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAn57yW6L6R6LCD5p+l5LiA6Iis5L+h5oGv44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfnvJbovpHosIPmn6Xpl67popjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn5Zyo5YWs5YWx55WM6Z2i5ZCv55So5oiW56aB55So5pi+56S65oqV56Wo5pWw5o2u56qX5Y+j77yI5b2T5a6i5oi36K+V5Zu+5YaN5qyh5Zue562U5LiA5Liq6LCD5p+l5pe25pi+56S65oyH5a6a6LCD5p+l57uT5p6c55qE5pWw5o2u77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAn5ZCv55So5oiW56aB55So5pyN5Yqh55qE5Y+R6YCB5p2h5Lu25qOA5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAn5ZCv55So5oiW56aB55So5bel5Y2V57G75Z6L55qE5Y+R6YCB5p2h5Lu25qOA5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdoua3u+WKoOiwg+afpeeahOWJjeerr+aooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i57yW6L6R6LCD5p+l55qE5YmN56uv5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pyN5Yqh5Lq65ZGY55WM6Z2i6LCD5p+l57uf6K6h55qE5YmN56uv5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLosIPmn6Xor6bmg4XnmoTliY3nq6/mqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouWFrOWFseiwg+afpeeahOWJjeerr+aooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAn5aaC5p6c5Yy56YWN6L+Z5Liq5q2j5YiZ6KGo6L6+5byP77yM5LiN5Lya57uZ5a6i5oi35Y+R6YCB6LCD5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbWl0Lid9ID0gJ+mZkOWItuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ+iwg+afpeamguiniOeugOa0geaooeW8j+aYvuekuuiwg+afpeeahOmhtemdouWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ+WFrOWFseiwg+afpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICfotoXov4fphY3nva7nmoTlpKnmlbDnmoTosIPmn6Xnu5PmnpzlsIbooqvliKDpmaTjgIIg5rOo5oSP77ya5Yig6Zmk6LCD5p+l57uT5p6c55Sx5YWI5YmN5r+A5rS755qEIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcg6K6+572u55qET1RSU+WuiOaKpOeoi+W6j+WujOaIkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLosIPmn6Xor6bmg4Xnqpflj6PvvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrnvJbovpHosIPmn6XnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLosIPmn6Xor6bmg4Xnqpflj6PvvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrnvJbovpHosIPmn6Xpl67popjnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouiwg+afpeivpuaDheeql+WPo++8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4qui/lOWbnueahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdouiwg+afpee7n+iuoeeql+WPo++8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quiwg+afpee7n+iuoeivpuaDheeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn57uf6K6h6K+m5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ+a3u+WKoOiwg+afpeaooeWdl+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn57yW6L6R6LCD5p+l5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn6LCD5p+l5qaC6KeI566A5rSB5qih5byP6ZmQ5Yi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAn6LCD5p+l57uf6K6h5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfosIPmn6Xor6bmg4XmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICfosIPmn6XmpoLop4jnroDmtIHmqKHlvI/mr4/pobXmmL7npLrnmoTosIPmn6XmlbDpmZDliLbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICfosIPmn6XkuI3kvJrlj5HpgIHnu5nphY3nva7nmoTpgq7ku7blnLDlnYDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ+iwg+afpeeahOagh+ivhuespu+8jOS+i+Wmgu+8mlN1cnZleSPjgIFNeVN1cnZleSPjgILpu5jorqTkuLpTdXJ2ZXkj44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAn5aaC5p6c5LiA5Liq5bel5Y2V5bey5YWz6Zet5bCx6Ieq5Yqo5Y+R6YCB6LCD5p+l6K+35rGC6YKu5Lu257uZ5a6i5oi355qE5bel5Y2V5LqL5Lu25qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICfop6blj5HliKDpmaTosIPmn6Xnu5PmnpzvvIjljIXmi6zmipXnpajmlbDmja7lkozor7fmsYLvvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ+inpuWPkeWZqOWPkemAgeW7tui/n+eahOiwg+afpeivt+axguOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ+i/m+WFpeiwg+afpee7n+iuoeivpuaDheOAgic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6OnpoX1RXX1N1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5QWRkCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgTmV3IFN1cnZleSd9ID0gJ+WJteW7uuaWsOeahOiqv+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfku4vntLknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ+iqv+afpeS7i+e0uSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ+mAmuefpeato+aWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICflt6Xllq7poZ7lnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICflhoXpg6jmj4/ov7AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ+e3qOi8r+S4gOiIrOS/oeaBryc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ+e3qOi8r+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICfmgqjlnKjmraQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ+iqv+afpeWVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfmt7vliqDllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICfllY/poYzpoZ7lnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn6ZyA6KaB5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn6YCZ5YCL6Kq/5p+l5rKh5pyJ5L+d5a2Y55qE5ZWP6aGM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ+W/hemgiOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICfnt6jovK/llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICfov5Tlm57llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn5ZWP6aGM77yaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn5Y+v6YG455qE5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfmt7vliqDlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ+e3qOi8r+WbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfov5Tlm57liLDnt6jovK/llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ+etlO+8mic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAn6YCa55+l55m86YCB6ICFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAn6YCa55+l5Li76aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICfkv67mlLnkuronOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAn57Wx6KiI5qaC5rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAn6KuL5rGC6KGoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn55m86YCB5pmC6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ+aKleelqOaZgumWkyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAn5p+l55yL6Kmz5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAn6Kq/5p+l57Wx6KiI6Kmz5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfov5Tlm57ntbHoqIjmpoLms4EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn6Kq/5p+l5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICflt7LnmbzpgIHnmoToq4vmsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ+W3suaOpeaUtueahOiqv+afpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ+iqv+afpeips+aDhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICflt6Xllq7mnI3li5knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICfoqr/mn6XntZDmnpzlnJYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ+aykuaciee1seioiOe1kOaenOOAgic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICfoqr/mn6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICfoq4vlm57nrZTpgJnkupvllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAn6aGv56S65oiR55qE5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICfpgJnkupvmmK/kvaDnmoTlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAn6Kq/5p+l5qiZ6aGMJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICflibXlu7rmlrDnmoToqr/mn6UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ+e3qOi8r+iqv+afpSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn57eo6Lyv6Kq/5p+l5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ+aYry/lkKYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAn5Zau6YG477yI5YiX6KGo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ+ikh+mBuOahhu+8iOWIl+ihqO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ+WVj+mhjOmhnuWIpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ+WujOaVtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn5LiN5a6M5pW0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfnt6jovK/llY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfnt6jovK/lm57nrZQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5U3RhdHMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3J30gPSAn57Wx6KiI5qaC5rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlsJ30gPSAn57Wx6KiI6Kmz5oOFJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAn54Sh5rOV6Kit572u5paw55qE54uA5oWL77yB6YKE5pyq5a6a576p5ZWP6aGM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgUXVlc3Rpb25zIGluY29tcGxldGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXR1cyBjaGFuZ2VkLid9ID0gJ+eLgOaFi+W3suabtOaUueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIOaykuaciemBuOWPluS9h+WIlyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gdGlja2V0IHR5cGUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBDaGFuZ2UgU3RhdHVzIC0nfSA9ICctIOabtOaUueeLgOaFiyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hc3Rlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkJ30gPSAn54Sh5pWIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICfmlrDni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn6Kq/5p+l5o+P6L+wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAn5bey5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ+acquWbnuetlCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAn5oSf6Kyd5L2g55qE5Y+N6aWL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAn6Kq/5p+l57WQ5p2f44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ+S9oOW3sue2k+WbnuetlOS6huiqv+afpeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn5oKo56K65a6a6KaB5Yiq6Zmk5q2k562U5qGI77yfJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ+iqv+afpeaooee1hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGltaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn5YWs6ZaL55qE6Kq/5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ+iqv+afpea3u+WKoOaooee1hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn6Kq/5p+l57eo6Lyv5qih57WEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bCBVbWZyYWdlLURldGFpbGFuc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlBZGQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgYWRkCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkU2VsZi0+e1N1YmFjdGlvbn0gKSB7CgogICAgICAgIHJldHVybiAkU2VsZi0+X1N1cnZleUFkZE1hc2soKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHN1cnZleSBuZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTdXJ2ZXlOZXcnICkgewoKICAgICAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgICAgICBteSAkUGFyYW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRTdXJ2ZXlJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJTdXJ2ZXlJRCIgKTsKCiAgICAgICAgIyBnZXQgcmVxdWlyZWQgZm9ybSBlbGVtZW50cyBhbmQgZXJyb3JzCiAgICAgICAgbXkgJVNlcnZlckVycm9yOwogICAgICAgIG15ICVGb3JtRWxlbWVudHM7CiAgICAgICAgZm9yIG15ICRJdGVtICgKICAgICAgICAgICAgcXcoIFRpdGxlIEludHJvZHVjdGlvbiBEZXNjcmlwdGlvbiBOb3RpZmljYXRpb25TZW5kZXIgTm90aWZpY2F0aW9uU3ViamVjdCBOb3RpZmljYXRpb25Cb2R5ICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3skSXRlbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiJEl0ZW0iICk7CgogICAgICAgICAgICBpZiAoICEkRm9ybUVsZW1lbnRzeyRJdGVtfSApIHsKICAgICAgICAgICAgICAgICRTZXJ2ZXJFcnJvcnsgIiRJdGVtIiAuICdTZXJ2ZXJFcnJvcicgfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IGFycmF5IHBhcmFtcwogICAgICAgIGZvciBteSAkSXRlbSAocXcoUXVldWVzIFRpY2tldFR5cGVJRHMgU2VydmljZUlEcykpIHsKICAgICAgICAgICAgQHsgJEZvcm1FbGVtZW50c3skSXRlbX0gfSA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoIFBhcmFtID0+ICRJdGVtICk7CiAgICAgICAgfQoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkU3RyZyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgIFBhcmFtID0+ICdDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzJywKICAgICAgICApOwogICAgICAgIG15ICVDdXN0b21lclVzZXJDb25kaXRpb25zOwoKICAgICAgICBpZiAoJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZFN0cmcpIHsKCiAgICAgICAgICAgIEZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJEZpZWxkICggc3BsaXQoIC8sLywgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZFN0cmcgKSApIHsKICAgICAgICAgICAgICAgIG5leHQgRklFTEQgaWYgISRGaWVsZDsKCiAgICAgICAgICAgICAgICBteSAlU2VsZWN0aW9uc0RhdGE7CiAgICAgICAgICAgICAgICAlU2VsZWN0aW9uc0RhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPl9TZW5kQ29uZGl0aW9uR2V0RmllbGRTZWxlY3Rpb25zKAogICAgICAgICAgICAgICAgICAgIEZpZWxkTmFtZSA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15IEBDaGVja2JveGVzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSgKICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiJHtGaWVsZH1DaGVja2JveCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgQENvbmRpdGlvbnMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KAogICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSBAQ29uZGl0aW9uQXJyYXk7CgogICAgICAgICAgICAgICAgZm9yIG15ICRDb3VudCAoIDAgLi4gKCBzY2FsYXIgQENvbmRpdGlvbnMgLSAxICkgKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICROZWdhdGlvbjsKICAgICAgICAgICAgICAgICAgICBpZiAoJVNlbGVjdGlvbnNEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICROZWdhdGlvbiA9ICRDaGVja2JveGVzWzBdICsgMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICROZWdhdGlvbiA9ICRDaGVja2JveGVzWyRDb3VudF0gKyAwOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJFJlZ0V4cFZhbHVlICAgICAgPSAkQ29uZGl0aW9uc1skQ291bnRdOwogICAgICAgICAgICAgICAgICAgIG15ICVDb25kaXRpb25FbnRyaWVzID0gKAogICAgICAgICAgICAgICAgICAgICAgICBOZWdhdGlvbiAgICA9PiAkTmVnYXRpb24sCiAgICAgICAgICAgICAgICAgICAgICAgIFJlZ0V4cFZhbHVlID0+ICRSZWdFeHBWYWx1ZSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICFldmFsIHsgbXkgJFJlZ2V4ID0gcXIvJFJlZ0V4cFZhbHVlLzsgMTsgfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRTZXJ2ZXJFcnJvcntDdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnN9LT57JEZpZWxkfS0+eyRDb3VudH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29uZGl0aW9uQXJyYXksIFwlQ29uZGl0aW9uRW50cmllczsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc3skRmllbGR9ID0gXEBDb25kaXRpb25BcnJheTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCVDdXN0b21lclVzZXJDb25kaXRpb25zKSB7CgogICAgICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tDdXN0b21lclVzZXJDb25kaXRpb25zfSA9IFwlQ3VzdG9tZXJVc2VyQ29uZGl0aW9uczsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICkgewogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0gICAgID0gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259IjsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSA9ICJcJGh0bWwvdGV4dFwkICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0iOwogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSAgICAgID0gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tEZXNjcmlwdGlvbn0iOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIGlmIG5vIGVycm9ycwogICAgICAgIGlmICggISVTZXJ2ZXJFcnJvciApIHsKICAgICAgICAgICAgbXkgJFN1cnZleUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgICAgICAlRm9ybUVsZW1lbnRzLAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgcmVsb2FkIGZvcm0gaWYgZXJyb3IKICAgICAgICByZXR1cm4gJFNlbGYtPl9TdXJ2ZXlBZGRNYXNrKAogICAgICAgICAgICBGb3JtRWxlbWVudHMgPT4gXCVGb3JtRWxlbWVudHMsCiAgICAgICAgICAgIFNlcnZlckVycm9yICA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBTdXJ2ZXkgQUpBWCByZXF1ZXN0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWFJlcXVlc3QnICkgewoKICAgICAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICAgICAgbXkgJEpTT05PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgICAgIG15ICRGaWVsZE5hbWUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICBQYXJhbSA9PiAnRmllbGROYW1lJywKICAgICAgICApOwogICAgICAgIG15IEBTZWxlY3RlZFZhbHVlcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoCiAgICAgICAgICAgIFBhcmFtID0+ICdTZWxlY3RlZFZhbHVlc1tdJywKICAgICAgICApOwoKICAgICAgICBteSAlU2VsZWN0aW9uc0RhdGE7CiAgICAgICAgJVNlbGVjdGlvbnNEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5fU2VuZENvbmRpdGlvbkdldEZpZWxkU2VsZWN0aW9ucygKICAgICAgICAgICAgRmllbGROYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEpTT05TdHJpbmcgPSAkSlNPTk9iamVjdC0+RW5jb2RlKAogICAgICAgICAgICBEYXRhID0+ICcnLAogICAgICAgICk7CgogICAgICAgIGlmICglU2VsZWN0aW9uc0RhdGEpIHsKICAgICAgICAgICAgbXkgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2VsZWN0aW9uc0RhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICIke0ZpZWxkTmFtZX1bXSIsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUgVzUwcGMnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiBcQFNlbGVjdGVkVmFsdWVzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUpTT05EYXRhID0gKAogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgPT4gXDEsCiAgICAgICAgICAgICAgICBTZWxlY3RGaWVsZCA9PiAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc1N0cmcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkSlNPTlN0cmluZyA9ICRKU09OT2JqZWN0LT5FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlSlNPTkRhdGEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT05TdHJpbmcsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9Cn0KCnN1YiBfU3VydmV5QWRkTWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVKU0RhdGE7CgogICAgbXkgJVNlcnZlckVycm9yOwogICAgaWYgKCAkUGFyYW17U2VydmVyRXJyb3J9ICkgewogICAgICAgICVTZXJ2ZXJFcnJvciA9ICV7ICRQYXJhbXtTZXJ2ZXJFcnJvcn0gfTsKICAgIH0KCiAgICBteSAlRm9ybUVsZW1lbnRzOwogICAgaWYgKCAkUGFyYW17Rm9ybUVsZW1lbnRzfSApIHsKICAgICAgICAlRm9ybUVsZW1lbnRzID0gJXsgJFBhcmFte0Zvcm1FbGVtZW50c30gfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdBZGQgTmV3IFN1cnZleScpLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICBteSAlUXVldWVzICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+R2V0QWxsUXVldWVzKCk7CiAgICBteSAkUXVldWVTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgPT4gXCVRdWV1ZXMsCiAgICAgICAgTmFtZSAgICAgICAgID0+ICdRdWV1ZXMnLAogICAgICAgIFNpemUgICAgICAgICA9PiA2LAogICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1F1ZXVlc30sCiAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGlmIHRoZSBmb3Igc2VuZCBjb25kaXRpb24gdGlja2V0IHR5cGUgY2hlY2sgaXMgZW5hYmxlZAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScpICkgewoKICAgICAgICAjIGdldCB0aGUgdmFsaWQgdGlja2V0IHR5cGUgbGlzdAogICAgICAgIG15ICVUaWNrZXRUeXBlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVMaXN0KCk7CgogICAgICAgICMgY2hlY2sgaWYgYSB0aWNrZXQgdHlwZSBpcyBhdmFpbGFibGUKICAgICAgICBpZiAoJVRpY2tldFR5cGVzKSB7CgogICAgICAgICAgICAjIGJ1aWxkIHRpY2tldCB0eXBlIHNlbGVjdGlvbgogICAgICAgICAgICBteSAkVGlja2V0VHlwZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVRpY2tldFR5cGVzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdUaWNrZXRUeXBlSURzJywKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA2LAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEZvcm1FbGVtZW50c3tUaWNrZXRUeXBlSURzfSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0VHlwZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGlja2V0VHlwZVN0cmcgPT4gJFRpY2tldFR5cGVTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiB0aGUgc2VuZCBjb25kaXRpb24gc2VydmljZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJykgKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCBzZXJ2aWNlIGxpc3QKICAgICAgICBteSAlU2VydmljZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgc2VydmljZSBpcyBhdmFpbGFibGUKICAgICAgICBpZiAoJVNlcnZpY2VzKSB7CgogICAgICAgICAgICAjIGJ1aWxkIHNlcnZpY2Ugc2VsZWN0aW9uCiAgICAgICAgICAgIG15ICRTZXJ2aWNlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlU2VydmljZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1NlcnZpY2VJRHMnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1NlcnZpY2VJRHN9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRTZXJ2aWNlcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlU3RyZyA9PiAkU2VydmljZVN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIENoZWNrIHNlbmQgY29uZGl0aW9uIGJ5IEN1c3RvbWVyVXNlciBmaWVsZHMuCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycpICkgewoKICAgICAgICBteSAlQ3VzdG9tZXJGaWVsZHNDb25maWcgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnKSB9OwogICAgICAgIG15IEBDdXN0b21lckZpZWxkczsKCiAgICAgICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICAgICAgQ1VTVE9NRVJGSUVMRDoKICAgICAgICBmb3IgbXkgJEN1c3RvbWVyRmllbGQgKCBzb3J0IGtleXMgJUN1c3RvbWVyRmllbGRzQ29uZmlnICkgewogICAgICAgICAgICBuZXh0IENVU1RPTUVSRklFTEQgaWYgISRDdXN0b21lckZpZWxkc0NvbmZpZ3skQ3VzdG9tZXJGaWVsZH07CiAgICAgICAgICAgIG5leHQgQ1VTVE9NRVJGSUVMRCBpZiAhJFN1cnZleU9iamVjdC0+X1NlbmRDb25kaXRpb25DaGVja0N1c3RvbWVyRmllbGQoIEZpZWxkTmFtZSA9PiAkQ3VzdG9tZXJGaWVsZCApOwoKICAgICAgICAgICAgcHVzaCBAQ3VzdG9tZXJGaWVsZHMsICRDdXN0b21lckZpZWxkOwogICAgICAgIH0KCiAgICAgICAgaWYgKEBDdXN0b21lckZpZWxkcykgewoKICAgICAgICAgICAgbXkgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHNTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBDdXN0b21lckZpZWxkcywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAxLAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICcnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJEpTRGF0YXtDdXN0b21lclVzZXJDb25kaXRpb25zfSA9ICRGb3JtRWxlbWVudHN7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30gfHwgJFBhcmFte0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9OwogICAgICAgICAgICAkSlNEYXRhe0N1c3RvbWVyVXNlckNvbmRpdGlvbkVycm9yc30gPSAkU2VydmVyRXJyb3J7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uRXJyb3JzfSB8fCAnJzsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU2VuZEN1c3RvbWVyVXNlckNvbmRpdGlvbnMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcgPT4gJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHNTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyByaWNoIHRleHQgZWxlbWVudHMKICAgIG15ICVTdXJ2ZXlFbGVtZW50czsKCiAgICAkU3VydmV5RWxlbWVudHN7SW50cm9kdWN0aW9ufSA9ICRGb3JtRWxlbWVudHN7SW50cm9kdWN0aW9ufSB8fAogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259OwoKICAgICRTdXJ2ZXlFbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSA9ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0gfHwKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gfHwKICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uQm9keScpOwoKICAgICRTdXJ2ZXlFbGVtZW50c3tEZXNjcmlwdGlvbn0gPSAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSB8fAogICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbn0gfHwKICAgICAgICAnJzsKCiAgICAjIGxvYWQgcmljaCB0ZXh0IGVkaXRvcgogICAgbXkgJFJpY2hUZXh0RWRpdG9yID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKTsKICAgIGlmICgkUmljaFRleHRFZGl0b3IpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5TZXRSaWNoVGV4dFBhcmFtZXRlcnMoCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgcmVxdWlyZWQgZWxlbWVudHMgdG8gUlRFCiAgICBGSUVMRDoKICAgIGZvciBteSAkU3VydmV5RmllbGQgKCBzb3J0IGtleXMgJVN1cnZleUVsZW1lbnRzICkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9OwoKICAgICAgICAjIGNsZWFuIEhUTUwKICAgICAgICBteSAkSFRNTENvbnRlbnQgPSAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKCiAgICAgICAgaWYgKCAhJEhUTUxDb250ZW50ICYmICRSaWNoVGV4dEVkaXRvciApIHsKICAgICAgICAgICAgJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0sCiAgICAgICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRIVE1MQ29udGVudCAmJiAhJFJpY2hUZXh0RWRpdG9yICkgewogICAgICAgICAgICAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSW50cm9kdWN0aW9uJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSW50cm9kdWN0aW9uID0+ICRTdXJ2ZXlFbGVtZW50c3tJbnRyb2R1Y3Rpb259LAogICAgICAgIH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ05vdGlmaWNhdGlvbkJvZHknLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ID0+ICRTdXJ2ZXlFbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSwKICAgICAgICB9LAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdJbnRlcm5hbERlc2NyaXB0aW9uJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJFN1cnZleUVsZW1lbnRze0Rlc2NyaXB0aW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdlbmVyYXRlcyBnZW5lcmljIGVycm9ycyBmb3IgSmF2YVNjcmlwdAogICAgZm9yIG15ICROZWVkZWRJdGVtICgKICAgICAgICBxdyggVGl0bGUgSW50cm9kdWN0aW9uIERlc2NyaXB0aW9uIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkgKQogICAgICAgICkKICAgIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJpY0Vycm9yJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJdGVtTmFtZSA9PiAkTmVlZGVkSXRlbSAuICdFcnJvcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKCBzb3J0IGtleXMgJVNlcnZlckVycm9yICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdHZW5lcmljU2VydmVyRXJyb3InLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEl0ZW1OYW1lID0+ICRJdGVtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdKU0RhdGEnLAogICAgICAgIFZhbHVlID0+IFwlSlNEYXRhLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5QWRkJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFF1ZXVlU3RyaW5nICAgICAgICA9PiAkUXVldWVTdHJpbmcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciA9PiAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvblNlbmRlcn0KICAgICAgICAgICAgICAgIHx8ICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9CiAgICAgICAgICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uU2VuZGVyJyksCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25TdWJqZWN0fQogICAgICAgICAgICAgICAgfHwgJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9CiAgICAgICAgICAgICAgICB8fCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uU3ViamVjdCcpLAogICAgICAgICAgICAlU2VydmVyRXJyb3IsCiAgICAgICAgICAgICVGb3JtRWxlbWVudHMsCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlFZGl0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJFN1cnZleUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlN1cnZleUlEIiApOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3VydmV5IGVkaXQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICAgICAgbXkgJFN1cnZleUV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnU3VydmV5JwogICAgICAgICk7CiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KCBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQgKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fU3VydmV5RWRpdE1hc2soCiAgICAgICAgICAgICVTdXJ2ZXksCiAgICAgICAgKTsKCiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgc2F2ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N1cnZleVNhdmUnICkgewoKICAgICAgICBpZiAoICEkU3VydmV5SUQgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCByZXF1aXJlZCBmb3JtIGVsZW1lbnRzIGFuZCBlcnJvcnMKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgbXkgJUZvcm1FbGVtZW50czsKICAgICAgICBmb3IgbXkgJEl0ZW0gKAogICAgICAgICAgICBxdyggVGl0bGUgSW50cm9kdWN0aW9uIERlc2NyaXB0aW9uIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9ybUVsZW1lbnRzeyRJdGVtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICIkSXRlbSIgKTsKCiAgICAgICAgICAgIGlmICggISRGb3JtRWxlbWVudHN7JEl0ZW19ICkgewogICAgICAgICAgICAgICAgJFNlcnZlckVycm9yeyAiJEl0ZW0iIC4gJ1NlcnZlckVycm9yJyB9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgcGFyYW1zCiAgICAgICAgZm9yIG15ICRJdGVtIChxdyhRdWV1ZXMgVGlja2V0VHlwZUlEcyBTZXJ2aWNlSURzKSkgewogICAgICAgICAgICBAeyAkRm9ybUVsZW1lbnRzeyRJdGVtfSB9ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJEl0ZW0gKTsKICAgICAgICB9CgogICAgICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKSApIHsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259ID0gKCBsZW5ndGggJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259ICkKICAgICAgICAgICAgICAgID8gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259IgogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSA9ICggbGVuZ3RoICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0gKQogICAgICAgICAgICAgICAgPyAiXCRodG1sL3RleHRcJCAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9IgogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICAgICAgJEZvcm1FbGVtZW50c3tEZXNjcmlwdGlvbn0gPSAoIGxlbmd0aCAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSApCiAgICAgICAgICAgICAgICA/ICJcJGh0bWwvdGV4dFwkICRGb3JtRWxlbWVudHN7RGVzY3JpcHRpb259IgogICAgICAgICAgICAgICAgOiAnJzsKICAgICAgICB9CgogICAgICAgIG15ICRDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRTdHJnID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnLAogICAgICAgICk7CiAgICAgICAgbXkgJUN1c3RvbWVyVXNlckNvbmRpdGlvbnM7CgogICAgICAgIGlmICgkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkU3RyZykgewoKICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzcGxpdCggLywvLCAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkU3RyZyApICkgewogICAgICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZpZWxkOwoKICAgICAgICAgICAgICAgIG15ICVTZWxlY3Rpb25zRGF0YTsKICAgICAgICAgICAgICAgICVTZWxlY3Rpb25zRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+X1NlbmRDb25kaXRpb25HZXRGaWVsZFNlbGVjdGlvbnMoCiAgICAgICAgICAgICAgICAgICAgRmllbGROYW1lID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgQENoZWNrYm94ZXMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KAogICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICIke0ZpZWxkfUNoZWNrYm94IiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSBAQ29uZGl0aW9ucyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoCiAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBDb25kaXRpb25BcnJheTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJENvdW50ICggMCAuLiAoIHNjYWxhciBAQ29uZGl0aW9ucyAtIDEgKSApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJE5lZ2F0aW9uOwogICAgICAgICAgICAgICAgICAgIGlmICglU2VsZWN0aW9uc0RhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZ2F0aW9uID0gJENoZWNrYm94ZXNbMF0gKyAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZ2F0aW9uID0gJENoZWNrYm94ZXNbJENvdW50XSArIDA7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkUmVnRXhwVmFsdWUgICAgICA9ICRDb25kaXRpb25zWyRDb3VudF07CiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmRpdGlvbkVudHJpZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgIE5lZ2F0aW9uICAgID0+ICROZWdhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgUmVnRXhwVmFsdWUgPT4gJFJlZ0V4cFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggIWV2YWwgeyBteSAkUmVnZXggPSBxci8kUmVnRXhwVmFsdWUvOyAxOyB9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJFNlcnZlckVycm9ye0N1c3RvbWVyVXNlckNvbmRpdGlvbkVycm9yc30tPnskRmllbGR9LT57JENvdW50fSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDb25kaXRpb25BcnJheSwgXCVDb25kaXRpb25FbnRyaWVzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJDb25kaXRpb25zeyRGaWVsZH0gPSBcQENvbmRpdGlvbkFycmF5OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJUN1c3RvbWVyVXNlckNvbmRpdGlvbnMpIHsKCiAgICAgICAgICAgICAgICAkRm9ybUVsZW1lbnRze0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9ID0gXCVDdXN0b21lclVzZXJDb25kaXRpb25zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNhdmUgaWYgbm8gZXJyb3JzCiAgICAgICAgaWYgKCAhJVNlcnZlckVycm9yICkgewogICAgICAgICAgICBteSAkU2F2ZVJlc3VsdCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVVwZGF0ZSgKICAgICAgICAgICAgICAgICVGb3JtRWxlbWVudHMsCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UG9wdXBDbG9zZSgKICAgICAgICAgICAgICAgIFVSTCA9PiAiQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQ7IiwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQoKICAgICAgICAjIHJlbG9hZCBmb3JtIGlmIGVycm9yCiAgICAgICAgcmV0dXJuICRTZWxmLT5fU3VydmV5RWRpdE1hc2soCiAgICAgICAgICAgIEZvcm1FbGVtZW50cyA9PiBcJUZvcm1FbGVtZW50cywKICAgICAgICAgICAgU2VydmVyRXJyb3IgID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgICAgIFN1cnZleUlEICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIFN1cnZleSBBSkFYIHJlcXVlc3QKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYUmVxdWVzdCcgKSB7CgogICAgICAgIG15ICRKU09OT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKTsKCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgIFBhcmFtID0+ICdGaWVsZE5hbWUnLAogICAgICAgICk7CiAgICAgICAgbXkgQFNlbGVjdGVkVmFsdWVzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSgKICAgICAgICAgICAgUGFyYW0gPT4gJ1NlbGVjdGVkVmFsdWVzW10nLAogICAgICAgICk7CgogICAgICAgIG15ICVTZWxlY3Rpb25zRGF0YTsKICAgICAgICAlU2VsZWN0aW9uc0RhdGEgPSAkU3VydmV5T2JqZWN0LT5fU2VuZENvbmRpdGlvbkdldEZpZWxkU2VsZWN0aW9ucygKICAgICAgICAgICAgRmllbGROYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEpTT05TdHJpbmcgPSAkSlNPTk9iamVjdC0+RW5jb2RlKAogICAgICAgICAgICBEYXRhID0+ICcnLAogICAgICAgICk7CgogICAgICAgIGlmICglU2VsZWN0aW9uc0RhdGEpIHsKICAgICAgICAgICAgbXkgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlU2VsZWN0aW9uc0RhdGEsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICIke0ZpZWxkTmFtZX1bXSIsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUgVzUwcGMnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiBcQFNlbGVjdGVkVmFsdWVzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJUpTT05EYXRhID0gKAogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgPT4gXDEsCiAgICAgICAgICAgICAgICBTZWxlY3RGaWVsZCA9PiAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc1N0cmcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkSlNPTlN0cmluZyA9ICRKU09OT2JqZWN0LT5FbmNvZGUoCiAgICAgICAgICAgICAgICBEYXRhID0+IFwlSlNPTkRhdGEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ2FwcGxpY2F0aW9uL2pzb247IGNoYXJzZXQ9JyAuICRMYXlvdXRPYmplY3QtPntDaGFyc2V0fSwKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEpTT05TdHJpbmcsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9Cn0KCnN1YiBfU3VydmV5RWRpdE1hc2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlSlNEYXRhOwoKICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgIGlmICggJFBhcmFte1NlcnZlckVycm9yfSApIHsKICAgICAgICAlU2VydmVyRXJyb3IgPSAleyAkUGFyYW17U2VydmVyRXJyb3J9IH07CiAgICB9CgogICAgbXkgJUZvcm1FbGVtZW50czsKICAgIGlmICggJFBhcmFte0Zvcm1FbGVtZW50c30gKSB7CiAgICAgICAgJUZvcm1FbGVtZW50cyA9ICV7ICRQYXJhbXtGb3JtRWxlbWVudHN9IH07CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgIFRpdGxlICAgICA9PiBUcmFuc2xhdGFibGUoJ1N1cnZleSBFZGl0JyksCiAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICApOwoKICAgIG15ICVRdWV1ZXMgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRBbGxRdWV1ZXMoKTsKICAgIG15ICRRdWV1ZVN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVF1ZXVlcywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1F1ZXVlcycsCiAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRGb3JtRWxlbWVudHN7UXVldWVzfSB8fCAkUGFyYW17UXVldWVzfSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgaWYgdGhlIGZvciBzZW5kIGNvbmRpdGlvbiB0aWNrZXQgdHlwZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJykgKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCB0aWNrZXQgdHlwZSBsaXN0CiAgICAgICAgbXkgJVRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIHRpY2tldCB0eXBlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICglVGlja2V0VHlwZXMpIHsKCiAgICAgICAgICAgICMgYnVpbGQgdGlja2V0IHR5cGUgc2VsZWN0aW9uCiAgICAgICAgICAgIG15ICRUaWNrZXRUeXBlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlVGlja2V0VHlwZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpY2tldFR5cGVJRHMnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1RpY2tldFR5cGVJRHN9IHx8ICRQYXJhbXtUaWNrZXRUeXBlSURzfSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0VHlwZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGlja2V0VHlwZVN0cmcgPT4gJFRpY2tldFR5cGVTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiB0aGUgc2VuZCBjb25kaXRpb24gc2VydmljZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJykgKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCBzZXJ2aWNlIGxpc3QKICAgICAgICBteSAlU2VydmljZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIHNlcnZpY2UgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCVTZXJ2aWNlcykgewoKICAgICAgICAgICAgIyBidWlsZCBzZXJ2aWNlIHNlbGVjdGlvbgogICAgICAgICAgICBteSAkU2VydmljZVN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVNlcnZpY2VzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdTZXJ2aWNlSURzJywKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICA9PiA2LAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJEZvcm1FbGVtZW50c3tTZXJ2aWNlSURzfSB8fCAkUGFyYW17U2VydmljZUlEc30sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldFNlcnZpY2VzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VTdHJnID0+ICRTZXJ2aWNlU3RyZywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgc2VuZCBjb25kaXRpb24gYnkgQ3VzdG9tZXJVc2VyIGZpZWxkcy4KICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJykgKSB7CgogICAgICAgIG15ICVDdXN0b21lckZpZWxkc0NvbmZpZyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycpIH07CiAgICAgICAgbXkgQEN1c3RvbWVyRmllbGRzOwoKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICAgICBDVVNUT01FUkZJRUxEOgogICAgICAgIGZvciBteSAkQ3VzdG9tZXJGaWVsZCAoIHNvcnQga2V5cyAlQ3VzdG9tZXJGaWVsZHNDb25maWcgKSB7CiAgICAgICAgICAgIG5leHQgQ1VTVE9NRVJGSUVMRCBpZiAhJEN1c3RvbWVyRmllbGRzQ29uZmlneyRDdXN0b21lckZpZWxkfTsKICAgICAgICAgICAgbmV4dCBDVVNUT01FUkZJRUxEIGlmICEkU3VydmV5T2JqZWN0LT5fU2VuZENvbmRpdGlvbkNoZWNrQ3VzdG9tZXJGaWVsZCggRmllbGROYW1lID0+ICRDdXN0b21lckZpZWxkICk7CgogICAgICAgICAgICBwdXNoIEBDdXN0b21lckZpZWxkcywgJEN1c3RvbWVyRmllbGQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoQEN1c3RvbWVyRmllbGRzKSB7CgogICAgICAgICAgICBteSAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQEN1c3RvbWVyRmllbGRzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDdXN0b21lclVzZXJDb25kaXRpb25zJywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkSlNEYXRhe0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9ID0gJEZvcm1FbGVtZW50c3tDdXN0b21lclVzZXJDb25kaXRpb25zfSB8fCAkUGFyYW17Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc307CiAgICAgICAgICAgICRKU0RhdGF7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uRXJyb3JzfSA9ICRTZXJ2ZXJFcnJvcntDdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnN9IHx8ICcnOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzU3RyZyA9PiAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcsCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyAgICAgICAgICAgPT4gJEZvcm1FbGVtZW50c3tDdXN0b21lclVzZXJDb25kaXRpb25zfQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkUGFyYW17Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30sCiAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9uRXJyb3JzID0+ICRTZXJ2ZXJFcnJvcntDdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnN9IHx8ICcnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyByaWNoIHRleHQgZWxlbWVudHMKICAgIG15ICVTdXJ2ZXlFbGVtZW50czsKCiAgICAkU3VydmV5RWxlbWVudHN7SW50cm9kdWN0aW9ufSA9ICRGb3JtRWxlbWVudHN7SW50cm9kdWN0aW9ufSB8fCAkUGFyYW17SW50cm9kdWN0aW9ufTsKCiAgICAkU3VydmV5RWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0KICAgICAgICA9ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0gfHwgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9IHx8ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25Cb2R5Jyk7CgogICAgJFN1cnZleUVsZW1lbnRze0Rlc2NyaXB0aW9ufSA9ICRGb3JtRWxlbWVudHN7RGVzY3JpcHRpb259IHx8ICRQYXJhbXtEZXNjcmlwdGlvbn0gfHwgJyc7CgogICAgIyBsb2FkIHJpY2ggdGV4dCBlZGl0b3IKICAgIG15ICRSaWNoVGV4dEVkaXRvciA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0Jyk7CiAgICBpZiAoJFJpY2hUZXh0RWRpdG9yKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+U2V0UmljaFRleHRQYXJhbWV0ZXJzKAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjb252ZXJ0IHJlcXVpcmVkIGVsZW1lbnRzIHRvIFJURQogICAgRklFTEQ6CiAgICBmb3IgbXkgJFN1cnZleUZpZWxkICggc29ydCBrZXlzICVTdXJ2ZXlFbGVtZW50cyApIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfTsKCiAgICAgICAgIyBjbGVhbiBIVE1MCiAgICAgICAgbXkgJEhUTUxDb250ZW50ID0KICAgICAgICAgICAgJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0gPX4gc3tcQVwkaHRtbFwvdGV4dFwkXHMoLiopfXskMX14bXM7CgogICAgICAgIGlmICggISRIVE1MQ29udGVudCAmJiAkUmljaFRleHRFZGl0b3IgKSB7CiAgICAgICAgICAgICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9LAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkSFRNTENvbnRlbnQgJiYgISRSaWNoVGV4dEVkaXRvciApIHsKICAgICAgICAgICAgJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ludHJvZHVjdGlvbicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEludHJvZHVjdGlvbiA9PiAkU3VydmV5RWxlbWVudHN7SW50cm9kdWN0aW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdOb3RpZmljYXRpb25Cb2R5JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTm90aWZpY2F0aW9uQm9keSA9PiAkU3VydmV5RWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0sCiAgICAgICAgfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSW50ZXJuYWxEZXNjcmlwdGlvbicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIERlc2NyaXB0aW9uID0+ICRTdXJ2ZXlFbGVtZW50c3tEZXNjcmlwdGlvbn0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZW5lcmF0ZXMgZ2VuZXJpYyBlcnJvcnMgZm9yIEphdmFTY3JpcHQKICAgIGZvciBteSAkTmVlZGVkSXRlbSAoCiAgICAgICAgcXcoIFRpdGxlIEludHJvZHVjdGlvbiBEZXNjcmlwdGlvbiBOb3RpZmljYXRpb25TZW5kZXIgTm90aWZpY2F0aW9uU3ViamVjdCBOb3RpZmljYXRpb25Cb2R5ICkKICAgICAgICApCiAgICB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyaWNFcnJvcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSXRlbU5hbWUgPT4gJE5lZWRlZEl0ZW0gLiAnRXJyb3InLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICRJdGVtICggc29ydCBrZXlzICVTZXJ2ZXJFcnJvciApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJpY1NlcnZlckVycm9yJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJdGVtTmFtZSA9PiAkSXRlbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnSlNEYXRhJywKICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleUVkaXQnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUXVldWVTdHJpbmcgICAgICAgID0+ICRRdWV1ZVN0cmluZywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyID0+ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uU2VuZGVyfQogICAgICAgICAgICAgICAgfHwgJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0KICAgICAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25TZW5kZXInKSwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvblN1YmplY3R9CiAgICAgICAgICAgICAgICB8fCAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0KICAgICAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25TdWJqZWN0JyksCiAgICAgICAgICAgICVTZXJ2ZXJFcnJvciwKICAgICAgICAgICAgJUZvcm1FbGVtZW50cywKICAgICAgICB9LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgIGZvciBteSAkS2V5IChxdyhTdXJ2ZXlJRCBRdWVzdGlvbklEIEFuc3dlcklEKSkgewogICAgICAgICRHZXRQYXJhbXskS2V5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRLZXkgKTsKICAgIH0KCiAgICBteSAkU3VydmV5RXhpc3RzID0gJ25vJzsKICAgIGlmICggJEdldFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkU3VydmV5RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnU3VydmV5JwogICAgICAgICk7CiAgICB9CgogICAgbXkgJFF1ZXN0aW9uRXhpc3RzID0gJ25vJzsKICAgIGlmICggJEdldFBhcmFte1F1ZXN0aW9uSUR9ICkgewogICAgICAgICRRdWVzdGlvbkV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnUXVlc3Rpb24nCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkQW5zd2VyRXhpc3RzID0gJ25vJzsKICAgIGlmICggJEdldFBhcmFte0Fuc3dlcklEfSApIHsKICAgICAgICAkQW5zd2VyRXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnQW5zd2VyJwogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBxdWVzdGlvbiBhZGQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvbkFkZCcgKSB7CgogICAgICAgIG15ICRRdWVzdGlvbiAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJRdWVzdGlvbiIgKTsKICAgICAgICBteSAkVHlwZSAgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiVHlwZSIgKTsKICAgICAgICBteSAkQW5zd2VyUmVxdWlyZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQW5zd2VyUmVxdWlyZWQnICk7CgogICAgICAgIGlmICggJEFuc3dlclJlcXVpcmVkICYmICRBbnN3ZXJSZXF1aXJlZCBlcSAnTm8nICkgewogICAgICAgICAgICAkQW5zd2VyUmVxdWlyZWQgPSAwOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEFuc3dlclJlcXVpcmVkID0gMTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJVNlcnZlckVycm9yOwogICAgICAgIGlmICgkUXVlc3Rpb24pIHsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJFF1ZXN0aW9uLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJFR5cGUsCiAgICAgICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAkQW5zd2VyUmVxdWlyZWQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uU29ydCgKICAgICAgICAgICAgICAgIFN1cnZleUlEID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VydmVyRXJyb3J7UXVlc3Rpb259ID0gMTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbk92ZXJ2aWV3KAogICAgICAgICAgICBTdXJ2ZXlJRCAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBTZXJ2ZXJFcnJvciA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBxdWVzdGlvbiBkZWxldGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvbkRlbGV0ZScgKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGFuZCBxdWVzdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uRGVsZXRlKAogICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICk7CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Tb3J0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVN1cnZleUVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfSNRdWVzdGlvbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIHVwCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUXVlc3Rpb25VcCcgKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGFuZCBxdWVzdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uU29ydCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICApOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uVXAoCiAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249U3VydmV5RWRpdDtTdXJ2ZXlJRD0kR2V0UGFyYW17U3VydmV5SUR9I1F1ZXN0aW9uIiwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcXVlc3Rpb24gZG93bgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1F1ZXN0aW9uRG93bicgKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGFuZCBxdWVzdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uU29ydCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICApOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uRG93bigKICAgICAgICAgICAgU3VydmV5SUQgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1TdXJ2ZXlFZGl0O1N1cnZleUlEPSRHZXRQYXJhbXtTdXJ2ZXlJRH0jUXVlc3Rpb24iLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBxdWVzdGlvbiBlZGl0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUXVlc3Rpb25FZGl0JyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgYW5kIHF1ZXN0aW9uIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbkVkaXQoCiAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvblNhdmUnICkgewoKICAgICAgICBteSAkUXVlc3Rpb24gICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUXVlc3Rpb24nICk7CiAgICAgICAgbXkgJEFuc3dlclJlcXVpcmVkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Fuc3dlclJlcXVpcmVkJyApOwoKICAgICAgICBpZiAoICRBbnN3ZXJSZXF1aXJlZCAmJiAkQW5zd2VyUmVxdWlyZWQgZXEgJ05vJyApIHsKICAgICAgICAgICAgJEFuc3dlclJlcXVpcmVkID0gMDsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRBbnN3ZXJSZXF1aXJlZCA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBhbmQgcXVlc3Rpb24gZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJVNlcnZlckVycm9yOwogICAgICAgIGlmICgkUXVlc3Rpb24pIHsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25VcGRhdGUoCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEICAgICA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJFF1ZXN0aW9uLAogICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gJEFuc3dlclJlcXVpcmVkLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uRWRpdCgKICAgICAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlcnZlckVycm9ye1F1ZXN0aW9uU2VydmVyRXJyb3J9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbkVkaXQoCiAgICAgICAgICAgIFN1cnZleUlEICAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgU2VydmVyRXJyb3IgPT4gXCVTZXJ2ZXJFcnJvciwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYW5zd2VyIGFkZAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlckFkZCcgKSB7CgogICAgICAgIG15ICRBbnN3ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiQW5zd2VyIiApOwoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBhbmQgcXVlc3Rpb24gZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJVNlcnZlckVycm9yOwogICAgICAgIGlmICggJEFuc3dlciB8fCAkQW5zd2VyIGVxICcwJyApIHsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyQWRkKAogICAgICAgICAgICAgICAgU3VydmV5SUQgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICBBbnN3ZXIgICAgID0+ICRBbnN3ZXIsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbkVkaXQoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZXJ2ZXJFcnJvcntBbnN3ZXJTZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uRWRpdCgKICAgICAgICAgICAgU3VydmV5SUQgICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCAgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBTZXJ2ZXJFcnJvciA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgZGVsZXRlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQW5zd2VyRGVsZXRlJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXksIHF1ZXN0aW9uIGFuZCBhbnN3ZXIgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyB8fCAkQW5zd2VyRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyRGVsZXRlKAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAkR2V0UGFyYW17QW5zd2VySUR9LAogICAgICAgICk7CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyU29ydCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtTdXJ2ZXlJRD0kR2V0UGFyYW17U3VydmV5SUR9O1F1ZXN0aW9uSUQ9JEdldFBhcmFte1F1ZXN0aW9uSUR9I0Fuc3dlciIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFuc3dlciB1cAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlclVwJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXksIHF1ZXN0aW9uIGFuZCBhbnN3ZXIgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyB8fCAkQW5zd2VyRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyU29ydCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJVcCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEFuc3dlcklEICAgPT4gJEdldFBhcmFte0Fuc3dlcklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPSRHZXRQYXJhbXtTdXJ2ZXlJRH07UXVlc3Rpb25JRD0kR2V0UGFyYW17UXVlc3Rpb25JRH0jQW5zd2VyIiwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYW5zd2VyIGRvd24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBbnN3ZXJEb3duJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXksIHF1ZXN0aW9uIGFuZCBhbnN3ZXIgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyB8fCAkQW5zd2VyRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyU29ydCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJEb3duKAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAkR2V0UGFyYW17QW5zd2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfTtRdWVzdGlvbklEPSRHZXRQYXJhbXtRdWVzdGlvbklEfSNBbnN3ZXIiLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgZWRpdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlckVkaXQnICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSwgcXVlc3Rpb24gYW5kIGFuc3dlciBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnIHx8ICRBbnN3ZXJFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza0Fuc3dlckVkaXQoCiAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEFuc3dlcklEICAgPT4gJEdldFBhcmFte0Fuc3dlcklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYW5zd2VyIHNhdmUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBbnN3ZXJTYXZlJyApIHsKCiAgICAgICAgbXkgJEFuc3dlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJBbnN3ZXIiICk7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5LCBxdWVzdGlvbiBhbmQgYW5zd2VyIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgfHwgJEFuc3dlckV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgaWYgKCAkQW5zd2VyIHx8ICRBbnN3ZXIgZXEgJzAnICkgewogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJVcGRhdGUoCiAgICAgICAgICAgICAgICBBbnN3ZXJJRCAgID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgIEFuc3dlciAgICAgPT4gJEFuc3dlciwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICAgICAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPSRHZXRQYXJhbXtTdXJ2ZXlJRH07UXVlc3Rpb25JRD0kR2V0UGFyYW17UXVlc3Rpb25JRH0jQW5zd2VyIgogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlcnZlckVycm9ye0Fuc3dlclNlcnZlckVycm9yfSA9ICdTZXZlckVycm9yJzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkU2VsZi0+X01hc2tBbnN3ZXJFZGl0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEICA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIEFuc3dlcklEICAgID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgICAgIFNlcnZlckVycm9yID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIG92ZXJ2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICEkR2V0UGFyYW17U3VydmV5SUR9ICkgewoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnKSwKICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU2VsZi0+X01hc2tRdWVzdGlvbk92ZXJ2aWV3KAogICAgICAgIFN1cnZleUlEID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICApOwp9CgpzdWIgX01hc2tRdWVzdGlvbk92ZXJ2aWV3IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJVNlcnZlckVycm9yOwogICAgaWYgKCAkUGFyYW17U2VydmVyRXJyb3J9ICkgewogICAgICAgICVTZXJ2ZXJFcnJvciA9ICV7ICRQYXJhbXtTZXJ2ZXJFcnJvcn0gfTsKICAgIH0KCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSAgICAgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnKSwKICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICk7CgogICAgIyBnZXQgc3VydmV5IG9iamVjdAogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICAjIGdldCBhbGwgYXR0cmlidXRlcyBvZiB0aGUgc3VydmV5CiAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1N1cnZleUVkaXRRdWVzdGlvbnMnLAogICAgICAgIERhdGEgPT4gXCVTdXJ2ZXksCiAgICApOwoKICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICApOwoKICAgIGlmICggJFN1cnZleXtTdGF0dXN9ICYmICRTdXJ2ZXl7U3RhdHVzfSBlcSAnTmV3JyApIHsKCiAgICAgICAgbXkgJEFycmF5SGFzaFJlZiA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJ1llc05vJywKICAgICAgICAgICAgICAgIFZhbHVlICAgID0+IFRyYW5zbGF0YWJsZSgnWWVzL05vJyksCiAgICAgICAgICAgICAgICBTZWxlY3RlZCA9PiAxLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnUmFkaW8nLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdSYWRpbyAoTGlzdCknKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnQ2hlY2tib3ggKExpc3QpJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdUZXh0YXJlYScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1RleHRhcmVhJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdOUFMnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdOZXQgUHJvbW90ZXIgU2NvcmUnKSwKICAgICAgICAgICAgfSwKICAgICAgICBdOwoKICAgICAgICBteSAkU2VsZWN0aW9uVHlwZSA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+ICRBcnJheUhhc2hSZWYsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ1R5cGUnLAogICAgICAgICAgICBJRCAgICAgICAgICAgID0+ICdUeXBlJywKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAnWWVzL05vJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUXVlc3Rpb24gVHlwZScpLAogICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICRBcnJheUhhc2hSZWYgPSBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgICAgID0+ICdZZXMnLAogICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gVHJhbnNsYXRhYmxlKCdZZXMnKSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdObycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgIH0KICAgICAgICBdOwoKICAgICAgICBteSAkQW5zd2VyUmVxdWlyZWRTZWxlY3QgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiAkQXJyYXlIYXNoUmVmLAogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdBbnN3ZXJSZXF1aXJlZCcsCiAgICAgICAgICAgIElEICAgICAgICAgICAgPT4gJ0Fuc3dlclJlcXVpcmVkJywKICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAnWWVzJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgIG15ICRRdWVzdGlvbkVycm9yQ2xhc3MgPSAnJzsKICAgICAgICBpZiAoICRTZXJ2ZXJFcnJvcntRdWVzdGlvbn0gKSB7CiAgICAgICAgICAgICRRdWVzdGlvbkVycm9yQ2xhc3MgPSAnU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleUFkZFF1ZXN0aW9uJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICAgICAgICA9PiAkUGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgU2VsZWN0aW9uVHlwZSAgICAgICAgPT4gJFNlbGVjdGlvblR5cGUsCiAgICAgICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZFNlbGVjdCA9PiAkQW5zd2VyUmVxdWlyZWRTZWxlY3QsCiAgICAgICAgICAgICAgICBRdWVzdGlvbkVycm9yQ2xhc3MgICA9PiAkUXVlc3Rpb25FcnJvckNsYXNzLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggc2NhbGFyIEBMaXN0ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc1RhYmxlJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5U3RhdHVzQ29sdW1uJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleURlbGV0ZUNvbHVtbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQExpc3QpIHsKICAgICAgICAgICAgICAgIG15ICRBbnN3ZXJDb3VudCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckNvdW50KAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRDbGFzczsKICAgICAgICAgICAgICAgIG15ICRDbGFzc1VwOwogICAgICAgICAgICAgICAgbXkgJENsYXNzRG93bjsKCiAgICAgICAgICAgICAgICBpZiAoICEkQ291bnRlciApIHsKICAgICAgICAgICAgICAgICAgICAkQ2xhc3NVcCA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ291bnRlciA9PSAkI0xpc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgJENsYXNzRG93biA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJFN0YXR1cyA9IFRyYW5zbGF0YWJsZSgnQ29tcGxldGUnKTsKCiAgICAgICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQW5zd2VyQ291bnQgPCAyICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3MgID0gJ1dhcm5pbmcnOwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHVzID0gVHJhbnNsYXRhYmxlKCdJbmNvbXBsZXRlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJEFuc3dlckNvdW50IDwgMSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzICA9ICdXYXJuaW5nJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFN0YXR1cyA9IFRyYW5zbGF0YWJsZSgnSW5jb21wbGV0ZScpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ05QUycgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQW5zd2VyQ291bnQgPCAyICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3MgID0gJ1dhcm5pbmcnOwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHVzID0gVHJhbnNsYXRhYmxlKCdJbmNvbXBsZXRlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRBbnN3ZXJSZXF1aXJlZCA9ICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfSA/ICdZZXMnIDogJ05vJzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlRdWVzdGlvbnNSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1cyAgICAgICAgID0+ICRTdGF0dXMsCiAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+ICRBbnN3ZXJSZXF1aXJlZCwKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1VwICAgICAgICA9PiAkQ2xhc3NVcCwKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NEb3duICAgICAgPT4gJENsYXNzRG93biwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc0RlbGV0ZUJ1dHRvbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkUXVlc3Rpb24sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlOb1F1ZXN0aW9uc1NhdmVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gNSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlRdWVzdGlvbnNUYWJsZScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgICAgICBteSAkQ291bnRlcjsKICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChATGlzdCkgewoKICAgICAgICAgICAgbXkgJENsYXNzVXA7CiAgICAgICAgICAgIG15ICRDbGFzc0Rvd247CgogICAgICAgICAgICBpZiAoICEkQ291bnRlciApIHsKICAgICAgICAgICAgICAgICRDbGFzc1VwID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkQ291bnRlciAmJiAkQ291bnRlciA9PSAkI0xpc3QgKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3NEb3duID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJEFuc3dlclJlcXVpcmVkID0gJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9ID8gJ1llcycgOiAnTm8nOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlRdWVzdGlvbnNTYXZlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gJEFuc3dlclJlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgIENsYXNzVXAgICAgICAgID0+ICRDbGFzc1VwLAogICAgICAgICAgICAgICAgICAgIENsYXNzRG93biAgICAgID0+ICRDbGFzc0Rvd24sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoIFR5cGUgPT4gJ1NtYWxsJyApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgpzdWIgX01hc2tRdWVzdGlvbkVkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlU2VydmVyRXJyb3I7CiAgICBpZiAoICRQYXJhbXtTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgJVNlcnZlckVycm9yID0gJXsgJFBhcmFte1NlcnZlckVycm9yfSB9OwogICAgfQoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIG91dHB1dCBoZWFkZXIKICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgICAgID0+IFRyYW5zbGF0YWJsZSgnUXVlc3Rpb24gRWRpdCcpLAogICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgKTsKCiAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICk7CiAgICBteSAlUXVlc3Rpb24gPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkdldCgKICAgICAgICBRdWVzdGlvbklEID0+ICRQYXJhbXtRdWVzdGlvbklEfSwKICAgICk7CgogICAgbXkgJEFycmF5SGFzaFJlZiA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdZZXMnLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1llcycpLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnTm8nLAogICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgfQogICAgXTsKCiAgICBpZiAoICRRdWVzdGlvbntBbnN3ZXJSZXF1aXJlZH0gKSB7CiAgICAgICAgJEFycmF5SGFzaFJlZi0+WzBde1NlbGVjdGVkfSA9IDE7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkQXJyYXlIYXNoUmVmLT5bMV17U2VsZWN0ZWR9ID0gMTsKICAgIH0KCiAgICBteSAkQW5zd2VyUmVxdWlyZWRTZWxlY3QgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhICAgICAgICAgID0+ICRBcnJheUhhc2hSZWYsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAnQW5zd2VyUmVxdWlyZWQnLAogICAgICAgIElEICAgICAgICAgICAgPT4gJ0Fuc3dlclJlcXVpcmVkJywKICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICdZZXMnLAogICAgICAgIFRyYW5zbGF0aW9uICAgPT4gMSwKICAgICAgICBDbGFzcyAgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgKTsKCiAgICAjIHByaW50IHRoZSBtYWluIGJvZHkKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdCcsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkU2VsZWN0ID0+ICRBbnN3ZXJSZXF1aXJlZFNlbGVjdCwKICAgICAgICAgICAgJVF1ZXN0aW9uLAogICAgICAgICAgICAlU2VydmVyRXJyb3IsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkUXVlc3Rpb257VHlwZX0gZXEgJ1llc05vJyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0VGFibGUnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdFllc25vJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkUXVlc3Rpb257VHlwZX0gZXEgJ1JhZGlvJyB8fCAkUXVlc3Rpb257VHlwZX0gZXEgJ0NoZWNrYm94JyB8fCAkUXVlc3Rpb257VHlwZX0gZXEgJ05QUycgKSB7CgogICAgICAgIG15ICRUeXBlID0gJFF1ZXN0aW9ue1R5cGV9OwogICAgICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgICAgICBpZiAoIHNjYWxhciBATGlzdCApIHsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0VGFibGUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkU3VydmV5e1N0YXR1c30gZXEgJ05ldycgKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0VGFibGVEZWxldGUnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyMiAoQExpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkQW5zd2VyMi0+e1N1cnZleUlEfSA9ICRQYXJhbXtTdXJ2ZXlJRH07CgogICAgICAgICAgICAgICAgICAgIG15ICRDbGFzc1VwOwogICAgICAgICAgICAgICAgICAgIG15ICRDbGFzc0Rvd247CgogICAgICAgICAgICAgICAgICAgICMgZGlzYWJsZSB1cCBhY3Rpb24gb24gZmlyc3Qgcm93CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJENvdW50ZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzc1VwID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZGlzYWJsZSBkb3duIGFjdGlvbiBvbiBsYXN0IHJvdwogICAgICAgICAgICAgICAgICAgIGlmICggJENvdW50ZXIgPT0gJCNMaXN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3NEb3duID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJRdWVzdGlvbkVkaXQiIC4gJFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskQW5zd2VyMn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1VwICAgPT4gJENsYXNzVXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0Rvd24gPT4gJENsYXNzRG93biwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdRdWVzdGlvbkVkaXQnIC4gJFR5cGUgLiAnRGVsZXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkQW5zd2VyMiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0QWRkQW5zd2VyJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVF1ZXN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAlU2VydmVyRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBteSAkQ291bnRlcjsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyMiAoQExpc3QpIHsKICAgICAgICAgICAgICAgICAgICAkQW5zd2VyMi0+e1N1cnZleUlEfSA9ICRQYXJhbXtTdXJ2ZXlJRH07CgogICAgICAgICAgICAgICAgICAgIG15ICRDbGFzc1VwOwogICAgICAgICAgICAgICAgICAgIG15ICRDbGFzc0Rvd247CgogICAgICAgICAgICAgICAgICAgIGlmICggISRDb3VudGVyICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3NVcCA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyICYmICRDb3VudGVyID09ICQjTGlzdCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzRG93biA9ICdEaXNhYmxlZCc7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiUXVlc3Rpb25FZGl0IiAuICRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEFuc3dlcjJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NVcCAgID0+ICRDbGFzc1VwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NEb3duID0+ICRDbGFzc0Rvd24sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ05vQW5zd2Vyc1NhdmVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbHVtbnMgPT4gMywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0QWRkQW5zd2VyJywKICAgICAgICAgICAgICAgIERhdGEgPT4geyVRdWVzdGlvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUXVlc3Rpb257VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0VGV4dEFyZWEnLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfTWFza0Fuc3dlckVkaXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlU2VydmVyRXJyb3I7CiAgICBpZiAoICRQYXJhbXtTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgJVNlcnZlckVycm9yID0gJXsgJFBhcmFte1NlcnZlckVycm9yfSB9OwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJE91dHB1dDsKICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgICAgID0+IFRyYW5zbGF0YWJsZSgnQW5zd2VyIEVkaXQnKSwKICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICk7CgogICAgIyBnZXQgc3VydmV5IG9iamVjdAogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICBteSAlQW5zd2VyID0gJFN1cnZleU9iamVjdC0+QW5zd2VyR2V0KAogICAgICAgIEFuc3dlcklEID0+ICRQYXJhbXtBbnN3ZXJJRH0sCiAgICApOwogICAgJEFuc3dlcntTdXJ2ZXlJRH0gPSAkUGFyYW17U3VydmV5SUR9OwoKICAgIG15ICVRdWVzdGlvbiA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uR2V0KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gJFBhcmFte1F1ZXN0aW9uSUR9LAogICAgKTsKICAgICRQYXJhbXtRdWVzdGlvbn0gPSAkUXVlc3Rpb257UXVlc3Rpb259OwoKICAgICMgcHJpbnQgdGhlIG1haW4gdGFibGUuCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdBbnN3ZXJFZGl0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUFuc3dlciwKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAlU2VydmVyRXJyb3IsCiAgICAgICAgfSwKICAgICk7CgogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICApOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlPdmVydmlldzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbW1vbiBvYmplY3RzCiAgICAleyRTZWxmfSA9ICVQYXJhbTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHNob3cgb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiAgICAjIGdldCBzZXNzaW9uIG9iamVjdAogICAgbXkgJFNlc3Npb25PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKTsKCiAgICAjIHN0b3JlIGxhc3Qgc2NyZWVuLCB1c2VkIGZvciBiYWNrLWxpbmtzCiAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuVmlldycsCiAgICAgICAgVmFsdWUgICAgID0+ICRTZWxmLT57UmVxdWVzdGVkVVJMfSwKICAgICk7CgogICAgIyBzdG9yZSBsYXN0IHNjcmVlbiBvdmVydmlldwogICAgJFNlc3Npb25PYmplY3QtPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICBteSAkQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJTdXJ2ZXk6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBzb3J0aW5nIHBhcmFtZXRlcnMKICAgIG15ICRTb3J0QnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdOdW1iZXInOwoKICAgICMgZ2V0IG9yZGVyaW5nIHBhcmFtZXRlcnMKICAgIG15ICRPcmRlckJ5ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J09yZGVyOjpEZWZhdWx0J30KICAgICAgICB8fCAnRG93bic7CgogICAgIyBpbnZlc3RpZ2F0ZSByZWZyZXNoCiAgICBteSAkUmVmcmVzaCA9ICRTZWxmLT57VXNlclJlZnJlc2hUaW1lfSA/IDYwICogJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9IDogdW5kZWY7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIG91dHB1dCBoZWFkZXIKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgICA9PiBUcmFuc2xhdGFibGUoJ092ZXJ2aWV3JyksCiAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIENoYW5nZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKICAgICMgaW5pdCBzdXJ2ZXkgc2VhcmNoCiAgICBteSAlU3VydmV5U2VhcmNoOwoKICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgIyBnZXQgZmlsdGVycyBzdG9yZWQgaW4gdGhlIHVzZXIgcHJlZmVyZW5jZXMKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRVc2VyT2JqZWN0LT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAjIGdldCBzdG9yZWQgc3VydmV5IHNlYXJjaAogICAgbXkgJFN0b3JlZFN1cnZleVNlYXJjaCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkRlY29kZSgKICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3tTdXJ2ZXlTZWFyY2h9LAogICAgKTsKCiAgICAjIG1lcmdlIHN0b3JlZCBzdXJ2ZXkgc2VhcmNoIGlmIHdlIGhhdmUgb25lCiAgICBpZiAoJFN0b3JlZFN1cnZleVNlYXJjaCkgewogICAgICAgICVTdXJ2ZXlTZWFyY2ggPSAleyRTdG9yZWRTdXJ2ZXlTZWFyY2h9OwogICAgfQoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDaGFuZ2UnICkgewoKICAgICAgICAjIGdldCBmdWxsdGV4dCBzZWFyY2gKICAgICAgICAkU3VydmV5U2VhcmNoe1doYXR9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0Z1bGx0ZXh0JyApIHx8ICcnOwoKICAgICAgICAjIGdldCBzdGF0ZXMKICAgICAgICBteSBAU3RhdGVzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJ1N0YXRlcycgKTsKICAgICAgICAkU3VydmV5U2VhcmNoe1N0YXRlc30gPSBcQFN0YXRlczsKCiAgICAgICAgIyBnZXQgY3JlYXRlIHRpbWUKICAgICAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUaW1lU2VhcmNoVHlwZScgKSBlcSAnVGltZVNsb3QnICkgewoKICAgICAgICAgICAgJFN1cnZleVNlYXJjaHtUaW1lU2xvdENoZWNrZWR9ICAgICAgPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgICAgICAgICAkU3VydmV5U2VhcmNoe05vUmVzdHJpY3Rpb25DaGVja2VkfSA9ICcnOwoKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdGFydFllYXIgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1cnZleUNyZWF0ZVRpbWVTdGFydFllYXInICk7CiAgICAgICAgICAgIG15ICRTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRNb250aCcgKTsKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdGFydERheSAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1cnZleUNyZWF0ZVRpbWVTdGFydERheScgKTsKCiAgICAgICAgICAgIG15ICRTdXJ2ZXlDcmVhdGVUaW1lU3RvcFllYXIgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1cnZleUNyZWF0ZVRpbWVTdG9wWWVhcicgKTsKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdG9wTW9udGggPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3VydmV5Q3JlYXRlVGltZVN0b3BNb250aCcgKTsKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdG9wRGF5ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3VydmV5Q3JlYXRlVGltZVN0b3BEYXknICk7CgogICAgICAgICAgICAkU3VydmV5U2VhcmNoe0NyZWF0ZVRpbWVOZXdlckRhdGV9CiAgICAgICAgICAgICAgICA9ICIkU3VydmV5Q3JlYXRlVGltZVN0YXJ0WWVhci0kU3VydmV5Q3JlYXRlVGltZVN0YXJ0TW9udGgtJFN1cnZleUNyZWF0ZVRpbWVTdGFydERheSAwMDowMDowMCI7CgogICAgICAgICAgICAkU3VydmV5U2VhcmNoe0NyZWF0ZVRpbWVPbGRlckRhdGV9CiAgICAgICAgICAgICAgICA9ICIkU3VydmV5Q3JlYXRlVGltZVN0b3BZZWFyLSRTdXJ2ZXlDcmVhdGVUaW1lU3RvcE1vbnRoLSRTdXJ2ZXlDcmVhdGVUaW1lU3RvcERheSAyMzo1OTo1OSI7CgogICAgICAgICAgICAkU3VydmV5U2VhcmNoe1N1cnZleUNyZWF0ZVRpbWVTdGFydH0gPSB7CiAgICAgICAgICAgICAgICBTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRZZWFyICA9PiAkU3VydmV5Q3JlYXRlVGltZVN0YXJ0WWVhciwKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdGFydE1vbnRoID0+ICRTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRNb250aCwKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdGFydERheSAgID0+ICRTdXJ2ZXlDcmVhdGVUaW1lU3RhcnREYXksCiAgICAgICAgICAgIH07CgogICAgICAgICAgICAkU3VydmV5U2VhcmNoe1N1cnZleUNyZWF0ZVRpbWVTdG9wfSA9IHsKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdG9wWWVhciAgPT4gJFN1cnZleUNyZWF0ZVRpbWVTdG9wWWVhciwKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdG9wTW9udGggPT4gJFN1cnZleUNyZWF0ZVRpbWVTdG9wTW9udGgsCiAgICAgICAgICAgICAgICBTdXJ2ZXlDcmVhdGVUaW1lU3RvcERheSAgID0+ICRTdXJ2ZXlDcmVhdGVUaW1lU3RvcERheSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTdXJ2ZXlTZWFyY2h7VGltZVNsb3RDaGVja2VkfSAgICAgID0gJyc7CiAgICAgICAgICAgICRTdXJ2ZXlTZWFyY2h7Tm9SZXN0cmljdGlvbkNoZWNrZWR9ID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgICAgICB9CgogICAgICAgICMgc3RvcmUgbGFzdCBvdmVydmlldyBzY3JlZW4KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5PdmVydmlldycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAnQWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXcnLAogICAgICAgICk7CgogICAgICAgIG15ICRWYWx1ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiBcJVN1cnZleVNlYXJjaCwKICAgICAgICApOwoKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAnU3VydmV5U2VhcmNoJywKICAgICAgICAgICAgVmFsdWUgID0+ICRWYWx1ZSwKICAgICAgICApOwoKICAgIH0KCiAgICAjIGdldCBzdXJ2ZXkgbGlzdAogICAgbXkgQFN1cnZleUlEcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5U2VhcmNoKAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWyRTb3J0QnldLAogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyRPcmRlckJ5XSwKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAlU3VydmV5U2VhcmNoCiAgICApOwoKICAgICMgZmluZCBvdXQgd2hpY2ggY29sdW1ucyBzaG91bGQgYmUgc2hvd24KICAgIG15IEBTaG93Q29sdW1uczsKICAgIGlmICggJENvbmZpZy0+e1Nob3dDb2x1bW5zfSApIHsKCiAgICAgICAgIyBnZXQgYWxsIHBvc3NpYmxlIGNvbHVtbnMgZnJvbSBjb25maWcKICAgICAgICBteSAlUG9zc2libGVDb2x1bW4gPSAleyAkQ29uZmlnLT57U2hvd0NvbHVtbnN9IH07CgogICAgICAgICMgZ2V0IHRoZSBjb2x1bW4gbmFtZXMgdGhhdCBzaG91bGQgYmUgc2hvd24KICAgICAgICBDT0xVTU5OQU1FOgogICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAlUG9zc2libGVDb2x1bW4gKSB7CiAgICAgICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJFBvc3NpYmxlQ29sdW1ueyROYW1lfTsKICAgICAgICAgICAgcHVzaCBAU2hvd0NvbHVtbnMsICROYW1lOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkZWZhdWx0IHBhcmFtZXRlcnMKICAgIG15ICRGaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsdGVyJyApIHx8ICcnOwogICAgbXkgJFZpZXcgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApICAgfHwgJyc7CgogICAgIyBzaG93IHRoZSBsaXN0CiAgICBteSAkTGlua1BhZ2UgPQogICAgICAgICdGaWx0ZXI9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJzsnOwogICAgbXkgJExpbmtTb3J0ID0KICAgICAgICAnRmlsdGVyPScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7JzsKICAgIG15ICRMaW5rRmlsdGVyID0KICAgICAgICAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CgogICAgIyBzaG93IHN1cnZleSBsaXN0CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPlN1cnZleUxpc3RTaG93KAogICAgICAgIFN1cnZleUlEcyAgICA9PiBcQFN1cnZleUlEcywKICAgICAgICBUb3RhbCAgICAgICAgPT4gc2NhbGFyIEBTdXJ2ZXlJRHMsCiAgICAgICAgVmlldyAgICAgICAgID0+ICRWaWV3LAogICAgICAgIEZpbHRlckxpbmsgICA9PiAkTGlua0ZpbHRlciwKICAgICAgICBUaXRsZU5hbWUgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdPdmVydmlldycpLAogICAgICAgIFRpdGxlVmFsdWUgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N1cnZleScpLAogICAgICAgIEVudiAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIExpbmtTb3J0ICAgICA9PiAkTGlua1NvcnQsCiAgICAgICAgU2hvd0NvbHVtbnMgID0+IFxAU2hvd0NvbHVtbnMsCiAgICAgICAgU29ydEJ5ICAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApLAogICAgICAgIE9yZGVyQnkgICAgICA9PiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICksCiAgICAgICAgT3V0cHV0ICAgICAgID0+IDEsCiAgICAgICAgU3VydmV5U2VhcmNoID0+IFwlU3VydmV5U2VhcmNoLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlTdGF0czsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgICRTZWxmLT57Q29uZmlnfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiU3VydmV5OjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkR3JvdXBPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyk7CgogICAgbXkgJFN1cnZleUlEICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJTdXJ2ZXlJRCIgKSAgfHwgJyc7CiAgICBteSAkUmVxdWVzdElEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlJlcXVlc3RJRCIgKSB8fCAnJzsKCiAgICBteSAkU3VydmV5RXhpc3RzID0gJ25vJzsKICAgIGlmICgkU3VydmV5SUQpIHsKICAgICAgICAkU3VydmV5RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdTdXJ2ZXknCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUmVxdWVzdEV4aXN0cyA9ICdubyc7CiAgICBpZiAoJFJlcXVlc3RJRCkgewogICAgICAgICRSZXF1ZXN0RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRSZXF1ZXN0SUQsCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnUmVxdWVzdCcKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3RhdHMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFRpdGxlICAgICA9PiBUcmFuc2xhdGFibGUoJ1N0YXRzIE92ZXJ2aWV3JyksCiAgICAgICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICAgICApOwoKICAgICAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgY29uZmlnIG9mIEFnZW50U3VydmV5U3RhdHMKICAgICAgICBteSAkU2hvd0RlbGV0ZUFycmF5ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdXJ2ZXlTdGF0czo6U2hvd0RlbGV0ZScpOwogICAgICAgIG15ICRTaG93RGVsZXRlICAgICAgPSAwOwoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkU2hvd0RlbGV0ZUFycmF5KSApIHsKCiAgICAgICAgICAgICMgZ2V0IHVzZXIgZ3JvdXBzLCB3aGVyZSB0aGUgdXNlciBoYXMgdGhlIHJ3IHByaXZpbGVnZQogICAgICAgICAgICBteSAlR3JvdXBzID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3J3JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgcmV2ZXJzZSBncm91cHMKICAgICAgICAgICAgJUdyb3VwcyA9IHJldmVyc2UgJUdyb3VwczsKCiAgICAgICAgICAgIGlmICggZ3JlcCB7ICRHcm91cHN7JF99IH0gQHskU2hvd0RlbGV0ZUFycmF5fSApIHsKICAgICAgICAgICAgICAgICRTaG93RGVsZXRlID0gMTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBwcmludCB0aGUgbWFpbiB0YWJsZS4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3RhdHMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVTdXJ2ZXksCiAgICAgICAgICAgICAgICBTaG93RGVsZXRlID0+ICRTaG93RGVsZXRlLAogICAgICAgICAgICB9CiAgICAgICAgKTsKICAgICAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVMaXN0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgbXkgJENvdW50ICAgICA9IDA7CiAgICAgICAgbXkgJExhc3RJbmRleCA9IHNjYWxhciBATGlzdCAtIDE7CgogICAgICAgIGZvciBteSAkVm90ZSAoQExpc3QpIHsKICAgICAgICAgICAgbXkgJENvdW50UGx1cyAgPSAkQ291bnQgKyAxOwogICAgICAgICAgICBteSAkQ291bnRNaW51cyA9ICRDb3VudCAtIDE7CiAgICAgICAgICAgIGlmICggJENvdW50ICE9IDAgKSB7CiAgICAgICAgICAgICAgICAkVm90ZS0+e1ByZXZ9ID0gJExpc3RbJENvdW50TWludXNdLT57UmVxdWVzdElEfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICRDb3VudCAhPSAkTGFzdEluZGV4ICkgewogICAgICAgICAgICAgICAgJFZvdGUtPntOZXh0fSA9ICRMaXN0WyRDb3VudFBsdXNdLT57UmVxdWVzdElEfTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkVm90ZS0+e1N1cnZleUlEfSA9ICRTdXJ2ZXlJRDsKICAgICAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRWb3RlLT57VGlja2V0SUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICAkVm90ZS0+e1RpY2tldE51bWJlcn0gPSAkVGlja2V0e1RpY2tldE51bWJlcn07CiAgICAgICAgICAgICRWb3RlLT57U2hvd0RlbGV0ZX0gICA9ICRTaG93RGVsZXRlOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRzVm90ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+ICRWb3RlLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ291bnQrKzsKICAgICAgICB9CgogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5U3RhdHMnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICAgICAgKTsKCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHN0YXRzIGRldGFpbHMKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTdGF0c0RldGFpbCcgKSB7CiAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJUaWNrZXROdW1iZXIiICk7CgogICAgICAgIG15ICggJFByZXYsICROZXh0LCAlUmVzdWx0cyApOwoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFJlcXVlc3RFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHN0YXRzIGRldGFpbCEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFRpdGxlICAgICA9PiBUcmFuc2xhdGFibGUoJ1N0YXRzIERldGFpbCcpLAogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgICMgcHJpbnQgdGhlIG1haW4gdGFibGUuCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRzRGV0YWlsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlU3VydmV5LAogICAgICAgICAgICAgICAgVGlja2V0TnVtYmVyID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgU3VydmV5IHZvdGUgbGlzdC4KICAgICAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVMaXN0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgIyBHZXQgcGFyYW1ldGVycyBmb3IgdXJsIChwcmV2aW91cyBhbmQgbmV4dCB2b3RlIGFuZCB0aGVpciB0aWNrZXQgbnVtYmVyKS4KICAgICAgICBteSAkQ291bnQgICAgID0gMDsKICAgICAgICBteSAkTGFzdEluZGV4ID0gc2NhbGFyIEBMaXN0IC0gMTsKCiAgICAgICAgZm9yIG15ICRSZXN1bHRWb3RlIChATGlzdCkgewoKICAgICAgICAgICAgI0ZpbmRzIHZvdGUgdGhhdCBpcyB2aWV3ZWQuCiAgICAgICAgICAgIGlmICggJFJlc3VsdFZvdGUtPntSZXF1ZXN0SUR9ID09ICRSZXF1ZXN0SUQgKSB7CiAgICAgICAgICAgICAgICBteSAkQ291bnRQbHVzICA9ICRDb3VudCArIDE7CiAgICAgICAgICAgICAgICBteSAkQ291bnRNaW51cyA9ICRDb3VudCAtIDE7CgogICAgICAgICAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkUmVzdWx0Vm90ZS0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkUmVzdWx0c3tUaWNrZXROdW1iZXJ9ID0gJFRpY2tldHtUaWNrZXROdW1iZXJ9OwoKICAgICAgICAgICAgICAgIGlmICggJENvdW50ICE9IDAgKSB7CiAgICAgICAgICAgICAgICAgICAgJFByZXYgPyAkUmVzdWx0c3tQcmV2fSA9ICRQcmV2IDogJFJlc3VsdHN7UHJldn0gPSAkTGlzdFskQ291bnRNaW51c10tPntSZXF1ZXN0SUR9OwogICAgICAgICAgICAgICAgICAgICRSZXN1bHRze1ByZXZUaWNrZXROdW1iZXJ9ID0gJFRpY2tldE9iamVjdC0+VGlja2V0TnVtYmVyTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkTGlzdFskQ291bnRNaW51c10tPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICggJENvdW50ICE9ICRMYXN0SW5kZXggKSB7CiAgICAgICAgICAgICAgICAgICAgJE5leHQgPyAkUmVzdWx0c3tOZXh0fSA9ICROZXh0IDogJFJlc3VsdHN7TmV4dH0gPSAkTGlzdFskQ291bnRQbHVzXS0+e1JlcXVlc3RJRH07CiAgICAgICAgICAgICAgICAgICAgJFJlc3VsdHN7TmV4dFRpY2tldE51bWJlcn0gPSAkVGlja2V0T2JqZWN0LT5UaWNrZXROdW1iZXJMb29rdXAoCiAgICAgICAgICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRMaXN0WyRDb3VudFBsdXNdLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnTmF2QXJyb3dzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICAgICAlUmVzdWx0cywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSBAUXVlc3Rpb25MaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25MaXN0KSB7CgogICAgICAgICAgICBteSAkQ2xhc3MgPSAnJzsKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnVGV4dGFyZWEnICkgewogICAgICAgICAgICAgICAgJENsYXNzID0gJ1RleHRhcmVhJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJFJlcXVpcmVkVGV4dCA9ICcnOwogICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfSApIHsKICAgICAgICAgICAgICAgICRDbGFzcyAuPSAnIE1hbmRhdG9yeSc7CiAgICAgICAgICAgICAgICAkUmVxdWlyZWRUZXh0ID0gJyogJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGF0c0RldGFpbFF1ZXN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkVGV4dCA9PiAkUmVxdWlyZWRUZXh0LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgQEFuc3dlcnM7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1JhZGlvJyB8fCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdOUFMnICkgewogICAgICAgICAgICAgICAgbXkgQEFuc3dlckxpc3Q7CiAgICAgICAgICAgICAgICBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEICA9PiAkUmVxdWVzdElELAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBBbnN3ZXJMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJUFuc3dlciA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VySUQgPT4gJFJvdy0+e1ZvdGVWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBteSAlRGF0YTsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJEFuc3dlcntBbnN3ZXJ9OwogICAgICAgICAgICAgICAgICAgIHB1c2goIEBBbnN3ZXJzLCBcJURhdGEgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycgfHwgJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+Vm90ZUdldCgKICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0SUQgID0+ICRSZXF1ZXN0SUQsCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJURhdGE7CiAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJExpc3RbMF0tPntWb3RlVmFsdWV9OwoKICAgICAgICAgICAgICAgICMgY2xlYW4gSFRNTAogICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnVGV4dGFyZWEnICYmICREYXRhe0Fuc3dlcn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJERhdGF7QW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoCiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRGF0YXtBbnN3ZXJ9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoKCBAQW5zd2VycywgXCVEYXRhICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBBbnN3ZXJzKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTdGF0c0RldGFpbEFuc3dlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7JFJvd30sCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleVN0YXRzJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHslUGFyYW19LAogICAgICAgICk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTdGF0c1ZpZXcnICkgewoKICAgICAgICBpZiAoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdWJtaXREZWxldGUnICkgKSB7CgogICAgICAgICAgICAjIGdldCBzdXJ2ZXkgaWQKICAgICAgICAgICAgbXkgJFN1cnZleUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1cnZleUlEJyApOwoKICAgICAgICAgICAgIyBnZXQgdGhlIHN0YXRzIGRlbGV0ZSBrZXlzIGFuZCB0YXJnZXQgb2JqZWN0CiAgICAgICAgICAgIG15IEBSZXF1ZXN0RGVsZXRlSWRlbnRpZmllciA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoCiAgICAgICAgICAgICAgICBQYXJhbSA9PiAnUmVxdWVzdERlbGV0ZUlkZW50aWZpZXInLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBkZWxldGUgdm90ZSBkYXRhIGFuZCByZXF1ZXN0IGZyb20gZGF0YWJhc2UKICAgICAgICAgICAgZm9yIG15ICRSZXF1ZXN0SUQgKEBSZXF1ZXN0RGVsZXRlSWRlbnRpZmllcikgewoKICAgICAgICAgICAgICAgICMgZGVsZXRlIHZvdGUgZGF0YQogICAgICAgICAgICAgICAgbXkgJFZvdGVEZWxldGUgPSAkU3VydmV5T2JqZWN0LT5Wb3RlRGVsZXRlKAogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RJRCA9PiAkUmVxdWVzdElELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkUmVxdWVzdERlbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3REZWxldGUoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEID0+ICRSZXF1ZXN0SUQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIHN1cnZleSBzdGF0cwogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdXJ2ZXlJRD0kU3VydmV5SUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRTdXJ2ZXlab29tOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRTdXJ2ZXlJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJTdXJ2ZXlJRCIgKSB8fCAnJzsKCiAgICBteSAlSlNEYXRhOwoKICAgIG15ICRTdXJ2ZXlFeGlzdHMgPSAnbm8nOwogICAgaWYgKCRTdXJ2ZXlJRCkgewogICAgICAgICRTdXJ2ZXlFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1N1cnZleScKICAgICAgICApOwogICAgfQoKICAgICMgdmlldyBhdHRhY2htZW50IGZvciBIVE1MIGVtYWlsCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIGdldCBwYXJhbXMKICAgICAgICBteSAkU3VydmV5RmllbGQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiU3VydmV5RmllbGQiICk7CgogICAgICAgICMgbmVlZGVkIHBhcmFtcwogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyggU3VydmV5SUQgU3VydmV5RmllbGQgKSkgewogICAgICAgICAgICBpZiAoICEkTmVlZGVkICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWRlZCBQYXJhbTogJE5lZWRlZCEiLAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkU3VydmV5RmllbGQgbmUgJ0ludHJvZHVjdGlvbicgJiYgJFN1cnZleUZpZWxkIG5lICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgU3VydmV5RmllbGQgUGFyYW06ICRTdXJ2ZXlGaWVsZCEiLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBTdXJ2ZXlJRDogJFN1cnZleUlEISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgdGhlIHN1cnZleQogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwoKICAgICAgICBpZiAoICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSApIHsKCiAgICAgICAgICAgICMgY2xlYW4gSFRNTCBhbmQgY29udmVydCB0aGUgRmllbGQgaW4gSFRNTCAoXG4gLS0+PGJyPikKICAgICAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwogICAgICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleXskU3VydmV5RmllbGR9LAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGdldCBIVE1MIHV0aWxzIG9iamVjdAogICAgICAgIG15ICRIVE1MVXRpbHNPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyk7CgogICAgICAgICMgY29udmVydCB0ZXh0IGFyZWEgZmllbGRzIHRvIEFTQ0lJCiAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID0gJEhUTUxVdGlsc09iamVjdC0+VG9Bc2NpaSgKICAgICAgICAgICAgU3RyaW5nID0+ICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSwKICAgICAgICApOwoKICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkSFRNTFV0aWxzT2JqZWN0LT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgICAgICBTdHJpbmcgID0+ICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSwKICAgICAgICAgICAgQ2hhcnNldCA9PiAndXRmLTgnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAnaW5saW5lJywKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3VydmV5IHN0YXR1cwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N1cnZleVN0YXR1cycgKSB7CgogICAgICAgICMgQ2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24uCiAgICAgICAgJExheW91dE9iamVjdC0+Q2hhbGxlbmdlVG9rZW5DaGVjaygpOwoKICAgICAgICBteSAkTmV3U3RhdHVzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIk5ld1N0YXR1cyIgKTsKCiAgICAgICAgbXkgJEFjY2VzcyA9IDA7CiAgICAgICAgbXkgJEdyb3Vwc0ZvckNoYW5nZVN0YXR1cwogICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3VydmV5OjpGcm9udGVuZDo6Q2hhbmdlU3VydmV5U3RhdHVzR3JvdXBzJyk7CiAgICAgICAgbXkgJVVzZXJHcm91cHMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgICk7CiAgICAgICAgJVVzZXJHcm91cHMgPSByZXZlcnNlICVVc2VyR3JvdXBzOwoKICAgICAgICAjIElmIGNvbmZpZyBhcnJheSBpcyBlbXB0eSwgZ3JvdXAgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBPdGhlcndpc2UsIGNoZWNraW5nIHBlcm1pc3Npb25zLgogICAgICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSgkR3JvdXBzRm9yQ2hhbmdlU3RhdHVzKSApIHsKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgR1JPVVBTOgogICAgICAgICAgICBmb3IgbXkgJFN1cnZleUdyb3VwICggQHskR3JvdXBzRm9yQ2hhbmdlU3RhdHVzfSApIHsKICAgICAgICAgICAgICAgIGlmICggJFVzZXJHcm91cHN7JFN1cnZleUdyb3VwfSApIHsKICAgICAgICAgICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgICAgICAgICBsYXN0IEdST1VQUzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRBY2Nlc3MgPT0gMCApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgYSBuZXcgc3RhdHVzCiAgICAgICAgbXkgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICAgICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgTmV3U3RhdHVzID0+ICROZXdTdGF0dXMsCiAgICAgICAgKTsKICAgICAgICBteSAkTWVzc2FnZSA9ICcnOwogICAgICAgIGlmICggZGVmaW5lZCgkU3RhdHVzU2V0KSAmJiAkU3RhdHVzU2V0IGVxICdOb1F1ZXN0aW9uJyApIHsKICAgICAgICAgICAgJE1lc3NhZ2UgPSAnO01lc3NhZ2U9Tm9RdWVzdGlvbic7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggZGVmaW5lZCgkU3RhdHVzU2V0KSAmJiAkU3RhdHVzU2V0IGVxICdJbmNvbXBsZXRlUXVlc3Rpb24nICkgewogICAgICAgICAgICAkTWVzc2FnZSA9ICc7TWVzc2FnZT1JbmNvbXBsZXRlUXVlc3Rpb24nOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIGRlZmluZWQoJFN0YXR1c1NldCkgJiYgJFN0YXR1c1NldCBlcSAnU3RhdHVzU2V0JyApIHsKICAgICAgICAgICAgJE1lc3NhZ2UgPSAnO01lc3NhZ2U9U3RhdHVzU2V0JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEJE1lc3NhZ2UiLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgem9vbQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJE1lc3NhZ2UgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiTWVzc2FnZSIgKTsKCiAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgIGlmICggISRTdXJ2ZXlJRCB8fCAkU3VydmV5RXhpc3RzIG5lICdZZXMnICkgewogICAgICAgICRNZXNzYWdlID0gJztNZXNzYWdlPU5vU3VydmV5SUQnOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRTdXJ2ZXlPdmVydmlldyRNZXNzYWdlIiwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ1N1cnZleScpLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgb3V0cHV0IG1lc3NhZ2VzIGlmIHN0YXR1cyB3YXMgY2hhbmdlZAogICAgaWYgKCBkZWZpbmVkKCRNZXNzYWdlKSAmJiAkTWVzc2FnZSBlcSAnTm9RdWVzdGlvbicgKSB7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Ob3RpZnkoCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdFcnJvcicsCiAgICAgICAgICAgIEluZm8gICAgID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nKSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCBkZWZpbmVkKCRNZXNzYWdlKSAmJiAkTWVzc2FnZSBlcSAnSW5jb21wbGV0ZVF1ZXN0aW9uJyApIHsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5vdGlmeSgKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ0Vycm9yJywKICAgICAgICAgICAgSW5mbyAgICAgPT4gVHJhbnNsYXRhYmxlKCdDYW5cJ3Qgc2V0IG5ldyBzdGF0dXMhIFF1ZXN0aW9ucyBpbmNvbXBsZXRlLicpLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQoJE1lc3NhZ2UpICYmICRNZXNzYWdlIGVxICdTdGF0dXNTZXQnICkgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBQcmlvcml0eSA9PiAnTm90aWNlJywKICAgICAgICAgICAgSW5mbyAgICAgPT4gVHJhbnNsYXRhYmxlKCdTdGF0dXMgY2hhbmdlZC4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIHRoZSBzdXJ2ZXkKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCApOwogICAgbXkgJUhUTUw7CgogICAgIyBjbGVhbiBIVE1MIGFuZCBjb252ZXJ0IHRoZSB0ZXh0LWFyZWFzIGluIEhUTUwgKFxuIC0tPjxicj4pCiAgICBGSUVMRDoKICAgIGZvciBteSAkU3VydmV5RmllbGQgKHF3KCBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24gKSkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRTdXJ2ZXl7JFN1cnZleUZpZWxkfTsKCiAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICAgICBpZiAoJDEpIHsKICAgICAgICAgICAgJEhUTUx7JFN1cnZleUZpZWxkfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0sCiAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBudW1iZXJzIG9mIHJlcXVlc3RzIGFuZCB2b3RlcwogICAgbXkgJFNlbmRSZXF1ZXN0ID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdENvdW50KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICBWYWxpZElEICA9PiAnYWxsJywKICAgICk7CiAgICBteSAkUmVxdWVzdENvbXBsZXRlID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdENvdW50KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICBWYWxpZElEICA9PiAwLAogICAgKTsKICAgICRTdXJ2ZXl7U2VuZFJlcXVlc3R9ICAgICA9ICRTZW5kUmVxdWVzdDsKICAgICRTdXJ2ZXl7UmVxdWVzdENvbXBsZXRlfSA9ICRSZXF1ZXN0Q29tcGxldGU7CgogICAgIyBnZXQgc2VsZWN0ZWQgcXVldWVzCiAgICBteSAlUXVldWVzICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPkdldEFsbFF1ZXVlcygpOwogICAgbXkgQFF1ZXVlTGlzdCA9IG1hcCB7ICRRdWV1ZXN7JF99IH0gQHsgJFN1cnZleXtRdWV1ZXN9IH07CiAgICBAUXVldWVMaXN0ID0gc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IEBRdWV1ZUxpc3Q7CiAgICBteSAkUXVldWVMaXN0U3RyaW5nID0gam9pbiBxeywgfSwgQFF1ZXVlTGlzdDsKCiAgICBteSAkTm9RdWV1ZU1lc3NhZ2UgPSAnJzsKICAgIGlmICggISRRdWV1ZUxpc3RTdHJpbmcgKSB7CiAgICAgICAgJFF1ZXVlTGlzdFN0cmluZyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJyk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICAkSlNEYXRhe0hUTUxSaWNoVGV4dEhlaWdodERlZmF1bHR9ID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHREZWZhdWx0JykgfHwgODA7CiAgICAkSlNEYXRhe0hUTUxSaWNoVGV4dEhlaWdodE1heH0gICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpIVE1MUmljaFRleHRIZWlnaHRNYXgnKSAgICAgfHwgMjUwMDsKCiAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU3VydmV5Wm9vbScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVTdXJ2ZXksCiAgICAgICAgICAgIE5vUXVldWVNZXNzYWdlICA9PiAkTm9RdWV1ZU1lc3NhZ2UsCiAgICAgICAgICAgIFF1ZXVlTGlzdFN0cmluZyA9PiAkUXVldWVMaXN0U3RyaW5nLAogICAgICAgIH0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgdGhlIHNlbmQgY29uZGl0aW9uIHRpY2tldCB0eXBlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnKSApIHsKCiAgICAgICAgIyBnZXQgc2VsZWN0ZWQgdGlja2V0IHR5cGVzCiAgICAgICAgbXkgJVRpY2tldFR5cGVzICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoKTsKICAgICAgICBteSBAVGlja2V0VHlwZUxpc3QgPSBtYXAgeyAkVGlja2V0VHlwZXN7JF99ID8gJFRpY2tldFR5cGVzeyRffSA6ICgpIH0gQHsgJFN1cnZleXtUaWNrZXRUeXBlSURzfSB9OwogICAgICAgIEBUaWNrZXRUeXBlTGlzdCA9IHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBAVGlja2V0VHlwZUxpc3Q7CiAgICAgICAgbXkgJFRpY2tldFR5cGVMaXN0U3RyaW5nID0gam9pbiBxeywgfSwgQFRpY2tldFR5cGVMaXN0OwoKICAgICAgICBpZiAoICEkVGlja2V0VHlwZUxpc3RTdHJpbmcgKSB7CiAgICAgICAgICAgICRUaWNrZXRUeXBlTGlzdFN0cmluZyA9IFRyYW5zbGF0YWJsZSgnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJyk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0VHlwZXMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFRpY2tldFR5cGVMaXN0U3RyaW5nID0+ICRUaWNrZXRUeXBlTGlzdFN0cmluZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgdGhlIHNlbmQgY29uZGl0aW9uIHNlcnZpY2UgY2hlY2sgaXMgZW5hYmxlZAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScpICkgewoKICAgICAgICAjIGdldCBzZWxlY3RlZCB0aWNrZXQgdHlwZXMKICAgICAgICBteSAlU2VydmljZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpLT5TZXJ2aWNlTGlzdCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwogICAgICAgIG15IEBTZXJ2aWNlTGlzdCA9IG1hcCB7ICRTZXJ2aWNlc3skX30gPyAkU2VydmljZXN7JF99IDogKCkgfSBAeyAkU3VydmV5e1NlcnZpY2VJRHN9IH07CiAgICAgICAgQFNlcnZpY2VMaXN0ID0gc29ydCB7IGxjICRhIGNtcCBsYyAkYiB9IEBTZXJ2aWNlTGlzdDsKICAgICAgICBteSAkU2VydmljZUxpc3RTdHJpbmcgPSBqb2luIHF7LCB9LCBAU2VydmljZUxpc3Q7CgogICAgICAgIGlmICggISRTZXJ2aWNlTGlzdFN0cmluZyApIHsKICAgICAgICAgICAgJFNlcnZpY2VMaXN0U3RyaW5nID0gVHJhbnNsYXRhYmxlKCctIE5vIHRpY2tldCBzZXJ2aWNlIHNlbGVjdGVkIC0nKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRTZXJ2aWNlcycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU2VydmljZUxpc3RTdHJpbmcgPT4gJFNlcnZpY2VMaXN0U3RyaW5nLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBydW4gc3VydmV5IG1lbnUgbW9kdWxlcwogICAgbXkgJE1lbnVNb2R1bGVDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJE1lbnVNb2R1bGVDb25maWcpICkgewogICAgICAgIG15ICVNZW51cyAgID0gJXskTWVudU1vZHVsZUNvbmZpZ307CiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIE1FTlU6CiAgICAgICAgZm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgICMgbWVudSBTYXRzRGV0YWlscyBuZWVkcyB0byBoYXZlIGEgY29tcGxldGUgcmVxdWVzdAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBkZWZpbmVkICRNZW51c3skTWVudX0tPntBY3Rpb259CiAgICAgICAgICAgICAgICAmJiAkTWVudXN7JE1lbnV9LT57QWN0aW9ufSBlcSAnQWdlbnRTdXJ2ZXlTdGF0cycKICAgICAgICAgICAgICAgICYmICEkUmVxdWVzdENvbXBsZXRlCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgTUVOVTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNZW51c3skTWVudX0tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkT2JqZWN0ID0gJE1lbnVzeyRNZW51fS0+e01vZHVsZX0tPm5ldygKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBjbGFzc2VzCiAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9ICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdQb3BVcCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbGFzc30gPSAnQXNQb3B1cCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0JhY2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57Q2xhc3N9ID0gJ0hpc3RvcnlCYWNrJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBydW4gbW9kdWxlCiAgICAgICAgICAgICAgICAkQ291bnRlciA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgU3VydmV5ICA9PiB7JVN1cnZleX0sCiAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkQ291bnRlciwKICAgICAgICAgICAgICAgICAgICBDb25maWcgID0+ICRNZW51c3skTWVudX0sCiAgICAgICAgICAgICAgICAgICAgTWVudUlEICA9PiAnTWVudScgLiAkTWVudSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCB0aGUgcG9zc2libGUgc3RhdHVzIG1lbnUKICAgIG15ICVOZXdTdGF0dXMgPSAoCiAgICAgICAgQ2hhbmdlU3RhdHVzID0+IFRyYW5zbGF0YWJsZSgnLSBDaGFuZ2UgU3RhdHVzIC0nKSwKICAgICAgICBNYXN0ZXIgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdNYXN0ZXInKSwKICAgICAgICBWYWxpZCAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdWYWxpZCcpLAogICAgICAgIEludmFsaWQgICAgICA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQnKSwKCiAgICApOwoKICAgIGlmICggJFN1cnZleXtTdGF0dXN9IGVxICdOZXcnICkgewogICAgICAgIGRlbGV0ZSAkTmV3U3RhdHVze0ludmFsaWR9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgZGVsZXRlICROZXdTdGF0dXN7ICRTdXJ2ZXl7U3RhdHVzfSB9OwogICAgfQoKICAgIG15ICROZXdTdGF0dXNTdHIgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnTmV3U3RhdHVzJywKICAgICAgICBJRCAgICAgICAgICA9PiAnTmV3U3RhdHVzJywKICAgICAgICBEYXRhICAgICAgICA9PiBcJU5ld1N0YXR1cywKICAgICAgICBTZWxlY3RlZElEICA9PiAnQ2hhbmdlU3RhdHVzJywKICAgICAgICBUaXRsZSAgICAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05ldyBTdGF0dXMnKSwKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdTdXJ2ZXlTdGF0dXMnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBOZXdTdGF0dXNTdHIgPT4gJE5ld1N0YXR1c1N0ciwKICAgICAgICAgICAgU3VydmV5SUQgICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICB9LAogICAgKTsKCiAgICAjIG91dHB1dCB0aGUgc3VydmV5IGNvbW1vbiBibG9ja3MKICAgIG15ICVUcmFuc2xhdGVkVGl0bGVzID0gKAogICAgICAgIEludHJvZHVjdGlvbiA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1N1cnZleSBJbnRyb2R1Y3Rpb24nKSwKICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdTdXJ2ZXkgRGVzY3JpcHRpb24nKSwKICAgICk7CiAgICBmb3IgbXkgJEZpZWxkIChxdyggSW50cm9kdWN0aW9uIERlc2NyaXB0aW9uKSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlCbG9jaycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVGl0bGUgICAgICAgPT4gJFRyYW5zbGF0ZWRUaXRsZXN7JEZpZWxkfSwKICAgICAgICAgICAgICAgIFN1cnZleUZpZWxkID0+ICRGaWVsZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgIGlmICggJEhUTUx7JEZpZWxkfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdCb2R5SFRNTCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBTdXJ2ZXlGaWVsZCA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICAgICAgU3VydmV5SUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQm9keVBsYWluJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIExhYmVsICAgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFN1cnZleXskRmllbGR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBzdXJ2ZXkgem9vbSBjb25maWdyYXRpb25zCiAgICBteSAkU3VydmV5UmVzdWx0c0dyYXBoUGVybWlzc2lvbiA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57QWdlbnRTdXJ2ZXlTdGF0c30tPntHcm91cH07CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFN1cnZleVJlc3VsdHNHcmFwaFBlcm1pc3Npb24pICkgewoKICAgICAgICAjIGdldCBncm91cCBmcm9tIGdpdmVuIHVzZXIgaWQKICAgICAgICBteSBAR3JvdXBOYW1lcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIFR5cGUgICA9PiAncncnLAogICAgICAgICAgICBSZXN1bHQgPT4gJ05hbWUnLAogICAgICAgICAgICBDYWNoZWQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBHUk9VUFM6CiAgICAgICAgZm9yIG15ICRHcm91cE5hbWVzIChAR3JvdXBOYW1lcykgewoKICAgICAgICAgICAgbmV4dCBHUk9VUFMgaWYgIWdyZXAgeyAkXyBlcSAkR3JvdXBOYW1lcyB9IEB7JFN1cnZleVJlc3VsdHNHcmFwaFBlcm1pc3Npb259OwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQZXJtaXNzaW9uU3RhdFJlc3VsdHMnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbGFzdCBHUk9VUFM7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CgogICAgICAgICMgZ2V0IGFjY2VzcyBpZiBubyBTdXJ2ZXlSZXN1bHRzR3JhcGhQZXJtaXNzaW9uIGlzIHNldAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQZXJtaXNzaW9uU3RhdFJlc3VsdHMnLAogICAgICAgICk7CiAgICB9CgogICAgIyBkaXNwbGF5IHN0YXRzIGlmIHN0YXR1cyBNYXN0ZXIsIFZhbGlkIG9yIEludmFsaWQKICAgIGlmICggJFN1cnZleXtTdGF0dXN9IGVxICdOZXcnICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb1N0YXRSZXN1bHRzJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKAogICAgICAgICRTdXJ2ZXl7U3RhdHVzfSBlcSAnTWFzdGVyJwogICAgICAgIHx8ICRTdXJ2ZXl7U3RhdHVzfSBlcSAnVmFsaWQnCiAgICAgICAgfHwgJFN1cnZleXtTdGF0dXN9IGVxICdJbnZhbGlkJwogICAgICAgICkKICAgIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5RWRpdFN0YXRzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgYWxsIHF1ZXN0aW9ucyBvZiB0aGUgc3VydmV5CiAgICAgICAgbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleUVkaXRTdGF0c1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gJFF1ZXN0aW9uLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSBAQW5zd2VyczsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgdGhlIGFuc3dlcnMgb2YgdGhlIHF1ZXN0aW9uCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdDaGVja2JveCcKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdOUFMnCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0OwoKICAgICAgICAgICAgICAgICMgc2V0IGFuc3dlcnMgdG8gWWVzIGFuZCBObyBpZiB0eXBlIHdhcyBZZXNObwogICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nICkgewogICAgICAgICAgICAgICAgICAgIG15ICVEYXRhOwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gICA9ICJZZXMiOwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcklEfSA9ICJZZXMiOwogICAgICAgICAgICAgICAgICAgIHB1c2goIEBBbnN3ZXJMaXN0LCBcJURhdGEgKTsKICAgICAgICAgICAgICAgICAgICBteSAlRGF0YTI7CiAgICAgICAgICAgICAgICAgICAgJERhdGEye0Fuc3dlcn0gICA9ICJObyI7CiAgICAgICAgICAgICAgICAgICAgJERhdGEye0Fuc3dlcklEfSA9ICJObyI7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlckxpc3QsIFwlRGF0YTIgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBhbGwgYW5zd2VycyBvZiBhIHF1ZXN0aW9uCiAgICAgICAgICAgICAgICAgICAgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJMaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoQEFuc3dlckxpc3QpIHsKICAgICAgICAgICAgICAgICAgICBteSAkVm90ZUNvdW50ID0gJFN1cnZleU9iamVjdC0+Vm90ZUNvdW50KAogICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgID0+ICRSb3ctPntBbnN3ZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBteSAkUGVyY2VudCA9IDA7CgogICAgICAgICAgICAgICAgICAgICMgY2FsY3VsYXRlIHRoZSBwZXJjZW50cwogICAgICAgICAgICAgICAgICAgIGlmICgkUmVxdWVzdENvbXBsZXRlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQZXJjZW50ID0gMTAwIC8gJFJlcXVlc3RDb21wbGV0ZSAqICRWb3RlQ291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRQZXJjZW50ID0gc3ByaW50ZiggIiUuMmYiLCAkUGVyY2VudCApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBteSAlRGF0YTsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ICAgICAgICA9ICRSb3ctPntBbnN3ZXJ9OwogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlclBlcmNlbnR9ID0gJFBlcmNlbnQ7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YSApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKCiAgICAgICAgICAgICAgICBteSAkVm90ZVZhbHVlID0gJyc7CiAgICAgICAgICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT57J0RCOjpUeXBlJ30gZXEgJ29yYWNsZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFZvdGVWYWx1ZSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBteSAkQW5zd2VyTm8gPSAkU3VydmV5T2JqZWN0LT5Wb3RlQ291bnQoCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgID0+ICRWb3RlVmFsdWUsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgJFBlcmNlbnQgPSAwOwoKICAgICAgICAgICAgICAgICMgY2FsY3VsYXRlIHRoZSBwZXJjZW50cwogICAgICAgICAgICAgICAgaWYgKCRSZXF1ZXN0Q29tcGxldGUpIHsKICAgICAgICAgICAgICAgICAgICAkUGVyY2VudCA9IDEwMCAvICRSZXF1ZXN0Q29tcGxldGUgKiAkQW5zd2VyTm87CiAgICAgICAgICAgICAgICAgICAgJFBlcmNlbnQgPSBzcHJpbnRmKCAiJS4yZiIsICRQZXJjZW50ICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBteSAlRGF0YTsKICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ2Fuc3dlcmVkJyk7CiAgICAgICAgICAgICAgICBpZiAoICEkUmVxdWVzdENvbXBsZXRlICkgewogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlclBlcmNlbnR9ID0gMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlclBlcmNlbnR9ID0gc3ByaW50ZiggIiUuMmYiLCAxMDAgLSAkUGVyY2VudCApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YSApOwogICAgICAgICAgICAgICAgbXkgJURhdGEyOwogICAgICAgICAgICAgICAgJERhdGEye0Fuc3dlcn0gICAgICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdub3QgYW5zd2VyZWQnKTsKICAgICAgICAgICAgICAgICREYXRhMntBbnN3ZXJQZXJjZW50fSA9ICRQZXJjZW50OwogICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YTIgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdXRwdXQgYWxsIGFuc3dlcnMgb2YgdGhlIHN1cnZleQogICAgICAgICAgICBmb3IgbXkgJFJvdyAoQEFuc3dlcnMpIHsKICAgICAgICAgICAgICAgICRSb3ctPntBbnN3ZXJQZXJjZW50VGFibGV9ID0gJFJvdy0+e0Fuc3dlclBlcmNlbnR9OwogICAgICAgICAgICAgICAgaWYgKCAhJFJvdy0+e0Fuc3dlclBlcmNlbnR9ICkgewogICAgICAgICAgICAgICAgICAgICRSb3ctPntBbnN3ZXJQZXJjZW50VGFibGV9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleUVkaXRTdGF0c0Fuc3dlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkUm93LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleScsCiAgICAgICAgVmFsdWUgPT4gXCVKU0RhdGEsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRTdXJ2ZXlab29tJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRPdXRwdXQ7CgogICAgbXkgJUFuc3dlcnM7CiAgICBteSAlRXJyb3JzOwogICAgbXkgQFF1ZXN0aW9uTGlzdDsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHB1YmxpYyBzdXJ2ZXkgdm90ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1B1YmxpY1N1cnZleVZvdGUnICkgewogICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHVibGljU3VydmV5S2V5JyApOwoKICAgICAgICAjIGdldCBzdXJ2ZXkgZnJvbSBwdWJsaWMga2V5CiAgICAgICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUdldCgKICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgKTsKICAgICAgICBpZiAoICRTdXJ2ZXl7U3VydmV5SUR9ICkgewogICAgICAgICAgICBAUXVlc3Rpb25MaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25MaXN0KSB7CiAgICAgICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFB1YmxpY1N1cnZleVZvdGUxID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gIlB1YmxpY1N1cnZleVZvdGUxWyRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9XSIKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICEkUHVibGljU3VydmV5Vm90ZTEgfHwgIWxlbmd0aCAkUHVibGljU3VydmV5Vm90ZTEgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9eydBbnN3ZXIgcmVxdWlyZWQnfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSA9ICRQdWJsaWNTdXJ2ZXlWb3RlMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1JhZGlvJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkUHVibGljU3VydmV5Vm90ZTIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiUHVibGljU3VydmV5Vm90ZTJbJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH1dIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICggISRQdWJsaWNTdXJ2ZXlWb3RlMiB8fCAhbGVuZ3RoICRQdWJsaWNTdXJ2ZXlWb3RlMiApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH17J0Fuc3dlciByZXF1aXJlZCd9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9ID0gJFB1YmxpY1N1cnZleVZvdGUyOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfQogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyIChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkUHVibGljU3VydmV5Vm90ZTMgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gIlB1YmxpY1N1cnZleVZvdGUzWyRBbnN3ZXItPntBbnN3ZXJJRH1dIgogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRQdWJsaWNTdXJ2ZXlWb3RlMyAmJiAkUHVibGljU3VydmV5Vm90ZTMgZXEgJ1llcycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0sICRBbnN3ZXItPntBbnN3ZXJJRH07CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIWRlZmluZWQgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gbmUgJ0FSUkFZJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICFAeyAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfXsnQW5zd2VyIHJlcXVpcmVkJ30gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkUHVibGljU3VydmV5Vm90ZTQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiUHVibGljU3VydmV5Vm90ZTRbJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH1dIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgcmljaCB0ZXh0IGlzIGVuYWJsZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUHVibGljU3VydmV5Vm90ZTQgPSAoIGxlbmd0aCAkUHVibGljU3VydmV5Vm90ZTQgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAiXCRodG1sL3RleHRcJCAkUHVibGljU3VydmV5Vm90ZTQiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICcnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfQogICAgICAgICAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgICAgICAgICAoICEkUHVibGljU3VydmV5Vm90ZTQgfHwgIWxlbmd0aCAkUHVibGljU3VydmV5Vm90ZTQgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9eydBbnN3ZXIgcmVxdWlyZWQnfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9ID0gJFB1YmxpY1N1cnZleVZvdGU0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnTlBTJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkUHVibGljU3VydmV5Vm90ZTUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiUHVibGljU3VydmV5Vm90ZTVbJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH1dIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICggISRQdWJsaWNTdXJ2ZXlWb3RlNSB8fCAhbGVuZ3RoICRQdWJsaWNTdXJ2ZXlWb3RlNSApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH17J0Fuc3dlciByZXF1aXJlZCd9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9ID0gJFB1YmxpY1N1cnZleVZvdGU1OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIElmIHdlIGRpZG4ndCBoYXZlIGVycm9ycywganVzdCBzYXZlIHRoZSBhbnN3ZXJzCiAgICAgICAgICAgIGlmICggIXNjYWxhciBrZXlzICVFcnJvcnMgKSB7CiAgICAgICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25MaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZvdGVWYWx1ZSAgICAgICA9PiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnUmFkaW8nICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZvdGVWYWx1ZSAgICAgICA9PiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9CiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByZWYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gZXEgJ0FSUkFZJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgQHsgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEFuc3dlciAoIEB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJEFuc3dlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEICAgICAgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ05QUycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY0Fuc3dlclNldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVm90ZVZhbHVlICAgICAgID0+ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHNldCBzdXJ2ZXkgcmVxdWVzdCBhcyBpbnZhbGlkCiAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlJbnZhbGlkU2V0KAogICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ1N1cnZleScpLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5TWVzc2FnZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VUeXBlICAgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXkgSW5mb3JtYXRpb24nKSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZUhlYWRlciA9PiBUcmFuc2xhdGFibGUoJ1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nKSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJyksCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNTdXJ2ZXknLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzaG93IHN1cnZleSB2b3RlIGRhdGEKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTaG93Vm90ZURhdGEnICkgewogICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnUHVibGljU3VydmV5S2V5JyApOwoKICAgICAgICAjIHJldHVybiBpZiBmZWF0dXJlIG5vdCBlbmFibGVkCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCJTdXJ2ZXk6OlNob3dWb3RlRGF0YSIpICkgewogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5TWVzc2FnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSAgID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IE1lc3NhZ2UhJyksCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZUhlYWRlciA9PiBUcmFuc2xhdGFibGUoJ01vZHVsZSBub3QgZW5hYmxlZC4nKSwKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICAgICAgID0+IFRyYW5zbGF0YWJsZSgKICAgICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLicKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNTdXJ2ZXknLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIEdldCB0aGUgcmVxdWVzdCBkYXRhIGFuZCBzdGFydCBzaG93aW5nIHRoZSBkYXRhCiAgICAgICAgbXkgJVJlcXVlc3REYXRhID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdEdldCgKICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFN1cnZleUlEICA9ICRSZXF1ZXN0RGF0YXtTdXJ2ZXlJRH07CiAgICAgICAgbXkgJFRpY2tldElEICA9ICRSZXF1ZXN0RGF0YXtUaWNrZXRJRH07CiAgICAgICAgbXkgJFJlcXVlc3RJRCA9ICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9OwoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBteSAkU3VydmV5RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdTdXJ2ZXknCiAgICAgICAgKTsKICAgICAgICBteSAkUmVxdWVzdEV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkUmVxdWVzdElELAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1JlcXVlc3QnCiAgICAgICAgKTsKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFJlcXVlc3RFeGlzdHMgbmUgJ1llcycgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIldyb25nIHB1YmxpYyBzdXJ2ZXkga2V5OiAkUHVibGljU3VydmV5S2V5ISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnaW5mbycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiAnU3VydmV5JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5TWVzc2FnZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSAgID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IEVycm9yIScpLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2VIZWFkZXIgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIHN1cnZleSBrZXkuJyksCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgICAgICA9PiBUcmFuc2xhdGFibGUoCiAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLicKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNTdXJ2ZXknLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXkgVm90ZScpLAogICAgICAgICk7CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgUHVibGljICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNsZWFuIEhUTUwKICAgICAgICBpZiAoICRTdXJ2ZXl7SW50cm9kdWN0aW9ufSApIHsKICAgICAgICAgICAgJFN1cnZleXtJbnRyb2R1Y3Rpb259ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICAgICAgICAgbXkgJEhUTUxDb250ZW50ID0gJDE7CiAgICAgICAgICAgIGlmICggISRIVE1MQ29udGVudCApIHsKICAgICAgICAgICAgICAgICRTdXJ2ZXl7SW50cm9kdWN0aW9ufSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleXtJbnRyb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNTdXJ2ZXlWb3RlRGF0YScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVN1cnZleSwKICAgICAgICAgICAgICAgIE1lc3NhZ2VUeXBlID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IFZvdGUgRGF0YScpLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewoKICAgICAgICAgICAgbXkgJENsYXNzID0gJyc7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgICRDbGFzcyA9ICdUZXh0YXJlYSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRSZXF1aXJlZFRleHQgPSAnJzsKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3MgLj0gJyBNYW5kYXRvcnknOwogICAgICAgICAgICAgICAgJFJlcXVpcmVkVGV4dCA9ICcqICc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5Vm90ZVF1ZXN0aW9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkVGV4dCA9PiAkUmVxdWlyZWRUZXh0LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgQEFuc3dlcnM7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1JhZGlvJyB8fCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdOUFMnICkgewogICAgICAgICAgICAgICAgbXkgQEFuc3dlckxpc3Q7CiAgICAgICAgICAgICAgICBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEICA9PiAkUmVxdWVzdElELAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBBbnN3ZXJMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJUFuc3dlciA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VySUQgPT4gJFJvdy0+e1ZvdGVWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBteSAlRGF0YTsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJEFuc3dlcntBbnN3ZXJ9OwogICAgICAgICAgICAgICAgICAgIHB1c2goIEBBbnN3ZXJzLCBcJURhdGEgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycgfHwgJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+Vm90ZUdldCgKICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0SUQgID0+ICRSZXF1ZXN0SUQsCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJURhdGE7CiAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJExpc3RbMF0tPntWb3RlVmFsdWV9OwoKICAgICAgICAgICAgICAgICMgY2xlYW4gSFRNTAogICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnVGV4dGFyZWEnICYmICREYXRhe0Fuc3dlcn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJERhdGF7QW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoJDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkRGF0YXtBbnN3ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHB1c2goIEBBbnN3ZXJzLCBcJURhdGEgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3IgbXkgJFJvdyAoQEFuc3dlcnMpIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleVZvdGVBbnN3ZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRSb3d9LAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljU3VydmV5JywKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzaG93IHN1cnZleQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgbXkgJFB1YmxpY1N1cnZleUtleSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQdWJsaWNTdXJ2ZXlLZXknICk7CiAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgVGl0bGUgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXknKSwKICAgICk7CgogICAgbXkgJFVzZWRTdXJ2ZXlLZXkgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlHZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgSW52YWxpZCAgICAgICAgID0+IDEsCiAgICApOwoKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlHZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICApOwoKICAgICRTdXJ2ZXl7UHVibGljU3VydmV5S2V5fSA9ICRQdWJsaWNTdXJ2ZXlLZXk7CgogICAgaWYgKCRVc2VkU3VydmV5S2V5KSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleU1lc3NhZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIE1lc3NhZ2VUeXBlICAgPT4gVHJhbnNsYXRhYmxlKCdTdXJ2ZXkgSW5mb3JtYXRpb24nKSwKICAgICAgICAgICAgICAgIE1lc3NhZ2VIZWFkZXIgPT4gVHJhbnNsYXRhYmxlKCdUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJyksCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5LicpLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCJTdXJ2ZXk6OlNob3dWb3RlRGF0YSIpICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Nob3dBbnN3ZXJzQnV0dG9uJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTdXJ2ZXl7U3VydmV5SUR9ICkgewoKICAgICAgICAjIGNsZWFuIEhUTUwgYW5kIHByb2Nlc3MgaW50cm9kdWN0aW9uIHRleHQKICAgICAgICAkU3VydmV5e0ludHJvZHVjdGlvbn0gPX4gc3tcQVwkaHRtbFwvdGV4dFwkXHMoLiopfXskMX14bXM7CiAgICAgICAgbXkgJEhUTUxDb250ZW50ID0gJDE7CiAgICAgICAgaWYgKCAhJEhUTUxDb250ZW50ICkgewogICAgICAgICAgICAkU3VydmV5e0ludHJvZHVjdGlvbn0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleXtJbnRyb2R1Y3Rpb259LAogICAgICAgICAgICAgICAgSFRNTFJlc3VsdE1vZGUgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY1N1cnZleScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVN1cnZleSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aWNrZXQKICAgICAgICBteSAlUmVxdWVzdERhdGEgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0R2V0KAogICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICApOwogICAgICAgIG15ICVUaWNrZXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JyktPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFJlcXVlc3REYXRhe1RpY2tldElEfSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljVGlja2V0JywKICAgICAgICAgICAgRGF0YSA9PiB7JVRpY2tldH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBJZiB3ZSBoYWQgZXJyb3JzLCBAUXVlc3Rpb25MaXN0IGlzIGFscmVhZHkgZmlsbGVkLCBzbyBsZXQncyBzYXZlIGEgU1FMIHF1ZXJ5CiAgICAgICAgaWYgKCAhQFF1ZXN0aW9uTGlzdCApIHsKICAgICAgICAgICAgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXl7U3VydmV5SUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNRdWVzdGlvbnMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRDbGFzcyAgICAgICAgPSAnJzsKICAgICAgICAgICAgbXkgJFJlcXVpcmVkVGV4dCA9ICcnOwogICAgICAgICAgICBteSAkRXJyb3JUZXh0OwogICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfSApIHsKICAgICAgICAgICAgICAgICRDbGFzcyAuPSAnTWFuZGF0b3J5JzsKICAgICAgICAgICAgICAgICRSZXF1aXJlZFRleHQgPSAnKiAnOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAmJiByZWYgJEVycm9yc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSBlcSAnSEFTSCcKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgJUVycm9ycyBob2xkcyBhIGtleSBmb3IgZWFjaCBRdWVzdGlvbklEIHRoYXQgaGFkIGVycm9ycy4KICAgICAgICAgICAgICAgICMgVGhlIHZhbHVlIGlzIGEgaGFzaCByZWZlcmVuY2Ugd2hvJ3Mga2V5cyBhcmUgdGhlIEVycm9yVHlwZQogICAgICAgICAgICAgICAgIyBUaGUgdmFsdWUgaXMgc2V0IHRvIDEKICAgICAgICAgICAgICAgICMgUmVhc29uIGZvciB0aGlzIGlzLCB0aGF0IHRoZSB2YWx1ZSBtYXkgYmUgdXNlZCB0byBkaXNwbGF5CiAgICAgICAgICAgICAgICAjIGEgbW9yZSBzcGVjaWZpYyBFcnJvciBNZXNzYWdlIGNvbnRhaW5pbmcgdGV4dCBxdWVzdGlvbiBzcGVjaWZpYyBlcnJvciBtZXNzYWdlcwogICAgICAgICAgICAgICAgIyBvciBzaW1pbGFyLiBTbyBhIHR5cGUgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZSB0cmVhdG1lbnQgd291bGQgYmUgcG9zc2libGUgaGVyZS4KCiAgICAgICAgICAgICAgICAjIEF0IHRoZSB0aW1lIG9mIGNyZWF0aW9uIHRoZSBvbmx5IGVycm9yIHR5cGUgd2FzICdBbnN3ZXIgcmVxdWlyZWQnLgogICAgICAgICAgICAgICAgIyBTbyBhIGRhdGEgc3RydWN0dXJlIGxvb2tzIGxpa2UgdGhpczoKICAgICAgICAgICAgICAgICMgJUVycm9ycyA9ICgKICAgICAgICAgICAgICAgICMgICAxID0+IHsKICAgICAgICAgICAgICAgICMgICAgICAgICdBbnN3ZXIgcmVxdWlyZWQnID0+IDEsCiAgICAgICAgICAgICAgICAjICAgfSwKICAgICAgICAgICAgICAgICMgICAyID0+IHsKICAgICAgICAgICAgICAgICMgICAgICAgICdBbnN3ZXIgcmVxdWlyZWQnID0+IDEsCiAgICAgICAgICAgICAgICAjICAgIH0sCiAgICAgICAgICAgICAgICAjICk7CgogICAgICAgICAgICAgICAgIyBMYXRlciBvbiBhIERhdGEgc3RydWN0dXJlIGxpa2UgdGhlIGZvbGxvd2luZyB3b3VsZCBiZSBwb3NzaWJsZToKICAgICAgICAgICAgICAgICMgJUVycm9ycyA9ICgKICAgICAgICAgICAgICAgICMgICAxID0+IHsKICAgICAgICAgICAgICAgICMgICAgICAgICdJbnZhbGlkIHRleHQnID0+ICdZb3VyIFRleHQgZGlkIG5vdCBjb250YWluIHRoZSBPcmRlciBudW1iZXInLAogICAgICAgICAgICAgICAgIyAgIH0sCiAgICAgICAgICAgICAgICAjICAgMiA9PiB7CiAgICAgICAgICAgICAgICAjICAgICAgICAnQW5zd2VyIHJlcXVpcmVkJyA9PiAxLAogICAgICAgICAgICAgICAgIyAgICB9LAogICAgICAgICAgICAgICAgIyApOwogICAgICAgICAgICAgICAgIyBBcyBzb29uIGFzIHRoaXMgaXMgbmVlZGVkLCB0aGUgZm9sbG93aW5nICRFcnJvclRleHQgc3RyaW5nIGJ1aWxkaW5nIGhhcyB0byBiZQogICAgICAgICAgICAgICAgIyBjaGFuZ2VkLgoKICAgICAgICAgICAgICAgICMgVGhlIHN0cmluZyBidWlsZGluZyB3b3JrcyBhdCB0aGUgbW9tZW50IHRoaXMgd2F5OgogICAgICAgICAgICAgICAgIyAxLiBHbyB0aHJvdWdoIGFsbCBrZXlzIG9mIHRoZSAleyAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0gaGFzaAogICAgICAgICAgICAgICAgIyAyLiBEbyBhIHRyYW5zbGF0aW9uIGZvciBlYWNoIGtleSAoaW5zaWRlIHRoZSAibWFwIHt9Ii1jbGF1c2UpCiAgICAgICAgICAgICAgICAjIDMuIGpvaW4gdGhlIHJlc3VsdGluZyBBcnJheSBieSBwdXR0aW5nICI8L3A+XG48L3A+IiBpbiBiZXR3ZWVuIHRoZSBBcnJheSBrZXlzCiAgICAgICAgICAgICAgICAjIDQuIGFkZCAnPHA+JyBhdCB0aGUgYmVnaW5uaW5nIGFuZCAnPC9wPicgYXQgdGhlIGVuZC4KCiAgICAgICAgICAgICAgICAkRXJyb3JUZXh0ID0gJzxwPicKICAgICAgICAgICAgICAgICAgICAuICgKICAgICAgICAgICAgICAgICAgICBqb2luICI8L3A+XG48cD4iLAogICAgICAgICAgICAgICAgICAgIG1hcCB7ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkXykgfQogICAgICAgICAgICAgICAgICAgICAgICBrZXlzICV7ICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAuICc8L3A+JzsKCiAgICAgICAgICAgICAgICAkRXJyb3JUZXh0ID0gPDxFTkQ7CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJUb29sdGlwRXJyb3IiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVG9vbHRpcCBUb25ndWVMZWZ0Ij4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJUb25ndWUiID48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50IiByb2xlPSJ0b29sdGlwIiBzdHlsZT0id29yZC13cmFwOiBicmVhay13b3JkOyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRXJyb3JUZXh0CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgpFTkQKICAgICAgICAgICAgICAgICRDbGFzcyAuPSAnIEVycm9yJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nICkgewoKICAgICAgICAgICAgICAgIG15ICVTZWxlY3RlZCA9ICgKICAgICAgICAgICAgICAgICAgICBZZXNTZWxlY3RlZCA9PiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IGVxICdZZXMnCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICA/ICdjaGVja2VkPSJjaGVja2VkIicKICAgICAgICAgICAgICAgICAgICA6ICcnLAogICAgICAgICAgICAgICAgICAgIE5vU2VsZWN0ZWQgPT4gKAogICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSBlcSAnTm8nCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICA/ICdjaGVja2VkPSJjaGVja2VkIicKICAgICAgICAgICAgICAgICAgICA6ICcnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNBbnN3ZXJZZXNObycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgJVNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgICAgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRUZXh0ID0+ICRSZXF1aXJlZFRleHQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnUmFkaW8nICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyUmFkaW8nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yVGV4dCAgICA9PiAkRXJyb3JUZXh0IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyIChAQW5zd2VyTGlzdCkgewoKICAgICAgICAgICAgICAgICAgICBteSAkU2VsZWN0ZWQgPSAnJzsKICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gZXEgJEFuc3dlci0+e0Fuc3dlcklEfQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZWN0ZWQgPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyUmFkaW9iJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRBbnN3ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyU2VsZWN0ZWQgPT4gJFNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyQ2hlY2tib3gnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yVGV4dCAgICA9PiAkRXJyb3JUZXh0IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyIChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgIG15ICRTZWxlY3RlZCA9ICcnOwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfQogICAgICAgICAgICAgICAgICAgICAgICAmJiByZWYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gZXEgJ0FSUkFZJwogICAgICAgICAgICAgICAgICAgICAgICAmJiBAeyAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICYmIHNjYWxhciBncmVwIHsgJF8gZXEgJEFuc3dlci0+e0Fuc3dlcklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIEB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlckNoZWNrYm94YicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskQW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlclNlbGVjdGVkID0+ICRTZWxlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IHx8ICcnOwogICAgICAgICAgICAgICAgJFZhbHVlID1+IHMvXlwkaHRtbFwvdGV4dFwkXHMvLzsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlclRleHRhcmVhJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUXVlc3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgICAgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRUZXh0ID0+ICRSZXF1aXJlZFRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjaGVjayBpZiByaWNoIHRleHQgaXMgZW5hYmxlZAogICAgICAgICAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5DdXN0b21lclNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ05QUycgKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljQW5zd2VyTlBTJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUXVlc3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgICAgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRUZXh0ID0+ICRSZXF1aXJlZFRleHQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFuc3dlciAoQEFuc3dlckxpc3QpIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJFNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IGVxICRBbnN3ZXItPntBbnN3ZXJJRH0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlck5QU2InLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICV7JEFuc3dlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbnN3ZXJTZWxlY3RlZCA9PiAkU2VsZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNTdXJ2ZXlNZXNzYWdlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSAgID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IEVycm9yIScpLAogICAgICAgICAgICAgICAgTWVzc2FnZUhlYWRlciA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQgc3VydmV5IGtleS4nKSwKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgICAgPT4gVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAgICAgICAgICdUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLicKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljU3VydmV5JywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgfSwKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OlN1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgU3VydmV5TGlzdFNob3coKQoKUmV0dXJucyBhIGxpc3Qgb2Ygc3VydmV5cyBsaXN0IHdpdGggcGFnaW5hdGlvbi4KClRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byBMPEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OlRpY2tldDo6VGlja2V0TGlzdFNob3coKT4KaW4gRjxLZXJuZWwvT3V0cHV0L0hUTUwvTGF5b3V0L1RpY2tldC5wbT4uCgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPlN1cnZleUxpc3RTaG93KAogICAgICAgIFN1cnZleUlEcyAgPT4gJFN1cnZleUlEc1JlZiwgICAgICAgICAgICAgICAgICAgICAgIyB0b3RhbCBsaXN0IG9mIHN1cnZleXMgaWRzLCB0aGF0IGNhbiBiZSBsaXN0ZWQKICAgICAgICBUb3RhbCAgICAgID0+IHNjYWxhciBAeyAkU3VydmV5SURzUmVmIH0sICAgICAgICAgICMgdG90YWwgbnVtYmVyIG9mIGxpc3QgaXRlbXMsIGNoYW5nZXMgaW4gdGhpcyBjYXNlCiAgICAgICAgVmlldyAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LCAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAnU21hbGwnCiAgICAgICAgRmlsdGVyICAgICA9PiAnQWxsJywKICAgICAgICBGaWx0ZXJzICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIEZpbHRlckxpbmsgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgVGl0bGVOYW1lICA9PiAnT3ZlcnZpZXc6IFN1cnZleScsCiAgICAgICAgVGl0bGVWYWx1ZSA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgRW52ICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgID0+ICRMaW5rUGFnZSwKICAgICk7Cgo9Y3V0CgpzdWIgU3VydmV5TGlzdFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHRha2Ugb2JqZWN0IHJlZiB0byBsb2NhbCwgcmVtb3ZlIGl0IGZyb20gJVBhcmFtIChwcmV2ZW50IG1lbW9yeSBsZWFrKQogICAgbXkgJEVudiA9ICRQYXJhbXtFbnZ9OwogICAgZGVsZXRlICRQYXJhbXtFbnZ9OwoKICAgIG15ICVKU0RhdGE7CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkUGFyYW17Vmlld30gJiYgJFNlbGYtPnsgJ1VzZXJTdXJ2ZXlPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9ICkgewogICAgICAgICRQYXJhbXtWaWV3fSA9ICRTZWxmLT57ICdVc2VyU3VydmV5T3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIHNldCBmcm9udGVuZAogICAgbXkgJEZyb250ZW5kID0gJFBhcmFte0Zyb250ZW5kfSB8fCAnQWdlbnQnOwoKICAgICMgc2V0IGRlZmF1bHQgdmlldyBtb2RlIHRvICdzbWFsbCcKICAgIG15ICRWaWV3ID0gJFBhcmFte1ZpZXd9IHx8ICdTbWFsbCc7CgogICAgIyBzdG9yZSBsYXRlc3QgdmlldyBtb2RlCiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdVc2VyU3VydmV5T3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgVmFsdWUgICAgID0+ICRWaWV3LAogICAgKTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBnZXQgYmFja2VuZCBmcm9tIGNvbmZpZwogICAgbXkgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnTmVlZCBjb25maWcgb3B0aW9uIFN1cnZleTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3JywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGhhc2gtcmVmCiAgICBpZiAoIHJlZiAkQmFja2VuZHMgbmUgJ0hBU0gnICkgewogICAgICAgIHJldHVybiAkU2VsZi0+RmF0YWxFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiAnQ29uZmlnIG9wdGlvbiBTdXJ2ZXk6OkZyb250ZW5kOjpPdmVydmlldyBuZWVkcyB0byBiZSBhIEhBU0ggcmVmIScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBjb25maWcga2V5CiAgICBpZiAoICEkQmFja2VuZHMtPnskVmlld30gKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICJObyBjb25maWcgb3B0aW9uIGZvdW5kIGZvciB0aGUgdmlldyAnJFZpZXcnISIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5hdmlnYXRpb24gYmFyCiAgICBteSAkU3RhcnRIaXQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKAogICAgICAgIFBhcmFtID0+ICdTdGFydEhpdCcsCiAgICApIHx8IDE7CgogICAgIyBnZXQgcGVyc29uYWwgcGFnZSBzaG93biBjb3VudAogICAgbXkgJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5ID0gJ1VzZXJTdXJ2ZXlPdmVydmlldycgLiAkVmlldyAuICdQYWdlU2hvd24nOwogICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwogICAgbXkgJEdyb3VwICAgICAgICAgICAgICAgICAgID0gJ1N1cnZleU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CgogICAgIyBjaGVjayBzdGFydCBvcHRpb24sIGlmIGhpZ2hlciB0aGVuIGVsZW1lbnRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IG92ZXJ2aWV3IHBhZ2UgKFRoYW5rcyB0byBTdGVmYW4gU2NobWlkdCEpCiAgICBpZiAoICRTdGFydEhpdCA+ICRQYXJhbXtUb3RhbH0gKSB7CiAgICAgICAgbXkgJFBhZ2VzID0gaW50KCAoICRQYXJhbXtUb3RhbH0gLyAkUGFnZVNob3duICkgKyAwLjk5OTk5ICk7CiAgICAgICAgJFN0YXJ0SGl0ID0gKCAoICRQYWdlcyAtIDEgKSAqICRQYWdlU2hvd24gKSArIDE7CiAgICB9CgogICAgIyBnZXQgZGF0YSBzZWxlY3Rpb24KICAgIG15ICVEYXRhOwogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKICAgIGlmICggJENvbmZpZyAmJiAkQ29uZmlnLT57JEdyb3VwfSAmJiAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9ICkgewogICAgICAgICVEYXRhID0gJXsgJENvbmZpZy0+eyRHcm91cH0tPntEYXRhfSB9OwogICAgfQoKICAgICMgc2V0IHBhZ2UgbGltaXQgYW5kIGJ1aWxkIHBhZ2UgbmF2aWdhdGlvbgogICAgbXkgJExpbWl0ICAgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249JyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICk7CgogICAgIyBidWlsZCBzaG93biBzdXJ2ZXlzIHBlciBwYWdlCiAgICAkUGFyYW17UmVxdWVzdGVkVVJMfSAgICA9ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IjsKICAgICRQYXJhbXtHcm91cH0gICAgICAgICAgID0gJEdyb3VwOwogICAgJFBhcmFte1ByZWZlcmVuY2VzS2V5fSAgPSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXk7CiAgICAkUGFyYW17UGFnZVNob3duU3RyaW5nfSA9ICRTZWxmLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXksCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhZ2VTaG93biwKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIERhdGEgICAgICAgID0+IFwlRGF0YSwKICAgICk7CgogICAgIyBidWlsZCBzdGF0dXMgc2VsZWN0aW9uCiAgICAkUGFyYW17U3RhdGVTdHJ9ID0gJFNlbGYtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgPT4gJ1N0YXRlcycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE1hc3RlciAgPT4gJ01hc3RlcicsCiAgICAgICAgICAgIFZhbGlkICAgPT4gJ1ZhbGlkJywKICAgICAgICAgICAgSW52YWxpZCA9PiAnSW52YWxpZCcsCiAgICAgICAgICAgIE5ldyAgICAgPT4gJ05ldycsCiAgICAgICAgfSwKICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgIE11bHRpcGxlICAgPT4gMSwKICAgICAgICBTZWxlY3RlZElEID0+ICRQYXJhbXtTdXJ2ZXlTZWFyY2h9LT57U3RhdGVzfSwKICAgICk7CgogICAgJFBhcmFte0Z1bGx0ZXh0fSA9ICRQYXJhbXtTdXJ2ZXlTZWFyY2h9LT57V2hhdH0gfHwgJyc7CgogICAgIyBidWlsZCBjcmVhdGUgdGltZSBzbG90cwogICAgJFBhcmFte1N1cnZleUNyZWF0ZVRpbWVTdGFydH0gPSAkU2VsZi0+QnVpbGREYXRlU2VsZWN0aW9uKAogICAgICAgIFByZWZpeCAgID0+ICdTdXJ2ZXlDcmVhdGVUaW1lU3RhcnQnLAogICAgICAgIEZvcm1hdCAgID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgIERpZmZUaW1lID0+IC0oICggNjAgKiA2MCAqIDI0ICkgKiAzMCApLAogICAgICAgICV7ICRQYXJhbXtTdXJ2ZXlTZWFyY2h9e1N1cnZleUNyZWF0ZVRpbWVTdGFydH0gfSwKICAgICk7CiAgICAkUGFyYW17U3VydmV5Q3JlYXRlVGltZVN0b3B9ID0gJFNlbGYtPkJ1aWxkRGF0ZVNlbGVjdGlvbigKICAgICAgICBQcmVmaXggPT4gJ1N1cnZleUNyZWF0ZVRpbWVTdG9wJywKICAgICAgICBGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgJXsgJFBhcmFte1N1cnZleVNlYXJjaH17U3VydmV5Q3JlYXRlVGltZVN0b3B9IH0KICAgICk7CgogICAgIyBuYXZpZ2F0aW9uIGJhciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgb3ZlcnZpZXcKICAgICRQYXJhbXtWaWV3fSA9ICRWaWV3OwogICAgJFNlbGYtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyJywKICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICApOwoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJEpTRGF0YXtQcm9maWxlfSA9ICRQYXJhbXtQcm9maWxlfTsKCiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VCYWNrJywKICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgZmlsdGVycwogICAgaWYgKCAkUGFyYW17RmlsdGVyc30gKSB7CgogICAgICAgICMgZ2V0IGdpdmVuIGZpbHRlcnMKICAgICAgICBteSBATmF2QmFyRmlsdGVyczsKICAgICAgICBmb3IgbXkgJFByaW8gKCBzb3J0IGtleXMgJXsgJFBhcmFte0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIHB1c2ggQE5hdkJhckZpbHRlcnMsICRQYXJhbXtGaWx0ZXJzfS0+eyRQcmlvfTsKICAgICAgICB9CgogICAgICAgICMgYnVpbGQgZmlsdGVyIGNvbnRlbnQKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyRmlsdGVyJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBsb29wIG92ZXIgZmlsdGVycwogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CgogICAgICAgICAgICAjIGluY3JlbWVudCBmaWx0ZXIgY291bnQgYW5kIGJ1aWxkIGZpbHRlciBpdGVtCiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmaWx0ZXIgaXMgc2VsZWN0ZWQKICAgICAgICAgICAgaWYgKCAkRmlsdGVyLT57RmlsdGVyfSBlcSAkUGFyYW17RmlsdGVyfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskRmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBsb29wIG92ZXIgY29uZmlndXJlZCBiYWNrLWVuZHMKICAgIGZvciBteSAkQmFja2VuZCAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CgogICAgICAgICMgYnVpbGQgbmF2aWdhdGlvbiBiYXIgdmlldyBtb2RlCiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGN1cnJlbnQgdmlldyBpcyBjb25maWd1cmVkIGluIGJhY2tlbmQKICAgICAgICBpZiAoICRWaWV3IGVxICRCYWNrZW5kICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJFBhcmFte0ZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgVmlldyAgID0+ICRCYWNrZW5kLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBwYWdlIG5hdmlnYXRpb24gaXMgYXZhaWxhYmxlCiAgICBpZiAoJVBhZ2VOYXYpIHsKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhcicsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYWdlTmF2LAogICAgICAgICk7CgogICAgICAgICMgZG9uJ3Qgc2hvdyBjb250ZXh0IHNldHRpbmdzIGluIEFKQVggY2FzZSAoZS4gZy4gaW4gY3VzdG9tZXIgdGlja2V0IGhpc3RvcnkpLAogICAgICAgICMgICBiZWNhdXNlIHRoZSBzdWJtaXQgd2l0aCBwYWdlIHJlbG9hZCB3aWxsIG5vdCB3b3JrIHRoZXJlCiAgICAgICAgaWYgKCAhJFBhcmFte0FKQVh9ICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZXh0U2V0dGluZ3MnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgJFNlbGYtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnSlNEYXRhJywKICAgICAgICBWYWx1ZSA9PiBcJUpTRGF0YSwKICAgICAgICAsCiAgICApOwoKICAgICMgYnVpbGQgSFRNTCBjb250ZW50CiAgICBteSAkT3V0cHV0TmF2QmFyID0gJFNlbGYtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyBjcmVhdGUgb3V0cHV0CiAgICBteSAkT3V0cHV0UmF3ID0gJyc7CiAgICBpZiAoICEkUGFyYW17T3V0cHV0fSApIHsKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgIE91dHB1dCA9PiBcJE91dHB1dE5hdkJhciwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE91dHB1dFJhdyAuPSAkT3V0cHV0TmF2QmFyOwogICAgfQoKICAgICMgbG9hZCBtb2R1bGUKICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0gKSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoKTsKICAgIH0KCiAgICAjIGNoZWNrIGZvciBiYWNrZW5kIG9iamVjdAogICAgbXkgJE9iamVjdCA9ICRCYWNrZW5kcy0+eyRWaWV3fS0+e01vZHVsZX0tPm5ldygKICAgICAgICAleyRFbnZ9LAogICAgICAgIExheW91dE9iamVjdCA9PiAkU2VsZiwKICAgICk7CiAgICByZXR1cm4gaWYgISRPYmplY3Q7CgogICAgIyBydW4gbW9kdWxlCiAgICBteSAkT3V0cHV0ID0gJE9iamVjdC0+UnVuKAogICAgICAgICVQYXJhbSwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgICAgIFN0YXJ0SGl0ICA9PiAkU3RhcnRIaXQsCiAgICAgICAgUGFnZVNob3duID0+ICRQYWdlU2hvd24sCiAgICAgICAgQWxsSGl0cyAgID0+ICRQYXJhbXtUb3RhbH0gfHwgMCwKICAgICAgICBGcm9udGVuZCAgPT4gJEZyb250ZW5kLAogICAgKTsKCiAgICAjIGNyZWF0ZSBvdXRwdXQKICAgIGlmICggISRQYXJhbXtPdXRwdXR9ICkgewogICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgT3V0cHV0ID0+IFwkT3V0cHV0LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkT3V0cHV0UmF3IC49ICRPdXRwdXQ7CiAgICB9CgogICAgIyBjcmVhdGUgb3ZlcnZpZXcgbmF2aWdhdGlvbiBiYXIKICAgICRTZWxmLT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyByZXR1cm4gY29udGVudCBpZiBhdmFpbGFibGUKICAgIHJldHVybiAkT3V0cHV0UmF3Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjpHZW5lcmljOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IFVzZXJJRCBwYXJhbQogICAgJFNlbGYtPntVc2VySUR9ID0gJFBhcmFte1VzZXJJRH0gfHwgZGllICJHb3Qgbm8gVXNlcklEISI7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXkhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdyYW50IGFjY2VzcyBieSBkZWZhdWx0CiAgICBteSAkQWNjZXNzID0gMTsKCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBncm91cHMKICAgIG15ICRBY3Rpb24gICA9ICRQYXJhbXtDb25maWd9LT57QWN0aW9ufTsKICAgIG15ICRHcm91cHNSbyA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cFJvfSB8fCBbXTsKICAgIG15ICRHcm91cHNSdyA9ICRDb25maWdPYmplY3QtPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0tPntHcm91cH0gfHwgW107CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIHBlcm1pc3Npb24KICAgIGlmICggJEFjdGlvbiAmJiAoIEB7JEdyb3Vwc1JvfSB8fCBAeyRHcm91cHNSd30gKSApIHsKCiAgICAgICAgIyBkZW55IGFjY2VzcyBieSBkZWZhdWx0LCB3aGVuIHRoZXJlIGFyZSBncm91cHMgdG8gY2hlY2sKICAgICAgICAkQWNjZXNzID0gMDsKCiAgICAgICAgIyBjaGVjayByZWFkIG9ubHkgZ3JvdXBzCiAgICAgICAgUk9HUk9VUDoKICAgICAgICBmb3IgbXkgJEdyb3VwUm8gKCBAeyRHcm91cHNSb30gKSB7CiAgICAgICAgICAgIG15ICRIYXNQZXJtaXNzaW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJEdyb3VwUm8sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3JvJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUk9HUk9VUCBpZiAhJEhhc1Blcm1pc3Npb247CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUk9HUk9VUDsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgcmVhZCB3cml0ZSBncm91cHMKICAgICAgICBSV0dST1VQOgogICAgICAgIGZvciBteSAkUndHcm91cCAoIEB7JEdyb3Vwc1J3fSApIHsKCiAgICAgICAgICAgIG15ICRIYXNQZXJtaXNzaW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25DaGVjaygKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBHcm91cE5hbWUgPT4gJFJ3R3JvdXAsCiAgICAgICAgICAgICAgICBUeXBlICAgICAgPT4gJ3J3JywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgUldHUk9VUCBpZiAhJEhhc1Blcm1pc3Npb247CgogICAgICAgICAgICAjIHNldCBhY2Nlc3MKICAgICAgICAgICAgJEFjY2VzcyA9IDE7CiAgICAgICAgICAgIGxhc3QgUldHUk9VUDsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRQYXJhbXtDb3VudGVyfSBpZiAhJEFjY2VzczsKCiAgICAjIG91dHB1dCBtZW51IGl0ZW0KICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ01lbnVJdGVtJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAleyAkUGFyYW17U3VydmV5fSB9LAogICAgICAgICAgICAleyAkUGFyYW17Q29uZmlnfSB9LAogICAgICAgIH0sCiAgICApOwoKICAgICRQYXJhbXtDb3VudGVyfSsrOwoKICAgIHJldHVybiAkUGFyYW17Q291bnRlcn07Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlPdmVydmlldzo6U21hbGw7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgVXNlcklEIHBhcmFtCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAkUGFyYW17VXNlcklEfSB8fCBkaWUgIkdvdCBubyBVc2VySUQhIjsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KFBhZ2VTaG93biBTdGFydEhpdCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIG5lZWQgU3VydmV5SURzCiAgICBpZiAoICEkUGFyYW17U3VydmV5SURzfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgdGhlIFN1cnZleUlEcyEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc3RvcmUgdGhlIFN1cnZleUlEcyBsb2NhbGx5CiAgICBteSBASURzID0gQHsgJFBhcmFte1N1cnZleUlEc30gfTsKCiAgICAjIGNoZWNrIFNob3dDb2x1bW5zIHBhcmFtZXRlcgogICAgbXkgQFNob3dDb2x1bW5zOwogICAgaWYgKCAkUGFyYW17U2hvd0NvbHVtbnN9ICYmIHJlZiAkUGFyYW17U2hvd0NvbHVtbnN9IGVxICdBUlJBWScgKSB7CiAgICAgICAgQFNob3dDb2x1bW5zID0gQHsgJFBhcmFte1Nob3dDb2x1bW5zfSB9OwogICAgfQoKICAgIG15ICRPdXRwdXQgPSAnJzsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgc2hvdyBzdXJ2ZXlzIGlmIHRoZXJlIGFyZSBzb21lCiAgICBpZiAoQElEcykgewoKICAgICAgICAjIGJ1aWxkIGNvbHVtbiBoZWFkZXIgYmxvY2tzCiAgICAgICAgIyBjdXJyZW50bHkgc29ydGluZyBpcyBub3QgaW1wbGVtZW50ZWQgb24gc3VydmV5LCBsZWF2ZSB0aGUgY29kZSBmb3IgZnV0dXJlIGltcGxlbWVudGF0aW9uCiAgICAgICAgaWYgKEBTaG93Q29sdW1ucykgewogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoQFNob3dDb2x1bW5zKSB7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgbmVlZGVkIHZhcmlhYmxlcwogICAgICAgICAgICAgICAgbXkgJENTUyA9ICdPdmVydmlld0hlYWRlcic7CiAgICAgICAgICAgICAgICBteSAkT3JkZXJCeTsKCiAgICAgICAgICAgICAgICAjIHNldCB0aGUgY29ycmVjdCBTZXQgQ1NTIGNsYXNzIGFuZCBvcmRlciBieSBsaW5rCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICYmICggJFBhcmFte1NvcnRCeX0gZXEgJENvbHVtbiApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnl9ICYmICggJFBhcmFte09yZGVyQnl9IGVxICdVcCcgKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnRG93bic7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRPcmRlckJ5ID0gJ1VwJzsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgb3V0cHV0IGVhY2ggaGVhZGVyCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdIZWFkZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwoKICAgICAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICAgICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICAgICAgSUQ6CiAgICAgICAgZm9yIG15ICRJRCAoQElEcykgewogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkQ291bnRlciA+PSAkUGFyYW17U3RhcnRIaXR9CiAgICAgICAgICAgICAgICAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICMgZ2V0IHN1cnZleSBkYXRhCiAgICAgICAgICAgICAgICBteSAlRGF0YSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICAgICAgICAgICAgICBVc2VySUQgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJElELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IElEIGlmICElRGF0YTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIHJlY29yZCBibG9jawogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGJ1aWxkIGNvbHVtbiByZWNvcmQgYmxvY2tzCiAgICAgICAgICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgICAgICAgICAgQ09MVU1OOgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHNob3cgbGlua3MgaWYgYXZhaWxhYmxlCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua1N0YXJ0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkJyAuICRDb2x1bW4gLiAnTGlua0VuZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJURhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGlmIHRoZXJlIGFyZSBubyBzdXJ2ZXlzIHRvIHNob3csIGEgbm8gZGF0YSBmb3VuZCBtZXNzYWdlIGlzIGRpc3BsYXllZCBpbiB0aGUgdGFibGUKICAgIGVsc2UgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdOb0RhdGFGb3VuZE1zZycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVG90YWxDb2x1bW5zID0+IHNjYWxhciBAU2hvd0NvbHVtbnMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHVzZSB0ZW1wbGF0ZQogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgICAgIENvbHVtbkNvdW50ID0+IHNjYWxhciBAU2hvd0NvbHVtbnMsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGNsYXNzPSJNYWluQm94IEFSSUFSb2xlTWFpbiBGb3JtU2NyZWVuIE5vU2lkZWJhciI+CgogICAgPGgxPlslIFRyYW5zbGF0ZSgiQ3JlYXRlIE5ldyBTdXJ2ZXkiKSB8IGh0bWwgJV08L2gxPgogICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiQWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4iKSB8IGh0bWwgJV08L3A+CgogICAgPGRpdiBjbGFzcz0iQ29udGVudENvbHVtbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJTdXJ2ZXkiIGlkPSJTdXJ2ZXkiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTdXJ2ZXlOZXciIC8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzIiBpZD0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkcyIgdmFsdWU9IlslIERhdGEuQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkcyAlXSIgLz4KCiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlRpdGxlIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuVGl0bGVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnRyb2R1Y3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkludHJvZHVjdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJJbnRyb2R1Y3Rpb24iIG5hbWU9IkludHJvZHVjdGlvbiIgbmFtZT0iSW50cm9kdWN0aW9uIiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5JbnRyb2R1Y3Rpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlN1cnZleSBJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV0iIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZSIpICVdIj5bJSBEYXRhLkludHJvZHVjdGlvbiAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW50cm9kdWN0aW9uIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTm90aWZpY2F0aW9uU2VuZGVyIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlNlbmRlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPSJOb3RpZmljYXRpb25TZW5kZXIiIG5hbWU9Ik5vdGlmaWNhdGlvblNlbmRlciIgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuTm90aWZpY2F0aW9uU2VuZGVyU2VydmVyRXJyb3IgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5Ob3RpZmljYXRpb25TZW5kZXIgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTm90aWZpY2F0aW9uU3ViamVjdCI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJTdWJqZWN0IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Ik5vdGlmaWNhdGlvblN1YmplY3QiIG5hbWU9Ik5vdGlmaWNhdGlvblN1YmplY3QiIHR5cGU9InRleHQiIGNsYXNzPSJXNTBwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3RTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3QgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIk5vdGlmaWNhdGlvbkJvZHkiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5vdGlmaWNhdGlvbkJvZHkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiQm9keSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9Ik5vdGlmaWNhdGlvbkJvZHkiIG5hbWU9Ik5vdGlmaWNhdGlvbkJvZHkiIGNsYXNzPSJSaWNoVGV4dCBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHlTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vdGlmaWNhdGlvbiBCb2R5IikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5Ob3RpZmljYXRpb25Cb2R5IHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm90aWZpY2F0aW9uQm9keSIpICVdCgogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlF1ZXVlcyI+WyUgVHJhbnNsYXRlKCJRdWV1ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuUXVldWVTdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRUeXBlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iVGlja2V0VHlwZUlEcyI+WyUgVHJhbnNsYXRlKCJUaWNrZXQgVHlwZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGlja2V0VHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRUeXBlcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRTZXJ2aWNlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VydmljZUlEcyI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldFNlcnZpY2VzIikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnRlcm5hbERlc2NyaXB0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJEZXNjcmlwdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRlcm5hbCBEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IkRlc2NyaXB0aW9uIiBuYW1lPSJEZXNjcmlwdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuRGVzY3JpcHRpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkludGVybmFsIERlc2NyaXB0aW9uIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5EZXNjcmlwdGlvbiB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkludGVybmFsRGVzY3JpcHRpb24iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiR2VuZXJpY0Vycm9yIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLkl0ZW1OYW1lIHwgaHRtbCAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJpY0Vycm9yIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyaWNTZXJ2ZXJFcnJvciIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyaWNTZXJ2ZXJFcnJvciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyI+WyUgVHJhbnNsYXRlKCJDdXN0b21lciBjb25kaXRpb25zIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBIaWRkZW4iIGlkPSJUZW1wbGF0ZUxldmVsMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0xpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJEYXRhSXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gUmVtb3ZlQnV0dG9uQ3VzdG9tZXJGaWVsZCI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkV2ZW4gTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TmVnYXRlOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0NoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGUgZmllbGQgbmVlZHMgdG8gYmUgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gb3IgYSBsaXRlcmFsIHdvcmQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBSZW1vdmVCdXR0b25DdXN0b21lckNvbmRpdGlvbiBIaWRkZW4iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIEFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpICVdCgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNyZWF0ZSIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrLXNxdWFyZS1vIj48L2k+IFslIFRyYW5zbGF0ZSgiQ3JlYXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBXaWRnZXRTaW1wbGUgQ29sbGFwc2VkIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRhZyBSZWZlcmVuY2UiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHRhZ3MiKSB8IGh0bWwgJV06PC9wPgogICAgICAgICAgICAgICAgICAgIDxkbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX1RJQ0tFVF8qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk9wdGlvbnMgb2YgdGhlIHRpY2tldCBkYXRhIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT4mbHQ7T1RSU19USUNLRVRfVGlja2V0TnVtYmVyJmd0OywgJmx0O09UUlNfVElDS0VUX1RpY2tldElEJmd0OywgJmx0O09UUlNfVElDS0VUX1F1ZXVlJmd0OywgJmx0O09UUlNfVElDS0VUX1N0YXRlJmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0NVU1RPTUVSX0RBVEFfKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJPcHRpb25zIG9mIHRoZSBjdXJyZW50IGN1c3RvbWVyIHVzZXIgZGF0YSIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJlLiBnLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGU+Jmx0O09UUlNfQ1VTVE9NRVJfREFUQV9Vc2VyRmlyc3RuYW1lJmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0NPTkZJR18qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNvbmZpZyBvcHRpb25zIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVFJTX0NPTkZJR19IdHRwVHlwZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RSU19QdWJsaWNTdXJ2ZXlLZXkmZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUHVibGljIHN1cnZleSBrZXkiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiZS4gZy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPiZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kZD4KICAgICAgICAgICAgICAgICAgICA8L2RsPgoKICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRXhhbXBsZSBzdXJ2ZXkiKSB8IGh0bWwgJV06CiAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSByb3dzPSI1IiBjb2xzPSI2MCIgbmFtZT0iVG1wU3VydmV5IiBkaXNhYmxlZD0iZGlzYWJsZWQiPgpbJSBUcmFuc2xhdGUoIlRoZSBjdXJyZW50IHRpY2tldCBzdGF0ZSBpcyIpIHwgaHRtbCAlXTogIiZsdDtPVFJTX1RJQ0tFVF9TdGF0ZSZndDsiCgpbJSBUcmFuc2xhdGUoIllvdXIgZW1haWwgYWRkcmVzcyBpcyIpIHwgaHRtbCAlXTogIiZsdDtPVFJTX0NVU1RPTUVSX1VzZXJFbWFpbCZndDsiCiAgICAgICAgICAgICAgICAgICAgPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iU3VydmV5IiBpZD0iU3VydmV5IiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU3VydmV5U2F2ZSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzIiBpZD0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkcyIgdmFsdWU9IlslIERhdGEuQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkcyAlXSIgLz4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQgR2VuZXJhbCBJbmZvIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gxPgogICAgICAgICAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgPHA+CiAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+CgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVGl0bGUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9IlRpdGxlIiBuYW1lPSJUaXRsZSIgdHlwZT0idGV4dCIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuVGl0bGVTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW50cm9kdWN0aW9uIikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkludHJvZHVjdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iSW50cm9kdWN0aW9uIiBuYW1lPSJJbnRyb2R1Y3Rpb24iIG5hbWU9IkludHJvZHVjdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuSW50cm9kdWN0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTdXJ2ZXkgSW50cm9kdWN0aW9uIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5JbnRyb2R1Y3Rpb24gJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbnRyb2R1Y3Rpb24iKSAlXQoKICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5vdGlmaWNhdGlvblNlbmRlciI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJTZW5kZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Ik5vdGlmaWNhdGlvblNlbmRlciIgbmFtZT0iTm90aWZpY2F0aW9uU2VuZGVyIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzc1cGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5Ob3RpZmljYXRpb25TZW5kZXJTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk5vdGlmaWNhdGlvblNlbmRlciB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOb3RpZmljYXRpb25TdWJqZWN0Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Ik5vdGlmaWNhdGlvblN1YmplY3QiIG5hbWU9Ik5vdGlmaWNhdGlvblN1YmplY3QiIHR5cGU9InRleHQiIGNsYXNzPSJXNzVwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3RTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3QgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb3RpZmljYXRpb25Cb2R5IikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5vdGlmaWNhdGlvbkJvZHkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiQm9keSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJOb3RpZmljYXRpb25Cb2R5IiBuYW1lPSJOb3RpZmljYXRpb25Cb2R5IiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5Ob3RpZmljYXRpb25Cb2R5U2VydmVyRXJyb3IgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJOb3RpZmljYXRpb24gQm9keSIpIHwgaHRtbCAlXSIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuTm90aWZpY2F0aW9uQm9keSB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOb3RpZmljYXRpb25Cb2R5IikgJV0KCiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJRdWV1ZXMiPlslIFRyYW5zbGF0ZSgiUXVldWVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5RdWV1ZVN0cmluZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRUeXBlcyIpICVdCiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaWNrZXRUeXBlSURzIj5bJSBUcmFuc2xhdGUoIlRpY2tldCBUeXBlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGlja2V0VHlwZVN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0VHlwZXMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiVGlja2V0U2VydmljZXMiKSAlXQogICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU2VydmljZUlEcyI+WyUgVHJhbnNsYXRlKCJTZXJ2aWNlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2VydmljZVN0cmcgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0U2VydmljZXMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiSW50ZXJuYWxEZXNjcmlwdGlvbiIpICVdCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJEZXNjcmlwdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJJbnRlcm5hbCBEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJEZXNjcmlwdGlvbiIgbmFtZT0iRGVzY3JpcHRpb24iIGNsYXNzPSJSaWNoVGV4dCBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkRlc2NyaXB0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJJbnRlcm5hbCBEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXSIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW50ZXJuYWxEZXNjcmlwdGlvbiIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyI+WyUgVHJhbnNsYXRlKCJDdXN0b21lciBjb25kaXRpb25zIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHNTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCBIaWRkZW4iIGlkPSJUZW1wbGF0ZUxldmVsMSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0xpc3QiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJEYXRhSXRlbSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gUmVtb3ZlQnV0dG9uQ3VzdG9tZXJGaWVsZCI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PC9zdHJvbmc+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkV2ZW4gTGFzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+TmVnYXRlOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiB2YWx1ZT0iMCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0NoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgdmFsdWU9IjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIiB2YWx1ZT0iIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGUgZmllbGQgbmVlZHMgdG8gYmUgYSB2YWxpZCByZWd1bGFyIGV4cHJlc3Npb24gb3IgYSBsaXRlcmFsIHdvcmQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBSZW1vdmVCdXR0b25DdXN0b21lckNvbmRpdGlvbiBIaWRkZW4iPjxpIGNsYXNzPSJmYSBmYS1taW51cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIEFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUtbyI+PC9pPjwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmljRXJyb3IiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmljRXJyb3IiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VydmVyRXJyb3IiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iWyUgRGF0YS5JdGVtTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZXJ2ZXJFcnJvciIpICVdCgogICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJVcGRhdGUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlVwZGF0ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Zvcm0+CjxkaXYgY2xhc3M9IkZpZWxkIFdpZGdldFNpbXBsZSBDb2xsYXBzZWQgU3BhY2luZyBXaWRnZXRTcGFjaW5nUmlnaHQiPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgPGEgaHJlZj0iIyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPgogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT4KICAgICAgICAgICAgPC9hPgogICAgICAgIDwvZGl2PgogICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlRhZyBSZWZlcmVuY2UiKSB8IGh0bWwgJV08L2gyPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJZb3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIHRhZ3MiKSB8IGh0bWwgJV06PC9wPgogICAgICAgIDxkbD4KICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX1RJQ0tFVF8qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk9wdGlvbnMgb2YgdGhlIHRpY2tldCBkYXRhIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8Y29kZT4mbHQ7T1RSU19USUNLRVRfVGlja2V0TnVtYmVyJmd0OywgJmx0O09UUlNfVElDS0VUX1RpY2tldElEJmd0OywgJmx0O09UUlNfVElDS0VUX1F1ZXVlJmd0OywgJmx0O09UUlNfVElDS0VUX1N0YXRlJmd0OzwvY29kZT4pLgogICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0NVU1RPTUVSX0RBVEFfKiZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJPcHRpb25zIG9mIHRoZSBjdXJyZW50IGN1c3RvbWVyIHVzZXIgZGF0YSIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJlLiBnLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPGNvZGU+Jmx0O09UUlNfQ1VTVE9NRVJfREFUQV9Vc2VyRmlyc3RuYW1lJmd0OzwvY29kZT4pLgogICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX0NPTkZJR18qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkNvbmZpZyBvcHRpb25zIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdIDxjb2RlPiZsdDtPVFJTX0NPTkZJR19IdHRwVHlwZSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgPC9kZD4KCiAgICAgICAgICAgIDxkdD48Y29kZT4mbHQ7T1RSU19QdWJsaWNTdXJ2ZXlLZXkmZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUHVibGljIHN1cnZleSBrZXkiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiZS4gZy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDxjb2RlPiZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDs8L2NvZGU+KS4KICAgICAgICAgICAgPC9kZD4KICAgICAgICA8L2RsPgoKICAgICAgICA8cCBjbGFzcz0iU3BhY2luZ1RvcCI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRXhhbXBsZSBzdXJ2ZXkiKSB8IGh0bWwgJV06CiAgICAgICAgPC9wPgogICAgICAgIDx0ZXh0YXJlYSByb3dzPSI1IiBjb2xzPSI2MCIgbmFtZT0iVG1wU3VydmV5IiBkaXNhYmxlZD0iZGlzYWJsZWQiPgpbJSBUcmFuc2xhdGUoIlRoZSBjdXJyZW50IHRpY2tldCBzdGF0ZSBpcyIpIHwgaHRtbCAlXTogIiZsdDtPVFJTX1RJQ0tFVF9TdGF0ZSZndDsiCgpbJSBUcmFuc2xhdGUoIllvdXIgZW1haWwgYWRkcmVzcyBpcyIpIHwgaHRtbCAlXTogIiZsdDtPVFJTX0NVU1RPTUVSX1VzZXJFbWFpbCZndDsiCiAgICAgICAgPC90ZXh0YXJlYT4KICAgIDwvZGl2Pgo8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleUVkaXRRdWVzdGlvbnMiKSAlXQo8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJFZGl0IFF1ZXN0aW9ucyIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKENvbmZpZygiU3VydmV5OjpIb29rIikpIHwgaHRtbCAlXVslIERhdGEuU3VydmV5TnVtYmVyIHwgaHRtbCAlXSAtIFslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMT4KICAgICAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICA8cD4KICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8L2Rpdj4KCiAgICAgICAgPHVsIGNsYXNzPSJCcmVhZENydW1iIj4KICAgICAgICAgICAgPGxpPlslIFRyYW5zbGF0ZSgiWW91IGFyZSBoZXJlIikgfCBodG1sICVdOjwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU3VydmV5IFF1ZXN0aW9ucyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5QWRkUXVlc3Rpb24iKSAlXQoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkFkZCBRdWVzdGlvbiIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iU3VydmV5UXVlc3Rpb25zIiBpZD0iU3VydmV5UXVlc3Rpb25zIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJRdWVzdGlvbkFkZCIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgoKICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJRdWVzdGlvbiI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJUeXBlIHRoZSBxdWVzdGlvbiIpIHwgaHRtbCAlXTombmJzcDs8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IlF1ZXN0aW9uIiBuYW1lPSJRdWVzdGlvbiIgY2xhc3M9IlZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUXVlc3Rpb25FcnJvckNsYXNzIHwgaHRtbCAlXSAiIHNpemU9IjYwIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZWxlY3Rpb25UeXBlICVdCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUXVlc3Rpb25FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJRdWVzdGlvblNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFuc3dlclJlcXVpcmVkIj4gWyUgVHJhbnNsYXRlKCJBbnN3ZXIgcmVxdWlyZWQiKSB8IGh0bWwgJV06Jm5ic3A7PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BbnN3ZXJSZXF1aXJlZFNlbGVjdCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQbHVzIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXBsdXMtc3F1YXJlIj48L2k+IFslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUFkZFF1ZXN0aW9uIikgJV0KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTdXJ2ZXkgUXVlc3Rpb25zIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlOb1F1ZXN0aW9uc1NhdmVkIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlN1cnZleUVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleU5vUXVlc3Rpb25zU2F2ZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5UXVlc3Rpb25zVGFibGUiKSAlXQogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUXVlc3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUeXBlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlTdGF0dXNDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU3RhdHVzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5U3RhdHVzQ29sdW1uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkFuc3dlciBSZXF1aXJlZCIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RGVsZXRlQ29sdW1uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleURlbGV0ZUNvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlRdWVzdGlvbnNTYXZlZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIiA+WyUgRGF0YS5RdWVzdGlvbiB8IHRydW5jYXRlKDkwKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLlR5cGUpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5BbnN3ZXJSZXF1aXJlZCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBbJSBEYXRhLkNsYXNzVXAgfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25VcDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJVcCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93RG93blslIERhdGEuQ2xhc3NEb3duIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRG93bjtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVF1ZXN0aW9uc1NhdmVkIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVF1ZXN0aW9uc1JvdyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj5bJSBEYXRhLlF1ZXN0aW9uIHwgdHJ1bmNhdGUoNzApIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuVHlwZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuU3RhdHVzKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuQW5zd2VyUmVxdWlyZWQpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd1VwWyUgRGF0YS5DbGFzc1VwIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uVXA7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duWyUgRGF0YS5DbGFzc0Rvd24gfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25Eb3duO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5UXVlc3Rpb25zRGVsZXRlQnV0dG9uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBRdWVzdGlvbkRlbGV0ZSIgaHJlZj0iIyIgZGF0YS1xdWVyeS1zdHJpbmc9IkFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1RdWVzdGlvbkRlbGV0ZTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlRdWVzdGlvbnNEZWxldGVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5UXVlc3Rpb25zUm93IikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVF1ZXN0aW9uc1RhYmxlIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIldoZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAgUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJDbG9zZSB0aGlzIHdpbmRvdyIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLXRpbWVzIj48L2k+IFslIFRyYW5zbGF0ZSgiQ2xvc2UgdGhpcyB3aW5kb3ciKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlFZGl0UXVlc3Rpb25zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdCIpICVdCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQgUXVlc3Rpb24iKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZShEYXRhLlF1ZXN0aW9uKSB8IGh0bWwgJV08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIiA+WyUgVHJhbnNsYXRlKCJnbyBiYWNrIHRvIHF1ZXN0aW9ucyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgogICAgICAgICAgICA8bGk+WyUgVHJhbnNsYXRlKCJZb3UgYXJlIGhlcmUiKSB8IGh0bWwgJV06PC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIlN1cnZleSBRdWVzdGlvbnMiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUXVlc3Rpb246IikgfCBodG1sICVdIFslIERhdGEuUXVlc3Rpb24gfCBodG1sICVdCiAgICAgICAgICAgIDwvbGk+CiAgICAgICAgPC91bD4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJFZGl0IFF1ZXN0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJTdXJ2ZXlRdWVzdGlvbiIgaWQ9IlN1cnZleVF1ZXN0aW9uIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJRdWVzdGlvblNhdmUiIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUXVlc3Rpb25JRCIgdmFsdWU9IlslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUXVlc3Rpb24iIGNsYXNzPSJNYW5kYXRvcnkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiUXVlc3Rpb24iKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjYwIiBuYW1lPSJRdWVzdGlvbiIgaWQ9IlF1ZXN0aW9uIiB2YWx1ZT0iWyUgRGF0YS5RdWVzdGlvbiB8IGh0bWwgJV0iIGNsYXNzPSJWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLlF1ZXN0aW9uU2VydmVyRXJyb3IgfCBodG1sICVdIiAvPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlF1ZXN0aW9uRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUXVlc3Rpb25TZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFuc3dlclJlcXVpcmVkIj4gWyUgVHJhbnNsYXRlKCJBbnN3ZXIgcmVxdWlyZWQiKSB8IGh0bWwgJV06Jm5ic3A7PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5BbnN3ZXJSZXF1aXJlZFNlbGVjdCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcyA9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+IDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlBvc3NpYmxlIEFuc3dlcnMgRm9yIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdEFkZEFuc3dlciIpICVdCiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iQW5zd2VyQWRkIiBpZD0iQW5zd2VyQWRkIiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJBbnN3ZXJBZGQiIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUXVlc3Rpb25JRCIgdmFsdWU9IlslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQW5zd2VyIiBjbGFzcz0iTWFuZGF0b3J5Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkFkZCBBbnN3ZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJBbnN3ZXIiIG5hbWU9IkFuc3dlciIgc2l6ZT0iNjAiIGNsYXNzPSJWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkFuc3dlclNlcnZlckVycm9yIHwgaHRtbCAlXSAiLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IkNhbGxGb3JBY3Rpb24gUGx1cyIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV0iPiA8c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT4gWyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV08L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBbnN3ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBbnN3ZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRBZGRBbnN3ZXIiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9BbnN3ZXJzU2F2ZWQiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCIgaWQ9IlN1cnZleUVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vQW5zd2Vyc1NhdmVkIikgJV0KCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRUYWJsZSIpICVdCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4gWyUgVHJhbnNsYXRlKCJEZXNjcmlwdGlvbiIpIHwgaHRtbCAlXSA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiBbJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IFslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXSA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRUYWJsZURlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IFslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRUYWJsZURlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRSYWRpbyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckVkaXQ7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4gWyUgRGF0YS5BbnN3ZXIgfCB0cnVuY2F0ZSg5MCkgfCBodG1sICVdIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dVcFslIERhdGEuQ2xhc3NVcCB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJVcDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJVcCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93RG93blslIERhdGEuQ2xhc3NEb3duIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckRvd247U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEb3duIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFJhZGlvRGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBbnN3ZXJEZWxldGUiIGhyZWY9IiMiIGRhdGEtcXVlcnktc3RyaW5nPSJBY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRGVsZXRlO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0UmFkaW9EZWxldGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0UmFkaW8iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0TlBTIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRWRpdDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPiBbJSBEYXRhLkFuc3dlciB8IHRydW5jYXRlKDkwKSB8IGh0bWwgJV0gPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd1VwWyUgRGF0YS5DbGFzc1VwIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlclVwO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duWyUgRGF0YS5DbGFzc0Rvd24gfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRG93bjtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0TlBTRGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBbnN3ZXJEZWxldGUiIGhyZWY9IiMiIGRhdGEtcXVlcnktc3RyaW5nPSJBY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRGVsZXRlO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0TlBTRGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdE5QUyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRDaGVja2JveCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckVkaXQ7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj5bJSBEYXRhLkFuc3dlciB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBbJSBEYXRhLkNsYXNzVXAgfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyVXA7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd0Rvd25bJSBEYXRhLkNsYXNzRG93biB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJEb3duO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXRDaGVja2JveERlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQW5zd2VyRGVsZXRlIiBocmVmPSIjIiBkYXRhLXF1ZXJ5LXN0cmluZz0iQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckRlbGV0ZTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdENoZWNrYm94RGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdENoZWNrYm94IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFllc25vIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiBbJSBUcmFuc2xhdGUoIlllcyIpIHwgaHRtbCAlXSA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBEaXNhYmxlZCIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duRGlzYWJsZWQiIGhyZWY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPiBbJSBUcmFuc2xhdGUoIk5vIikgfCBodG1sICVdIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dVcERpc2FibGVkIiBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd0Rvd25EaXNhYmxlZCIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0WWVzbm8iKSAlXQoKICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdFRhYmxlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFRleHRBcmVhIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlNwYWNpbmdUb3AiIGlkPSJTdXJ2ZXlFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaGlzIGRvZXNuJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdFRleHRBcmVhIikgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiR28gYmFjayIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT4gWyUgVHJhbnNsYXRlKCJHbyBiYWNrIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJBbnN3ZXJFZGl0IikgJV0KPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IkFuc3dlckVkaXQiIGlkPSJBbnN3ZXJFZGl0IiBjbGFzcz0iVmFsaWRhdGUgUHJldmVudE11bHRpcGxlU3VibWl0cyI+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQW5zd2VyU2F2ZSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFuc3dlcklEIiB2YWx1ZT0iWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJRdWVzdGlvbklEIiB2YWx1ZT0iWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRQb3B1cCBBUklBUm9sZU1haW4iPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDE+WyUgVHJhbnNsYXRlKCJFZGl0IEFuc3dlciIpIHwgaHRtbCAlXTogWyUgRGF0YS5BbnN3ZXIgfCBodG1sICVdIDwvaDE+CiAgICAgICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoImdvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9wPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgogICAgICAgICAgICAgICAgPGxpPlslIFRyYW5zbGF0ZSgiWW91IGFyZSBoZXJlIikgfCBodG1sICVdOjwvbGk+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIlN1cnZleSBRdWVzdGlvbnMiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJRdWVzdGlvbjoiKSB8IGh0bWwgJV0gWyUgRGF0YS5RdWVzdGlvbiB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQW5zd2VyOiIpIHwgaHRtbCAlXSBbJSBEYXRhLkFuc3dlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgIDwvdWw+CgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgQW5zd2VyIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBbnN3ZXIiIGNsYXNzPSJNYW5kYXRvcnkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiQW5zd2VyIikgfCBodG1sICVdOjwvbGFiZWw+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNjAiIGlkPSJBbnN3ZXIiIG5hbWU9IkFuc3dlciIgdmFsdWU9IlslIERhdGEuQW5zd2VyIHwgaHRtbCAlXSIgY2xhc3M9IlZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuQW5zd2VyU2VydmVyRXJyb3IgfCBodG1sICVdIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQW5zd2VyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iQW5zd2VyU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jaGVjay1zcXVhcmUtbyI+PC9pPiBbJSBUcmFuc2xhdGUoIlNhdmUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9mb3JtPgpbJSBSZW5kZXJCbG9ja0VuZCgiQW5zd2VyRWRpdCIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyIikgJV0KPGRpdiBjbGFzcz0iT3ZlcnZpZXdCb3ggQVJJQVJvbGVNYWluIFslIERhdGEuVmlldyB8IGh0bWwgJV0iPgogICAgPGgxPlslIERhdGEuVGl0bGVOYW1lIHwgaHRtbCAlXTogWyUgRGF0YS5UaXRsZVZhbHVlIHwgaHRtbCAlXTwvaDE+CgogICAgWyUgRGF0YS5EYXRhSW5UaGVNaWRkbGUgJV0KCiAgICA8ZGl2IGNsYXNzPSJPdmVydmlld0NvbnRyb2wiIGlkPSJPdmVydmlld0NvbnRyb2wiPgogICAgICAgIDxkaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRyb2xSb3ciPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlciIpICVdCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IlRhYnMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlckl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJBY3RpdmUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5GaWx0ZXJMaW5rICVdRmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08c3Bhbj5bJSBEYXRhLkNvdW50IHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07WyUgRGF0YS5GaWx0ZXJMaW5rICVdRmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV08c3Bhbj5bJSBEYXRhLkNvdW50IHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkTm90IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU3BsaXQiKSAlXQogICAgICAgICAgICAgICAgICAgIC0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNwbGl0IikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbSIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXIiKSAlXQoKICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFicyI+CiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBpZD0iU3VydmV5U2VhcmNoIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIlN1cnZleSBvdmVydmlldyBvcHRpb25zIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8L3VsPgoKICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlN1cnZleU92ZXJ2aWV3U2V0dGluZ3NEaWFsb2dDb250YWluZXIiIGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50U3VydmV5T3ZlcnZpZXciLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iQ2hhbmdlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJGdWxsdGV4dCIgaWQ9IkxhYmVsRnVsbHRleHQiPlslIFRyYW5zbGF0ZSgiRnVsbHRleHQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iRnVsbHRleHQiIHZhbHVlPSJbJSBEYXRhLkZ1bGx0ZXh0IHwgaHRtbCAlXSIgY2xhc3M9Ilc1MHBjIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIiBzdHlsZT0id2lkdGg6IDUwMHB4Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iU3RhdGVzIiBpZD0iTGFiZWxTdGF0ZXMiID5bJSBUcmFuc2xhdGUoIlN0YXRlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdGF0ZVN0ciAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU3VydmV5IENyZWF0ZSBUaW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vIHRpbWUgc2V0dGluZ3MiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiAgaWQ9Ik5vVGltZVNldCIgbmFtZT0iVGltZVNlYXJjaFR5cGUiIHZhbHVlPSIiIFslIERhdGEuU3VydmV5U2VhcmNoLk5vUmVzdHJpY3Rpb25DaGVja2VkIHwgaHRtbCAlXSBbJSBEYXRhLml0ZW0oIlRpbWVTZWFyY2hUeXBlOjpOb25lIikgJV0gLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJOb1RpbWVTZXQiPlslIFRyYW5zbGF0ZSgiTm8gcmVzdHJpY3Rpb24iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRhdGUgcmFuZ2UiKSB8IGh0bWwgJV0iIHR5cGU9InJhZGlvIiBpZD0iRGF0ZVJhbmdlIiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IlRpbWVTbG90IiBbJSBEYXRhLlN1cnZleVNlYXJjaC5UaW1lU2xvdENoZWNrZWQgfCBodG1sICVdIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6OlRpbWVTbG90IikgJV0gLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEYXRlUmFuZ2UiPlslIFRyYW5zbGF0ZSgiT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2VlbiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TdXJ2ZXlDcmVhdGVUaW1lU3RhcnQgJV0gWyUgVHJhbnNsYXRlKCJhbmQiKSB8IGh0bWwgJV0gWyUgRGF0YS5TdXJ2ZXlDcmVhdGVUaW1lU3RvcCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiQ29udGV4dFNldHRpbmdzIikgJV0KCiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkNvbnRleHRGdW5jdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQ29udGV4dFNldHRpbmdzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iIyIgaWQ9IlNob3dDb250ZXh0U2V0dGluZ3NEaWFsb2ciIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY29nIj48L2k+PHNwYW4+WyUgVHJhbnNsYXRlKCJTZXR0aW5ncyIpIHwgaHRtbCAlXTwvc3Bhbj48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyIiBjbGFzcz0iSGlkZGVuIj4KICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IkNvbnRleHRTZXR0aW5nc0RpYWxvZyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IkFnZW50UHJlZmVyZW5jZXMiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iVXBkYXRlIi8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Ikdyb3VwIiB2YWx1ZT0iWyUgRGF0YS5Hcm91cCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUmVkaXJlY3RVUkwiIHZhbHVlPSJbJSBEYXRhLlJlcXVlc3RlZFVSTCB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iWyUgRGF0YS5QcmVmZXJlbmNlc0tleSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZSgiTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5QYWdlU2hvd25TdHJpbmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ29udGV4dFNldHRpbmdzIikgJV0KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iT3ZlcnZpZXdBY3Rpb25zIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFjdGlvblJvdyAlXQogICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iT3ZlcnZpZXdab29tIj4KClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgfCB1cmkgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2hvcnQpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZVNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIG5hbWU9Ik92ZXJ2aWV3Q29udHJvbCIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07RmlsdGVyPVslIERhdGEuRmlsdGVyIHwgdXJpICVdO1ZpZXc9WyUgRGF0YS5WaWV3IHwgdXJpICVdO1slIERhdGEuTGlua0ZpbHRlciAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTmFtZVNob3J0KSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGVOb3RTZWxlY3RlZCIpICVdClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJQYWdpbmF0aW9uIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5SZXN1bHRMb25nICVdCiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2l0ZU5hdkJhckxvbmcgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICAgICAgICAgICAgICA8L2Rpdj4KIyBzb3J0IG9yZGVyIGJhciBpZiBuZWVkZWQKICAgICAgICAgICAgICAgIFslIERhdGEuU29ydE9yZGVyQmFyICVdCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXIiKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgo8ZGl2IGlkPSJPdmVydmlld0JvZHkiIGNsYXNzPSJPdmVydmlldyBUaWNrZXRMaXN0Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTm9EYXRhRm91bmRNc2ciKSAlXQogICAgPGRpdiBpZD0iRW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gZGF0YSBmb3VuZC4iKSB8IGh0bWwgJV0KICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9EYXRhRm91bmRNc2ciKSAlXQoKICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJtYXRyaXgiPgogICAgICAgIDx0YWJsZSBjbGFzcz0iVGFibGVTbWFsbCI+CiAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgIDx0cj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVySGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik51bWJlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9TnVtYmVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJUaXRsZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9VGl0bGU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFRpdGxlSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkSW50cm9kdWN0aW9uSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkludHJvZHVjdGlvbiBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9SW50cm9kdWN0aW9uO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkludHJvZHVjdGlvbiIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkSW50cm9kdWN0aW9uSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRGVzY3JpcHRpb25IZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iRGVzY3JpcHRpb24gWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PURlc2NyaXB0aW9uO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmREZXNjcmlwdGlvbkhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5vdGlmaWNhdGlvblNlbmRlckhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJOb3RpZmljYXRpb25TZW5kZXIgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PU5vdGlmaWNhdGlvblNlbmRlcjtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJOb3RpZmljYXRpb24gU2VuZGVyIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROb3RpZmljYXRpb25TZW5kZXJIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROb3RpZmljYXRpb25TdWJqZWN0SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik5vdGlmaWNhdGlvblN1YmplY3QgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PU5vdGlmaWNhdGlvblN1YmplY3Q7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiTm90aWZpY2F0aW9uIFN1YmplY3QiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvblN1YmplY3RIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROb3RpZmljYXRpb25Cb2R5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik5vdGlmaWNhdGlvbkJvZHkgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PU5vdGlmaWNhdGlvbkJvZHk7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiTm90aWZpY2F0aW9uIEJvZHkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvbkJvZHlIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0dXNIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iU3RhdHVzIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1TdGF0dXM7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiU3RhdHVzIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRTdGF0dXNIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDcmVhdGVUaW1lSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNyZWF0ZVRpbWUgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PUNyZWF0ZVRpbWU7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3JlYXRlVGltZUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENyZWF0ZUJ5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IkNyZWF0ZUJ5IFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1DcmVhdGVCeTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIGJ5IikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDcmVhdGVCeUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENoYW5nZVRpbWVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlVGltZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9Q2hhbmdlVGltZTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDaGFuZ2VUaW1lSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2hhbmdlQnlIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hhbmdlQnkgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PUNoYW5nZUJ5O09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkNoYW5nZWQgQnkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZUJ5SGVhZGVyIikgJV0KICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgIDx0Ym9keT4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgICAgIDx0ciBjbGFzcz0iTWFzdGVyQWN0aW9uIFslIElGIERhdGEuU3RhdHVzID09ICdJbnZhbGlkJyAlXUludmFsaWRbJSBFTkQgJV0iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIiB0aXRsZT0iWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCB1cmkgJV0iIGNsYXNzPSJNYXN0ZXJBY3Rpb25MaW5rIj4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtTdGFydCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN1cnZleU51bWJlciB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckxpbmtFbmQiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROdW1iZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRUaXRsZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXSI+WyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDQwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGl0bGUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRJbnRyb2R1Y3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5JbnRyb2R1Y3Rpb24gfCBodG1sICVdIj5bJSBEYXRhLkludHJvZHVjdGlvbiB8IHRydW5jYXRlKDQwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkSW50cm9kdWN0aW9uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkRGVzY3JpcHRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5EZXNjcmlwdGlvbiB8IGh0bWwgJV0iPlslIERhdGEuRGVzY3JpcHRpb24gfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZERlc2NyaXB0aW9uIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTm90aWZpY2F0aW9uU2VuZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5Ob3RpZmljYXRpb25TZW5kZXIgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvblNlbmRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5vdGlmaWNhdGlvblN1YmplY3QiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB0aXRsZT0iWyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0IHwgaHRtbCAlXSI+WyUgRGF0YS5Ob3RpZmljYXRpb25TdWJqZWN0IHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmROb3RpZmljYXRpb25TdWJqZWN0IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTm90aWZpY2F0aW9uQm9keSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHkgfCBodG1sICVdIj5bJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHkgfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvbkJvZHkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRTdGF0dXMiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0dXMpIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRTdGF0dXMiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDcmVhdGVUaW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3JlYXRlVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENyZWF0ZUJ5IikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5DcmVhdGVVc2VyRnVsbG5hbWUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENyZWF0ZUJ5IikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2hhbmdlVGltZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZVRpbWUiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDaGFuZ2VCeSIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIERhdGEuQ2hhbmdlVXNlckZ1bGxuYW1lIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDaGFuZ2VCeSIpICVdCiAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkIikgJV0KICAgICAgICAgICAgPC90Ym9keT4KICAgICAgICA8L3RhYmxlPgogICAgPC9mb3JtPgo8L2Rpdj4K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0cyIpICVdCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIlN0YXRzIE92ZXJ2aWV3IG9mIikgfCBodG1sICVdIDogWyUgVHJhbnNsYXRlKENvbmZpZygiU3VydmV5OjpIb29rIikpIHwgaHRtbCAlXVslIERhdGEuU3VydmV5TnVtYmVyICVdIC0gWyUgRGF0YS5UaXRsZSAlXSA8L2gxPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDI+PC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlJlcXVlc3RzIFRhYmxlIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTdGF0c1ZpZXciIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJEYXRhVGFibGUiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgSUYgRGF0YS5TaG93RGVsZXRlID09IDEgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ2hlY2tib3ggQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9IkNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgaWQ9IlNlbGVjdEFsbFJlcXVlc3RzIiBuYW1lPSJTZWxlY3RBbGxSZXF1ZXN0cyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VsZWN0IGFsbCByZXF1ZXN0cyIpIHwgaHRtbCAlXSIgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEZXRhaWxzIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU2VuZCBUaW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVm90ZSBUaW1lIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+CiAgICAgICAgICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0c1ZvdGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNob3dEZWxldGUgPT0gMSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDaGVja2JveCBOb25UZXh0Q29udGVudCBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iQ2hlY2tib3giIHR5cGU9ImNoZWNrYm94IiBuYW1lPSJSZXF1ZXN0RGVsZXRlSWRlbnRpZmllciIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2VsZWN0IHRoaXMgcmVxdWVzdCIpIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuUmVxdWVzdElEIHwgaHRtbCAlXSIgIGF1dG9jb21wbGV0ZT0ib2ZmIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJTZWVEZXRhaWxzIEFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1TdGF0c0RldGFpbDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1JlcXVlc3RJRD1bJSBEYXRhLlJlcXVlc3RJRCB8IHVyaSAlXTtUaWNrZXROdW1iZXI9WyUgRGF0YS5UaWNrZXROdW1iZXIgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2VhcmNoLXBsdXMiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+WyUgVHJhbnNsYXRlKCJTZWUgRGV0YWlscyIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU2VuZFRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlZvdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9Ikxpbmtab29tVmlldyBBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRUaWNrZXRab29tO1RpY2tldElEPVslIERhdGEuVGlja2V0SUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlRpY2tldE51bWJlciB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhdHNWb3RlIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PgogICAgICAgICAgICAgICAgPC90YWJsZT4KICAgICAgICAgICAgWyUgSUYgRGF0YS5TaG93RGVsZXRlID09IDEgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcFNtYWxsIj4KICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUgc3RhdHMiKSB8IGh0bWwgJV0iPjxzcGFuPlslIFRyYW5zbGF0ZSgiRGVsZXRlIHN0YXRzIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VibWl0RGVsZXRlIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIFslIEVORCAlXQogICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCBQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgd2luZG93IikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtdGltZXMiPjwvaT4gWyUgVHJhbnNsYXRlKCJDbG9zZSB0aGlzIHdpbmRvdyIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgIDwvZGl2Pgo8L2Rpdj4KClslIFJlbmRlckJsb2NrRW5kKCJTdGF0cyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0c0RldGFpbCIpICVdCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIlN1cnZleSBTdGF0IERldGFpbHMiKSB8IGh0bWwgJV0gOiBbJSBDb25maWcoIlRpY2tldDo6SG9vayIpICVdWyUgQ29uZmlnKCJUaWNrZXQ6Okhvb2tEaXZpZGVyIikgJV1bJSBEYXRhLlRpY2tldE51bWJlciAlXSA6IFslIENvbmZpZygiU3VydmV5OjpIb29rIikgJV1bJSBEYXRhLlN1cnZleU51bWJlciAlXSAtIFslIERhdGEuVGl0bGUgJV0gOiAgPC9oMT4KICAgICAgICA8cD4KICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgib3IiKSB8IGh0bWwgJV0KICAgICAgICAgICAgPGEgY2xhc3M9Ikhpc3RvcnlCYWNrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoImdvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXciKSB8IGh0bWwgJV08L2E+CiAgICAgICAgPC9wPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGgyPjwvaDI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJEZXRhaWxzIikgfCBodG1sICVdPC9oMj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTmF2QXJyb3dzIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Ik5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxzcGFuIFslIElGICFEYXRhLlByZXYgJV1jbGFzcz0iRGlzYWJsZWQiWyUgRU5EICVdWyUgSUYgIURhdGEuTmV4dCAlXXN0eWxlPSJtYXJnaW4tcmlnaHQ6IDE3cHg7IlslIEVORCAlXSBjbGFzcz0iU3VydmV5QXJyb3cgU3VydmV5QXJyb3dMZWZ0IiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJQcmV2aW91cyB2b3RlIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5U3RhdHM7U3ViYWN0aW9uPVN0YXRzRGV0YWlsO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UmVxdWVzdElEPVslIERhdGEuUHJldiB8IHVyaSAlXTtUaWNrZXROdW1iZXI9WyUgRGF0YS5QcmV2VGlja2V0TnVtYmVyIHwgdXJpICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gWyUgSUYgIURhdGEuTmV4dCAlXWNsYXNzPSJEaXNhYmxlZCJbJSBFTkQgJV0gY2xhc3M9IlN1cnZleUFycm93IFN1cnZleUFycm93UmlnaHQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5leHQgdm90ZSIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFN1cnZleVN0YXRzO1N1YmFjdGlvbj1TdGF0c0RldGFpbDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1JlcXVlc3RJRD1bJSBEYXRhLk5leHQgfCB1cmkgJV07VGlja2V0TnVtYmVyPVslIERhdGEuTmV4dFRpY2tldE51bWJlciB8IHVyaSAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTmF2QXJyb3dzIikgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRzRGV0YWlsUXVlc3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iWyUgRGF0YS5DbGFzcyAlXSI+WyUgRGF0YS5SZXF1aXJlZFRleHQgfCBodG1sICVdWyUgRGF0YS5RdWVzdGlvbiB8IGh0bWwgJV06PC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhdHNEZXRhaWxBbnN3ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFslIERhdGEuQ2xhc3MgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFuc3dlciAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRzRGV0YWlsQW5zd2VyIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdGF0c0RldGFpbFF1ZXN0aW9uIikgJV0KICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkdvIGJhY2siKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+IFslIFRyYW5zbGF0ZSgiR28gYmFjayIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICA8L2Zvcm0+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTdGF0c0RldGFpbCIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlab29tIikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBcmlhUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8ZGl2IGNsYXNzPSJDbGVhckxlZnQiPjwvZGl2PgogICAgPGRpdiBjbGFzcz0iSGVhZGxpbmUiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gxPgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJMYXN0Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU3VydmV5IEluZm9ybWF0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLkNyZWF0ZVVzZXJGdWxsbmFtZSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIkNoYW5nZWQiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIiA+WyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVTaG9ydCIpICVdPC9wPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCBieSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ2hhbmdlVXNlckZ1bGxuYW1lIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiU3RhdHVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgVHJhbnNsYXRlKERhdGEuU3RhdHVzKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgoKICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTZW50IHJlcXVlc3RzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5TZW5kUmVxdWVzdCB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlJlY2VpdmVkIHN1cnZleXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLlJlcXVlc3RDb21wbGV0ZSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgoKICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBZGRpdGlvbmFsSW5mb3JtYXRpb24iPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciPgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJBY3Rpb25zIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiTWVudUl0ZW0iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdWyUgRGF0YS5MaW5rIHwgSW50ZXJwb2xhdGUgJV0iIGlkPSJbJSBEYXRhLk1lbnVJRCB8IGh0bWwgJV0iIGNsYXNzPSJbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSIgWyUgRGF0YS5MaW5rUGFyYW0gJV0gdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkRlc2NyaXB0aW9uKSB8IGh0bWwgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiTWVudUl0ZW0iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlTdGF0dXMiKSAlXQogICAgICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGNsYXNzPSJBY3Rpb25Gb3JtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTdXJ2ZXlTdGF0dXMiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5OZXdTdGF0dXNTdHIgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlTdGF0dXMiKSAlXQogICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSBEZXRhaWxzIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbFNtYWxsIj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIk51bWJlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+WyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlRpdGxlIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj5bJSBEYXRhLlRpdGxlIHwgdHJ1bmNhdGUoODApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJRdWV1ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiIHRpdGxlPSJbJSBEYXRhLlF1ZXVlTGlzdFN0cmluZyB8IGh0bWwgJV0iPlslIERhdGEuUXVldWVMaXN0U3RyaW5nIHwgdHJ1bmNhdGUoODApIHwgaHRtbCAlXSBbJSBEYXRhLk5vUXVldWVNZXNzYWdlIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRUeXBlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlRpY2tldCBUeXBlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgdGl0bGU9IlslIERhdGEuVGlja2V0VHlwZUxpc3RTdHJpbmcgfCBodG1sICVdIj5bJSBEYXRhLlRpY2tldFR5cGVMaXN0U3RyaW5nIHwgdHJ1bmNhdGUoODApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRUeXBlcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRTZXJ2aWNlcyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlRpY2tldCBTZXJ2aWNlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgdGl0bGU9IlslIERhdGEuU2VydmljZUxpc3RTdHJpbmcgfCBodG1sICVdIj5bJSBEYXRhLlNlcnZpY2VMaXN0U3RyaW5nIHwgdHJ1bmNhdGUoODApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRTZXJ2aWNlcyIpICVdCgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlCbG9jayIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIiBpZD0iWyUgRGF0YS5TdXJ2ZXlGaWVsZCAlXUJsb2NrIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2hvdyBvciBoaWRlIHRoZSBjb250ZW50IikgfCBodG1sICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKERhdGEuVGl0bGUpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJCb2R5SFRNTCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlmcmFtZSB3aWR0aD0iMTAwJSIgZnJhbWVib3JkZXI9IjAiIGlkPSJJZnJhbWVTdXJ2ZXlbJSBEYXRhLlN1cnZleUZpZWxkIHwgaHRtbCAlXSIgb25sb2FkPSJTdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbS5JZnJhbWVBdXRvSGVpZ2h0KCQoJyNJZnJhbWVTdXJ2ZXlbJSBEYXRhLlN1cnZleUZpZWxkIHwgaHRtbCAlXScpKTsiIHNyYz0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdWJhY3Rpb249SFRNTFZpZXc7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV07U3VydmV5RmllbGQ9WyUgRGF0YS5TdXJ2ZXlGaWVsZCB8IGh0bWwgJV07Ij4KICAgICAgICAgICAgICAgICAgICAgICAgPC9pZnJhbWU+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJCb2R5SFRNTCIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkJvZHlQbGFpbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IlRleHRhcmVhIj5bJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFRleHRhcmVhIj5bJSBEYXRhLkNvbnRlbnQgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiQm9keVBsYWluIikgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUJsb2NrIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUGVybWlzc2lvblN0YXRSZXN1bHRzIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AgU3BhY2luZ0JvdHRvbU1lZGl1bSI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSBSZXN1bHRzIEdyYXBoIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb1N0YXRSZXN1bHRzIikgJV0KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk5vIHN0YXQgcmVzdWx0cy4iKSB8IGh0bWwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk5vU3RhdFJlc3VsdHMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RWRpdFN0YXRzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleUVkaXRTdGF0c1F1ZXN0aW9uIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlNwYWNpbmdUb3AgU3VydmV5R3JhcGhzIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24iIHRpdGxlPSJbJSBEYXRhLlF1ZXN0aW9uICVdIiA+WyUgRGF0YS5RdWVzdGlvbiB8IHRydW5jYXRlKDEwMCkgfCBodG1sICVdOiA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RWRpdFN0YXRzQW5zd2VyIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQW5zd2VyIj5bJSBUcmFuc2xhdGUoRGF0YS5BbnN3ZXIpIHwgaHRtbCAlXTwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5R3JhcGgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5R3JhcGhDb250YWluZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUdyYXBoQmFyIiBzdHlsZT0id2lkdGg6WyUgRGF0YS5BbnN3ZXJQZXJjZW50VGFibGUgfCBodG1sICVdJTsiPjwvZGl2ID4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlN1cnZleUdyYXBoTGV5ZW5kIj5bJSBEYXRhLkFuc3dlclBlcmNlbnQgfCBodG1sICVdJTwvcD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUVkaXRTdGF0c0Fuc3dlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUVkaXRTdGF0c1F1ZXN0aW9uIikgJV0KClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlFZGl0U3RhdHMiKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGVybWlzc2lvblN0YXRSZXN1bHRzIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVpvb20iKSAlXQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNTdXJ2ZXkiKSAlXQo8ZGl2IGNsYXNzPSJDb250ZW50IEFSSUFSb2xlTWFpbiIgaWQ9Ik1haW5Cb3giPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTdXJ2ZXkiKSB8IGh0bWwgJV06IFslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMj4KICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljVGlja2V0IikgJV0KICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGlja2V0IikgfCBodG1sICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIFslIENvbmZpZygiVGlja2V0OjpIb29rIikgfCBodG1sICVdWyUgQ29uZmlnKCJUaWNrZXQ6Okhvb2tEaXZpZGVyIikgfCBodG1sICVdWyUgRGF0YS5UaWNrZXROdW1iZXIgfCBodG1sICVdIDxzcGFuPiZtZGFzaDs8L3NwYW4+IFslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSgxMDApICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNUaWNrZXQiKSAlXQoKICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSW50cm9kdWN0aW9uIikgfCBodG1sICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIFslIERhdGEuSW50cm9kdWN0aW9uICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iUHVibGljU3VydmV5Vm90ZSIgLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJQdWJsaWNTdXJ2ZXlLZXkiIHZhbHVlPSJbJSBEYXRhLlB1YmxpY1N1cnZleUtleSB8IGh0bWwgJV0iIC8+CiAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJTdXJ2ZXkiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlBsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zIikgfCBodG1sICVdOgogICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1F1ZXN0aW9ucyIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uQ29udGFpbmVyIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljQW5zd2VyWWVzTm8iKSAlXQoKICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uIFslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4gWyUgRGF0YS5SZXF1aXJlZFRleHQgfCBodG1sICVdWyUgRGF0YS5RdWVzdGlvbiAlXSA8L2Rpdj4KICAgICAgICAgICAgICAgIFslIERhdGEuRXJyb3JUZXh0ICVdCgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0iUHVibGljU3VydmV5Vm90ZTFbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdWWVzIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlMVtbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdXSIgdmFsdWU9IlllcyIgWyUgRGF0YS5ZZXNTZWxlY3RlZCB8IGh0bWwgJV0gLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iQW5zd2VyIiBmb3I9IlB1YmxpY1N1cnZleVZvdGUxWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXVllcyI+WyUgVHJhbnNsYXRlKCJZZXMiKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9IlB1YmxpY1N1cnZleVZvdGUxWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXU5vIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlMVtbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdXSIgdmFsdWU9Ik5vIiAgWyUgRGF0YS5Ob1NlbGVjdGVkIHwgaHRtbCAlXSAvPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJBbnN3ZXIiIGZvcj0iUHVibGljU3VydmV5Vm90ZTFbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdTm8iPlslIFRyYW5zbGF0ZSgiTm8iKSB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyWWVzTm8iKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljQW5zd2VyUmFkaW8iKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24gWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPiBbJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uICVdIDwvZGl2PgogICAgICAgICAgICAgICAgWyUgRGF0YS5FcnJvclRleHQgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljQW5zd2VyUmFkaW9iIikgJV0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgaWQ9IlB1YmxpY1N1cnZleVZvdGUyWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXVslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlMltbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdXSIgdmFsdWU9IlslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBbJSBEYXRhLkFuc3dlclNlbGVjdGVkIHwgaHRtbCAlXS8+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkFuc3dlciIgZm9yPSJQdWJsaWNTdXJ2ZXlWb3RlMlslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1bJSBEYXRhLkFuc3dlcklEIHwgaHRtbCAlXSI+WyUgRGF0YS5BbnN3ZXIgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlclJhZGlvYiIpICVdClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNBbnN3ZXJSYWRpbyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJDaGVja2JveCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+IFslIERhdGEuUmVxdWlyZWRUZXh0IHwgaHRtbCAlXVslIERhdGEuUXVlc3Rpb24gJV0gPC9kaXY+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkVycm9yVGV4dCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJDaGVja2JveGIiKSAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iUHVibGljU3VydmV5Vm90ZTNbJSBEYXRhLkFuc3dlcklEIHwgaHRtbCAlXSIgbmFtZT0iUHVibGljU3VydmV5Vm90ZTNbWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV1dIiB2YWx1ZT0iWWVzIiBbJSBEYXRhLkFuc3dlclNlbGVjdGVkIHwgaHRtbCAlXS8+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkFuc3dlciIgZm9yPSJQdWJsaWNTdXJ2ZXlWb3RlM1slIERhdGEuQW5zd2VySUQgfCBodG1sICVdIj5bJSBEYXRhLkFuc3dlciB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyQ2hlY2tib3hiIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlckNoZWNrYm94IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY0Fuc3dlclRleHRhcmVhIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uIFslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4gWyUgRGF0YS5SZXF1aXJlZFRleHQgfCBodG1sICVdWyUgRGF0YS5RdWVzdGlvbiAlXSA8L2Rpdj4KICAgICAgICAgICAgICAgIFslIERhdGEuRXJyb3JUZXh0ICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEFuc3dlclslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgdGl0bGU9IlslIERhdGEuUXVlc3Rpb24gJV0iIGlkPSJSaWNoVGV4dFslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV0iIG5hbWU9IlB1YmxpY1N1cnZleVZvdGU0W1slIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1dIiBjbGFzcz0iUmljaFRleHQgRG9udFByaW50IiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5WYWx1ZSAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlclRleHRhcmVhIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY0Fuc3dlck5QUyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+IFslIERhdGEuUmVxdWlyZWRUZXh0IHwgaHRtbCAlXVslIERhdGEuUXVlc3Rpb24gJV0gPC9kaXY+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkVycm9yVGV4dCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJOUFNiIikgJV0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIgY2xhc3M9Ik5QUyIgaWQ9IlB1YmxpY1N1cnZleVZvdGU1WyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXVslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlNVtbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdXSIgdmFsdWU9IlslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBbJSBEYXRhLkFuc3dlclNlbGVjdGVkIHwgaHRtbCAlXS8+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkFuc3dlciBOUFMiIGZvcj0iUHVibGljU3VydmV5Vm90ZTVbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iPlslIERhdGEuQW5zd2VyIHwgaHRtbCAlXTwvbGFiZWw+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNBbnN3ZXJOUFNiIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlck5QUyIpICVdCgogICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1F1ZXN0aW9ucyIpICVdCiAgICAgICAgPC9maWVsZHNldD4KICAgICAgICA8ZGl2IGNsYXNzPSJBY3Rpb25Sb3ciIGlkPSJCb3R0b21BY3Rpb25Sb3ciPgogICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkZpbmlzaCIpIHwgaHRtbCAlXSI+IFslIFRyYW5zbGF0ZSgiRmluaXNoIikgfCBodG1sICVdIDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgPC9mb3JtPgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleSIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNTdXJ2ZXlNZXNzYWdlIikgJV0KPGRpdiBpZD0iTWFpbkJveCIgY2xhc3M9IlRpY2tldENvbXBvc2UgQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGgyPiBbJSBUcmFuc2xhdGUoRGF0YS5NZXNzYWdlVHlwZSkgfCBodG1sICVdIDwvaDI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDxoND4gWyUgVHJhbnNsYXRlKERhdGEuTWVzc2FnZUhlYWRlcikgfCBodG1sICVdIDwvaDQ+CiAgICAgICAgICAgIDxwIGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk1lc3NhZ2UpIHwgaHRtbCAlXQogICAgICAgICAgICA8L3A+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2hvd0Fuc3dlcnNCdXR0b24iKSAlXQogICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3ViYWN0aW9uIiB2YWx1ZT0iU2hvd1ZvdGVEYXRhIiAvPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iUHVibGljU3VydmV5S2V5IiB2YWx1ZT0iWyUgRGF0YS5QdWJsaWNTdXJ2ZXlLZXkgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiID5bJSBUcmFuc2xhdGUoIlNob3cgbXkgYW5zd2VycyIpIHwgaHRtbCAlXTwvYnV0dG9uPgogICAgICAgICAgICA8L2Zvcm0+ClslIFJlbmRlckJsb2NrRW5kKCJTaG93QW5zd2Vyc0J1dHRvbiIpICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNTdXJ2ZXlNZXNzYWdlIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1N1cnZleVZvdGVEYXRhIikgJV0KPGRpdiBjbGFzcz0iQ29udGVudCBBUklBUm9sZU1haW4iIGlkPSJNYWluQm94Ij4KICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiVGhlc2UgYXJlIHlvdXIgYW5zd2VycyIpIHwgaHRtbCAlXTo8L2gyPgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9jayI+CiAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2tIZWFkZXIiPgogICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlN1cnZleSBUaXRsZSIpIHwgaHRtbCAlXQogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTdXJ2ZXkiKSB8IGh0bWwgJV06IFslIERhdGEuVGl0bGUgfCBodG1sICVdPC9oMj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiSW50cm9kdWN0aW9uIikgfCBodG1sICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIFslIERhdGEuSW50cm9kdWN0aW9uICVdCiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICA8ZmllbGRzZXQgY2xhc3M9IlN1cnZleSI+CiAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2tIZWFkZXIiPgogICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoZXNlIGFyZSB5b3VyIGFuc3dlcnMiKSB8IGh0bWwgJV06CiAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNTdXJ2ZXlWb3RlUXVlc3Rpb24iKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uQ29udGFpbmVyIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24gWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPiBbJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uIHwgaHRtbCAlXTo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljU3VydmV5Vm90ZUFuc3dlciIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFuc3dlciI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkFuc3dlciB8IGh0bWwgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleVZvdGVBbnN3ZXIiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNTdXJ2ZXlWb3RlUXVlc3Rpb24iKSAlXQogICAgPC9maWVsZHNldD4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNTdXJ2ZXlWb3RlRGF0YSIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c0RlbGV0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN1cnZleScsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdEZWxldGUgc3VydmV5IHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZvcmNlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWN0dWFsbHkgZGVsZXRlIHJlc3VsdHMgbm93LiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKCiAgICByZXR1cm47Cn0KCnN1YiBQcmVSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRGVsZXRlUGVyaW9kID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdXJ2ZXk6OkRlbGV0ZVBlcmlvZCcpOwogICAgaWYgKCAhJERlbGV0ZVBlcmlvZCApIHsKICAgICAgICBkaWUgIk5vIGRheXMgY29uZmlndXJlZCBpbiBTdXJ2ZXk6OkRlbGV0ZVBlcmlvZC5cbiI7CiAgICB9CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlByb2Nlc3NpbmcgcGVuZGluZyBzdXJ2ZXkgcmVzdWx0cy4uLjwveWVsbG93PlxuXG4iKTsKCiAgICAjIGdldCBmb3JjZSBvcHRpb24KICAgIG15ICRGb3JjZSA9ICRTZWxmLT5HZXRPcHRpb24oJ2ZvcmNlJyk7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICMgZ2V0IHN1cnZleSBpZHMKICAgIG15IEBTdXJ2ZXlJRHMgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTZWFyY2goCiAgICAgICAgVXNlcklEID0+IDEsCiAgICApOwoKICAgICMgZ2V0IGRlbGV0ZSBwZXJpb2QgKGluIGRheXMpCiAgICBteSAkRGVsZXRlUGVyaW9kID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdXJ2ZXk6OkRlbGV0ZVBlcmlvZCcpOwoKICAgIG15ICRPbGRlckRhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICk7CiAgICAkT2xkZXJEYXRlVGltZU9iamVjdC0+U3VidHJhY3QoCiAgICAgICAgRGF5cyA9PiAkRGVsZXRlUGVyaW9kLAogICAgKTsKICAgICRPbGRlckRhdGVUaW1lT2JqZWN0LT5TZXQoCiAgICAgICAgSG91ciAgID0+IDIzLAogICAgICAgIE1pbnV0ZSA9PiA1OSwKICAgICAgICBTZWNvbmQgPT4gNTksCiAgICApOwogICAgbXkgJFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlID0gJE9sZGVyRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCk7CgogICAgbXkgJE5ld2VyRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgKTsKICAgICROZXdlckRhdGVUaW1lT2JqZWN0LT5TdWJ0cmFjdCgKICAgICAgICBEYXlzID0+ICREZWxldGVQZXJpb2QgKyAxLAogICAgKTsKICAgICROZXdlckRhdGVUaW1lT2JqZWN0LT5TZXQoCiAgICAgICAgSG91ciAgID0+IDAsCiAgICAgICAgTWludXRlID0+IDAsCiAgICAgICAgU2Vjb25kID0+IDAsCiAgICApOwogICAgbXkgJFJlcXVlc3RDcmVhdGVUaW1lTmV3ZXJEYXRlID0gJE5ld2VyRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCk7CgogICAgIyBpbml0IHJlc3VsdCBhcnJheQogICAgbXkgQFJlc3VsdExpc3Q7CgogICAgZm9yIG15ICRTdXJ2ZXlJRCAoQFN1cnZleUlEcykgewoKICAgICAgICAjIGdldCBwdWJsaWMgc3VydmV5IGtleXMKICAgICAgICBteSAkUHVibGljU3VydmV5S2V5cyA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUtleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgIFJFUVVFU1Q6CiAgICAgICAgZm9yIG15ICRQdWJsaWNLZXkgKCBAeyRQdWJsaWNTdXJ2ZXlLZXlzfSApIHsKCiAgICAgICAgICAgICMgZ2V0IHJlcXVlc3RzCiAgICAgICAgICAgIG15ICVSZXF1ZXN0RGF0YSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RHZXQoCiAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgICAgICAgICAgICA9PiAkUHVibGljS2V5LAogICAgICAgICAgICAgICAgUmVxdWVzdENyZWF0ZVRpbWVPbGRlckRhdGUgPT4gJFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBza2lwIGlmIHdlIGhhdmUgbm8gcmVxdWVzdCBkYXRhCiAgICAgICAgICAgIG5leHQgUkVRVUVTVCBpZiAhJVJlcXVlc3REYXRhOwoKICAgICAgICAgICAgIyBnZXQgdm90ZSBsaXN0CiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBTRUxFQ1Qgcy50aXRsZSwgdC50biAsIHNyLnNlbmRfdGltZSwgc3Iudm90ZV90aW1lLCBzci5jcmVhdGVfdGltZQogICAgICAgICAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3Qgc3IKICAgICAgICAgICAgICAgICAgICBJTk5FUiBKT0lOIHRpY2tldCB0IE9OIHQuaWQgPSBzci50aWNrZXRfaWQKICAgICAgICAgICAgICAgICAgICBJTk5FUiBKT0lOIHN1cnZleSBzIE9OIHMuaWQgPSBzci5zdXJ2ZXlfaWQKICAgICAgICAgICAgICAgICAgICBXSEVSRSBzci5pZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUmVxdWVzdERhdGF7UmVxdWVzdElEfSBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAgICAgICAgIG15ICRSZXN1bHQgPSBqb2luKAogICAgICAgICAgICAgICAgICAgICcgJywgIlN1cnZleToiIC4gJFJvd1swXSAuICJcdCIsCiAgICAgICAgICAgICAgICAgICAgIlRpY2tldE51bWJlcjoiIC4gJFJvd1sxXSAuICJcdCIsCiAgICAgICAgICAgICAgICAgICAgIlNlbmRUaW1lOiIgLiAkUm93WzJdIC4gIlx0IiwKICAgICAgICAgICAgICAgICAgICAiVm90ZVRpbWU6IiAuICRSb3dbM10gLiAiXHQiLAogICAgICAgICAgICAgICAgICAgICJDcmVhdGVUaW1lOiIgLiAkUm93WzRdIC4gIlx0IgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIiRSZXN1bHRcbiIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJEZvcmNlKSB7CgogICAgICAgICAgICAgICAgIyBkZWxldGUgdm90ZSBkYXRhCiAgICAgICAgICAgICAgICBteSAkVm90ZURlbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVEZWxldGUoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEID0+ICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkUmVxdWVzdERlbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3REZWxldGUoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEID0+ICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAkU2VsZi0+UHJpbnQoIjxncmVlbj5Eb25lLjwvZ3JlZW4+XG4iKTsKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c1NlbmQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpCYXNlQ29tbWFuZCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknLAopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignU2VuZCBwZW5kaW5nIHN1cnZleSByZXF1ZXN0cy4nKTsKICAgICRTZWxmLT5BZGRPcHRpb24oCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ2ZvcmNlJywKICAgICAgICBEZXNjcmlwdGlvbiA9PiAiQWN0dWFsbHkgc2VuZCB0aGUgcmVxdWVzdHMgbm93LiIsCiAgICAgICAgUmVxdWlyZWQgICAgPT4gMCwKICAgICAgICBIYXNWYWx1ZSAgICA9PiAwLAogICAgKTsKCiAgICAkU2VsZi0+QWRkaXRpb25hbEhlbHAoPDwiRU9GIik7CgogPHllbGxvdz5Db25maWd1cmUgZGVsYXllZCByZXF1ZXN0IHNlbmRpbmc6PC95ZWxsb3c+CgogIDx5ZWxsb3c+MS48L3llbGxvdz4gR28gdG8geW91ciBTeXNDb25maWcgKFN1cnZleS0+Q29yZSkgYW5kIGNvbmZpZ3VyZSA8Z3JlZW4+U3VydmV5OjpTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2U8L2dyZWVuPiB0byBhIGhpZ2hlciB2YWx1ZSB0aGFuIDAKICA8eWVsbG93PjIuPC95ZWxsb3c+IENyZWF0ZSBhIHN1cnZleSwgbWFrZSBpdCBtYXN0ZXIKICA8eWVsbG93PjMuPC95ZWxsb3c+IENyZWF0ZSBhIHRpY2tldCwgY2xvc2UgaXQKICA8eWVsbG93PjQuPC95ZWxsb3c+IFdhaXQgdGhlIG5lY2Vzc2FyeSBhbW91bnQgb2YgaG91cnMgeW91IGhhZCBjb25maWd1cmVkCiAgPHllbGxvdz41LjwveWVsbG93PiBZb3UgY2FuIGRvIGEgZHJ5IHJ1biB0byBnZXQgYSBsaXN0IG9mIHN1cnZleSByZXF1ZXN0cyB0aGF0IHdvdWxkIGJlIHNlbnQgKCBkbyBub3QgdXNlIC0tZm9yY2UgKQogIDx5ZWxsb3c+Ni48L3llbGxvdz4gSWYgeW91J3JlIGZpbmUgd2l0aCBpdCwgZ28gYWdhaW4gdG8gU3lzQ29uZmlnIChTdXJ2ZXktPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrKSBhbmQgYWN0aXZhdGUgZGFlbW9uIHRhc2sgPGdyZWVuPiBEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZDwvZ3JlZW4+CkVPRgoKICAgIHJldHVybjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5QcmludCgiPHllbGxvdz5Qcm9jZXNzaW5nIHBlbmRpbmcgc3VydmV5IHJlcXVlc3RzLi4uPC95ZWxsb3c+XG5cbiIpOwoKICAgICMgZ2V0IGZvcmNlIG9wdGlvbgogICAgbXkgJEZvcmNlID0gJFNlbGYtPkdldE9wdGlvbignZm9yY2UnKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZmluZCBzdXJ2ZXlfcmVxdWVzdHMgdGhhdCBoYXZlbid0IGJlZW4gc2VudCB5ZXQKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAiCiAgICAgICAgICAgIFNFTEVDVCBzcS5pZCwgc3EudGlja2V0X2lkLCBzcS5jcmVhdGVfdGltZSwgc3EucHVibGljX3N1cnZleV9rZXkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBzcQogICAgICAgICAgICAgICAgSU5ORVIgSk9JTiB0aWNrZXQgT04gdGlja2V0LmlkID0gc3EudGlja2V0X2lkCiAgICAgICAgICAgIFdIRVJFIHNxLnNlbmRfdGltZSBJUyBOVUxMCiAgICAgICAgICAgIE9SREVSIEJZIHNxLmNyZWF0ZV90aW1lIERFU0MiLAogICAgKTsKCiAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAkU2VsZi0+UHJpbnRFcnJvcigiREIgZXJyb3IgZHVyaW5nIGEgUHJlcGFyZSBmdW5jdGlvbi5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVFcnJvcigpOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQFJlcXVlc3RMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAUmVxdWVzdExpc3QsIHsKICAgICAgICAgICAgSUQgICAgICAgICAgICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIFRpY2tldElEICAgICAgICA9PiAkUm93WzFdLAogICAgICAgICAgICBDcmVhdGVUaW1lICAgICAgPT4gJFJvd1syXSwKICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRSb3dbM10sCiAgICAgICAgfTsKICAgIH0KCiAgICBpZiAoICFAUmVxdWVzdExpc3QgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCJcbjxncmVlbj5Eb25lLjwvZ3JlZW4+XG4iKTsKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKICAgIH0KCiAgICAjIGdldCBTeXN0ZW1UaW1lIGluIFVuaXhUaW1lCiAgICBteSAkU3lzdGVtVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Ub0Vwb2NoKCk7CgogICAgUkVRVUVTVDoKICAgIGZvciBteSAkUmVxdWVzdCAoQFJlcXVlc3RMaXN0KSB7CgogICAgICAgIGZvciBteSAkTmVlZGVkIChxdyhJRCBUaWNrZXRJRCBDcmVhdGVUaW1lKSkgewogICAgICAgICAgICBpZiAoICEkUmVxdWVzdC0+eyROZWVkZWR9ICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCI8cmVkPkVycm9yOiAkTmVlZGVkIG1pc3NpbmcgaW4gc2VydmljZV9yZXF1ZXN0IHJvdy48L3JlZD5cbiIpOwogICAgICAgICAgICAgICAgbmV4dCBSRVFVRVNUOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgY3JlYXRlX3RpbWUgdG8gdW5peHRpbWUKICAgICAgICBteSAkQ3JlYXRlVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRSZXF1ZXN0LT57Q3JlYXRlVGltZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKS0+VG9FcG9jaCgpOwoKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICIgIFJlcXVlc3RJRDogPHllbGxvdz4kUmVxdWVzdC0+e0lEfTwveWVsbG93PlxuICAgLUZvciBUaWNrZXRJRDogJFJlcXVlc3QtPntUaWNrZXRJRH1cbiIKICAgICAgICApOwoKICAgICAgICBteSAkU2VuZEluSG91cnNBZnRlckNsb3NlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScpOwoKICAgICAgICAjIGRvbid0IHNlbmQgZm9yIHN1cnZleV9yZXF1ZXN0cyB0aGF0IGFyZSB5b3VuZ2VyIHRoYW4gQ3JlYXRlVGltZSArICRTZW5kSU5Ib3Vyc0FmdGVyQ2xvc2UKICAgICAgICBpZiAoICRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgKiAzXzYwMCArICRDcmVhdGVUaW1lID4gJFN5c3RlbVRpbWUgKSB7CiAgICAgICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgICAgICIgICAtU2tpcHBlZCBiZWNhdXNlIHNlbmQgdGltZSB3YXNuJ3QgcmVhY2hlZCB5ZXQuXG5cbiIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbmV4dCBSRVFVRVNUOwogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAiICAgLVNlbmRpbmcgcmVxdWVzdC4uLlxuIgogICAgICAgICk7CgogICAgICAgIGlmICgkRm9yY2UpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlJlcXVlc3RTZW5kKAogICAgICAgICAgICAgICAgVHJpZ2dlclNlbmRSZXF1ZXN0cyA9PiAxLAogICAgICAgICAgICAgICAgU3VydmV5UmVxdWVzdElEICAgICA9PiAkUmVxdWVzdC0+e0lEfSwKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgPT4gJFJlcXVlc3QtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgICAgID0+ICRSZXF1ZXN0LT57UHVibGljU3VydmV5S2V5fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIiAgICA8cmVkPkVycm9yIHNlbmRpbmcgdGhlIHJlcXVlc3Q8L3JlZD5cbiIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFN1Y2Nlc3MgZXEgJ1F1ZXVlJyB8fCAkU3VjY2VzcyBlcSAnVHlwZScgfHwgJFN1Y2Nlc3MgZXEgJ1NlcnZpY2UnICkgewogICAgICAgICAgICAgICAgJFNlbGYtPlByaW50KCIgICAgPHJlZD5FcnJvciBzZW5kaW5nIHRoZSByZXF1ZXN0PC9yZWQ+XG4iKTsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiICAgIDxyZWQ+VGlja2V0ICRTdWNjZXNzIGRvZXMgbm90IG1hdGNoIHRvIGFzc2lnbmVkIHN1cnZleSByZXF1ZXN0LjwvcmVkPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+UHJpbnQoIiAgICA8Z3JlZW4+UmVxdWVzdCBpcyBzZW50IHN1Y2Nlc3NmdWxseS48L2dyZWVuPlxuIik7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJFNlbGYtPlByaW50KCJcbiIpOwogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHBzOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6U3VydmV5TGlzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KCBmaXJzdCApOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvY2snLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTTEEnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlR5cGUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QuCiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkcyBmb3IgdGlja2V0IG9iamVjdC4KICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ1RpY2tldCddLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBHZXRPYmplY3ROYW1lIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICdTdXJ2ZXlMaXN0JzsKfQoKc3ViIEdldE9iamVjdEJlaGF2aW91cnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlQmVoYXZpb3VycyA9ICgKICAgICAgICBQcm92aWRlc0Rhc2hib2FyZFdpZGdldCA9PiAwLAogICAgKTsKCiAgICByZXR1cm4gJUJlaGF2aW91cnM7Cn0KCnN1YiBHZXRPYmplY3RBdHRyaWJ1dGVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBHZXQgbmVlZGVkIG9iamVjdHMuCiAgICBteSAkTG9ja09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvY2snKTsKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgbXkgJUxpbWl0ID0gKAogICAgICAgIDUgICAgICAgICA9PiA1LAogICAgICAgIDEwICAgICAgICA9PiAxMCwKICAgICAgICAyMCAgICAgICAgPT4gMjAsCiAgICAgICAgNTAgICAgICAgID0+IDUwLAogICAgICAgIDEwMCAgICAgICA9PiAxMDAsCiAgICAgICAgdW5saW1pdGVkID0+IFRyYW5zbGF0YWJsZSgndW5saW1pdGVkJyksCiAgICApOwoKICAgICMgR2V0IFN1cnZleSBMaXN0LgogICAgbXkgJVN1cnZleUxpc3QgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlMaXN0KCk7CgogICAgbXkgJVN1cnZleUF0dHJpYnV0ZXMgPSAleyAkU2VsZi0+X1N1cnZleUF0dHJpYnV0ZXMoKSB9OwogICAgbXkgJU9yZGVyQnkgICAgICAgICAgPSBtYXAgeyAkXyA9PiAkU3VydmV5QXR0cmlidXRlc3skX30gfSBncmVwIHsgJF8gbmUgJ051bWJlcicgfSBrZXlzICVTdXJ2ZXlBdHRyaWJ1dGVzOwoKICAgICMgR2V0IGR5bmFtaWMgZmllbGQgYmFja2VuZCBvYmplY3QuCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAjIFJlbW92ZSBub24gc29ydGFibGUgKGFuZCBvcmRlcmFibGUpIER5bmFtaWMgRmllbGRzLgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBDaGVjayBpZiBkeW5hbWljIGZpZWxkIGlzIHNvcnRhYmxlLgogICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc1NvcnRhYmxlJywKICAgICAgICApOwoKICAgICAgICAjIFJlbW92ZSBkeW5hbWljIGZpZWxkcyBmcm9tIHRoZSBsaXN0IGlmIGlzIG5vdCBzb3J0YWJsZS4KICAgICAgICBpZiAoICEkSXNTb3J0YWJsZSApIHsKICAgICAgICAgICAgZGVsZXRlICRPcmRlckJ5eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJVNvcnRTZXF1ZW5jZSA9ICgKICAgICAgICBVcCAgID0+IFRyYW5zbGF0YWJsZSgnYXNjZW5kaW5nJyksCiAgICAgICAgRG93biA9PiBUcmFuc2xhdGFibGUoJ2Rlc2NlbmRpbmcnKSwKICAgICk7CgogICAgbXkgQE9iamVjdEF0dHJpYnV0ZXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQXR0cmlidXRlcyB0byBiZSBwcmludGVkJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDAsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1N1cnZleUF0dHJpYnV0ZXMnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAxLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlU3VydmV5QXR0cmlidXRlcywKICAgICAgICAgICAgU29ydCAgICAgICAgICAgICA9PiAnSW5kaXZpZHVhbEtleScsCiAgICAgICAgICAgIFNvcnRJbmRpdmlkdWFsICAgPT4gJFNlbGYtPl9Tb3J0ZWRBdHRyaWJ1dGVzKCksCgogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU29ydCBzZXF1ZW5jZScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMSwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAwLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdTb3J0U2VxdWVuY2UnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMSwKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJVNvcnRTZXF1ZW5jZSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0xpbWl0JyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0xpbWl0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnU2VsZWN0RmllbGQnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgICAgID0+IDEsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVMaW1pdCwKICAgICAgICAgICAgU29ydCAgICAgICAgICAgICA9PiAnSW5kaXZpZHVhbEtleScsCiAgICAgICAgICAgIFNvcnRJbmRpdmlkdWFsICAgPT4gWyAnNScsICcxMCcsICcyMCcsICc1MCcsICcxMDAnLCAndW5saW1pdGVkJywgXSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0Nsb3NlIFRpbWUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ2xvc2VUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdUaWNrZXRDbG9zZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdUaWNrZXRDbG9zZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnQ3JlYXRlIFRpbWUnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnQ3JlYXRlVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIFRpbWVTdGFydCA9PiAnVGlja2V0Q3JlYXRlVGltZU5ld2VyRGF0ZScsCiAgICAgICAgICAgICAgICBUaW1lU3RvcCAgPT4gJ1RpY2tldENyZWF0ZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU2VuZCBUaW1lJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1NlbmRUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdSZXF1ZXN0U2VuZFRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdSZXF1ZXN0U2VuZFRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnVm90ZSBUaW1lJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1ZvdGVUaW1lJywKICAgICAgICAgICAgVGltZVBlcmlvZEZvcm1hdCA9PiAnRGF0ZUlucHV0Rm9ybWF0JywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnVGltZScsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgVGltZVN0YXJ0ID0+ICdSZXF1ZXN0Vm90ZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdSZXF1ZXN0Vm90ZVRpbWVPbGRlckRhdGUnLAogICAgICAgICAgICB9LAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IExpc3QnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDAsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMSwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnU3VydmV5SURzJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnU2VsZWN0RmllbGQnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlU3VydmV5TGlzdCwKICAgICAgICB9LAoKICAgICk7CgogICAgcmV0dXJuIEBPYmplY3RBdHRyaWJ1dGVzOwp9CgpzdWIgR2V0U3RhdFRhYmxlUHJldmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkU2VsZi0+R2V0U3RhdFRhYmxlKAogICAgICAgICVQYXJhbSwKICAgICAgICBQcmV2aWV3ID0+IDEsCiAgICApOwp9CgpzdWIgR2V0U3RhdFRhYmxlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAlU3VydmV5QXR0cmlidXRlcyAgICA9IG1hcCB7ICRfID0+IDEgfSBAeyAkUGFyYW17WFZhbHVlfS0+e1NlbGVjdGVkVmFsdWVzfSB9OwogICAgbXkgJFNvcnRlZEF0dHJpYnV0ZXNSZWYgPSAkU2VsZi0+X1NvcnRlZEF0dHJpYnV0ZXMoKTsKICAgIG15ICRQcmV2aWV3ICAgICAgICAgICAgID0gJFBhcmFte1ByZXZpZXd9OwoKICAgICMgR2V0IG5lZWRlZCBvYmplY3RzLgogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgIyBDaGVjayBpZiBhIGVudW1lcmF0aW9uIGlzIHJlcXVlc3RlZC4KICAgIG15ICRBZGRFbnVtZXJhdGlvbiA9IDA7CiAgICBpZiAoICRTdXJ2ZXlBdHRyaWJ1dGVze051bWJlcn0gKSB7CiAgICAgICAgJEFkZEVudW1lcmF0aW9uID0gMTsKICAgICAgICBkZWxldGUgJFN1cnZleUF0dHJpYnV0ZXN7TnVtYmVyfTsKICAgIH0KCiAgICAjIFNldCBkZWZhdWx0IHZhbHVlcyBpZiBubyBzb3J0IG9yIG9yZGVyIGF0dHJpYnV0ZSBpcyBnaXZlbi4KICAgIG15ICRTb3J0UmVmID0gZmlyc3QgeyAkXy0+e0VsZW1lbnR9IGVxICdTb3J0U2VxdWVuY2UnIH0gQHsgJFBhcmFte1ZhbHVlU2VyaWVzfSB9OwogICAgbXkgJFNvcnQgICAgPSAkU29ydFJlZiA/ICRTb3J0UmVmLT57U2VsZWN0ZWRWYWx1ZXN9LT5bMF0gOiAnRG93bic7CiAgICBteSAkTGltaXQgICA9ICRQYXJhbXtSZXN0cmljdGlvbnN9LT57TGltaXR9OwoKICAgICRQYXJhbXtSZXN0cmljdGlvbnN9LT57TGltaXR9ID0gJExpbWl0IHx8IDEwMF8wMDBfMDAwOwoKICAgICMgRmluZCBvdXQgaWYgdGhlIGV4dGVuZGVkIHZlcnNpb24gb2YgVGlja2V0R2V0IGlzIG5lZWRlZC4KICAgIG15ICRFeHRlbmRlZCA9ICRTZWxmLT5fRXh0ZW5kZWRBdHRyaWJ1dGVzQ2hlY2soCiAgICAgICAgU3VydmV5QXR0cmlidXRlcyA9PiBcJVN1cnZleUF0dHJpYnV0ZXMsCiAgICApOwoKICAgICMgRmluZCBvdXQgaWYgZHluYW1pYyBmaWVsZHMgYXJlIHJlcXVpcmVkLgogICAgbXkgJE5lZWREeW5hbWljRmllbGRzID0gMDsKICAgIERZTkFNSUNGSUVMRFNORUVERUQ6CiAgICBmb3IgbXkgJFBhcmFtZXRlck5hbWUgKCBzb3J0IGtleXMgJVN1cnZleUF0dHJpYnV0ZXMgKSB7CiAgICAgICAgaWYgKCAkUGFyYW1ldGVyTmFtZSA9fiBte1xBIER5bmFtaWNGaWVsZF8gfXhtcyApIHsKICAgICAgICAgICAgJE5lZWREeW5hbWljRmllbGRzID0gMTsKICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTERTTkVFREVEOwogICAgICAgIH0KICAgIH0KCiAgICAjIEdldCBpbnZvbHZlZCBUaWNrZXRzLgogICAgbXkgQFRpY2tldElEczsKICAgIGlmICgkUHJldmlldykgewogICAgICAgIEBUaWNrZXRJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgUmVzdWx0ICAgICA9PiAnQVJSQVknLAogICAgICAgICAgICBQZXJtaXNzaW9uID0+ICdybycsCiAgICAgICAgICAgIExpbWl0ICAgICAgPT4gMTAsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIEBUaWNrZXRJRHMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRTZWFyY2goCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgUmVzdWx0ICAgICA9PiAnQVJSQVknLAogICAgICAgICAgICBQZXJtaXNzaW9uID0+ICdybycsCiAgICAgICAgICAgICV7ICRQYXJhbXtSZXN0cmljdGlvbnN9IH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIENyZWF0ZSBsb29rdXAgaGFzaCBmb3IgVGlja2V0SURzIGR1ZSB0byBwZXJmb3JtYW5jZSByZWFzb25zLgogICAgbXkgJVRpY2tldElEcyA9IG1hcCB7ICRfID0+IDEgfSBAVGlja2V0SURzOwoKICAgICMgR2V0IHRoZSBzdXJ2ZXkgZGF0YS4KICAgIG15IEBTdXJ2ZXlJRHM7CiAgICBteSBAU3RhdEFycmF5OwoKICAgIGlmICgkUHJldmlldykgewoKICAgICAgICBAU3VydmV5SURzID0gJFN1cnZleU9iamVjdC0+U3VydmV5U2VhcmNoKAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgTGltaXQgID0+IDEwLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgQFN1cnZleUlEcyA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVNlYXJjaCgKICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICV7ICRQYXJhbXtSZXN0cmljdGlvbnN9IH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIEdldCBuZWVkZWQgZGF0YSBhbmQgY3JlYXRlIGxvb2t1cCB0YWJsZXMuCiAgICBteSAlU3VydmV5UmF3RGF0YTsKICAgIG15ICVRdWVzdGlvbnM7CgogICAgbXkgJFN0YXRzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN0YXRzJyk7CgogICAgU1VSVkVZSUQ6CiAgICBmb3IgbXkgJFN1cnZleUlEIChAU3VydmV5SURzKSB7CgogICAgICAgICMgQ2hlY2sgc3VydmV5IHJlc3RyaWN0aW9uLgogICAgICAgICMgQ2FuJ3QgZG9uZSBieSBTdXJ2ZXlTZWFyY2guCiAgICAgICAgbmV4dCBTVVJWRVlJRCBpZiAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N1cnZleUlEc30gJiYgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntTdXJ2ZXlJRHN9IG5lICRTdXJ2ZXlJRDsKCiAgICAgICAgIyBTdXJ2ZXkgcmF3IGRhdGEuCiAgICAgICAgbXkgJVN1cnZleVJhdyA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgICRTdXJ2ZXlSYXdEYXRheyRTdXJ2ZXlJRH0gPSBcJVN1cnZleVJhdzsKCiAgICAgICAgIyBRdWVzdGlvbiBkYXRhLgogICAgICAgIG15IEBRdWVzdGlvbnNMaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKCiAgICAgICAgJFF1ZXN0aW9uc3skU3VydmV5SUR9ID0gXEBRdWVzdGlvbnNMaXN0OwoKICAgICAgICAjIEdldCBwdWJsaWMgc3VydmV5IGtleXMuCiAgICAgICAgbXkgJFB1YmxpY1N1cnZleUtleXM7CiAgICAgICAgaWYgKCRQcmV2aWV3KSB7CiAgICAgICAgICAgICRQdWJsaWNTdXJ2ZXlLZXlzID0gJFN1cnZleU9iamVjdC0+UHVibGljU3VydmV5S2V5R2V0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICAgICAgTGltaXQgICAgPT4gMTAsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkUHVibGljU3VydmV5S2V5cyA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUtleUdldCgKICAgICAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IHJlcXVlc3QuCiAgICAgICAgUFVCTElDS0VZOgogICAgICAgIGZvciBteSAkUHVibGljS2V5ICggQHskUHVibGljU3VydmV5S2V5c30gKSB7CgogICAgICAgICAgICBteSAlU3VydmV5UmVxdWVzdCA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RHZXQoCiAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY0tleSwKICAgICAgICAgICAgICAgICV7ICRQYXJhbXtSZXN0cmljdGlvbnN9IH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIFNraXAgaWYgbm8gc3VydmV5IHJlcXVlc3QgZGF0YSBmb3VuZCAoZS5nLiBzZW5kIHRpbWUgZmlsdGVyKS4KICAgICAgICAgICAgbmV4dCBQVUJMSUNLRVkgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCBcJVN1cnZleVJlcXVlc3QgKTsKCiAgICAgICAgICAgICMgU2tpcCBpZiB0aWNrZXQgc3BlY2lmaWMgZmlsdGVycyBhcmUgc2V0LgogICAgICAgICAgICBuZXh0IFBVQkxJQ0tFWSBpZiAhJFRpY2tldElEc3sgJFN1cnZleVJlcXVlc3R7VGlja2V0SUR9IH07CgogICAgICAgICAgICAjIEdldCBhbGwgdm90ZXMgZm9yIHRoaXMgcmVxdWVzdC4KICAgICAgICAgICAgbXkgQFJlcXVlc3RWb3RlTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXRBbGwoCiAgICAgICAgICAgICAgICBSZXF1ZXN0SUQgPT4gJFN1cnZleVJlcXVlc3R7UmVxdWVzdElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBRdWVzdGlvbnM7CgogICAgICAgICAgICAjIExvb3AgdGhyb3VnaCB2b3RlIGRhdGEgdG8gbWVyZ2Ugdm90ZXMgaW50byBzdXJ2ZXkgcmVxdWVzdCBoYXNoLgogICAgICAgICAgICBWT1RFREFUQToKICAgICAgICAgICAgZm9yIG15ICRWb3RlRGF0YSAoQFJlcXVlc3RWb3RlTGlzdCkgewoKICAgICAgICAgICAgICAgIG15ICRRdWVzdGlvbiAgICAgPSAkVm90ZURhdGEtPntRdWVzdGlvbn07CiAgICAgICAgICAgICAgICBteSAkUXVlc3Rpb25JRCAgID0gJFZvdGVEYXRhLT57UXVlc3Rpb25JRH07CiAgICAgICAgICAgICAgICBteSAkUXVlc3Rpb25UeXBlID0gJFZvdGVEYXRhLT57UXVlc3Rpb25UeXBlfTsKICAgICAgICAgICAgICAgIG15ICRWb3RlVmFsdWUgICAgPSAkVm90ZURhdGEtPntWb3RlVmFsdWV9OwoKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkUXVlc3Rpb25UeXBlIGVxICdOUFMnCiAgICAgICAgICAgICAgICAgICAgfHwgJFF1ZXN0aW9uVHlwZSBlcSAnUmFkaW8nCiAgICAgICAgICAgICAgICAgICAgfHwgJFF1ZXN0aW9uVHlwZSBlcSAnQ2hlY2tib3gnCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIG15ICVBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlcklEID0+ICRWb3RlVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb25UeXBlIGVxICdDaGVja2JveCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ291bnRBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJDb3VudCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgb25seSBvbmUgYW5zd2VyIHVzZSBDaGVja2VkLgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRDb3VudEFuc3dlciA9PSAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEFuc3dlcntBbnN3ZXJ9ID0gVHJhbnNsYXRhYmxlKCdDaGVja2VkJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICggJFN1cnZleVJlcXVlc3R7JFF1ZXN0aW9ufSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlSZXF1ZXN0eyRRdWVzdGlvbn0gLj0gJEFuc3dlcntBbnN3ZXJ9IC4gIlxuIjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5UmVxdWVzdHskUXVlc3Rpb259ID0gJEFuc3dlcntBbnN3ZXJ9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uVHlwZSBlcSAnWWVzTm8nIHx8ICRRdWVzdGlvblR5cGUgZXEgJ1RleHRhcmVhJyApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb25UeXBlIGVxICdUZXh0YXJlYScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkVm90ZVZhbHVlID1+IHN7IFxBIFwkaHRtbFwvdGV4dFwkIFxzKiAoLiopIH17JDF9eG1zOwogICAgICAgICAgICAgICAgICAgICAgICAkVm90ZVZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRWb3RlVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkU3VydmV5UmVxdWVzdHskUXVlc3Rpb259ID0gJFZvdGVWYWx1ZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBHZXQgcXVlc3Rpb24gbGlzdC4KICAgICAgICAgICAgbXkgJFF1ZXN0aW9uc0xpc3QgPSAkUXVlc3Rpb25zeyAkU3VydmV5UmVxdWVzdHtTdXJ2ZXlJRH0gfTsKICAgICAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoIEB7JFF1ZXN0aW9uc0xpc3R9ICkgewoKICAgICAgICAgICAgICAgICMgUHVzaCBxdWVzdGlvbnMgaW50byBhcnJheSBmb3IgbGF0ZXIgdXNlLgogICAgICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25zLCAkUXVlc3Rpb24tPntRdWVzdGlvbn07CgogICAgICAgICAgICAgICAgIyBEZWZhdWx0IHZhbHVlLgogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkU3VydmV5UmVxdWVzdHsgJFF1ZXN0aW9uLT57UXVlc3Rpb259IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlSZXF1ZXN0eyAkUXVlc3Rpb24tPntRdWVzdGlvbn0gfSA9ICIgIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQFJlc3VsdFJvdzsKICAgICAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFN1cnZleVJlcXVlc3R7VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRXh0ZW5kZWQgICAgICA9PiAkRXh0ZW5kZWQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+ICROZWVkRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgTWVyZ2UgdGlja2V0IGFuZCBzdXJ2ZXkgcmVxdWVzdCBkYXRhLgogICAgICAgICAgICBteSAlU3VydmV5RGF0YSA9ICggJVN1cnZleVJlcXVlc3QsICVUaWNrZXQgKTsKCiAgICAgICAgICAgICMgTWVyZ2UgU3VydmV5VGl0bGUgaW50byBTdXJ2ZXlEYXRhLgogICAgICAgICAgICAkU3VydmV5RGF0YXtTdXJ2ZXlUaXRsZX0gPSAkU3VydmV5UmF3RGF0YXskU3VydmV5SUR9LT57VGl0bGV9OwoKICAgICAgICAgICAgQVRUUklCVVRFOgogICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7JFNvcnRlZEF0dHJpYnV0ZXNSZWZ9ICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRTdXJ2ZXlBdHRyaWJ1dGVzeyRBdHRyaWJ1dGV9OwoKICAgICAgICAgICAgICAgICMgQ2xlYW4gU3VydmV5RGF0YS4KICAgICAgICAgICAgICAgIGlmICggISRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9ID0gJyc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRQYXJhbXtUaW1lWm9uZX0KICAgICAgICAgICAgICAgICAgICAmJiAkU3VydmV5RGF0YXskQXR0cmlidXRlfQogICAgICAgICAgICAgICAgICAgICYmICRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9ID1+IC9cQShcZHs0fSktKFxkezJ9KS0oXGR7Mn0pXHMoXGR7Mn0pOihcZHsyfSk6KFxkezJ9KVx6LwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkU3VydmV5RGF0YXskQXR0cmlidXRlfSA9ICRTdGF0c09iamVjdC0+X0Zyb21PVFJTVGltZVpvbmUoCiAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyAgID0+ICRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaW1lWm9uZSA9PiAkUGFyYW17VGltZVpvbmV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJFN1cnZleURhdGF7JEF0dHJpYnV0ZX0gLj0gIiAoJFBhcmFte1RpbWVab25lfSkiOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQFJlc3VsdFJvdywgJFN1cnZleURhdGF7JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgTWVyZ2UgcXVlc3Rpb25zIGludG8gcmVzdWx0IHJvdy4KICAgICAgICAgICAgUVVFU1RJT05TOgogICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25zKSB7CgogICAgICAgICAgICAgICAgcHVzaCBAUmVzdWx0Um93LCAkU3VydmV5RGF0YXskUXVlc3Rpb259OwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBTdGF0QXJyYXksIFxAUmVzdWx0Um93OwogICAgICAgIH0KICAgIH0KCiAgICBAU3RhdEFycmF5ID0gJFNlbGYtPl9JbmRpdmlkdWFsUmVzdWx0T3JkZXIoCiAgICAgICAgU3RhdEFycmF5ID0+IFxAU3RhdEFycmF5LAogICAgICAgIFNvcnQgICAgICA9PiAkU29ydCwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgKTsKCiAgICByZXR1cm4gQFN0YXRBcnJheTsKfQoKc3ViIEdldEhlYWRlckxpbmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVTZWxlY3RlZEF0dHJpYnV0ZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte1hWYWx1ZX0tPntTZWxlY3RlZFZhbHVlc30gfTsKCiAgICBteSAkU3VydmV5QXR0cmlidXRlcyAgICA9ICRTZWxmLT5fU3VydmV5QXR0cmlidXRlcygpOwogICAgbXkgJFNvcnRlZEF0dHJpYnV0ZXNSZWYgPSAkU2VsZi0+X1NvcnRlZEF0dHJpYnV0ZXMoKTsKICAgIG15IEBIZWFkZXJMaW5lOwoKICAgICMgR2V0IGxhbmd1YWdlIG9iamVjdC4KICAgIG15ICRMYW5ndWFnZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKTsKCiAgICAjIEdldCBzdXJ2ZXkgb2JqZWN0LgogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7JFNvcnRlZEF0dHJpYnV0ZXNSZWZ9ICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkU2VsZWN0ZWRBdHRyaWJ1dGVzeyRBdHRyaWJ1dGV9OwogICAgICAgIHB1c2ggQEhlYWRlckxpbmUsICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkU3VydmV5QXR0cmlidXRlcy0+eyRBdHRyaWJ1dGV9ICk7CiAgICB9CgogICAgIyBBZGQgcXVlc3Rpb25zLgogICAgIyBPbmx5IGlmIHN1cnZleSByZXN0cmljdGlvbiBpcyBhY3RpdmUuCiAgICAjIEdldCBzdXJ2ZXkgaWRzLgogICAgaWYgKCAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N1cnZleUlEc30gKSB7CgogICAgICAgIG15IEBTdXJ2ZXlJRHMgPSAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N1cnZleUlEc307CgogICAgICAgICMgR2V0IHF1ZXN0aW9ucy4KICAgICAgICBteSBAUXVlc3Rpb25zOwogICAgICAgIGZvciBteSAkU3VydmV5SUQgKEBTdXJ2ZXlJRHMpIHsKCiAgICAgICAgICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRMaXN0IChATGlzdCkgewogICAgICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25zLCAkTGlzdC0+e1F1ZXN0aW9ufTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVzaCBASGVhZGVyTGluZSwgQFF1ZXN0aW9uczsKICAgIH0KCiAgICByZXR1cm4gXEBIZWFkZXJMaW5lOwp9CgpzdWIgRXhwb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgSW1wb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgX1N1cnZleUF0dHJpYnV0ZXMgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIEdldCBjb25maWcgb2JqZWN0LgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJVN1cnZleUF0dHJpYnV0ZXMgPSAoCgogICAgICAgIFRpY2tldE51bWJlciA9PiAnVGlja2V0TnVtYmVyJywKICAgICAgICBTdXJ2ZXlUaXRsZSAgPT4gJ1N1cnZleSBUaXRsZScsCiAgICAgICAgQ3JlYXRlZCAgICAgID0+ICdDcmVhdGUgVGltZScsCiAgICAgICAgQ2xvc2VkICAgICAgID0+ICdDbG9zZSBUaW1lJywKICAgICAgICBTZW5kVGltZSAgICAgPT4gJ1N1cnZleSBTZW5kIFRpbWUnLAogICAgICAgIFZvdGVUaW1lICAgICA9PiAnU3VydmV5IFZvdGUgVGltZScsCiAgICAgICAgUXVldWUgICAgICAgID0+ICdRdWV1ZScsCiAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdDdXN0b21lcklEJywKCiAgICApOwoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSApIHsKICAgICAgICAkU3VydmV5QXR0cmlidXRlc3tTZXJ2aWNlfSA9ICdTZXJ2aWNlJzsKICAgIH0KCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAkU3VydmV5QXR0cmlidXRlc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgfQoKICAgIHJldHVybiBcJVN1cnZleUF0dHJpYnV0ZXM7Cn0KCnN1YiBfU29ydGVkQXR0cmlidXRlcyB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgIG15IEBTb3J0ZWRBdHRyaWJ1dGVzID0gcXcoCiAgICAgICAgVGlja2V0TnVtYmVyCiAgICAgICAgU3VydmV5VGl0bGUKICAgICAgICBDcmVhdGVkCiAgICAgICAgQ2xvc2VkCiAgICAgICAgU2VuZFRpbWUKICAgICAgICBWb3RlVGltZQogICAgICAgIFF1ZXVlCiAgICAgICAgU2VydmljZQogICAgICAgIEN1c3RvbWVySUQKICAgICk7CgogICAgIyBDeWNsZSB0cm91Z2h0IHRoZSBEeW5hbWljIEZpZWxkcy4KICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgQWRkIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlLgogICAgICAgIHB1c2ggQFNvcnRlZEF0dHJpYnV0ZXMsICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgIH0KCiAgICByZXR1cm4gXEBTb3J0ZWRBdHRyaWJ1dGVzOwp9CgpzdWIgX0V4dGVuZGVkQXR0cmlidXRlc0NoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgQEV4dGVuZGVkQXR0cmlidXRlcyA9IHF3KAogICAgICAgIENsb3NlZAogICAgKTsKCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoQEV4dGVuZGVkQXR0cmlidXRlcykgewogICAgICAgIHJldHVybiAxIGlmICRQYXJhbXtTdXJ2ZXlBdHRyaWJ1dGVzfXskQXR0cmlidXRlfTsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBfSW5kaXZpZHVhbFJlc3VsdE9yZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSBAVW5zb3J0ZWQgPSBAeyAkUGFyYW17U3RhdEFycmF5fSB9OwoKICAgIG15IEBTb3J0ZWQgPSBzb3J0IHsgJGEgPD0+ICRiIH0gQFVuc29ydGVkOwoKICAgICMgTWFrZSBhIHJldmVyc2Ugc29ydCBpZiBuZWVkZWQuCiAgICBpZiAoICRQYXJhbXtTb3J0fSBlcSAnRG93bicgKSB7CiAgICAgICAgQFNvcnRlZCA9IHJldmVyc2UgQFNvcnRlZDsKICAgIH0KCiAgICAjIFRha2UgY2FyZSBhYm91dCB0aGUgbGltaXQuCiAgICBpZiAoICRQYXJhbXtMaW1pdH0gJiYgJFBhcmFte0xpbWl0fSBuZSAndW5saW1pdGVkJyApIHsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIEBTb3J0ZWQgPSBncmVwIHsgKyskQ291bnQgPD0gJFBhcmFte0xpbWl0fSB9IEBTb3J0ZWQ7CiAgICB9CgogICAgcmV0dXJuIEBTb3J0ZWQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgRGlnZXN0OjpNRDU7CnVzZSBNYWlsOjpBZGRyZXNzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKdXNlIHBhcmVudCBxdygKICAgIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OkFuc3dlcgogICAgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UXVlc3Rpb24KICAgIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlJlcXVlc3QKICAgIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlZvdGUKKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkVuY29kZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkpTT04nLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpTdXJ2ZXkgLSBzdXJ2ZXkgbGliCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBzdXJ2ZXkgZnVuY3Rpb25zLiBFLiBnLiB0byBhZGQgc3VydmV5IG9yIGFuZCBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBsaWtlIGVzY2FwZSBzdHJpbmcgbmVlZGVkIGZvciBzb21lIGRhdGFiYXNlcyAoZS5nLiBvcmFjbGUpCiAgICAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkdldERhdGFiYXNlRnVuY3Rpb24oJ0xpa2VFc2NhcGVTdHJpbmcnKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBTdXJ2ZXlBZGQoKQoKdG8gYWRkIGEgbmV3IHN1cnZleQoKICAgIG15ICRTdXJ2ZXlJRCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUFkZCgKICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICA9PiAnQSBUaXRsZScsCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICAgICA9PiAncXVhbGl0eUBleGFtcGxlLmNvbScsCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCAgICA9PiAnSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shJywKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgICAgID0+ICdEZWFyIGN1c3RvbWVyLi4uJywKICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgICAgID0+IFsyLCA1LCA5XSwgICMgKG9wdGlvbmFsKSBzdXJ2ZXkgaXMgdmFsaWQgZm9yIHRoZXNlIHF1ZXVlcwogICAgICAgIFRpY2tldFR5cGVJRHMgICAgICAgICAgPT4gWzEsIDIsIDNdLCAgIyAob3B0aW9uYWwpIHN1cnZleSBpcyB2YWxpZCBmb3IgdGhlc2UgdGlja2V0IHR5cGVzCiAgICAgICAgU2VydmljZUlEcyAgICAgICAgICAgICA9PiBbMSwgMiwgM10sICAjIChvcHRpb25hbCkgc3VydmV5IGlzIHZhbGlkIGZvciB0aGVzZSBzZXJ2aWNlcwogICAgICAgIEN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPT4gewogICAgICAgICAgICAnVXNlckZpcnN0bmFtZScgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdOZWdhdGlvbicgPT4gMCwKICAgICAgICAgICAgICAgICAgICAnUmVnRXhwVmFsdWUnID0+ICdeTWknCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdOZWdhdGlvbicgPT4gMSwKICAgICAgICAgICAgICAgICAgICAnUmVnRXhwVmFsdWUnID0+ICdeS2EnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgXSwKICAgICAgICB9LCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgU3VydmV5QWRkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKAogICAgICAgIHF3KAogICAgICAgIFVzZXJJRCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24KICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgTm90aWZpY2F0aW9uU3ViamVjdCBOb3RpZmljYXRpb25Cb2R5CiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgYnVpbGQgc2VuZCBjb25kaXRpb24gc3RyaW5nCiAgICBteSAkU2VuZENvbmRpdGlvblN0cmcgPSAkU2VsZi0+X0J1aWxkU2VuZENvbmRpdGlvblN0cmcoJVBhcmFtKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgaW5zZXJ0IGEgbmV3IHN1cnZleQogICAgbXkgJFN0YXR1cyA9ICdOZXcnOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleSAodGl0bGUsIGludHJvZHVjdGlvbiwgZGVzY3JpcHRpb24sIG5vdGlmaWNhdGlvbl9zZW5kZXIsCiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25fc3ViamVjdCwgbm90aWZpY2F0aW9uX2JvZHksIHN0YXR1cywgc2VuZF9jb25kaXRpb25zLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LAogICAgICAgICAgICAgICAgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieSApCiAgICAgICAgICAgIFZBTFVFUyAoID8sID8sID8sID8sID8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1RpdGxlfSwgICAgICAgICAgICAgIFwkUGFyYW17SW50cm9kdWN0aW9ufSwgICAgICAgIFwkUGFyYW17RGVzY3JpcHRpb259LAogICAgICAgICAgICBcJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0sIFwkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0sIFwkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0sCiAgICAgICAgICAgIFwkU3RhdHVzLCBcJFNlbmRDb25kaXRpb25TdHJnLCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGdldCB0aGUgaWQgb2YgdGhlIHN1cnZleQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5CiAgICAgICAgICAgIFdIRVJFIHRpdGxlID0gPwogICAgICAgICAgICAgICAgQU5EIGludHJvZHVjdGlvbiA9ID8KICAgICAgICAgICAgICAgIEFORCBkZXNjcmlwdGlvbiA9ID8KICAgICAgICAgICAgT1JERVIgQlkgaWQgREVTQycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1RpdGxlfSwgXCRQYXJhbXtJbnRyb2R1Y3Rpb259LCBcJFBhcmFte0Rlc2NyaXB0aW9ufSwgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRTdXJ2ZXlJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdXJ2ZXlJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyBzZXQgdGhlIHN1cnZleSBudW1iZXIKICAgIG15ICRTdXJ2ZXlOdW1iZXIgPSAkU3VydmV5SUQgKyAxMDAwMDsKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgIFNFVCBzdXJ2ZXludW1iZXIgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5TnVtYmVyLCBcJFN1cnZleUlELCBdLAogICAgKTsKCiAgICByZXR1cm4gJFN1cnZleUlEIGlmICEkUGFyYW17UXVldWVzfTsKICAgIHJldHVybiAkU3VydmV5SUQgaWYgcmVmICRQYXJhbXtRdWV1ZXN9IG5lICdBUlJBWSc7CgogICAgIyBpbnNlcnQgbmV3IHN1cnZleS1xdWV1ZSByZWxhdGlvbnMKICAgICRTZWxmLT5TdXJ2ZXlRdWV1ZVNldCgKICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgUXVldWVJRHMgPT4gJFBhcmFte1F1ZXVlc30sCiAgICApOwoKICAgIHJldHVybiAkU3VydmV5SUQ7Cn0KCj1oZWFkMiBTdXJ2ZXlHZXQoKQoKdG8gZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIGEgc3VydmV5CgogICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxMjMsCiAgICApOwoKUmV0dXJuczoKICAgICVTdXJ2ZXkgPSAoCiAgICAgICAgIkNoYW5nZUJ5IiA9PiAxLAogICAgICAgICJDaGFuZ2VUaW1lIiA9PiAiMjAxNy0wOC0zMCAxMToyNjo0MSIsCiAgICAgICAgIkNoYW5nZVVzZXJGaXJzdG5hbWUiID0+ICJKb2huIiwKICAgICAgICAiQ2hhbmdlVXNlckZ1bGxuYW1lIiA9PiAiSm9obiBEb2UiLAogICAgICAgICJDaGFuZ2VVc2VyTGFzdG5hbWUiID0+ICJEb2UiLAogICAgICAgICJDaGFuZ2VVc2VyTG9naW4iID0+ICJqb2huIiwKICAgICAgICAiQ3JlYXRlQnkiID0+IDEsCiAgICAgICAgIkNyZWF0ZVRpbWUiID0+ICIyMDE3LTA4LTMwIDExOjI2OjQxIiwKICAgICAgICAiQ3JlYXRlVXNlckZpcnN0bmFtZSIgPT4gIkpvaG4iLAogICAgICAgICJDcmVhdGVVc2VyRnVsbG5hbWUiID0+ICJKb2huIERvZSIsCiAgICAgICAgIkNyZWF0ZVVzZXJMYXN0bmFtZSIgPT4gIkRvZSIsCiAgICAgICAgIkNyZWF0ZVVzZXJMb2dpbiIgPT4gImpvaG4iLAogICAgICAgICJDdXN0b21lclVzZXJDb25kaXRpb25zIiA9PiB7CiAgICAgICAgICAgICJVc2VyTG9naW4iID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIk5lZ2F0aW9uIiA9PiAwLAogICAgICAgICAgICAgICAgIlJlZ0V4cFZhbHVlIiA9PiAiIgogICAgICAgICAgICB9CiAgICAgICAgICAgIF0KICAgICAgICB9LAogICAgICAgICJDdXN0b21lclVzZXJDb25kaXRpb25zSlNPTiIgPT4gIntcIlVzZXJMb2dpblwiOlt7XCJSZWdFeHBWYWx1ZVwiOlwiXCIsXCJOZWdhdGlvblwiOlwiMFwifV19IiwKICAgICAgICAiRGVzY3JpcHRpb24iID0+ICJTZWxlbml1bSBEZXNjcmlwdGlvbmN1c3RvbWVyIiwKICAgICAgICAiSW50cm9kdWN0aW9uIiA9PiAiU2VsZW5pdW0gSW50cm9kdWN0aW9uIiwKICAgICAgICAiTm90aWZpY2F0aW9uQm9keSIgPT4gIkRlYXIgQ3VzdG9tZXIsXHJcblxyXG5UaGFua3MgZm9yIHVzaW5nIG91ciBzZXJ2aWNlLiBIZWxwIHVzIHRvIGltcHJvdmUgdXMgYW5kIG91ciBzZXJ2aWNlcy5cclxuXHJcblBsZWFzZSBnaXZlIHVzIGZlZWRiYWNrIG9uIGhvdyB0byBpbXByb3ZlIG91ciBzZXJ2aWNlczpcclxuXHJcbmh0dHA6Ly9sb2NhbGhvc3Qvb3Rycy1hbHBoYS9wdWJsaWMucGw/QWN0aW9uPVB1YmxpY1N1cnZleTtQdWJsaWNTdXJ2ZXlLZXk9PE9UUlNfUHVibGljU3VydmV5S2V5PlxyXG5cclxuVGhhbmtzIGZvciB5b3VyIGhlbHAhXHJcblxyXG5Zb3VyIE9UUlMtVGVhbSIsCiAgICAgICAgIk5vdGlmaWNhdGlvblNlbmRlciIgPT4gInF1YWxpdHlcQGV4YW1wbGUuY29tIiwKICAgICAgICAiTm90aWZpY2F0aW9uU3ViamVjdCIgPT4gIkhlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrISIsCiAgICAgICAgIlF1ZXVlcyIgPT4gW10sCiAgICAgICAgIlNlbmRDb25kaXRpb25zUmF3IiA9PiAiLS0tXG5DdXN0b21lclVzZXJDb25kaXRpb25zOlxuICBVc2VyTG9naW46XG4gIC0gTmVnYXRpb246IDBcbiAgICBSZWdFeHBWYWx1ZTogJydcbiIsCiAgICAgICAgIlN0YXR1cyIgPT4gIk5ldyIsCiAgICAgICAgIlN1cnZleUlEIiA9PiA0OSwKICAgICAgICAiU3VydmV5TnVtYmVyIiA9PiAxMDA0OSwKICAgICAgICAiVGl0bGUiID0+ICJTdXJ2ZXkgdGl0bGUiLAogICAgKToKCj1jdXQKCnN1YiBTdXJ2ZXlHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBhbGwgYXR0cmlidXRlcyBvZiBhIHN1cnZleQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzdXJ2ZXludW1iZXIsIHRpdGxlLCBpbnRyb2R1Y3Rpb24sIGRlc2NyaXB0aW9uLCBub3RpZmljYXRpb25fc2VuZGVyLAogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uX3N1YmplY3QsIG5vdGlmaWNhdGlvbl9ib2R5LCBzdGF0dXMsIHNlbmRfY29uZGl0aW9ucywgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwKICAgICAgICAgICAgICAgIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgICAgICAgICA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7U3VydmV5TnVtYmVyfSAgICAgICAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1RpdGxlfSAgICAgICAgICAgICAgID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtJbnRyb2R1Y3Rpb259ICAgICAgICA9ICRSb3dbM107CiAgICAgICAgJERhdGF7RGVzY3JpcHRpb259ICAgICAgICAgPSAkUm93WzRdOwogICAgICAgICREYXRhe05vdGlmaWNhdGlvblNlbmRlcn0gID0gJFJvd1s1XTsKICAgICAgICAkRGF0YXtOb3RpZmljYXRpb25TdWJqZWN0fSA9ICRSb3dbNl07CiAgICAgICAgJERhdGF7Tm90aWZpY2F0aW9uQm9keX0gICAgPSAkUm93WzddOwogICAgICAgICREYXRhe1N0YXR1c30gICAgICAgICAgICAgID0gJFJvd1s4XTsKICAgICAgICAkRGF0YXtTZW5kQ29uZGl0aW9uc1Jhd30gICA9ICRSb3dbOV07CiAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gICAgICAgICAgPSAkUm93WzEwXTsKICAgICAgICAkRGF0YXtDcmVhdGVCeX0gICAgICAgICAgICA9ICRSb3dbMTFdOwogICAgICAgICREYXRhe0NoYW5nZVRpbWV9ICAgICAgICAgID0gJFJvd1sxMl07CiAgICAgICAgJERhdGF7Q2hhbmdlQnl9ICAgICAgICAgICAgPSAkUm93WzEzXTsKICAgIH0KCiAgICAjIEdldCBTZW5kQ29uZGl0aW9uIGFzIGhhc2guCiAgICBteSAkU2VuZENvbmRpdGlvbnMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKCBEYXRhID0+ICREYXRhe1NlbmRDb25kaXRpb25zUmF3fSApIHx8IHt9OwoKICAgICMgU2V0IGRhdGEgZmllbGRzIGZvciBzZW5kIGNvbmRpdGlvbnMuCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtIChxdyhUaWNrZXRUeXBlSURzIFNlcnZpY2VJRHMgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucykpIHsKCiAgICAgICAgbmV4dCBJVEVNCiAgICAgICAgICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFNlbmRDb25kaXRpb25zLT57JEl0ZW19ICkgJiYgIUlzSGFzaFJlZldpdGhEYXRhKCAkU2VuZENvbmRpdGlvbnMtPnskSXRlbX0gKSApOwoKICAgICAgICAkRGF0YXskSXRlbX0gPSAkU2VuZENvbmRpdGlvbnMtPnskSXRlbX07CiAgICB9CgogICAgaWYgKCAkRGF0YXtDdXN0b21lclVzZXJDb25kaXRpb25zfSApIHsKICAgICAgICAkRGF0YXtDdXN0b21lclVzZXJDb25kaXRpb25zSlNPTn0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpLT5FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJERhdGF7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICElRGF0YSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIHN1Y2ggU3VydmV5SUQgJFBhcmFte1N1cnZleUlEfSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBjb25maWcgb2JqZWN0CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIHNldCBkZWZhdWx0IHZhbHVlcwogICAgJERhdGF7Tm90aWZpY2F0aW9uU2VuZGVyfSAgfHw9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25TZW5kZXInKTsKICAgICREYXRhe05vdGlmaWNhdGlvblN1YmplY3R9IHx8PSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uU3ViamVjdCcpOwogICAgJERhdGF7Tm90aWZpY2F0aW9uQm9keX0gICAgfHw9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25Cb2R5Jyk7CgogICAgIyBnZXQgcXVldWVzCiAgICAkRGF0YXtRdWV1ZXN9ID0gJFNlbGYtPlN1cnZleVF1ZXVlR2V0KAogICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICApOwoKICAgICMgYWRkZWQgQ3JlYXRlQnkKICAgIGlmICggISRQYXJhbXtQdWJsaWN9ICkgewoKICAgICAgICAjIGdldCB1c2VyIG9iamVjdAogICAgICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAgICAgbXkgJUNyZWF0ZVVzZXJJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJERhdGF7Q3JlYXRlQnl9LAogICAgICAgICAgICBDYWNoZWQgPT4gMSwKICAgICAgICApOwogICAgICAgICREYXRhe0NyZWF0ZVVzZXJMb2dpbn0gICAgID0gJENyZWF0ZVVzZXJJbmZve1VzZXJMb2dpbn07CiAgICAgICAgJERhdGF7Q3JlYXRlVXNlckZpcnN0bmFtZX0gPSAkQ3JlYXRlVXNlckluZm97VXNlckZpcnN0bmFtZX07CiAgICAgICAgJERhdGF7Q3JlYXRlVXNlckxhc3RuYW1lfSAgPSAkQ3JlYXRlVXNlckluZm97VXNlckxhc3RuYW1lfTsKICAgICAgICAkRGF0YXtDcmVhdGVVc2VyRnVsbG5hbWV9ICA9ICRDcmVhdGVVc2VySW5mb3tVc2VyRnVsbG5hbWV9OwoKICAgICAgICAjIGFkZGVkIENoYW5nZUJ5CiAgICAgICAgbXkgJUNoYW5nZVVzZXJJbmZvID0gJFVzZXJPYmplY3QtPkdldFVzZXJEYXRhKAogICAgICAgICAgICBVc2VySUQgPT4gJERhdGF7Q2hhbmdlQnl9LAogICAgICAgICAgICBDYWNoZWQgPT4gMSwKICAgICAgICApOwogICAgICAgICREYXRhe0NoYW5nZVVzZXJMb2dpbn0gICAgID0gJENoYW5nZVVzZXJJbmZve1VzZXJMb2dpbn07CiAgICAgICAgJERhdGF7Q2hhbmdlVXNlckZpcnN0bmFtZX0gPSAkQ2hhbmdlVXNlckluZm97VXNlckZpcnN0bmFtZX07CiAgICAgICAgJERhdGF7Q2hhbmdlVXNlckxhc3RuYW1lfSAgPSAkQ2hhbmdlVXNlckluZm97VXNlckxhc3RuYW1lfTsKICAgICAgICAkRGF0YXtDaGFuZ2VVc2VyRnVsbG5hbWV9ICA9ICRDaGFuZ2VVc2VySW5mb3tVc2VyRnVsbG5hbWV9OwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIFN1cnZleVVwZGF0ZSgpCgp0byB1cGRhdGUgYW4gZXhpc3Rpbmcgc3VydmV5CgogICAgJFN1cnZleU9iamVjdC0+U3VydmV5VXBkYXRlKAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBTdXJ2ZXlJRCAgICAgICAgICAgID0+IDQsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAnQSBUaXRsZScsCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncXVhbGl0eUBleGFtcGxlLmNvbScsCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAnSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shJywKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdEZWFyIGN1c3RvbWVyLi4uJywKICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyLCA1LCA5XSwgICMgKG9wdGlvbmFsKSBzdXJ2ZXkgaXMgdmFsaWQgZm9yIHRoZXNlIHF1ZXVlcwogICAgICAgIFRpY2tldFR5cGVJRHMgICAgICAgPT4gWzEsIDIsIDNdLCAgIyAob3B0aW9uYWwpIHN1cnZleSBpcyB2YWxpZCBmb3IgdGhlc2UgdGlja2V0IHR5cGVzCiAgICAgICAgU2VydmljZUlEcyAgICAgICAgICA9PiBbMSwgMiwgM10sICAjIChvcHRpb25hbCkgc3VydmV5IGlzIHZhbGlkIGZvciB0aGVzZSBzZXJ2aWNlcwogICAgICAgIEN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPT4gewogICAgICAgICAgICAnVXNlckZpcnN0bmFtZScgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdOZWdhdGlvbicgPT4gMSwKICAgICAgICAgICAgICAgICAgICAnUmVnRXhwVmFsdWUnID0+ICdeTWknCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdOZWdhdGlvbicgPT4gMSwKICAgICAgICAgICAgICAgICAgICAnUmVnRXhwVmFsdWUnID0+ICdeS2EnCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgXSwKICAgICAgICB9LCAjIChvcHRpb25hbCkKICAgICk7Cgo9Y3V0CgpzdWIgU3VydmV5VXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKAogICAgICAgIHF3KAogICAgICAgIFVzZXJJRCBTdXJ2ZXlJRCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24KICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgTm90aWZpY2F0aW9uU3ViamVjdCBOb3RpZmljYXRpb25Cb2R5CiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgcXVldWVzCiAgICBpZiAoICRQYXJhbXtRdWV1ZXN9ICYmIHJlZiAkUGFyYW17UXVldWVzfSBuZSAnQVJSQVknICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnUXVldWVzIG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlLicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgc2V0IGRlZmF1bHQgdmFsdWUKICAgICRQYXJhbXtRdWV1ZXN9IHx8PSBbXTsKCiAgICAjIGJ1aWxkIHNlbmQgY29uZGl0aW9uIHN0cmluZwogICAgbXkgJFNlbmRDb25kaXRpb25TdHJnID0gJFNlbGYtPl9CdWlsZFNlbmRDb25kaXRpb25TdHJnKCVQYXJhbSk7CgogICAgIyB1cGRhdGUgdGhlIHN1cnZleQogICAgcmV0dXJuIGlmICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleQogICAgICAgICAgICBTRVQgdGl0bGUgPSA/LCBpbnRyb2R1Y3Rpb24gPSA/LCBkZXNjcmlwdGlvbiA9ID8sIG5vdGlmaWNhdGlvbl9zZW5kZXIgPSA/LAogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uX3N1YmplY3QgPSA/LCBub3RpZmljYXRpb25fYm9keSA9ID8sIHNlbmRfY29uZGl0aW9ucyA9ID8sIGNoYW5nZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAsCiAgICAgICAgICAgICAgICBjaGFuZ2VfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17VGl0bGV9LCAgICAgICAgICAgICAgXCRQYXJhbXtJbnRyb2R1Y3Rpb259LCAgICAgICAgXCRQYXJhbXtEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFwkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSwgXCRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSwgXCRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSwKICAgICAgICAgICAgXCRTZW5kQ29uZGl0aW9uU3RyZywgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1N1cnZleUlEfSwKICAgICAgICBdLAogICAgKTsKCiAgICAjIGluc2VydCBuZXcgc3VydmV5LXF1ZXVlIHJlbGF0aW9ucwogICAgcmV0dXJuICRTZWxmLT5TdXJ2ZXlRdWV1ZVNldCgKICAgICAgICBTdXJ2ZXlJRCA9PiAkUGFyYW17U3VydmV5SUR9LAogICAgICAgIFF1ZXVlSURzID0+ICRQYXJhbXtRdWV1ZXN9LAogICAgKTsKfQoKPWhlYWQyIFN1cnZleUxpc3QoKQoKdG8gZ2V0IGEgYXJyYXkgbGlzdCBvZiBhbGwgc3VydmV5IGl0ZW1zCgogICAgbXkgJVN1cnZleUxpc3QgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlMaXN0KCk7CgpSZXN1bHQ6CiAgICAlU3VydmV5TGlzdCA9ICgKICAgICAgICA0NyA9PiAiU3VydmV5IHRpdGxlIiwKICAgICAgICAuLi4KICAgICk7Cgo9Y3V0CgpzdWIgU3VydmV5TGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgc3VydmV5IGxpc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgdGl0bGUKICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgT1JERVIgQlkgaWQgQVNDJywKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0cwogICAgbXkgJVN1cnZleXM7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkU3VydmV5c3sgJFJvd1swXSB9ID0gJFJvd1sxXTsKICAgIH0KCiAgICByZXR1cm4gJVN1cnZleXM7Cn0KCj1oZWFkMiBTdXJ2ZXlTZWFyY2goKQoKc2VhcmNoIGluIHN1cnZleXMKCiAgICBteSBASURzID0gJFN1cnZleU9iamVjdC0+U3VydmV5U2VhcmNoKAoKICAgICAgICBOdW1iZXIgICAgICAgICAgICAgID0+ICcxMzQnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAnc29tZSB0aXRsZScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJ3NvbWUgaW50cm9kdWN0aW9uJywgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdzb21lIGRlc2NyaXB0aW9uJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAndXNlckBkb21haW4nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ3NvbWUgbm90aWZpY2F0aW9uIHN1YmplY3QnLCAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdzb21lIG5vdGlmaWNhdGlvbiBib2R5JywgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgICMgaXMgc2VhcmNoaW5nIGluIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwKICAgICAgICAjIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHkKICAgICAgICBXaGF0ICAgPT4gJ3NvbWUgdGV4dCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCgogICAgICAgIFN0YXR1cyA9PiAnc29tZSBzdGF0dXMnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0wMS0wMSAxMjowMDowMCcsCiAgICAgICAgQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0wMS0zMSAxMjowMDowMCcsCiAgICAgICAgQ3JlYXRlQnkgICAgICAgICAgICA9PiAnMTIzJywgICAgICAgICAgICAjVXNlcklECiAgICAgICAgQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAnMjAxMi0wMS0wMSAxMjowMDowMCcsCiAgICAgICAgQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAnMjAxMi0xMi0zMSAxMjowMDowMCcsCiAgICAgICAgQ2hhbmdlQnkgICAgICAgICAgICA9PiAnMTIzJywgICAgICAgICAgICAjVXNlcklECgogICAgICAgIE9yZGVyQnkgPT4gWyAnU3VydmV5SUQnLCAnVGl0bGUnIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICMgZGVmYXVsdDogWyAnU3VydmV5SUQnIF0sCiAgICAgICAgIyAoKVN1cnZleUlELCBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLAogICAgICAgICMgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0LCBOb3RpZmljYXRpb25Cb2R5LAogICAgICAgICMgU3RhdHVzLCBDcmVhdGVUaW1lLCBDcmVhdGVCeSwgQ2hhbmdlVGltZSwgQ2hhbmdlQnkpCgogICAgICAgICMgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBmb3IgT3JkZXJCeToKICAgICAgICAjIFRoZSBPcmRlckJ5RGlyZWN0aW9uIGNhbiBiZSBzcGVjaWZpZWQgZm9yIGVhY2ggT3JkZXJCeSBhdHRyaWJ1dGUuCiAgICAgICAgIyBUaGUgcGFpcmluZyBpcyBtYWRlIGJ5IHRoZSBhcnJheSBpbmRleGVzLgoKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsgJ0Rvd24nLCAnVXAnIF0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICAjIGRlZmF1bHQ6IFsgJ0Rvd24nIF0KICAgICAgICAjIChEb3duIHwgVXApCgogICAgICAgIExpbWl0ICAgICA9PiAxNTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlTZWFyY2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHZlcmlmeSB0aGF0IGFsbCBwYXNzZWQgYXJyYXkgcGFyYW1ldGVycyBjb250YWluIGFuIGFycmF5IHJlZmVyZW5jZQogICAgQVJHVU1FTlQ6CiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhPcmRlckJ5IE9yZGVyQnlEaXJlY3Rpb24pKSB7CgogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRQYXJhbXskQXJndW1lbnR9IHx8PSBbXTsKCiAgICAgICAgICAgIG5leHQgQVJHVU1FTlQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEFyZ3VtZW50fSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiJEFyZ3VtZW50IG11c3QgYmUgYW4gYXJyYXkgcmVmZXJlbmNlISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVmaW5lIG9yZGVyIHRhYmxlCiAgICBteSAlT3JkZXJCeVRhYmxlID0gKAoKICAgICAgICAjIFN1cnZleSBpdGVtIGF0dHJpYnV0ZXMKICAgICAgICBTdXJ2ZXlJRCAgICAgICAgICAgID0+ICdzLmlkJywKICAgICAgICBOdW1iZXIgICAgICAgICAgICAgID0+ICdzLnN1cnZleW51bWJlcicsCiAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAncy50aXRsZScsCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAncy5pbnRyb2R1Y3Rpb24nLAogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ3MuZGVzY3JpcHRpb24nLAogICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3Mubm90aWZpY2F0aW9uX3NlbmRlcicsCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAncy5ub3RpZmljYXRpb25fc3ViamVjdCcsCiAgICAgICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAncy5ub3RpZmljYXRpb25fYm9keScsCiAgICAgICAgU3RhdHVzICAgICAgICAgICAgICA9PiAncy5zdGF0dXMnLAogICAgICAgIENyZWF0ZVRpbWUgICAgICAgICAgPT4gJ3MuY3JlYXRlX3RpbWUnLAogICAgICAgIENyZWF0ZUJ5ICAgICAgICAgICAgPT4gJ3MuY3JlYXRlX2J5JywKICAgICAgICBDaGFuZ2VUaW1lICAgICAgICAgID0+ICdzLmNoYW5nZV90aW1lJywKICAgICAgICBDaGFuZ2VCeSAgICAgICAgICAgID0+ICdzLmNoYW5nZV9ieScsCiAgICApOwoKICAgICMgY2hlY2sgaWYgT3JkZXJCeSBjb250YWlucyBvbmx5IHVuaXF1ZSB2YWxpZCB2YWx1ZXMKICAgIG15ICVPcmRlckJ5U2VlbjsKICAgIGZvciBteSAkT3JkZXJCeSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgewoKICAgICAgICBpZiAoICEkT3JkZXJCeSB8fCAhJE9yZGVyQnlUYWJsZXskT3JkZXJCeX0gfHwgJE9yZGVyQnlTZWVueyRPcmRlckJ5fSApIHsKCiAgICAgICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnkgY29udGFpbnMgaW52YWxpZCB2YWx1ZSAnJE9yZGVyQnknICIKICAgICAgICAgICAgICAgICAgICAuICdvciB0aGUgdmFsdWUgaXMgdXNlZCBtb3JlIHRoYW4gb25jZSEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyByZW1lbWJlciB0aGUgdmFsdWUgdG8gY2hlY2sgaWYgaXQgYXBwZWFycyBtb3JlIHRoYW4gb25jZQogICAgICAgICRPcmRlckJ5U2VlbnskT3JkZXJCeX0gPSAxOwoKICAgIH0KCiAgICAjIGNoZWNrIGlmIE9yZGVyQnlEaXJlY3Rpb24gYXJyYXkgY29udGFpbnMgb25seSAnVXAnIG9yICdEb3duJwogICAgRElSRUNUSU9OOgogICAgZm9yIG15ICREaXJlY3Rpb24gKCBAeyAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0gfSApIHsKCiAgICAgICAgIyBvbmx5ICdVcCcgb3IgJ0Rvd24nIGFsbG93ZWQKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdVcCc7CiAgICAgICAgbmV4dCBESVJFQ1RJT04gaWYgJERpcmVjdGlvbiBlcSAnRG93bic7CgogICAgICAgICMgZm91bmQgYW4gZXJyb3IKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk9yZGVyQnlEaXJlY3Rpb24gY2FuIG9ubHkgY29udGFpbiAnVXAnIG9yICdEb3duJyEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGFzc2VtYmxlIHRoZSBPUkRFUiBCWSBjbGF1c2UKICAgIG15IEBTUUxPcmRlckJ5OwogICAgbXkgQE9yZGVyQnlGaWVsZHM7CiAgICBteSAkQ291bnQgPSAwOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgICMgc2V0IHRoZSBkZWZhdWx0IG9yZGVyIGRpcmVjdGlvbgogICAgICAgIG15ICREaXJlY3Rpb24gPSAnREVTQyc7CgogICAgICAgICMgYWRkIHRoZSBnaXZlbiBvcmRlciBkaXJlY3Rpb24KICAgICAgICBpZiAoICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufS0+WyRDb3VudF0gKSB7CiAgICAgICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnVXAnICkgewogICAgICAgICAgICAgICAgJERpcmVjdGlvbiA9ICdBU0MnOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0RFU0MnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBTUUwKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAgICAiJE9yZGVyQnlUYWJsZXskT3JkZXJCeX0gJERpcmVjdGlvbiI7CiAgICAgICAgcHVzaCBAT3JkZXJCeUZpZWxkcywgJE9yZGVyQnlUYWJsZXskT3JkZXJCeX07CgogICAgICAgICRDb3VudCsrOwogICAgfQoKICAgICMgaWYgdGhlcmUgaXMgYSBwb3NzaWJpbGl0eSB0aGF0IHRoZSBvcmRlcmluZyBpcyBub3QgZGV0ZXJtaW5lZAogICAgIyB3ZSBhZGQgYW4gZGVzY2VuZGluZyBvcmRlcmluZyBieSBpZAogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdTdXJ2ZXlJRCcgfSAoIEB7ICRQYXJhbXtPcmRlckJ5fSB9ICkgKSB7CiAgICAgICAgcHVzaCBAU1FMT3JkZXJCeSwgIiRPcmRlckJ5VGFibGV7U3VydmV5SUR9IERFU0MiOwogICAgfQoKICAgICMgU1FMCiAgICBteSAkU1FMID0gJ1NFTEVDVCBzLmlkICc7CgogICAgIyBleHRlbmRlZCBTUUwKICAgIG15ICRFeHQgPSAnJzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZnVsbC10ZXh0IHNlYXJjaAogICAgaWYgKCAkUGFyYW17V2hhdH0gJiYgJFBhcmFte1doYXR9IG5lICcqJyApIHsKCiAgICAgICAgIyBkZWZpbmUgdGhlIHNlYXJjaCBmaWVsZHMgZm9yIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICBteSBAU2VhcmNoRmllbGRzID0gKAogICAgICAgICAgICAncy5zdXJ2ZXludW1iZXInLAogICAgICAgICAgICAncy50aXRsZScsCiAgICAgICAgICAgICdzLmludHJvZHVjdGlvbicsCiAgICAgICAgICAgICdzLmRlc2NyaXB0aW9uJywKICAgICAgICAgICAgJ3Mubm90aWZpY2F0aW9uX3NlbmRlcicsCiAgICAgICAgICAgICdzLm5vdGlmaWNhdGlvbl9zdWJqZWN0JywKICAgICAgICAgICAgJ3Mubm90aWZpY2F0aW9uX2JvZHknLAogICAgICAgICAgICAncy5zdGF0dXMnLAogICAgICAgICk7CgogICAgICAgICMgYWRkIHRoZSBTUUwgZm9yIHRoZSBmdWxsLXRleHQgc2VhcmNoCiAgICAgICAgJEV4dCAuPSAkREJPYmplY3QtPlF1ZXJ5Q29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgICAgPT4gXEBTZWFyY2hGaWVsZHMsCiAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiAkUGFyYW17V2hhdH0sCiAgICAgICAgICAgIFNlYXJjaFByZWZpeCA9PiAnKicsCiAgICAgICAgICAgIFNlYXJjaFN1ZmZpeCA9PiAnKicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIG51bWJlcgogICAgaWYgKCAkUGFyYW17TnVtYmVyfSApIHsKICAgICAgICAkUGFyYW17TnVtYmVyfSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17TnVtYmVyfSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17TnVtYmVyfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtOdW1iZXJ9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKHMubnVtYmVyKSBMSUtFIExPV0VSKCciIC4gJFBhcmFte051bWJlcn0gLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSB0aXRsZQogICAgaWYgKCAkUGFyYW17VGl0bGV9ICkgewogICAgICAgICRQYXJhbXtUaXRsZX0gPSAiXCUkUGFyYW17VGl0bGV9XCUiOwogICAgICAgICRQYXJhbXtUaXRsZX0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17VGl0bGV9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte1RpdGxlfSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiBMT1dFUihzLnRpdGxlKSBMSUtFIExPV0VSKCciIC4gJFBhcmFte1RpdGxlfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIGludHJvZHVjdGlvbgogICAgaWYgKCAkUGFyYW17SW50cm9kdWN0aW9ufSApIHsKICAgICAgICAkUGFyYW17SW50cm9kdWN0aW9ufSA9ICJcJSRQYXJhbXtJbnRyb2R1Y3Rpb259XCUiOwogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte0ludHJvZHVjdGlvbn0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5pbnRyb2R1Y3Rpb24pIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17SW50cm9kdWN0aW9ufQogICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIGRlc2NyaXB0aW9uCiAgICBpZiAoICRQYXJhbXtEZXNjcmlwdGlvbn0gKSB7CiAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9ufSA9ICJcJSRQYXJhbXtEZXNjcmlwdGlvbn1cJSI7CiAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9ufSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17RGVzY3JpcHRpb259ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbn0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17RGVzY3JpcHRpb259LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dAogICAgICAgICAgICAuPSAiIExPV0VSKHMuZGVzY3JpcHRpb24pIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17RGVzY3JpcHRpb259CiAgICAgICAgICAgIC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgbm90aWZpY2F0aW9uIHNlbmRlcgogICAgaWYgKCAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSApIHsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSA9ICJcJSRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9XCUiOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5ub3RpZmljYXRpb25fc2VuZGVyKSBMSUtFIExPV0VSKCciCiAgICAgICAgICAgIC4gJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0KICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBub3RpZmljYXRpb24gc3ViamVjdAogICAgaWYgKCAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0gKSB7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9ID0gIlwlJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9XCUiOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dAogICAgICAgICAgICAuPSAiIExPV0VSKHMubm90aWZpY2F0aW9uX3N1YmplY3QpIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0KICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBub3RpZmljYXRpb24gYm9keQogICAgaWYgKCAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gKSB7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9ID0gIlwlJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9XCUiOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dAogICAgICAgICAgICAuPSAiIExPV0VSKHMubm90aWZpY2F0aW9uX2JvZHkpIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0KICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBzdGF0dXMKICAgIGlmICggJFBhcmFte1N0YXR1c30gKSB7CiAgICAgICAgJFBhcmFte1N0YXR1c30gPSAiXCUkUGFyYW17U3RhdHVzfVwlIjsKICAgICAgICAkUGFyYW17U3RhdHVzfSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17U3RhdHVzfSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17U3RhdHVzfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtTdGF0dXN9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKHMuc3RhdHVzKSBMSUtFIExPV0VSKCciIC4gJFBhcmFte1N0YXR1c30gLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIG11bHRpcGxlIHN0YXR1cwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtTdGF0ZXN9ICkgKSB7CgogICAgICAgIG15ICRTdGF0ZXMgPSBqb2luICcsICcsIG1hcCB7cXEoJyRfJyl9IEB7ICRQYXJhbXtTdGF0ZXN9IH07CgogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgcy5zdGF0dXMgSU4gKCRTdGF0ZXMpICI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBjcmVhdGUgYnkKICAgIGlmICggJFBhcmFte0NyZWF0ZUJ5fSApIHsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIHMuY3JlYXRlX2J5ID0gIiAuICRQYXJhbXtDcmVhdGVCeX07CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBjaGFuZ2UgYnkKICAgIGlmICggJFBhcmFte0NoYW5nZUJ5fSApIHsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIHMuY2hhbmdlX2J5ID0gIiAuICRQYXJhbXtDaGFuZ2VCeX07CiAgICB9CgogICAgIyBzZXQgdGltZSBwYXJhbXMKICAgIG15ICVUaW1lUGFyYW1zID0gKAoKICAgICAgICAjIHRpbWVzIGluIGNoYW5nZV9pdGVtCiAgICAgICAgQ3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAncy5jcmVhdGVfdGltZSA+PScsCiAgICAgICAgQ3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAncy5jcmVhdGVfdGltZSA8PScsCiAgICAgICAgQ2hhbmdlVGltZU5ld2VyRGF0ZSA9PiAncy5jaGFuZ2VfdGltZSA+PScsCiAgICAgICAgQ2hhbmdlVGltZU9sZGVyRGF0ZSA9PiAncy5jaGFuZ2VfdGltZSA8PScsCiAgICApOwoKICAgICMgY2hlY2sgYW5kIGFkZCB0aW1lIHBhcmFtcyB0byBXSEVSRQogICAgVElNRVBBUkFNOgogICAgZm9yIG15ICRUaW1lUGFyYW0gKCBzb3J0IGtleXMgJVRpbWVQYXJhbXMgKSB7CgogICAgICAgIG5leHQgVElNRVBBUkFNIGlmICEkUGFyYW17JFRpbWVQYXJhbX07CgogICAgICAgICMgY2hlY2sgZm9ybWF0CiAgICAgICAgaWYgKCAkUGFyYW17JFRpbWVQYXJhbX0gIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIHBhcmFtZXRlciAkVGltZVBhcmFtIGhhcyBhbiBpbnZhbGlkIGRhdGUgZm9ybWF0ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17JFRpbWVQYXJhbX0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17JFRpbWVQYXJhbX0gKTsKCiAgICAgICAgIyBhZGQgdGltZSBwYXJhbWV0ZXIgdG8gV0hFUkUKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EICc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiRUaW1lUGFyYW1zeyRUaW1lUGFyYW19ICckUGFyYW17JFRpbWVQYXJhbX0nIjsKICAgIH0KCiAgICAjIGFkZCBXSEVSRSBzdGF0ZW1lbnQKICAgIGlmICgkRXh0KSB7CiAgICAgICAgJEV4dCA9ICcgV0hFUkUgJyAuICRFeHQ7CiAgICB9CgogICAgIyBhZGQgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgaWYgKEBTUUxPcmRlckJ5KSB7CiAgICAgICAgJEV4dCAuPSAnT1JERVIgQlkgJzsKICAgICAgICAkRXh0IC49IGpvaW4gJywgJywgQFNRTE9yZGVyQnk7CiAgICAgICAgJEV4dCAuPSAnICc7CiAgICAgICAgaWYgKEBPcmRlckJ5RmllbGRzKSB7CiAgICAgICAgICAgICRTUUwgLj0gJywgJyAuIGpvaW4gJywgJywgQE9yZGVyQnlGaWVsZHM7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIGV4dGVuZGVkIFNRTAogICAgJFNRTCAuPSAnIEZST00gc3VydmV5IHMgJzsKICAgICRTUUwgLj0gJEV4dDsKCiAgICAjIGFzayBkYXRhYmFzZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9LAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1oZWFkMiBTdXJ2ZXlTdGF0dXNTZXQoKQoKdG8gc2V0IGEgbmV3IHN1cnZleSBzdGF0dXMgKFZhbGlkLCBJbnZhbGlkLCBNYXN0ZXIpCgogICAgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICBTdXJ2ZXlJRCAgPT4gMTIzLAogICAgICAgIE5ld1N0YXR1cyA9PiAnTWFzdGVyJwogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlTdGF0dXNTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgTmV3U3RhdHVzKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBjdXJyZW50IHN0YXR1cwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHN0YXR1cwogICAgICAgICAgICBGUk9NIHN1cnZleQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRTdGF0dXMgPSAnJzsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdGF0dXMgPSAkUm93WzBdOwogICAgfQoKICAgICMgdGhlIGN1cnJlbnQgc3RhdHVzCiAgICBpZiAoICRTdGF0dXMgZXEgJ05ldycgfHwgJFN0YXR1cyBlcSAnSW52YWxpZCcgKSB7CgogICAgICAgICMgZ2V0IHRoZSBxdWVzdGlvbiBpZHMKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8nLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgJFF1ZXN0OwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkUXVlc3QgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICdOb1F1ZXN0aW9uJyBpZiAhJFF1ZXN0OwoKICAgICAgICBteSAlUXVlc3Rpb25UeXBlID0gKAogICAgICAgICAgICBSYWRpbyAgICA9PiAnUmFkaW8nLAogICAgICAgICAgICBDaGVja2JveCA9PiAnQ2hlY2tib3gnLAogICAgICAgICAgICBOUFMgICAgICA9PiAnTlBTJywKICAgICAgICApOwoKICAgICAgICAjIGdldCBhbGwgcXVlc3Rpb25zICh0eXBlIHJhZGlvLCBjaGVjay1ib3ggYW5kIE5QUykKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBpZCwgcXVlc3Rpb25fdHlwZQogICAgICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgICAgICAgICBBTkQgKHF1ZXN0aW9uX3R5cGUgPSA/IE9SIHF1ZXN0aW9uX3R5cGUgPSA/IE9SIHF1ZXN0aW9uX3R5cGUgPSA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSwgXCRRdWVzdGlvblR5cGV7UmFkaW99LCBcJFF1ZXN0aW9uVHlwZXtDaGVja2JveH0sIFwkUXVlc3Rpb25UeXBle05QU30sIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgbXkgQFF1ZXN0aW9uSURzOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICBteSBAUXVlc3Rpb25JRCA9ICgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBJRCAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSA9PiAkUm93WzFdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2goIEBRdWVzdGlvbklEcywgQFF1ZXN0aW9uSUQgKTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkUXVlc3Rpb25JRCAoQFF1ZXN0aW9uSURzKSB7CgogICAgICAgICAgICAjIGdldCBhbGwgYW5zd2VyIGlkcyBvZiBhIHF1ZXN0aW9uCiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgQ09VTlQoaWQpCiAgICAgICAgICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgID0+IFsgXCRRdWVzdGlvbklELT57SUR9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICAgICAgICAgIG15ICRDb3VudGVyOwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICRDb3VudGVyID0gJFJvd1swXTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb25JRC0+e1R5cGV9IGVxICdSYWRpbycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ0luY29tcGxldGVRdWVzdGlvbicgaWYgJENvdW50ZXIgPCAyOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uSUQtPntUeXBlfSBlcSAnQ2hlY2tib3gnICkgewogICAgICAgICAgICAgICAgcmV0dXJuICdJbmNvbXBsZXRlUXVlc3Rpb24nIGlmICRDb3VudGVyIDwgMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbklELT57VHlwZX0gZXEgJ05QUycgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ0luY29tcGxldGVRdWVzdGlvbicgaWYgJENvdW50ZXIgPCAyOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgc3RhdHVzCiAgICAgICAgaWYgKCAkUGFyYW17TmV3U3RhdHVzfSBlcSAnTWFzdGVyJyApIHsKICAgICAgICAgICAgbXkgJFZhbGlkU3RhdHVzID0gJ1ZhbGlkJzsKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgICAgICAgICAgU0VUIHN0YXR1cyA9ID8KICAgICAgICAgICAgICAgICAgICBXSEVSRSBzdGF0dXMgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFZhbGlkU3RhdHVzLCBcJFBhcmFte05ld1N0YXR1c30sIF0sCiAgICAgICAgICAgICk7CgogICAgICAgIH0KICAgICAgICBpZiAoICRQYXJhbXtOZXdTdGF0dXN9IGVxICdWYWxpZCcgfHwgJFBhcmFte05ld1N0YXR1c30gZXEgJ01hc3RlcicgKSB7CiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleSBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOZXdTdGF0dXN9LCBcJFBhcmFte1N1cnZleUlEfSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAnU3RhdHVzU2V0JzsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTdGF0dXMgZXEgJ1ZhbGlkJyApIHsKCiAgICAgICAgIyBzZXQgc3RhdHVzIE1hc3RlcgogICAgICAgIGlmICggJFBhcmFte05ld1N0YXR1c30gZXEgJ01hc3RlcicgKSB7CgogICAgICAgICAgICAjIHNldCBhbnkgJ01hc3Rlcicgc3VydmV5IHRvICdWYWxpZCcKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgICAgICAgICAgU0VUIHN0YXR1cyA9ID8KICAgICAgICAgICAgICAgICAgICBXSEVSRSBzdGF0dXMgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN0YXR1cywgXCRQYXJhbXtOZXdTdGF0dXN9LCBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgJ01hc3RlcicgdG8gZ2l2ZW4gc3VydmV5CiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleQogICAgICAgICAgICAgICAgICAgIFNFVCBzdGF0dXMgPSA/CiAgICAgICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05ld1N0YXR1c30sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICdTdGF0dXNTZXQnOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgc3RhdHVzIEludmFsaWQKICAgICAgICBlbHNpZiAoICRQYXJhbXtOZXdTdGF0dXN9IGVxICdJbnZhbGlkJyApIHsKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgICAgICAgICAgU0VUIHN0YXR1cyA9ID8KICAgICAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmV3U3RhdHVzfSwgXCRQYXJhbXtTdXJ2ZXlJRH0sIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJ1N0YXR1c1NldCc7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkU3RhdHVzIGVxICdNYXN0ZXInICkgewoKICAgICAgICAjIHNldCBzdGF0dXMgVmFsaWQKICAgICAgICBpZiAoICRQYXJhbXtOZXdTdGF0dXN9IGVxICdWYWxpZCcgfHwgJFBhcmFte05ld1N0YXR1c30gZXEgJ0ludmFsaWQnICkgewogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgICAgICAgICBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOZXdTdGF0dXN9LCBcJFBhcmFte1N1cnZleUlEfSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAnU3RhdHVzU2V0JzsKICAgICAgICB9CiAgICB9Cn0KCj1oZWFkMiBTdXJ2ZXlRdWV1ZUdldCgpCgpnZXQgYSBzdXJ2ZXlfcXVldWUgcmVsYXRpb24gYXMgYW4gYXJyYXkgcmVmZXJlbmNlCgpteSAkUXVldWVzUmVmID0gJFN1cnZleU9iamVjdC0+U3VydmV5UXVldWVHZXQoCiAgICBTdXJ2ZXlJRCA9PiAzLAopOwoKPWN1dAoKc3ViIFN1cnZleVF1ZXVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcXVldWUgaWRzIGZyb20gZGF0YWJhc2UKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgcXVldWVfaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVldWUKICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPwogICAgICAgICAgICBPUkRFUiBCWSBxdWV1ZV9pZCBBU0MnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBRdWV1ZUxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBRdWV1ZUxpc3QsICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIFxAUXVldWVMaXN0Owp9Cgo9aGVhZDIgU3VydmV5UXVldWVTZXQoKQoKYWRkIGEgc3VydmV5X3F1ZXVlIHJlbGF0aW9uCgpteSAkUmVzdWx0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5UXVldWVTZXQoCiAgICBTdXJ2ZXlJRCA9PiAzLAogICAgUXVldWVJRHMgPT4gWzEsIDddLAopOwoKPWN1dAoKc3ViIFN1cnZleVF1ZXVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFN1cnZleUlEIFF1ZXVlSURzKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcmVtb3ZlIGFsbCBleGlzdGluZyByZWxhdGlvbnMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBzdXJ2ZXlfcXVldWUKICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICApOwoKICAgICMgYWRkIGFsbCBzdXJ2ZXlfcXVldWUgcmVsYXRpb25zIHRvIGRhdGFiYXNlCiAgICBmb3IgbXkgJFF1ZXVlSUQgKCBAeyAkUGFyYW17UXVldWVJRHN9IH0gKSB7CgogICAgICAgICMgYWRkIHN1cnZleV9xdWV1ZSByZWxhdGlvbiB0byBkYXRhYmFzZQogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9xdWV1ZSAoc3VydmV5X2lkLCBxdWV1ZV9pZCkKICAgICAgICAgICAgICAgIFZBTFVFUyAoPywgPyknLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0sIFwkUXVldWVJRCwgXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUHVibGljU3VydmV5S2V5R2V0KCkKCmdldCBhbGwgcHVibGljIHN1cnZleSBrZXlzIGFzIGFuIGFycmF5IHJlZmVyZW5jZQoKbXkgJFB1YmxpY1N1cnZleUtleXNSZWYgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlLZXlHZXQoCiAgICBTdXJ2ZXlJRCA9PiAzLAogICAgTGltaXQgICAgPT4gMSwgIyBvcHRpb25hbAopOwoKPWN1dAoKc3ViIFB1YmxpY1N1cnZleUtleUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcHJlcGFyZSBTUUwKICAgIG15ICRTUUwgICAgICA9ICdTRUxFQ1QgcHVibGljX3N1cnZleV9rZXkgRlJPTSBzdXJ2ZXlfcmVxdWVzdCAnOwogICAgbXkgJFNRTFdoZXJlID0gIldIRVJFIHN1cnZleV9pZCA9ICRQYXJhbXtTdXJ2ZXlJRH0iOwoKICAgICRTUUwgLj0gJFNRTFdoZXJlOwoKICAgICMgZ2V0IHF1ZXVlIGlkcyBmcm9tIGRhdGFiYXNlCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBMaW1pdCA9PiAkUGFyYW17TGltaXR9LAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBQdWJsaWNTdXJ2ZXlLZXlMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBAUHVibGljU3VydmV5S2V5TGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gXEBQdWJsaWNTdXJ2ZXlLZXlMaXN0Owp9Cgo9aGVhZDIgUHVibGljU3VydmV5R2V0KCkKCnRvIGdldCBhbGwgcHVibGljIGF0dHJpYnV0ZXMgb2YgYSBzdXJ2ZXkKCiAgICBteSAlUHVibGljU3VydmV5ID0gJFN1cnZleU9iamVjdC0+UHVibGljU3VydmV5R2V0KAogICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJ0F3NWRlM1hmNXFBJywKICAgICAgICAgICAgSW52YWxpZCAgICAgICAgID0+IDEsICMgb3B0aW9uYWwgdG8ga25vdyBpZiBvbmUga2V5IHdhcyBhbHJlYWR5IHVzZWQuCiAgICApOwoKPWN1dAoKc3ViIFB1YmxpY1N1cnZleUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICFkZWZpbmVkICRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBzdXJ2ZXlfaWQKICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgV0hFUkUgcHVibGljX3N1cnZleV9rZXkgPSA/JzsKCiAgICBteSAkVmFsaWRTdHJnID0gJyBBTkQgdmFsaWRfaWQgPSAxJzsKCiAgICAjIGlmIG5vdCBpbnZhbGlkIHNob3cganVzdCB2YWxpZCBrZXlzCiAgICBpZiAoICRQYXJhbXtJbnZhbGlkfSApIHsKICAgICAgICAkVmFsaWRTdHJnID0gJyBBTkQgdmFsaWRfaWQgPSAwJzsKICAgIH0KICAgICRTUUwgLj0gJFZhbGlkU3RyZzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHJlcXVlc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1B1YmxpY1N1cnZleUtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRTdXJ2ZXlJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdXJ2ZXlJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICgpIGlmICEkU3VydmV5SUQ7CgogICAgIyBnZXQgc3VydmV5CiAgICBteSAkTWFzdGVyU3RhdHVzID0gJ01hc3Rlcic7CiAgICBteSAkVmFsaWRTdGF0dXMgID0gJ1ZhbGlkJzsKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgc3VydmV5bnVtYmVyLCB0aXRsZSwgaW50cm9kdWN0aW9uCiAgICAgICAgICAgIEZST00gc3VydmV5CiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIChzdGF0dXMgPSA/IE9SIHN0YXR1cyA9ID8pJywKICAgICAgICBCaW5kICA9PiBbIFwkU3VydmV5SUQsIFwkTWFzdGVyU3RhdHVzLCBcJFZhbGlkU3RhdHVzLCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlOdW1iZXJ9ID0gJFJvd1sxXTsKICAgICAgICAkRGF0YXtUaXRsZX0gICAgICAgID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtJbnRyb2R1Y3Rpb259ID0gJFJvd1szXTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1oZWFkMiBQdWJsaWNTdXJ2ZXlJbnZhbGlkU2V0KCkKCnRvIHNldCBhIHJlcXVlc3QgaW52YWxpZAoKICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUludmFsaWRTZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICdhVmtkRTgyRHcycXc2ZXJDZGEnLAogICAgKTsKCj1jdXQKCnN1YiBQdWJsaWNTdXJ2ZXlJbnZhbGlkU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCByZXF1ZXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdAogICAgICAgICAgICBXSEVSRSBwdWJsaWNfc3VydmV5X2tleSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUmVxdWVzdElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlcXVlc3RJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkUmVxdWVzdElEOwoKICAgICMgdXBkYXRlIHJlcXVlc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgU0VUIHZhbGlkX2lkID0gMCwgdm90ZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRSZXF1ZXN0SUQgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBFbGVtZW50RXhpc3RzKCkKCmV4aXN0cyBhbiBzdXJ2ZXktLCBxdWVzdGlvbi0sIGFuc3dlci0gb3IgcmVxdWVzdC1lbGVtZW50CgogICAgbXkgJEVsZW1lbnRFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgIElEID0+IDEyMywgICAgICAgICAgICMgU3VydmV5SUQsIFF1ZXN0aW9uSUQsIEFuc3dlcklELCBSZXF1ZXN0SUQKICAgICAgICBFbGVtZW50ID0+ICdTdXJ2ZXknICAjIFN1cnZleSwgUXVlc3Rpb24sIEFuc3dlciwgUmVxdWVzdAogICAgKTsKCj1jdXQKCnN1YiBFbGVtZW50RXhpc3RzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEVsZW1lbnRJRCBFbGVtZW50KSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlTG9va3VwVGFibGUgPSAoCiAgICAgICAgU3VydmV5ICAgPT4gJ3N1cnZleScsCiAgICAgICAgUXVlc3Rpb24gPT4gJ3N1cnZleV9xdWVzdGlvbicsCiAgICAgICAgQW5zd2VyICAgPT4gJ3N1cnZleV9hbnN3ZXInLAogICAgICAgIFJlcXVlc3QgID0+ICdzdXJ2ZXlfcmVxdWVzdCcsCiAgICApOwoKICAgIG15ICRUYWJsZSA9ICRMb29rdXBUYWJsZXsgJFBhcmFte0VsZW1lbnR9IH07CiAgICBpZiAoICEkVGFibGUgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJFbGVtZW50OiAnJFBhcmFte0VsZW1lbnR9JyBpcyBub3QgdmFsaWQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFNRTCA9ICcKICAgICAgICAgICAgU0VMRUNUIENPVU5UKGlkKQogICAgICAgICAgICBGUk9NICc7CiAgICAkU1FMIC49ICRUYWJsZTsKICAgICRTUUwgLj0gJyBXSEVSRSBpZCA9ID8nOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjb3VudCBlbGVtZW50CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtFbGVtZW50SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkRWxlbWVudEV4aXN0cyA9ICdObyc7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBpZiAoICRSb3dbMF0gKSB7CiAgICAgICAgICAgICRFbGVtZW50RXhpc3RzID0gJ1llcyc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkRWxlbWVudEV4aXN0czsKfQoKPWhlYWQyIEdldFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSgpCgpnZXQgc29tZSB0ZXh0IHJlYWR5IHRvIHNob3cgYXMgcmljaC10ZXh0IGF0dGFjaG1lbnQgaW4tbGluZQoKICAgIG15ICRSaWNoVGV4dERvY3VtZW50Q29tcGxldGUgPSAkU3VydmV5T2JqZWN0LT5HZXRSaWNoVGV4dERvY3VtZW50Q29tcGxldGUoCiAgICAgICAgVGV4dCA9PiAkUmljaFRleHQsCiAgICApOwoKPWN1dAoKc3ViIEdldFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhUZXh0KSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCBwYXJhbWV0ZXIhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbiBIVE1MIHN0cmluZwogICAgbXkgJFRleHQgPSAkUGFyYW17VGV4dH07CiAgICAkVGV4dCA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKCiAgICAjIGdldCBkb2N1bWVudCBjb21wbGV0ZQogICAgbXkgJEhUTUxEb2N1bWVudENvbXBsZXRlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Eb2N1bWVudENvbXBsZXRlKAogICAgICAgIFN0cmluZyAgPT4gJFRleHQsCiAgICAgICAgQ2hhcnNldCA9PiAndXRmLTgnLAogICAgKTsKCiAgICByZXR1cm4gJEhUTUxEb2N1bWVudENvbXBsZXRlOwp9Cgo9aGVhZDIgX0J1aWxkU2VuZENvbmRpdGlvblN0cmcoKQoKYnVpbGQgc2VuZCBjb25kaXRpb24gc3RyaW5nIHdpdGggdGhlIHNpbmdsZSBpdGVtcwoKICAgIG15ICVTZW5kQ29uZGl0aW9ucyA9ICRTdXJ2ZXlPYmplY3QtPl9CdWlsZFNlbmRDb25kaXRpb25TdHJnKAogICAgICAgIFRpY2tldFR5cGVJRHMgICAgICAgICAgPT4gWzEsIDIsIDNdLCAjIChvcHRpb25hbCkKICAgICAgICBTZXJ2aWNlSURzICAgICAgICAgICAgID0+IFsxLCAyLCAzXSwgIyAob3B0aW9uYWwpCiAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyA9PiB7CiAgICAgICAgICAgICdVc2VyRmlyc3RuYW1lJyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aW9uJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICdSZWdFeHBWYWx1ZScgPT4gJ15NaScKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aW9uJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICdSZWdFeHBWYWx1ZScgPT4gJ15LYScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgIH0sICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBfQnVpbGRTZW5kQ29uZGl0aW9uU3RyZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYnVpbGQgc2VuZCBjb25kaXRpb24gaGFzaAogICAgbXkgJVNlbmRDb25kaXRpb25zOwoKICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKHF3KFRpY2tldFR5cGVJRHMgU2VydmljZUlEcyBDdXN0b21lclVzZXJDb25kaXRpb25zKSkgewogICAgICAgIG5leHQgSVRFTSBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXskSXRlbX0gKSAmJiAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXskSXRlbX0gKSApOwoKICAgICAgICAkU2VuZENvbmRpdGlvbnN7JEl0ZW19ID0gJFBhcmFteyRJdGVtfTsKICAgIH0KCiAgICAjIGR1bXAgc2VuZCBjb25kaXRpb25zIGFzIHN0cmluZwogICAgbXkgJFNlbmRDb25kaXRpb25TdHJnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+RHVtcCggRGF0YSA9PiBcJVNlbmRDb25kaXRpb25zICk7CgogICAgIyBNYWtlIHN1cmUgdGhlIHJlc3VsdGluZyBzdHJpbmcgaGFzIHRoZSBVVEYtOCBmbGFnLiBZQU1MIG9ubHkgc2V0cyBpdCBpZgogICAgIyAgIHBhcnQgb2YgdGhlIGRhdGEgYWxyZWFkeSBoYWQgaXQuCiAgICB1dGY4Ojp1cGdyYWRlKCRTZW5kQ29uZGl0aW9uU3RyZyk7CgogICAgcmV0dXJuICRTZW5kQ29uZGl0aW9uU3RyZzsKfQoKPWhlYWQyIF9TZW5kQ29uZGl0aW9uQ2hlY2tDdXN0b21lckZpZWxkKCkKClRoaXMgZnVuY3Rpb24gY29sbGVjdHMgc29tZSBmaWVsZCBjb25maWcgaW5mb3JtYXRpb24gZnJvbSB0aGUgY3VzdG9tZXIgdXNlciBtYXAuCkluIE9UUlMgNiwgdGhlcmUgaXMgYSBmdW5jdGlvbiBpbiB0aGUgQ3VzdG9tZXJVc2VyLnBtIHRoYXQgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCEhIQoKICAgIG15ICVGaWVsZENvbmZpZyA9ICRTdXJ2ZXlPYmplY3QtPl9TZW5kQ29uZGl0aW9uQ2hlY2tDdXN0b21lckZpZWxkKAogICAgICAgIEZpZWxkTmFtZSA9PiAnVXNlckVtYWlsJywKICAgICAgICBTb3VyY2UgICAgPT4gJ0N1c3RvbWVyVXNlcicsICMgb3B0aW9uYWwKICAgICk7CgpSZXR1cm5zIG9uZSBmaWVsZCBjb25maWcgaW5mb3JtYXRpb24uCgogICAgJUZpZWxkQ29uZmlnID0gKAogICAgICAgIExhYmVsICAgICAgICAgPT4gJ0VtYWlsJywKICAgICAgICBEYXRhYmFzZUZpZWxkID0+ICdlbWFpbCcsCiAgICAgICAgU3RvcmFnZVR5cGUgICA9PiAndmFyJywKICAgICk7Cgo9Y3V0CgpzdWIgX1NlbmRDb25kaXRpb25DaGVja0N1c3RvbWVyRmllbGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17RmllbGROYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgRmllbGROYW1lISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwoKICAgIFNPVVJDRToKICAgIGZvciBteSAkQ291bnQgKCAnJywgMSAuLiAxMCApIHsKICAgICAgICBuZXh0IFNPVVJDRSBpZiAhJEN1c3RvbWVyVXNlck9iamVjdC0+eyJDdXN0b21lclVzZXIkQ291bnQifTsKICAgICAgICBuZXh0IFNPVVJDRSBpZiAkUGFyYW17U291cmNlfSAmJiAkUGFyYW17U291cmNlfSBuZSAiQ3VzdG9tZXJVc2VyJENvdW50IjsKCiAgICAgICAgIyBTZWFyY2ggdGhlIHJpZ2h0IGZpZWxkIGFuZCByZXR1cm4gdGhlIGxhYmVsLgogICAgICAgIEVOVFJZOgogICAgICAgIGZvciBteSAkRW50cnkgKCBAeyAkQ3VzdG9tZXJVc2VyT2JqZWN0LT57IkN1c3RvbWVyVXNlciRDb3VudCJ9LT57Q3VzdG9tZXJVc2VyTWFwfS0+e01hcH0gfSApIHsKICAgICAgICAgICAgbmV4dCBFTlRSWSBpZiAkUGFyYW17RmllbGROYW1lfSBuZSAkRW50cnktPlswXTsKCiAgICAgICAgICAgIG15ICVGaWVsZENvbmZpZyA9ICgKICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJEVudHJ5LT5bMV0sCiAgICAgICAgICAgICAgICBEYXRhYmFzZUZpZWxkID0+ICRFbnRyeS0+WzJdLAogICAgICAgICAgICAgICAgU3RvcmFnZVR5cGUgICA9PiAkRW50cnktPls1XSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAlRmllbGRDb25maWc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybjsKfQoKPWhlYWQyIF9TZW5kQ29uZGl0aW9uR2V0RmllbGRTZWxlY3Rpb25zKCkKClJldHVybnMgdGhlIHNlbGVjdGlvbnMgZm9yIHRoZSBnaXZlbiBmaWVsZCAobWVyZ2VkIGZyb20gYWxsIHNvdXJjZXMpLgpJbiBPVFJTIDYsIHRoZXJlIGlzIGEgZnVuY3Rpb24gaW4gdGhlIEN1c3RvbWVyVXNlci5wbSB0aGF0IHNob3VsZCBiZSB1c2VkIGluc3RlYWQhISEKCiAgICBteSAlU2VsZWN0aW9uc0RhdGEgPSAkU3VydmV5T2JqZWN0LT5fU2VuZENvbmRpdGlvbkdldEZpZWxkU2VsZWN0aW9ucygKICAgICAgICBGaWVsZE5hbWUgPT4gJ1VzZXJFbWFpbCcsCiAgICApOwoKPWN1dAoKc3ViIF9TZW5kQ29uZGl0aW9uR2V0RmllbGRTZWxlY3Rpb25zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAhJFBhcmFte0ZpZWxkTmFtZX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIEZpZWxkTmFtZSEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEN1c3RvbWVyVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKTsKCiAgICBteSAlU2VsZWN0aW9uc0RhdGE7CgogICAgQ09VTlQ6CiAgICBmb3IgbXkgJENvdW50ICggJycsIDEgLi4gMTAgKSB7CiAgICAgICAgbmV4dCBDT1VOVCBpZiAhJEN1c3RvbWVyVXNlck9iamVjdC0+eyJDdXN0b21lclVzZXIkQ291bnQifTsKICAgICAgICBuZXh0IENPVU5UCiAgICAgICAgICAgIGlmICEkQ3VzdG9tZXJVc2VyT2JqZWN0LT57IkN1c3RvbWVyVXNlciRDb3VudCJ9LT57Q3VzdG9tZXJVc2VyTWFwfS0+e1NlbGVjdGlvbnN9LT57ICRQYXJhbXtGaWVsZE5hbWV9IH07CgogICAgICAgICVTZWxlY3Rpb25zRGF0YSA9ICgKICAgICAgICAgICAgJVNlbGVjdGlvbnNEYXRhLAogICAgICAgICAgICAleyAkQ3VzdG9tZXJVc2VyT2JqZWN0LT57IkN1c3RvbWVyVXNlciRDb3VudCJ9LT57Q3VzdG9tZXJVc2VyTWFwfS0+e1NlbGVjdGlvbnN9LT57ICRQYXJhbXtGaWVsZE5hbWV9IH0gfQogICAgICAgICk7CiAgICB9CgogICAgIyBNYWtlIHN1cmUgdGhlIGVuY29kaW5nIHN0YW1wIGlzIHNldC4KICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVTZWxlY3Rpb25zRGF0YSApIHsKICAgICAgICAkU2VsZWN0aW9uc0RhdGF7JEtleX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJyktPkVuY29kZUlucHV0KCAkU2VsZWN0aW9uc0RhdGF7JEtleX0gKTsKICAgIH0KCiAgICByZXR1cm4gJVNlbGVjdGlvbnNEYXRhOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OkFuc3dlcjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6U3VydmV5OjpBbnN3ZXIgLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXkKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIHN1cnZleSBhbnN3ZXIgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBBbnN3ZXJBZGQoKQoKdG8gYWRkIGEgbmV3IGFuc3dlciB0byBhIHF1ZXN0aW9uCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJBZGQoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMCwKICAgICAgICBBbnN3ZXIgPT4gJ1RoZSBBbnN3ZXInLAogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIFF1ZXN0aW9uSUQgQW5zd2VyKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGluc2VydCBhbnN3ZXIKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gc3VydmV5X2Fuc3dlciAocXVlc3Rpb25faWQsIGFuc3dlciwgcG9zaXRpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksCiAgICAgICAgICAgICAgICBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5KQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/LCAyNTUsIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBhcmFte0Fuc3dlcn0sIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtVc2VySUR9LCBdLAogICAgKTsKfQoKPWhlYWQyIEFuc3dlckRlbGV0ZSgpCgp0byBkZWxldGUgYSBhbnN3ZXIgZnJvbSBhIHF1ZXN0aW9uCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJEZWxldGUoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMCwKICAgICAgICBBbnN3ZXJJRCA9PiA0LAogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUXVlc3Rpb25JRCBBbnN3ZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZGVsZXRlIGFuc3dlcgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17QW5zd2VySUR9LCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgKTsKfQoKPWhlYWQyIEFuc3dlckdldCgpCgp0byBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgYSBhbnN3ZXIKCiAgICBteSAlQW5zd2VyID0gJFN1cnZleU9iamVjdC0+QW5zd2VyR2V0KAogICAgICAgIEFuc3dlcklEID0+IDEyMwogICAgKTsKCnJldHVybnM6CgogICAgJUFuc3dlciA9ICgKICAgICAgICBBbnN3ZXJJRCAgID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiAyLAogICAgICAgIEFuc3dlciAgICAgPT4gQ2hlY2tCb3hPbmUsCiAgICAgICAgUG9zaXRpb24gICA9PiAyNTUsCiAgICAgICAgQ3JlYXRlVGltZSA9PiAnMjAxNy0wMS0wMSAxMjowMDowMCcsCiAgICAgICAgQ3JlYXRlQnkgICA9PiAxLAogICAgICAgIENoYW5nZVRpbWUgPT4gJzIwMTctMDEtMDEgMTI6MDA6MDAnLAogICAgICAgIENoYW5nZUJ5ICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtBbnN3ZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBhbnN3ZXIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgcXVlc3Rpb25faWQsIGFuc3dlciwgcG9zaXRpb24sIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0Fuc3dlcklEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXtBbnN3ZXJJRH0gICA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gPSAkUm93WzFdOwogICAgICAgICREYXRhe0Fuc3dlcn0gICAgID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtQb3NpdGlvbn0gICA9ICRSb3dbM107CiAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gPSAkUm93WzRdOwogICAgICAgICREYXRhe0NyZWF0ZUJ5fSAgID0gJFJvd1s1XTsKICAgICAgICAkRGF0YXtDaGFuZ2VUaW1lfSA9ICRSb3dbNl07CiAgICAgICAgJERhdGF7Q2hhbmdlQnl9ICAgPSAkUm93WzddOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIEFuc3dlclVwZGF0ZSgpCgp0byB1cGRhdGUgYW4gZXhpc3RpbmcgYW5zd2VyCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJVcGRhdGUoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgQW5zd2VySUQgPT4gNiwKICAgICAgICBRdWVzdGlvbklEID0+IDQsCiAgICAgICAgQW5zd2VyID0+ICdUaGUgQW5zd2VyJywKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyVXBkYXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFVzZXJJRCBBbnN3ZXJJRCBRdWVzdGlvbklEIEFuc3dlcikpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyB1cGRhdGUgYW5zd2VyCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFNFVCBhbnN3ZXIgPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLCBjaGFuZ2VfYnkgPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17QW5zd2VyfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte0Fuc3dlcklEfSwgXCRQYXJhbXtRdWVzdGlvbklEfSwgXSwKICAgICk7Cn0KCj1oZWFkMiBBbnN3ZXJMaXN0KCkKCnRvIGdldCBhIGFycmF5IGxpc3Qgb2YgYWxsIGFuc3dlciBpdGVtcwoKICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICBRdWVzdGlvbklEID0+IDEKICAgICk7CgpyZXR1cm5zOgoKICAgIEBMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAxLAogICAgICAgICAgICBRdWVzdGlvbklEID0+IDIsCiAgICAgICAgICAgIEFuc3dlciAgICAgPT4gJ1RoZSBBbnN3ZXInLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlckxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1F1ZXN0aW9uSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBRdWVzdGlvbklEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgYW5zd2VyIGxpc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgcXVlc3Rpb25faWQsIGFuc3dlcgogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/CiAgICAgICAgICAgIE9SREVSIEJZIHBvc2l0aW9uJywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgJERhdGF7QW5zd2VySUR9ICAgPSAkUm93WzBdOwogICAgICAgICREYXRhe1F1ZXN0aW9uSUR9ID0gJFJvd1sxXTsKICAgICAgICAkRGF0YXtBbnN3ZXJ9ICAgICA9ICRSb3dbMl07CgogICAgICAgIHB1c2ggQExpc3QsIFwlRGF0YTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1oZWFkMiBBbnN3ZXJTb3J0KCkKCnRvIHNvcnQgYWxsIGFuc3dlcnMgZnJvbSBhIHF1ZXN0aW9uCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJTb3J0KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyU29ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBhbnN3ZXIgbGlzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBXSEVSRSBxdWVzdGlvbl9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcG9zaXRpb24nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBMaXN0LCAkUm93WzBdOwogICAgfQoKICAgIG15ICRDb3VudGVyID0gMTsKICAgIGZvciBteSAkQW5zd2VySUQgKEBMaXN0KSB7CgogICAgICAgICMgdXBkYXRlIHBvc2l0aW9uCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvdW50ZXIsIFwkQW5zd2VySUQgXSwKICAgICAgICApOwoKICAgICAgICAkQ291bnRlcisrOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQW5zd2VyVXAoKQoKdG8gbW92ZSBhIGFuc3dlciB1cAoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+QW5zd2VyVXAoCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgICAgIEFuc3dlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlclVwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFF1ZXN0aW9uSUQgQW5zd2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgcG9zaXRpb24KICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0Fuc3dlcklEfSwgXCRQYXJhbXtRdWVzdGlvbklEfSwgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRQb3NpdGlvbjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRQb3NpdGlvbiA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICRQb3NpdGlvbiA8IDI7CgogICAgbXkgJFBvc2l0aW9uVXAgPSAkUG9zaXRpb24gLSAxOwoKICAgICMgZ2V0IGFuc3dlcgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBXSEVSRSBxdWVzdGlvbl9pZCA9ID8gQU5EIHBvc2l0aW9uID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBvc2l0aW9uVXAsIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQW5zd2VySUREb3duOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJEFuc3dlcklERG93biA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkQW5zd2VySUREb3duOwoKICAgICMgdXBkYXRlIHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uLCBcJEFuc3dlcklERG93biwgXSwKICAgICk7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBTRVQgcG9zaXRpb24gPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUG9zaXRpb25VcCwgXCRQYXJhbXtBbnN3ZXJJRH0sIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQW5zd2VyRG93bigpCgp0byBtb3ZlIGEgYW5zd2VyIGRvd24KCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckRvd24oCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgICAgIEFuc3dlcklEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlckRvd24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUXVlc3Rpb25JRCBBbnN3ZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBwb3NpdGlvbgogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17QW5zd2VySUR9LCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFBvc2l0aW9uOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFBvc2l0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRQb3NpdGlvbjsKCiAgICBteSAkUG9zaXRpb25Eb3duID0gJFBvc2l0aW9uICsgMTsKCiAgICAjIGdldCBhbnN3ZXIKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcG9zaXRpb24gPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUG9zaXRpb25Eb3duLCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJEFuc3dlcklEVXA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQW5zd2VySURVcCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkQW5zd2VySURVcDsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbiwgXCRBbnN3ZXJJRFVwLCBdLAogICAgKTsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbkRvd24sIFwkUGFyYW17QW5zd2VySUR9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEFuc3dlckNvdW50KCkKCnRvIGNvdW50IGFsbCBhbnN3ZXJzIG9mIGEgcXVlc3Rpb24KCiAgICBteSAkQ291bnRBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJDb3VudCgKICAgICAgICBRdWVzdGlvbklEID0+IDEyMwogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJDb3VudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IGFuc3dlcnMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBDT1VOVChpZCkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ291bnRBbnN3ZXI7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ291bnRBbnN3ZXIgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkQ291bnRBbnN3ZXI7Cn0KCj1oZWFkMiBQdWJsaWNBbnN3ZXJTZXQoKQoKdG8gc2F2ZSBhIHB1YmxpYyB2b3RlCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICdhVmtkRTgyRHcycXc2ZXJDZGEnLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICAgICBWb3RlVmFsdWUgPT4gJ1RoZSBWYWx1ZScsCiAgICApOwoKPWN1dAoKc3ViIFB1YmxpY0Fuc3dlclNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQdWJsaWNTdXJ2ZXlLZXkgUXVlc3Rpb25JRCBWb3RlVmFsdWUpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcmVxdWVzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgV0hFUkUgcHVibGljX3N1cnZleV9rZXkgPSA/CiAgICAgICAgICAgICAgICBBTkQgdmFsaWRfaWQgPSAxJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UHVibGljU3VydmV5S2V5fSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFJlcXVlc3RJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRSZXF1ZXN0SUQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJFJlcXVlc3RJRDsKCiAgICAjIFByZXZlbnQgdG8gd3JpdGUgc29tZXRoaW5nIHRoYXQgb3JhY2xlIHN0b3JlIGFzIE5VTEwgaW4gZGF0YWJhc2UuCiAgICAjIFNlZSBidWcgIzk1NzUuCiAgICBpZiAoICggJERCT2JqZWN0LT57J0RCOjpUeXBlJ30gZXEgJ29yYWNsZScgKSAmJiAoICRQYXJhbXtWb3RlVmFsdWV9IGVxICcnICkgKSB7CiAgICAgICAgJFBhcmFte1ZvdGVWYWx1ZX0gPSAwOwogICAgfQoKICAgICMgaW5zZXJ0IHZvdGUKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBzdXJ2ZXlfdm90ZSAocmVxdWVzdF9pZCwgcXVlc3Rpb25faWQsIHZvdGVfdmFsdWUsIGNyZWF0ZV90aW1lKQogICAgICAgICAgICBWQUxVRVMgKCA/LCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgIEJpbmQgPT4gWyBcJFJlcXVlc3RJRCwgXCRQYXJhbXtRdWVzdGlvbklEfSwgXCRQYXJhbXtWb3RlVmFsdWV9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlF1ZXN0aW9uOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlF1ZXN0aW9uIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6U3VydmV5Cgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBzdXJ2ZXkgcXVlc3Rpb24gZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBRdWVzdGlvbkFkZCgpCgp0byBhZGQgYSBuZXcgcXVlc3Rpb24gdG8gYSBzdXJ2ZXkKCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQWRkKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIFN1cnZleUlEID0+IDEwLAogICAgICAgIFF1ZXN0aW9uID0+ICdUaGUgUXVlc3Rpb24nLAogICAgICAgIEFuc3dlclJlcXVpcmVkID0+IDEsICMgb3IgMAogICAgICAgIFR5cGUgPT4gJ1JhZGlvJywKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25BZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIFN1cnZleUlEIFF1ZXN0aW9uIFR5cGUpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJFBhcmFte1F1ZXN0aW9ufTsKCiAgICAjIGluc2VydCBhIG5ldyBxdWVzdGlvbgogICAgIyBpZiB3ZSBkaWRuJ3QgZ2V0IGFuIEFuc3dlciBQYXJhbWV0ZXIgKGUuZy4ganVzdCB1bmRlZmluZWQpCiAgICAjIG9yIGl0IHdhcyBzb21ldGhpbmcgZWxzZSB0aGFuIDAgb3IgMQogICAgIyB3ZSBhc3N1bWUgaXQncyBhIHJlcXVpcmVkIGFuc3dlcgogICAgaWYgKAogICAgICAgICFkZWZpbmVkICRQYXJhbXtBbnN3ZXJSZXF1aXJlZH0KICAgICAgICB8fAogICAgICAgICggJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBuZSAnMCcgJiYgJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBuZSAnMScgKQogICAgICAgICkKICAgIHsKICAgICAgICAkUGFyYW17QW5zd2VyUmVxdWlyZWR9ID0gMTsKICAgIH0KCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9xdWVzdGlvbiAoc3VydmV5X2lkLCBxdWVzdGlvbiwgcXVlc3Rpb25fdHlwZSwgcG9zaXRpb24sCiAgICAgICAgICAgICAgICBhbnN3ZXJfcmVxdWlyZWQsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkpCiAgICAgICAgICAgIFZBTFVFUyAoPywgPywgPywgMjU1LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPywgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtTdXJ2ZXlJRH0sIFwkUGFyYW17UXVlc3Rpb259LCBcJFBhcmFte1R5cGV9LCBcJFBhcmFte0Fuc3dlclJlcXVpcmVkfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sCiAgICAgICAgXSwKICAgICk7Cn0KCj1oZWFkMiBRdWVzdGlvbkRlbGV0ZSgpCgp0byBkZWxldGUgYSBxdWVzdGlvbiBmcm9tIGEgc3VydmV5CgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkRlbGV0ZSgKICAgICAgICBTdXJ2ZXlJRCA9PiAxLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMTAsCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFN1cnZleUlEIFF1ZXN0aW9uSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZGVsZXRlIGFsbCBhbnN3ZXJzIG9mIGEgcXVlc3Rpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0gXSwKICAgICk7CgogICAgIyBkZWxldGUgdGhlIHF1ZXN0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgREVMRVRFIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHN1cnZleV9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBhcmFte1N1cnZleUlEfSwgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBRdWVzdGlvbkdldCgpCgp0byBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgYSBxdWVzdGlvbgoKICAgIG15ICVRdWVzdGlvbiA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uR2V0KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMTIzCiAgICApOwoKcmV0dXJuczoKCiAgICAlUXVlc3Rpb24gPSAoCiAgICAgICAgUXVlc3Rpb25JRCAgICAgPT4gMSwKICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAyLAogICAgICAgIFF1ZXN0aW9uICAgICAgID0+ICdRdWVzdGlvbicsCiAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ1llc05vJywKICAgICAgICBQb3NpdGlvbiAgICAgICA9PiAxMiwKICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgIENyZWF0ZVRpbWUgICAgID0+ICcyMDE3LTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBDcmVhdGVCeSAgICAgICA9PiAxLAogICAgICAgIENoYW5nZVRpbWUgICAgID0+ICcyMDE3LTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBDaGFuZ2VCeSAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBxdWVzdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzdXJ2ZXlfaWQsIHF1ZXN0aW9uLCBxdWVzdGlvbl90eXBlLCBwb3NpdGlvbiwgYW5zd2VyX3JlcXVpcmVkLCBjcmVhdGVfdGltZSwKICAgICAgICAgICAgICAgIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieQogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJURhdGE7CgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgICAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1F1ZXN0aW9ufSAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJERhdGF7VHlwZX0gICAgICAgICAgID0gJFJvd1szXTsKICAgICAgICAkRGF0YXtQb3NpdGlvbn0gICAgICAgPSAkUm93WzRdOwogICAgICAgICREYXRhe0Fuc3dlclJlcXVpcmVkfSA9ICRSb3dbNV07CiAgICAgICAgJERhdGF7Q3JlYXRlVGltZX0gICAgID0gJFJvd1s2XTsKICAgICAgICAkRGF0YXtDcmVhdGVCeX0gICAgICAgPSAkUm93WzddOwogICAgICAgICREYXRhe0NoYW5nZVRpbWV9ICAgICA9ICRSb3dbOF07CiAgICAgICAgJERhdGF7Q2hhbmdlQnl9ICAgICAgID0gJFJvd1s5XTsKICAgIH0KCiAgICByZXR1cm4gJURhdGE7Cn0KCj1oZWFkMiBRdWVzdGlvblVwZGF0ZSgpCgp0byB1cGRhdGUgYW4gZXhpc3RpbmcgcXVlc3Rpb24KCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uVXBkYXRlKAogICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICAgICBTdXJ2ZXlJRCA9PiAzLAogICAgICAgIEFuc3dlclJlcXVpcmVkID0+ICcxJywgIyBvciAnMCcKICAgICAgICBRdWVzdGlvbiA9PiAnVGhlIFF1ZXN0aW9uJywKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25VcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIFF1ZXN0aW9uSUQgU3VydmV5SUQgUXVlc3Rpb24pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkQW5zd2VyUmVxdWlyZWQgPSAxOwogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0Fuc3dlclJlcXVpcmVkfQogICAgICAgICYmICggJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBlcSAnMScgfHwgJFBhcmFte0Fuc3dlclJlcXVpcmVkfSBlcSAnMCcgKQogICAgICAgICkKICAgIHsKICAgICAgICAkQW5zd2VyUmVxdWlyZWQgPSAkUGFyYW17QW5zd2VyUmVxdWlyZWR9OwogICAgfQoKICAgICMgdXBkYXRlIHF1ZXN0aW9uCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgU0VUIHF1ZXN0aW9uID0gPywgYW5zd2VyX3JlcXVpcmVkID0gPywgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZV9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17UXVlc3Rpb259LCBcJEFuc3dlclJlcXVpcmVkLCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIFwkUGFyYW17U3VydmV5SUR9LAogICAgICAgIF0sCiAgICApOwp9Cgo9aGVhZDIgUXVlc3Rpb25MaXN0KCkKCnRvIGdldCBhIGFycmF5IGxpc3Qgb2YgYWxsIHF1ZXN0aW9uIGl0ZW1zCgogICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICAgICAgU3VydmV5SUQgPT4gMQogICAgKTsKCnJldHVybnM6CiAgICBATGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgID0+IDEyMywsCiAgICAgICAgICAgIFN1cnZleUlEICAgICAgID0+IDEyMywKICAgICAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJ1F1ZXN0aW9uJwogICAgICAgICAgICBUeXBlICAgICAgICAgICA9PiAnWWVzTm8nLAogICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBxdWVzdGlvbnMgb2YgYSBzdXJ2ZXkKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgc3VydmV5X2lkLCBxdWVzdGlvbiwgcXVlc3Rpb25fdHlwZSwgYW5zd2VyX3JlcXVpcmVkCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcG9zaXRpb24nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlJRH0gICAgICAgPSAkUm93WzFdOwogICAgICAgICREYXRhe1F1ZXN0aW9ufSAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJERhdGF7VHlwZX0gICAgICAgICAgID0gJFJvd1szXTsKICAgICAgICAkRGF0YXtBbnN3ZXJSZXF1aXJlZH0gPSAkUm93WzRdIHx8IDA7CgogICAgICAgIHB1c2ggQExpc3QsIFwlRGF0YTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1oZWFkMiBRdWVzdGlvblNvcnQoKQoKdG8gc29ydCBhbGwgcXVlc3Rpb25zIGZyb20gYSBzdXJ2ZXkKCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uU29ydCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvblNvcnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJwogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBxdWVzdGlvbiBvZiBhIHN1cnZleSAoc29ydGVkIGJ5IHBvc2l0aW9uKQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcG9zaXRpb24nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgKTsKCiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAxOwogICAgZm9yIG15ICRRdWVzdGlvbklEIChATGlzdCkgewogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvdW50ZXIsIFwkUXVlc3Rpb25JRCBdLAogICAgICAgICk7CgogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBRdWVzdGlvblVwKCkKCnRvIG1vdmUgYSBxdWVzdGlvbiB1cAoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25VcCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25VcCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdXJ2ZXlJRCBRdWVzdGlvbklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHBvc2l0aW9uCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHN1cnZleV9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSwgXCRQYXJhbXtTdXJ2ZXlJRH0sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUG9zaXRpb24gPSAwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFBvc2l0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgJFBvc2l0aW9uIDwgMjsKCiAgICBteSAkUG9zaXRpb25VcCA9ICRQb3NpdGlvbiAtIDE7CgogICAgIyBnZXQgcXVlc3Rpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcG9zaXRpb24gPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9LCBcJFBvc2l0aW9uVXAgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRRdWVzdGlvbklERG93bjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRRdWVzdGlvbklERG93biA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkUXVlc3Rpb25JRERvd247CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbiwgXCRRdWVzdGlvbklERG93biwgXSwKICAgICk7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvblVwLCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFF1ZXN0aW9uRG93bigpCgp0byBtb3ZlIGEgcXVlc3Rpb24gZG93bgoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Eb3duKAogICAgICAgIFN1cnZleUlEID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkRvd24gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgUXVlc3Rpb25JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBwb3NpdGlvbgogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBpZCA9ID8KICAgICAgICAgICAgICAgIEFORCBzdXJ2ZXlfaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFBvc2l0aW9uOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFBvc2l0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRQb3NpdGlvbjsKCiAgICBteSAkUG9zaXRpb25Eb3duID0gJFBvc2l0aW9uICsgMTsKCiAgICAjIGdldCBxdWVzdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgICAgIEFORCBwb3NpdGlvbiA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0sIFwkUG9zaXRpb25Eb3duLCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFF1ZXN0aW9uSURVcDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRRdWVzdGlvbklEVXAgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJFF1ZXN0aW9uSURVcDsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uLCBcJFF1ZXN0aW9uSURVcCwgXSwKICAgICk7CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvbkRvd24sIFwkUGFyYW17UXVlc3Rpb25JRH0sIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUXVlc3Rpb25Db3VudCgpCgp0byBjb3VudCBhbGwgcXVlc3Rpb25zIG9mIGEgc3VydmV5CgogICAgbXkgJENvdW50UXVlc3Rpb24gPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkNvdW50KAogICAgICAgIFN1cnZleUlEID0+IDEyMwogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjb3VudCBxdWVzdGlvbnMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBDT1VOVChpZCkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJENvdW50UXVlc3Rpb247CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQ291bnRRdWVzdGlvbiA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRDb3VudFF1ZXN0aW9uOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlJlcXVlc3Q7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UmVxdWVzdCAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OlN1cnZleQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgc3VydmV5IHJlcXVlc3QgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBSZXF1ZXN0R2V0KCkKCnRvIGdldCBhbiBhcnJheSBsaXN0IG9mIHJlcXVlc3QgZWxlbWVudHMKCiAgICBteSAlUmVxdWVzdERhdGEgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0R2V0KAogICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAnQXc1ZGUzWGY1cUEnLAoKICAgICAgICBSZXF1ZXN0U2VuZFRpbWVOZXdlckRhdGUgICAgPT4gJzIwMTItMDEtMDEgMTI6MDA6MDAnLCAgICMgKG9wdGlvbmFsKQogICAgICAgIFJlcXVlc3RTZW5kVGltZU9sZGVyRGF0ZSAgICA9PiAnMjAxMi0wMS0zMSAxMjowMDowMCcsICAgIyAob3B0aW9uYWwpCiAgICAgICAgUmVxdWVzdFZvdGVUaW1lTmV3ZXJEYXRlICAgID0+ICcyMDEyLTAxLTAxIDEyOjAwOjAwJywgICAjIChvcHRpb25hbCkKICAgICAgICBSZXF1ZXN0Vm90ZVRpbWVPbGRlckRhdGUgICAgPT4gJzIwMTItMTItMzEgMTI6MDA6MDAnLCAgICMgKG9wdGlvbmFsKQogICAgICAgIFJlcXVlc3RDcmVhdGVUaW1lTmV3ZXJEYXRlICA9PiAnMjAxMi0wMS0wMSAxMjowMDowMCcsICAgIyAob3B0aW9uYWwpCiAgICAgICAgUmVxdWVzdENyZWF0ZVRpbWVPbGRlckRhdGUgID0+ICcyMDEyLTEyLTMxIDEyOjAwOjAwJywgICAjIChvcHRpb25hbCkKICAgICk7CgpyZXR1cm5zOgoKICAgICVSZXF1ZXN0RGF0YSA9ICgKICAgICAgICBSZXF1ZXN0SUQgICAgICAgPT4gMTIzLAogICAgICAgIFRpY2tldElEICAgICAgICA9PiAxMjMsCiAgICAgICAgU3VydmV5SUQgICAgICAgID0+IDEyMywKICAgICAgICBWYWxpZElEICAgICAgICAgPT4gMSwKICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJ2I0YzE0NTUyOTE5MDE4YjUxZWM3OTJjOWI4MTJiNjkxJywKICAgICAgICBTZW5kVG8gICAgICAgICAgPT4gJ21haWxAbG9jYWxob3N0LmNvbScsCiAgICAgICAgU2VuZFRpbWUgICAgICAgID0+ICcyMDE3LTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBWb3RlVGltZSAgICAgICAgPT4gJzIwMTctMDEtMDIgMTI6MDA6MDAnLAogICAgKTsKCj1jdXQKCnN1YiBSZXF1ZXN0R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBQdWJsaWNTdXJ2ZXlLZXkhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIHByZXBhcmUgc3FsCiAgICBteSAkU1FMU2VsZWN0ID0gJ1NFTEVDVCBpZCwgdGlja2V0X2lkLCBzdXJ2ZXlfaWQsIHZhbGlkX2lkLCBwdWJsaWNfc3VydmV5X2tleSwgc2VuZF90bywgc2VuZF90aW1lLCB2b3RlX3RpbWUnOwogICAgbXkgJFNRTEZyb20gICA9ICcgRlJPTSBzdXJ2ZXlfcmVxdWVzdCc7CiAgICBteSAkU1FMV2hlcmUgID0gIiBXSEVSRSBwdWJsaWNfc3VydmV5X2tleSA9ICckUGFyYW17UHVibGljU3VydmV5S2V5fSciOwoKICAgICMgc2V0IHRpbWUgcGFyYW1zCiAgICBteSAlVGltZVBhcmFtcyA9ICgKCiAgICAgICAgUmVxdWVzdFNlbmRUaW1lTmV3ZXJEYXRlICAgPT4gJ3NlbmRfdGltZSA+PScsCiAgICAgICAgUmVxdWVzdFNlbmRUaW1lT2xkZXJEYXRlICAgPT4gJ3NlbmRfdGltZSA8PScsCiAgICAgICAgUmVxdWVzdFZvdGVUaW1lTmV3ZXJEYXRlICAgPT4gJ3ZvdGVfdGltZSA+PScsCiAgICAgICAgUmVxdWVzdFZvdGVUaW1lT2xkZXJEYXRlICAgPT4gJ3ZvdGVfdGltZSA8PScsCiAgICAgICAgUmVxdWVzdENyZWF0ZVRpbWVOZXdlckRhdGUgPT4gJ2NyZWF0ZV90aW1lID49JywKICAgICAgICBSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAnY3JlYXRlX3RpbWUgPD0nLAogICAgKTsKCiAgICAjIGNoZWNrIGFuZCBhZGQgdGltZSBwYXJhbXMgdG8gV0hFUkUKICAgIFRJTUVQQVJBTToKICAgIGZvciBteSAkVGltZVBhcmFtICggc29ydCBrZXlzICVUaW1lUGFyYW1zICkgewoKICAgICAgICBuZXh0IFRJTUVQQVJBTSBpZiAhJFBhcmFteyRUaW1lUGFyYW19OwoKICAgICAgICAjIGNoZWNrIGZvcm1hdAogICAgICAgIGlmICggJFBhcmFteyRUaW1lUGFyYW19ICF+IG17IFxBIFxkXGRcZFxkLVxkXGQtXGRcZCBccyBcZFxkOlxkXGQ6XGRcZCBceiB9eG1zICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIHBhcmFtZXRlciAkVGltZVBhcmFtIGhhcyBhbiBpbnZhbGlkIGRhdGUgZm9ybWF0ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAkUGFyYW17JFRpbWVQYXJhbX0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17JFRpbWVQYXJhbX0gKTsKCiAgICAgICAgIyBhZGQgdGltZSBwYXJhbWV0ZXIgdG8gV0hFUkUKICAgICAgICAkU1FMV2hlcmUgLj0gIiBBTkQgJFRpbWVQYXJhbXN7JFRpbWVQYXJhbX0gJyRQYXJhbXskVGltZVBhcmFtfSciOwogICAgfQoKICAgIG15ICRTUUwgPSAkU1FMU2VsZWN0IC49ICRTUUxGcm9tOwogICAgJFNRTCAuPSAkU1FMV2hlcmU7CgogICAgIyBnZXQgcmVxdWVzdCBsaXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJVJlcXVlc3REYXRhOwoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9ICAgICAgID0gJFJvd1swXTsKICAgICAgICAkUmVxdWVzdERhdGF7VGlja2V0SUR9ICAgICAgICA9ICRSb3dbMV07CiAgICAgICAgJFJlcXVlc3REYXRhe1N1cnZleUlEfSAgICAgICAgPSAkUm93WzJdOwogICAgICAgICRSZXF1ZXN0RGF0YXtWYWxpZElEfSAgICAgICAgID0gJFJvd1szXTsKICAgICAgICAkUmVxdWVzdERhdGF7UHVibGljU3VydmV5S2V5fSA9ICRSb3dbNF07CiAgICAgICAgJFJlcXVlc3REYXRhe1NlbmRUb30gICAgICAgICAgPSAkUm93WzVdOwogICAgICAgICRSZXF1ZXN0RGF0YXtTZW5kVGltZX0gICAgICAgID0gJFJvd1s2XTsKICAgICAgICAkUmVxdWVzdERhdGF7Vm90ZVRpbWV9ICAgICAgICA9ICRSb3dbN107CiAgICB9CgogICAgcmV0dXJuICVSZXF1ZXN0RGF0YTsKfQoKPWhlYWQyIFJlcXVlc3RTZW5kKCkKCnRvIHNlbmQgYSByZXF1ZXN0IHRvIGEgY3VzdG9tZXIgKGlmIG1hc3RlciBzdXJ2ZXkgaXMgc2V0KQoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdFNlbmQoCiAgICAgICAgVGlja2V0SUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBSZXF1ZXN0U2VuZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VGlja2V0SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBUaWNrZXRJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBzeXN0ZW0gdGltZQogICAgbXkgJFN5c3RlbVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKS0+VG9FcG9jaCgpOwoKICAgICMgY3JlYXRlIFB1YmxpY1N1cnZleUtleQogICAgbXkgJFB1YmxpY1N1cnZleUtleTsKICAgIGlmICggISRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9ICkgewogICAgICAgIG15ICRNRDUgPSBEaWdlc3Q6Ok1ENS0+bmV3KCk7CiAgICAgICAgJE1ENS0+YWRkKCAkU3lzdGVtVGltZSAuIGludCggcmFuZCg5OTk5OTk5OTkpICkgKTsKICAgICAgICAkUHVibGljU3VydmV5S2V5ID0gJE1ENS0+aGV4ZGlnZXN0KCk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkUHVibGljU3VydmV5S2V5ID0gJFBhcmFte1B1YmxpY1N1cnZleUtleX07CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGZpbmQgbWFzdGVyIHN1cnZleQogICAgbXkgJFN0YXR1cyA9ICdNYXN0ZXInOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5CiAgICAgICAgICAgIFdIRVJFIHN0YXR1cyA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRTdGF0dXMgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRTdXJ2ZXlJRDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdXJ2ZXlJRCA9ICRSb3dbMF07CiAgICB9CgogICAgIyByZXR1cm4sIG5vIG1hc3RlciBzdXJ2ZXkgZm91bmQKICAgIHJldHVybiBpZiAhJFN1cnZleUlEOwoKICAgICMgZ2V0IHRoZSBzdXJ2ZXkKICAgIG15ICVTdXJ2ZXkgPSAkU2VsZi0+U3VydmV5R2V0KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICk7CiAgICBteSAkU3ViamVjdCA9ICRTdXJ2ZXl7Tm90aWZpY2F0aW9uU3ViamVjdH07CiAgICBteSAkQm9keSAgICA9ICRTdXJ2ZXl7Tm90aWZpY2F0aW9uQm9keX07CgogICAgIyBmaXggbmV3IGxpbmVzCiAgICAkQm9keSA9fiBzLyhcblxyfFxyXHJcbnxcclxuKS9cbi9nOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgIyB0aWNrZXQgZGF0YQogICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICBUaWNrZXRJRCAgICAgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHRpY2tldCBpcyBpbiBhIHNlbmQgcXVldWUKICAgIGlmICggJFN1cnZleXtRdWV1ZXN9ICYmIHJlZiAkU3VydmV5e1F1ZXVlc30gZXEgJ0FSUkFZJyAmJiBAeyAkU3VydmV5e1F1ZXVlc30gfSApIHsKICAgICAgICBteSAkRm91bmQ7CgogICAgICAgIFFVRVVFOgogICAgICAgIGZvciBteSAkUXVldWVJRCAoIEB7ICRTdXJ2ZXl7UXVldWVzfSB9ICkgewogICAgICAgICAgICBuZXh0IFFVRVVFIGlmICRUaWNrZXR7UXVldWVJRH0gIT0gJFF1ZXVlSUQ7CiAgICAgICAgICAgICRGb3VuZCA9IDE7CiAgICAgICAgICAgIGxhc3QgUVVFVUU7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJ1F1ZXVlJyBpZiAhJEZvdW5kOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgaWYgdGhlIGZvciBzZW5kIGNvbmRpdGlvbiB0aWNrZXQgdHlwZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJykgKSB7CgogICAgICAgICMgY2hlY2sgaWYgdGlja2V0IGlzIGluIGEgc2VuZCB0aWNrZXQgdHlwZSBpZAogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU3VydmV5e1RpY2tldFR5cGVJRHN9ICkgKSB7CgogICAgICAgICAgICByZXR1cm4gaWYgISRUaWNrZXR7VHlwZUlEfTsKCiAgICAgICAgICAgIG15ICRGb3VuZDsKCiAgICAgICAgICAgIFRJQ0tFVFRZUEU6CiAgICAgICAgICAgIGZvciBteSAkVGlja2V0VHlwZUlEICggQHsgJFN1cnZleXtUaWNrZXRUeXBlSURzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBUSUNLRVRUWVBFIGlmICRUaWNrZXR7VHlwZUlEfSAhPSAkVGlja2V0VHlwZUlEOwogICAgICAgICAgICAgICAgJEZvdW5kID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgVElDS0VUVFlQRTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICdUeXBlJyBpZiAhJEZvdW5kOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSBzZW5kIGNvbmRpdGlvbiBzZXJ2aWNlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiB0aWNrZXQgaXMgaW4gYSBzZW5kIHNlcnZpY2UKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFN1cnZleXtTZXJ2aWNlSURzfSApICkgewoKICAgICAgICAgICAgcmV0dXJuIGlmICEkVGlja2V0e1NlcnZpY2VJRH07CgogICAgICAgICAgICBteSAkRm91bmQ7CgogICAgICAgICAgICBTRVJWSUNFOgogICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIEB7ICRTdXJ2ZXl7U2VydmljZUlEc30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgU0VSVklDRSBpZiAkVGlja2V0e1NlcnZpY2VJRH0gIT0gJFNlcnZpY2VJRDsKICAgICAgICAgICAgICAgICRGb3VuZCA9IDE7CiAgICAgICAgICAgICAgICBsYXN0IFNFUlZJQ0U7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiAnU2VydmljZScgaWYgISRGb3VuZDsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUN1c3RvbWVyVXNlcjsKICAgIGlmICggJFRpY2tldHtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJUN1c3RvbWVyVXNlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInKS0+Q3VzdG9tZXJVc2VyRGF0YUdldCgKICAgICAgICAgICAgVXNlciA9PiAkVGlja2V0e0N1c3RvbWVyVXNlcklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gaWYgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OlNlbmRPbmx5VG9SZWFsQ3VzdG9tZXInKSAmJiAhJEN1c3RvbWVyVXNlcntVc2VyQ3VzdG9tZXJJRH07CiAgICB9CgogICAgIyBDaGVjayBpZiB0aGUgc2VuZCBjb25kaXRpb24gYnkgY3VzdG9tZXJ1c2VyIGZpZWxkcyBjaGVjayBpcyBlbmFibGVkLgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnKSApIHsKCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFN1cnZleXtDdXN0b21lclVzZXJDb25kaXRpb25zfSApICkgewoKICAgICAgICAgICAgIyBDaGVjayBpcyBhY3RpdmUgKyBkZWZpbmVkLCBidXQgdGhlcmUgaXMgbm8gY3VzdG9tZXIuCiAgICAgICAgICAgIHJldHVybiBpZiAhJFRpY2tldHtDdXN0b21lclVzZXJJRH07CgogICAgICAgICAgICBteSAkUmVzdWx0cyA9ICcnOwoKICAgICAgICAgICAgQVRUUklCVVRFOgogICAgICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkU3VydmV5e0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9IH0gKSB7CiAgICAgICAgICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhJEF0dHJpYnV0ZTsKCiAgICAgICAgICAgICAgICBteSBAQ29uZGl0aW9ucyA9IEB7ICRTdXJ2ZXl7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30tPnskQXR0cmlidXRlfSB9OwogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgIUBDb25kaXRpb25zOwoKICAgICAgICAgICAgICAgIG15ICRSZXN1bHQgPSAnJzsKCiAgICAgICAgICAgICAgICBDT05ESVRJT046CiAgICAgICAgICAgICAgICBmb3IgbXkgJENvbmRpdGlvbiAoQENvbmRpdGlvbnMpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiAhJENvbmRpdGlvbjsKCiAgICAgICAgICAgICAgICAgICAgbXkgJFJlZ0V4cFZhbHVlID0gJENvbmRpdGlvbi0+e1JlZ0V4cFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICBteSAkTmVnYXRpb24gICAgPSAkQ29uZGl0aW9uLT57TmVnYXRpb259OwoKICAgICAgICAgICAgICAgICAgICBteSAkSXNNYXRjaGVkID0gKCAkQ3VzdG9tZXJVc2VyeyRBdHRyaWJ1dGV9ID1+IG17JFJlZ0V4cFZhbHVlfWkgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCROZWdhdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAkSXNNYXRjaGVkID0gISRJc01hdGNoZWQ7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIENvbWJpbmUgY29uZGl0aW9ucyBmb3IgdGhpcyBmaWVsZCBieSBPUi4KICAgICAgICAgICAgICAgICAgICBpZiAoJElzTWF0Y2hlZCkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJFJlc3VsdCAuPSAnMSB8fCAnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFJlc3VsdCAuPSAnMCB8fCAnOwoKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFJlc3VsdCA9IHN1YnN0ciAkUmVzdWx0LCAwLCAtNDsKCiAgICAgICAgICAgICAgICAjIENvbWJpbmUgYWxsIGNvbmRpdGlvbnMgYnkgQU5ELgogICAgICAgICAgICAgICAgJFJlc3VsdHMgLj0gIigke1Jlc3VsdH0pICYmICI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRSZXN1bHRzID0gc3Vic3RyICRSZXN1bHRzLCAwLCAtNDsKCiAgICAgICAgICAgICMgQmxvY2sgc3VydmV5IGVtYWlsIGlmIGNvbmRpdGlvbnMgZXZhbHVhdGVzIHRvIGZhbHNlLgogICAgICAgICAgICByZXR1cm4gaWYgIWV2YWwoJFJlc3VsdHMpOyAgICAjIyBubyBjcml0aWMKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICREYXRhICggc29ydCBrZXlzICVUaWNrZXQgKSB7CiAgICAgICAgaWYgKCBkZWZpbmVkICRUaWNrZXR7JERhdGF9ICkgewogICAgICAgICAgICAkU3ViamVjdCA9fiBzLzxPVFJTX1RJQ0tFVF8kRGF0YT4vJFRpY2tldHskRGF0YX0vZ2k7CiAgICAgICAgICAgICRCb2R5ICAgID1+IHMvPE9UUlNfVElDS0VUXyREYXRhPi8kVGlja2V0eyREYXRhfS9naTsKCiAgICAgICAgICAgICMgZmlsdGVyIGZvciBuZXcgcmljaCB0ZXh0IGNvbnRlbnQKICAgICAgICAgICAgJEJvZHkgPX4gcy8mbHQ7T1RSU19USUNLRVRfJERhdGEmZ3Q7LyRUaWNrZXR7JERhdGF9L2c7CiAgICAgICAgfQogICAgfQoKICAgICMgY2xlYW51cAogICAgJFN1YmplY3QgPX4gcy88T1RSU19USUNLRVRfLis/Pi8tL2dpOwogICAgJEJvZHkgICAgPX4gcy88T1RSU19USUNLRVRfLis/Pi8tL2dpOwoKICAgICMgcmVwbGFjZSBjb25maWcgb3B0aW9ucwogICAgJFN1YmplY3QgPX4gc3s8T1RSU19DT05GSUdfKC4rPyk+fXskQ29uZmlnT2JqZWN0LT5HZXQoJDEpfWVneDsKICAgICRCb2R5ICAgID1+IHN7PE9UUlNfQ09ORklHXyguKz8pPn17JENvbmZpZ09iamVjdC0+R2V0KCQxKX1lZ3g7CgogICAgIyBmaWx0ZXIgZm9yIG5ldyByaWNoIHRleHQgY29udGVudAogICAgJEJvZHkgPX4gc3smbHQ7T1RSU19DT05GSUdfKC4rPykmZ3Q7fXskQ29uZmlnT2JqZWN0LT5HZXQoJDEpfWVneDsKCiAgICAjIGNsZWFudXAKICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfQ09ORklHXy4rPz4vLS9naTsKICAgICRCb2R5ICAgID1+IHMvPE9UUlNfQ09ORklHXy4rPz4vLS9naTsKCiAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAkQm9keSA9fiBzLyZsdDtPVFJTX0NPTkZJR18uKz8mZ3Q7Ly0vZ2k7CgogICAgIyBnZXQgY3VzdG9tZXIgZGF0YSBhbmQgcmVwbGFjZSBpdCB3aXRoIDxPVFJTX0NVU1RPTUVSX0RBVEFfLi4uCiAgICBpZiAoJUN1c3RvbWVyVXNlcikgewoKICAgICAgICAjIHJlcGxhY2UgY3VzdG9tZXIgc3R1ZmYgd2l0aCB0YWdzCiAgICAgICAgQ1VTVE9NRVI6CiAgICAgICAgZm9yIG15ICREYXRhICggc29ydCBrZXlzICVDdXN0b21lclVzZXIgKSB7CiAgICAgICAgICAgIG5leHQgQ1VTVE9NRVIgaWYgISRDdXN0b21lclVzZXJ7JERhdGF9OwoKICAgICAgICAgICAgJFN1YmplY3QgPX4gcy88T1RSU19DVVNUT01FUl9EQVRBXyREYXRhPi8kQ3VzdG9tZXJVc2VyeyREYXRhfS9naTsKICAgICAgICAgICAgJEJvZHkgICAgPX4gcy88T1RSU19DVVNUT01FUl9EQVRBXyREYXRhPi8kQ3VzdG9tZXJVc2VyeyREYXRhfS9naTsKCiAgICAgICAgICAgICMgZmlsdGVyIGZvciBuZXcgcmljaCB0ZXh0IGNvbnRlbnQKICAgICAgICAgICAgJEJvZHkgPX4gcy8mbHQ7T1RSU19DVVNUT01FUl9EQVRBXyREYXRhJmd0Oy8kQ3VzdG9tZXJVc2VyeyREYXRhfS9naTsKICAgICAgICB9CiAgICB9CgogICAgIyBjbGVhbnVwIGFsbCBub3QgbmVlZGVkIDxPVFJTX0NVU1RPTUVSX0RBVEFfIHRhZ3MKICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfQ1VTVE9NRVJfREFUQV8uKz8+Ly0vZ2k7CiAgICAkQm9keSAgICA9fiBzLzxPVFJTX0NVU1RPTUVSX0RBVEFfLis/Pi8tL2dpOwoKICAgICMgZmlsdGVyIGZvciBuZXcgcmljaCB0ZXh0IGNvbnRlbnQKICAgICRCb2R5ID1+IHMvJmx0O09UUlNfQ1VTVE9NRVJfREFUQV8uKz8mZ3Q7Ly0vZ2k7CgogICAgIyByZXBsYWNlIGtleQogICAgJFN1YmplY3QgPX4gcy88T1RSU19QdWJsaWNTdXJ2ZXlLZXk+LyRQdWJsaWNTdXJ2ZXlLZXkvZ2k7CiAgICAkQm9keSAgICA9fiBzLzxPVFJTX1B1YmxpY1N1cnZleUtleT4vJFB1YmxpY1N1cnZleUtleS9naTsKCiAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAkQm9keSA9fiBzLyZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDsvJFB1YmxpY1N1cnZleUtleS9naTsKCiAgICAjIEdldCByZXF1ZXN0IHJlY2lwaWVudC4KICAgIG15ICRUbyA9ICRTZWxmLT5fR2V0UmVxdWVzdFJlY2lwaWVudCgKICAgICAgICBVc2VyRW1haWwgPT4gJEN1c3RvbWVyVXNlcntVc2VyRW1haWx9IC8vICcnLAogICAgICAgIFRpY2tldElEICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRUbzsKCiAgICAjIGNoZWNrIGlmIG5vdCBzdXJ2ZXkgc2hvdWxkIGJlIHNlbmQKICAgIG15ICRTZW5kTm9TdXJ2ZXlSZWdFeHAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6U2VuZE5vU3VydmV5UmVnRXhwJyk7CgogICAgcmV0dXJuIGlmICRTZW5kTm9TdXJ2ZXlSZWdFeHAgJiYgJFRvID1+IC8kU2VuZE5vU3VydmV5UmVnRXhwL2k7CgogICAgIyBPbmx5IGlmIHdlIGhhdmVuJ3QgYmVlbiBjYWxsZWQgYnkgQ1JPTgogICAgaWYgKCAhJFBhcmFte1RyaWdnZXJTZW5kUmVxdWVzdHN9ICkgewogICAgICAgIG15ICRBbW91bnRPZlN1cnZleXNQZXIzMERheXMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6QW1vdW50T2ZTdXJ2ZXlzUGVyMzBEYXlzJyk7CgogICAgICAgICMgaWYgd2Ugc2hvdWxkIGp1c3Qgc2VuZCBhIGNlcnRhaW4gYW1vdW50IG9mIHN1cnZleXMgcGVyIDMwIGRheXMgJiByZWNpcGllbnQKICAgICAgICBpZiAoJEFtb3VudE9mU3VydmV5c1BlcjMwRGF5cykgewoKICAgICAgICAgICAgIyBDcmVhdGUgYSBuZXcgRGF0ZVRpbWUgb2JqZWN0IChjdXJyZW50IHRpbWUpLgogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKCiAgICAgICAgICAgICMgRmluZCBhbGwgc3VydmV5cyB0aGF0IHdlcmUgY3JlYXRlZCBpbiB0aGUgbGFzdCAzMCBkYXlzCiAgICAgICAgICAgICREYXRlVGltZU9iamVjdC0+U3VidHJhY3QoCiAgICAgICAgICAgICAgICBEYXlzID0+IDMwLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkTGFzdFNlbnRUaW1lID0gMDsKCiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBTRUxFQ1QgY3JlYXRlX3RpbWUKICAgICAgICAgICAgICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgICAgICAgICAgICAgV0hFUkUgTE9XRVIoc2VuZF90bykgPSA/CiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBjcmVhdGVfdGltZSA+PSA/CiAgICAgICAgICAgICAgICAgICAgT1JERVIgQlkgY3JlYXRlX3RpbWUgREVTQycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRUbywgXCREYXRlVGltZU9iamVjdC0+VG9TdHJpbmcoKSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgICAgICAgICBteSBAUm93czsKICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBSb3dzLCAkUm93WzBdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIElmIHdlIGhhdmUgcmVhY2hlZCB0aGUgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyBwZXIgbW9udGgKICAgICAgICAgICAgaWYgKCBzY2FsYXIgQFJvd3MgPj0gJEFtb3VudE9mU3VydmV5c1BlcjMwRGF5cyApIHsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBhIHN1cnZleSBpcyBzZW50IGluIHRoZSBsYXN0IHRpbWUKICAgIG15ICRTZW5kUGVyaW9kID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OlNlbmRQZXJpb2QnKTsKICAgIGlmICgkU2VuZFBlcmlvZCkgewogICAgICAgIG15ICRMYXN0U2VudERhdGVUaW1lOwoKICAgICAgICAjIGdldCBzZW5kIHRpbWUKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIFNFTEVDVCBzZW5kX3RpbWUKICAgICAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgICAgIFdIRVJFIExPV0VSKHNlbmRfdG8pID0gPwogICAgICAgICAgICAgICAgT1JERVIgQlkgc2VuZF90aW1lIERFU0MnLAogICAgICAgICAgICBCaW5kICA9PiBbIFwkVG8gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJExhc3RTZW50RGF0ZVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUm93WzBdLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICgkTGFzdFNlbnREYXRlVGltZSkgewogICAgICAgICAgICBteSAkRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGFzdFNlbnREYXRlVGltZS0+QWRkKAogICAgICAgICAgICAgICAgU2Vjb25kcyA9PiAkU2VuZFBlcmlvZCAqIDI0ICogNjAgKiA2MCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiBpZiAkTGFzdFNlbnREYXRlVGltZSA+ICREYXRlVGltZU9iamVjdDsKICAgICAgICB9CiAgICB9CiAgICBteSAkU2VuZEluSG91cnNBZnRlckNsb3NlID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScpOwoKICAgICMgSWYgbm8gRGVsYXllZCBTZW5kaW5nIGlzIGNvbmZpZ3VyZWQKICAgICMgc2VuZCBpbW1lZGlhdGVseSwgbG9nIGl0IHRvIFRpY2tldCBIaXN0b3J5IGFuZCBpbnNlcnQgaXQgdG8gc3VydmV5X3JlcXVlc3RzCiAgICAjIGluY2x1ZGluZyBzZW50X3RpbWUKICAgIGlmICggISRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgJiYgISRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfSApIHsKCiAgICAgICAgIyBpbnNlcnQgcmVxdWVzdAogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9yZXF1ZXN0ICh0aWNrZXRfaWQsIHN1cnZleV9pZCwgdmFsaWRfaWQsIHB1YmxpY19zdXJ2ZXlfa2V5LAogICAgICAgICAgICAgICAgICAgIHNlbmRfdG8sIHNlbmRfdGltZSwgY3JlYXRlX3RpbWUpCiAgICAgICAgICAgICAgICBWQUxVRVMgKD8sID8sIDEsID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtUaWNrZXRJRH0sIFwkU3VydmV5SUQsIFwkUHVibGljU3VydmV5S2V5LCBcJFRvIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBsb2cgYWN0aW9uIG9uIHRpY2tldAogICAgICAgICRUaWNrZXRPYmplY3QtPkhpc3RvcnlBZGQoCiAgICAgICAgICAgIFRpY2tldElEICAgICA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgICAgICAgICBDcmVhdGVVc2VySUQgPT4gMSwKICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdNaXNjJywKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICJTZW50IGN1c3RvbWVyIHN1cnZleSB0byAnJFRvJy4iLAogICAgICAgICk7CiAgICB9CgogICAgIyBJZiB3ZSBzaG91bGQgc2VuZCBkZWxheWVkIGp1c3QgQ1JPTiBqb2JzIGRlbGl2ZXIgIlRyaWdnZXJTZW5kUmVxdWVzdHMiLAogICAgIyBzbyB3ZSB3ZXJlIGNhbGxlZCBieSBhIGNsb3NlZCB0aWNrZXQKICAgICMgYW5kIGhhdmUgdG8gY3JlYXRlIHRoZSBzdXJ2ZXlfcmVxdWVzdCByZWNvcmQgd2l0aCBubyBzZW5kX3RpbWUKICAgICMgKHdpbGwgYmUgZmlsbGVkIGluIGJ5IENST04gam9iIGFzIHNvb24gYXMgaXQgcmVhbGx5IGdvdCBkZWxpdmVyZWQpCiAgICAjIGFkZGl0aW9uYWxseSBubyBUaWNrZXQgSGlzdG9yeSB5ZXQsIGNhdXNlIG5vIHNlbmQgaGFzIGhhcHBlbmVkCiAgICBlbHNpZiAoICRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgJiYgISRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfSApIHsKCiAgICAgICAgIyBpbnNlcnQgcmVxdWVzdAogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9yZXF1ZXN0ICh0aWNrZXRfaWQsIHN1cnZleV9pZCwgdmFsaWRfaWQsIHB1YmxpY19zdXJ2ZXlfa2V5LAogICAgICAgICAgICAgICAgICAgIHNlbmRfdG8sIGNyZWF0ZV90aW1lKQogICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/LCAxLCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCknLAogICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtUaWNrZXRJRH0sIFwkU3VydmV5SUQsIFwkUHVibGljU3VydmV5S2V5LCBcJFRvLCBdLAogICAgICAgICk7CgogICAgfQoKICAgICMgaGVyZSB3ZSBnb3QgY2FsbGVkIGJ5IENST04sIGFuZCBubyBtYXR0ZXIgaWYgU2VuZEluSG91cnNBZnRlckNsb3NlIGlzIGNvbmZpZ3VyZWQKICAgICMgb3Igbm90LCB3ZSBoYXZlIHRvIHNlbmQgdGhlIHN1cnZleSByZXF1ZXN0cyB0aGF0IHdlcmVuJ3Qgc2VudCB5ZXQKICAgICMgdGhpcyB0aW1lIHdlIGhhdmUgdG8gdXBkYXRlIHRoZSBzdXJ2ZXlfcmVxdWVzdCBsaW5lCiAgICAjIHRvIGZpbGwgaW4gdGhlIHNlbmRfdGltZSBhbmQgY3JlYXRlIHRoZSBUaWNrZXQgSGlzdG9yeSBlbnRyeQogICAgZWxzaWYgKAogICAgICAgICRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfQogICAgICAgICYmICRQYXJhbXtTdXJ2ZXlSZXF1ZXN0SUR9CiAgICAgICAgJiYgJFBhcmFte1N1cnZleVJlcXVlc3RJRH0gPX4gL15cZCskLwogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgICAgIFNFVCBzZW5kX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcAogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5UmVxdWVzdElEfSBdLAogICAgICAgICk7CgogICAgICAgICMgbG9nIGFjdGlvbiBvbiB0aWNrZXQKICAgICAgICAkVGlja2V0T2JqZWN0LT5IaXN0b3J5QWRkKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgQ3JlYXRlVXNlcklEID0+IDEsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICA9PiAnTWlzYycsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAiU2VudCBjdXN0b21lciBzdXJ2ZXkgdG8gJyRUbycuIiwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNoYXJzZXQKICAgIG15ICRDaGFyc2V0ID0gJENvbmZpZ09iamVjdC0+R2V0KCdEZWZhdWx0Q2hhcnNldCcpIHx8ICd1dGYtOCc7CgogICAgIyBnZXQgSFRNTFV0aWxzIG9iamVjdAogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAjIGNsZWFuIEhUTUwgYW5kIGNvbnZlcnQgdGhlIEZpZWxkIGluIEhUTUwgKFxuIC0tPjxicj4pCiAgICAkQm9keSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKICAgIGlmICggISQxICkgewoKICAgICAgICAjIGNvbnZlcnQgYm9keSB0byBIVE1MCiAgICAgICAgJEJvZHkgPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0hUTUwoCiAgICAgICAgICAgIFN0cmluZyA9PiAkQm9keSwKICAgICAgICApOwogICAgfQoKICAgICMgcHJlcGFyZSBIVE1MIGxpbmtzCiAgICAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgU3RyaW5nID0+IFwkQm9keSwKICAgICk7CgogICAgIyBjb21wbGV0ZSBIVE1MIGRvY3VtZW50CiAgICAkQm9keSA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgU3RyaW5nICA9PiAkQm9keSwKICAgICAgICBDaGFyc2V0ID0+ICRDaGFyc2V0LAogICAgKTsKCiAgICAjIHNlbmQgc3VydmV5CiAgICBpZiAoICEkU2VuZEluSG91cnNBZnRlckNsb3NlIHx8ICRQYXJhbXtUcmlnZ2VyU2VuZFJlcXVlc3RzfSApIHsKICAgICAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkVtYWlsJyktPlNlbmQoCiAgICAgICAgICAgIEZyb20gICAgID0+ICRTdXJ2ZXl7Tm90aWZpY2F0aW9uU2VuZGVyfSwKICAgICAgICAgICAgVG8gICAgICAgPT4gJFRvLAogICAgICAgICAgICBTdWJqZWN0ICA9PiAkU3ViamVjdCwKICAgICAgICAgICAgTWltZVR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENoYXJzZXQgID0+ICRDaGFyc2V0LAogICAgICAgICAgICBCb2R5ICAgICA9PiAkQm9keSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUmVxdWVzdENvdW50KCkKCnRvIGNvdW50IGFsbCByZXF1ZXN0cyBvZiBhIHN1cnZleQoKICAgIG15ICRSZXF1ZXN0Q291bnQgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0Q291bnQoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMjMsCiAgICAgICAgVmFsaWRJRCA9PiAwLCAgICAgICAjICgwfDF8YWxsKQogICAgKTsKCj1jdXQKCnN1YiBSZXF1ZXN0Q291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgVmFsaWRJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNvdW50IHJlcXVlc3RzCiAgICBteSAkU1FMID0gJwogICAgICAgIFNFTEVDVCBDT1VOVChpZCkKICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPyc7CgogICAgIyBhZGQgdmFsaWQgcGFydAogICAgaWYgKCAhJFBhcmFte1ZhbGlkSUR9ICkgewogICAgICAgICRTUUwgLj0gIiBBTkQgdmFsaWRfaWQgPSAwIjsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte1ZhbGlkSUR9IGVxIDEgKSB7CiAgICAgICAgJFNRTCAuPSAiIEFORCB2YWxpZF9pZCA9IDEiOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBhc2sgZGF0YWJhc2UKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFJlcXVlc3RDb3VudDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRSZXF1ZXN0Q291bnQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkUmVxdWVzdENvdW50Owp9Cgo9aGVhZDIgUmVxdWVzdERlbGV0ZSgpCgpkZWxldGUgcmVxdWVzdCBieSBpZAoKICAgIG15ICRWb3RlRGVsZXRlID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdERlbGV0ZSgKICAgICAgICBSZXF1ZXN0SUQgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBSZXF1ZXN0RGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFJlcXVlc3RJRCkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IHZvdGVzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICAgPT4gJ0RFTEVURSBGUk9NIHN1cnZleV9yZXF1ZXN0IFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1JlcXVlc3RJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWJlZ2luIEludGVybmFsOgoKPWhlYWQyIF9HZXRSZXF1ZXN0UmVjaXBpZW50KCkKCkV4dHJhY3RzIGFuZCBjaGVja3MgdGhlIHJlY2lwaWVudCBmb3IgdGhlIHJlcXVlc3QuCgogICAgbXkgJFJlY2lwaWVudCA9ICRTdXJ2ZXlPYmplY3QtPl9HZXRSZXF1ZXN0UmVjaXBpZW50KAogICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4nLCAgICAgIyBvcHRpb25hbAogICAgICAgIFRpY2tldElEICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKQoKUmV0dXJuczoKCiAgICAkUmVjaXBpZW50ID0gJ3VzZXJAZXhhbXBsZS5jb20nOyAgICAjIG9yIGZhbHNlIGluIGNhc2Ugb2YgYW4gZXJyb3IuCgo9Y3V0CgpzdWIgX0dldFJlcXVlc3RSZWNpcGllbnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJFbWFpbH0gJiYgISRQYXJhbXtUaWNrZXRJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJFbWFpbCBvciBUaWNrZXRJRCIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRUb1N0cmluZyA9ICRQYXJhbXtVc2VyRW1haWx9OwoKICAgIGlmICggISRUb1N0cmluZyApIHsKICAgICAgICBteSAkQXJ0aWNsZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKTsKCiAgICAgICAgIyBTaW5jZSB3ZSBjYW4ndCBmaWx0ZXIgYnkgbXVsdGlwbGUgQ2hhbm5lbHMsIHdlIG5lZWQgdG8gZ2V0IGFsbCBhcnRpY2xlcyB2aXNpYmxlIHRvIHRoZSBjdXN0b21lci4KICAgICAgICBteSBAQXJ0aWNsZXMgPSAkQXJ0aWNsZU9iamVjdC0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJENvbW11bmljYXRpb25DaGFubmVsT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbW11bmljYXRpb25DaGFubmVsJyk7CgogICAgICAgIG15IEBNSU1FQmFzZUNoYW5uZWxJRHM7CiAgICAgICAgZm9yIG15ICRDaGFubmVsIChxdyhFbWFpbCBJbnRlcm5hbCBQaG9uZSkpIHsKICAgICAgICAgICAgbXkgJUNvbW11bmljYXRpb25DaGFubmVsID0gJENvbW11bmljYXRpb25DaGFubmVsT2JqZWN0LT5DaGFubmVsR2V0KAogICAgICAgICAgICAgICAgQ2hhbm5lbE5hbWUgPT4gJENoYW5uZWwsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQE1JTUVCYXNlQ2hhbm5lbElEcywgJENvbW11bmljYXRpb25DaGFubmVse0NoYW5uZWxJRH07CiAgICAgICAgfQoKICAgICAgICAjIEZpbHRlciBhcnRpY2xlcyB0aGF0IGFyZSBNSU1FQmFzZSBvbmx5LgogICAgICAgIG15IEBNSU1FQmFzZUFydGljbGVzOwogICAgICAgIGZvciBteSAkQXJ0aWNsZSAoQEFydGljbGVzKSB7CiAgICAgICAgICAgIGlmICggZ3JlcCB7ICRBcnRpY2xlLT57Q29tbXVuaWNhdGlvbkNoYW5uZWxJRH0gPT0gJF8gfSBATUlNRUJhc2VDaGFubmVsSURzICkgewogICAgICAgICAgICAgICAgcHVzaCBATUlNRUJhc2VBcnRpY2xlcywgJEFydGljbGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgRmluZCBsYXN0IGFydGljbGUgdmlzaWJsZSBmb3IgY3VzdG9tZXIgdGhhdCBoYXMgRnJvbS9UbyBmaWVsZC4KICAgICAgICBTRU5ERVJfVFlQRToKICAgICAgICBmb3IgbXkgJFNlbmRlclR5cGUgKHF3KGN1c3RvbWVyIGFnZW50KSkgewoKICAgICAgICAgICAgIyBDaGVjayBmb3IgYXJ0aWNsZXMgY3JlYXRlZCBieSBjdXN0b21lcgogICAgICAgICAgICBteSAkU2VuZGVyVHlwZUlEID0gJEFydGljbGVPYmplY3QtPkFydGljbGVTZW5kZXJUeXBlTG9va3VwKAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSA9PiAkU2VuZGVyVHlwZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIEFSVElDTEU6CiAgICAgICAgICAgIGZvciBteSAkQXJ0aWNsZSAoIHJldmVyc2UgQE1JTUVCYXNlQXJ0aWNsZXMgKSB7CiAgICAgICAgICAgICAgICBpZiAoICRBcnRpY2xlLT57U2VuZGVyVHlwZUlEfSA9PSAkU2VuZGVyVHlwZUlEICkgewogICAgICAgICAgICAgICAgICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQXJ0aWNsZSgKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgID0+ICRQYXJhbXtUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEFydGljbGVJRCA9PiAkQXJ0aWNsZS0+e0FydGljbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJUFydGljbGVEYXRhID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgQXJ0aWNsZUlEID0+ICRBcnRpY2xlLT57QXJ0aWNsZUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZW5kZXJUeXBlIGVxICdjdXN0b21lcicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUb1N0cmluZyA9ICRBcnRpY2xlRGF0YXtGcm9tfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRUb1N0cmluZyA9ICRBcnRpY2xlRGF0YXtUb307CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBsYXN0IFNFTkRFUl9UWVBFIGlmICRUb1N0cmluZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHBhcnNlIHRoZSB0byBzdHJpbmcKICAgIG15ICRUbzsKICAgIGZvciBteSAkVG9QYXJzZXIgKCBNYWlsOjpBZGRyZXNzLT5wYXJzZSgkVG9TdHJpbmcpICkgewogICAgICAgICRUbyA9ICRUb1BhcnNlci0+YWRkcmVzcygpOwogICAgfQoKICAgICMgcmV0dXJuIGlmIG5vIHRvIGlzIGZvdW5kCiAgICByZXR1cm4gaWYgISRUbzsKCiAgICAjIGNoZWNrIGlmIGl0J3MgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIChtaW4gaXMgbmVlZGVkKQogICAgcmV0dXJuIGlmICRUbyAhfiAvQC87CgogICAgbXkgJFZhbGlkRW1haWwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2hlY2tJdGVtJyktPkNoZWNrRW1haWwoCiAgICAgICAgQWRkcmVzcyA9PiAkVG8sCiAgICApOwogICAgcmV0dXJuIGlmICEkVmFsaWRFbWFpbDsKCiAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZXMKICAgICRUbyA9IGxjICRUbzsKCiAgICAjIGNoZWNrIHJlY2lwaWVudCBibGFja2xpc3QKICAgIG15ICRSZWNpcGllbnRCbGFja2xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uUmVjaXBpZW50QmxhY2tsaXN0Jyk7CiAgICBpZiAoCiAgICAgICAgZGVmaW5lZCAkUmVjaXBpZW50QmxhY2tsaXN0CiAgICAgICAgJiYgcmVmICRSZWNpcGllbnRCbGFja2xpc3QgZXEgJ0FSUkFZJwogICAgICAgICYmIEB7JFJlY2lwaWVudEJsYWNrbGlzdH0KICAgICAgICApCiAgICB7CiAgICAgICAgZm9yIG15ICRSZWNpcGllbnQgKCBAeyRSZWNpcGllbnRCbGFja2xpc3R9ICkgewogICAgICAgICAgICByZXR1cm4gaWYgZGVmaW5lZCAkUmVjaXBpZW50ICYmIGxlbmd0aCAkUmVjaXBpZW50ICYmICRUbyBlcSBsYyAkUmVjaXBpZW50OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFRvOwp9CgoxOwoKPWVuZCBJbnRlcm5hbDoKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OlZvdGU7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6Vm90ZSAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OlN1cnZleQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgc3VydmV5IHZvdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBWb3RlR2V0KCkKCnRvIGdldCBhbGwgYXR0cmlidXRlcyBvZiBhIHZvdGUKCiAgICBteSBAVm90ZSA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgUmVxdWVzdElEID0+IDEzLAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMjMKICAgICk7CgpyZXR1cm5zOgoKICAgIEBWb3RlID0gKAogICAgICAgIHsKICAgICAgICAgICAgUmVxdWVzdElEID0+IDEyMywKICAgICAgICAgICAgVm90ZVZhbHVlID0+ICdZZXMnLAogICAgICAgIH0sCiAgICAgICAgLi4uCiAgICApOwoKPWN1dAoKc3ViIFZvdGVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUmVxdWVzdElEIFF1ZXN0aW9uSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHZvdGUKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgdm90ZV92YWx1ZQogICAgICAgICAgICBGUk9NIHN1cnZleV92b3RlCiAgICAgICAgICAgIFdIRVJFIHJlcXVlc3RfaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtSZXF1ZXN0SUR9LCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgJERhdGF7UmVxdWVzdElEfSA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7Vm90ZVZhbHVlfSA9ICRSb3dbMV0gfHwgJy0nOwoKICAgICAgICBwdXNoIEBMaXN0LCBcJURhdGE7CiAgICB9CgogICAgcmV0dXJuIEBMaXN0Owp9Cgo9aGVhZDIgVm90ZUdldEFsbCgpCgp0byBnZXQgYWxsIHZvdGVzIGZvciBhIHJlcXVlc3QgaWQsIGluY2x1ZGluZyBxdWVzdGlvbiBkYXRhCgogICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0QWxsKAogICAgICAgIFJlcXVlc3RJRCA9PiAxLAogICAgKTsKCiAgICBSZXR1cm5zOgogICAgICAgIFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJ1ZvdGVJRCcgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICdWb3RlVmFsdWUnICAgID0+ICdUZXN0dmFsdWUnLAogICAgICAgICAgICAgICAgJ1F1ZXN0aW9uSUQnICAgPT4gMSwKICAgICAgICAgICAgICAgICdRdWVzdGlvbicgICAgID0+ICdGdW5ueSBxdWVzdGlvbiAjMScsCiAgICAgICAgICAgICAgICAnUXVlc3Rpb25UeXBlJyA9PiAnQ2hlY2tib3gnLAogICAgICAgICAgICB9LAogICAgICAgICAgICAuLi4KICAgICAgICBdCgo9Y3V0CgpzdWIgVm90ZUdldEFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFJlcXVlc3RJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUCiAgICAgICAgICAgICAgICBzdm90ZS5pZCwgc3ZvdGUucXVlc3Rpb25faWQsIHN2b3RlLnZvdGVfdmFsdWUsCiAgICAgICAgICAgICAgICBzcXVlc3Rpb24ucXVlc3Rpb24sIHNxdWVzdGlvbi5xdWVzdGlvbl90eXBlCiAgICAgICAgICAgIEZST00KICAgICAgICAgICAgICAgIHN1cnZleV92b3RlIHN2b3RlLAogICAgICAgICAgICAgICAgc3VydmV5X3F1ZXN0aW9uIHNxdWVzdGlvbgogICAgICAgICAgICBXSEVSRQogICAgICAgICAgICAgICAgc3ZvdGUucmVxdWVzdF9pZCA9ID8gQU5EIHN2b3RlLnF1ZXN0aW9uX2lkID0gc3F1ZXN0aW9uLmlkCiAgICAgICAgICAgIE9SREVSIEJZIHN2b3RlLnF1ZXN0aW9uX2lkIEFTQycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17UmVxdWVzdElEfSwgXSwKICAgICk7CgogICAgbXkgQExpc3Q7CgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgIG15ICVWb3RlRGF0YSA9ICgKICAgICAgICAgICAgVm90ZUlEICAgICAgID0+ICRSb3dbMF0sCiAgICAgICAgICAgIFZvdGVWYWx1ZSAgICA9PiAkUm93WzJdIHx8ICctJywKICAgICAgICAgICAgUXVlc3Rpb25JRCAgID0+ICRSb3dbMV0sCiAgICAgICAgICAgIFF1ZXN0aW9uICAgICA9PiAkUm93WzNdLAogICAgICAgICAgICBRdWVzdGlvblR5cGUgPT4gJFJvd1s0XSwKICAgICAgICApOwoKICAgICAgICBwdXNoIEBMaXN0LCBcJVZvdGVEYXRhOwogICAgfQoKICAgIHJldHVybiBATGlzdDsKfQoKPWhlYWQyIFZvdGVMaXN0KCkKCnRvIGdldCBhIGFycmF5IGxpc3Qgb2YgYWxsIHZvdGUgaXRlbXMKCiAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVMaXN0KAogICAgICAgIFN1cnZleUlEID0+IDEKICAgICk7CgpyZXR1cm5zOgoKICAgIEBMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgUmVxdWVzdElEID0+IDEyMywKICAgICAgICAgICAgVGlja2V0SUQgID0+IDEyMywKICAgICAgICAgICAgU2VuZFRpbWUgID0+ICcyMDE3LTAxLTAxIDEyOjAwOjAwJywKICAgICAgICAgICAgVm90ZVRpbWUgID0+ICcyMDE3LTAxLTAyIDEyOjAwOjAwJywKICAgICAgICB9LAogICAgICAgIC4uLgogICAgKTsKCj1jdXQKCnN1YiBWb3RlTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHZvdGUgbGlzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCB0aWNrZXRfaWQsIHNlbmRfdGltZSwgdm90ZV90aW1lCiAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPwogICAgICAgICAgICAgICAgQU5EIHZhbGlkX2lkID0gMAogICAgICAgICAgICBPUkRFUiBCWSB2b3RlX3RpbWUgREVTQycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlRGF0YTsKICAgICAgICAkRGF0YXtSZXF1ZXN0SUR9ID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtUaWNrZXRJRH0gID0gJFJvd1sxXTsKICAgICAgICAkRGF0YXtTZW5kVGltZX0gID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtWb3RlVGltZX0gID0gJFJvd1szXTsKCiAgICAgICAgcHVzaCBATGlzdCwgXCVEYXRhOwogICAgfQoKICAgIHJldHVybiBATGlzdDsKfQoKPWhlYWQyIFZvdGVBdHRyaWJ1dGVHZXQoKQoKdG8gZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIGEgdm90ZQoKICAgIG15ICRWb3RlQXR0cmlidXRlQ29udGVudCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVBdHRyaWJ1dGVHZXQoCiAgICAgICAgVm90ZUlEID0+IDEzLAogICAgKTsKCnJldHVybnM6CiAgICAkVm90ZUF0dHJpYnV0ZUNvbnRlbnQgPSAnWWVzJzsKCj1jdXQKCnN1YiBWb3RlQXR0cmlidXRlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFZvdGVJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgdm90ZSBhdHRyaWJ1dGUKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCB2b3RlX3ZhbHVlCiAgICAgICAgICAgIEZST00gc3VydmV5X3ZvdGUKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17Vm90ZUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFZvdGVBdHRyaWJ1dGVDb250ZW50ID0gJHsgJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgfVswXTsKCiAgICByZXR1cm4gJFZvdGVBdHRyaWJ1dGVDb250ZW50Owp9Cgo9aGVhZDIgVm90ZUNvdW50KCkKCnRvIGNvdW50IGFsbCB2b3RlcyBvZiBhIHN1cnZleQoKICAgIG15ICRWb3RlQ291bnQgPSAkU3VydmV5T2JqZWN0LT5Wb3RlQ291bnQoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMjMsCiAgICAgICAgVm90ZVZhbHVlID0+ICdUaGUgVmFsdWUnLAogICAgKTsKCj1jdXQKCnN1YiBWb3RlQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUXVlc3Rpb25JRCBWb3RlVmFsdWUpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjb3VudCB2b3RlcwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIENPVU5UKHZvdGVfdmFsdWUpCiAgICAgICAgICAgIEZST00gc3VydmV5X3ZvdGUKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/IEFORCB2b3RlX3ZhbHVlID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBhcmFte1ZvdGVWYWx1ZX0sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkVm90ZUNvdW50OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFZvdGVDb3VudCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRWb3RlQ291bnQ7Cn0KCj1oZWFkMiBWb3RlRGVsZXRlKCkKCmRlbGV0ZSB2b3RlIGJ5IHJlcXVlc3QgaWQKCiAgICBteSAkVm90ZURlbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVEZWxldGUoCiAgICAgICAgUmVxdWVzdElEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgVm90ZURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhSZXF1ZXN0SUQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBjb3VudCB2b3RlcwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCAgID0+ICdERUxFVEUgRlJPTSBzdXJ2ZXlfdm90ZSBXSEVSRSByZXF1ZXN0X2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1JlcXVlc3RJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cHM6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpTdXJ2ZXlTZW5kUmVxdWVzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoRXZlbnQgQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBpZiAoICEkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFRpY2tldElEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgbG9vcCBQcm90ZWN0aW9uLCBSZXF1ZXN0U2VuZCBjYWxscyBIaXN0b3J5QWRkCiAgICAjIHNvIHdlIGNhbid0IGxpc3RlbiBvbiBIaXN0b3J5QWRkIEV2ZW50cyBpbiBvcmRlciB0bwogICAgIyBwcmV2ZW50IGRlZXAgcmVjdXJzaW9uCiAgICByZXR1cm4gMSBpZiAkUGFyYW17RXZlbnR9IGVxICdIaXN0b3J5QWRkJzsKCiAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICMgZ2V0IHRpY2tldCBkYXRhCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtEYXRhfXtUaWNrZXRJRH0sCiAgICApOwoKICAgIHJldHVybiAxIGlmICRUaWNrZXR7U3RhdGVUeXBlfSBuZSAnY2xvc2VkJzsKCiAgICAjIHNlbmQgYWxzbyBzdXJ2ZXkgcmVxdWVzdCBvbiB0aWNrZXQgY3JlYXRpb24gKG9uIGZpcnN0IGFydGljbGUpCiAgICBpZiAoICRQYXJhbXtFdmVudH0gZXEgJ0FydGljbGVDcmVhdGUnICkgewoKICAgICAgICBteSBAQXJ0aWNsZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkFydGljbGVMaXN0KAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17RGF0YX17VGlja2V0SUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAxIGlmIHNjYWxhciBAQXJ0aWNsZXMgIT0gMTsKICAgIH0KCiAgICAjIHNlbmQgcmVxdWVzdAogICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5SZXF1ZXN0U2VuZCgKICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17RGF0YX0tPntUaWNrZXRJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICREQk9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRDb25maWdPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKbXkgJFN1cnZleU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7Cm15ICRUaWNrZXRPYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwpteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c0RlbGV0ZScpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBnZXQgcmFuZG9tCm15ICRSYW5kb21OYW1lID0gJEhlbHBlci0+R2V0UmFuZG9tSUQoKSAuICdfdGVzdHVzZXInOwoKIyBzZXQgY29uZmlnCiRDb25maWdPYmplY3QtPlNldCgKICAgIFZhbGlkID0+IDEsCiAgICBLZXkgICA9PiAnU3VydmV5OjpEZWxldGVQZXJpb2QnLAogICAgVmFsdWUgPT4gNTAsICAgICAgICAgICAgICAgICAgICAgICAjIG9sZGVyIDUwIGRheXMKKTsKCiMgY3JlYXRlIHRpY2tldApteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0X1RpdGxlJywKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICdjbG9zZWQgc3VjY2Vzc2Z1bCcsCiAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICBDdXN0b21lclVzZXIgPT4gJ3VuaXR0ZXN0QG90cnMuY29tJywKICAgIE93bmVySUQgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFRpY2tldElELAogICAgJ1RpY2tldENyZWF0ZSgpJywKKTsKCiMgYWRkIHN1cnZleQpteSAkU3VydmV5SUQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICdBIFRpdGxlJywKICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJ1RoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIHN1cnZleScsCiAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdxdWFsaXR5QGV4YW1wbGUuY29tJywKICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ0hlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrIScsCiAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdEZWFyIGN1c3RvbWVyLi4uJywKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VydmV5SUQsCiAgICAnU3VydmV5QWRkKCknLAopOwoKIyBhZGQgcXVlc3Rpb24KbXkgJFF1ZXN0aW9uSUQgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICBRdWVzdGlvbiAgICAgICA9PiAnVGhlIFF1ZXN0aW9uJywKICAgIEFuc3dlclJlcXVpcmVkID0+IDEsCiAgICBUeXBlICAgICAgICAgICA9PiAnUmFkaW8nLAopOwokU2VsZi0+VHJ1ZSgKICAgICRRdWVzdGlvbklELAogICAgJ1F1ZXN0aW9uQWRkKCknLAopOwoKbXkgJE9sZGVyRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKJE9sZGVyRGF0ZVRpbWVPYmplY3QtPlN1YnRyYWN0KAogICAgRGF5cyA9PiA1MCwKKTsKJE9sZGVyRGF0ZVRpbWVPYmplY3QtPlNldCgKICAgIEhvdXIgICA9PiAnMjMnLAogICAgTWludXRlID0+ICc1OScsCiAgICBTZWNvbmQgPT4gJzU5JywKKTsKCm15ICRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSA9ICRPbGRlckRhdGVUaW1lT2JqZWN0LT5Ub1N0cmluZygpOwoKIyBhZGQgcmVxdWVzdHMKZm9yICggMSAuLi4gMTAgKSB7CgogICAgIyBpbnNlcnQgZGF0YQogICAgbXkgJEluc2VydFJlcXVlc3RzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBzdXJ2ZXlfcmVxdWVzdCAodGlja2V0X2lkLCBzdXJ2ZXlfaWQsIHZhbGlkX2lkLCBwdWJsaWNfc3VydmV5X2tleSwKICAgICAgICAgICAgICAgIHNlbmRfdG8sIHNlbmRfdGltZSwgdm90ZV90aW1lLCBjcmVhdGVfdGltZSkKICAgICAgICAgICAgVkFMVUVTICg/LCA/LCAxLCA/LCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgY3VycmVudF90aW1lc3RhbXAsID8pJywKICAgICAgICBCaW5kID0+IFsgXCRUaWNrZXRJRCwgXCRTdXJ2ZXlJRCwgXCRIZWxwZXItPkdldFJhbmRvbUlEKCksIFwkUmFuZG9tTmFtZSwgXCRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSBdLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJbnNlcnRSZXF1ZXN0cywKICAgICAgICAiU3VydmV5IHJlcXVlc3RzIGFkZGVkLiIsCiAgICApOwp9CgojIGluaXQgcmVxdWVzdCBpZCBhcnJheQojIHNlbGVjdCBsYXRlc3QgcmVxdWVzdCBpZHMKbXkgQFJlcXVlc3RJRHM7CgokREJPYmplY3QtPlByZXBhcmUoCiAgICBTUUwgPT4gIlNFTEVDVCBpZCBGUk9NIHN1cnZleV9yZXF1ZXN0IFdIRVJFIGNyZWF0ZV90aW1lID0gJyRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZScgIiwKKTsKCndoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgcHVzaCBAUmVxdWVzdElEcywgJFJvd1swXTsKfQoKZm9yIG15ICRSZXF1ZXN0SUQgKEBSZXF1ZXN0SURzKSB7CgogICAgIyBpbnNlcnQgZGF0YQogICAgbXkgJEluc2VydFZvdGVzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBzdXJ2ZXlfdm90ZSAocmVxdWVzdF9pZCwgcXVlc3Rpb25faWQsIHZvdGVfdmFsdWUsIGNyZWF0ZV90aW1lKQogICAgICAgICAgICBWQUxVRVMgKD8sID8sIDEsID8pJywKICAgICAgICBCaW5kID0+IFsgXCRSZXF1ZXN0SUQsIFwkUXVlc3Rpb25JRCwgXCRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSBdLAogICAgKTsKICAgICRTZWxmLT5UcnVlKAogICAgICAgICRJbnNlcnRWb3RlcywKICAgICAgICAiU3VydmV5IHZvdGVzIGFkZGVkLiIsCiAgICApOwp9CgojIGluaXQgdm90ZSBpZCBhcnJheQojIHNlbGVjdCBsYXRlc3Qgdm90ZSBpZHMKbXkgQFZvdGVJRHM7CgokREJPYmplY3QtPlByZXBhcmUoCiAgICBTUUwgPT4gIlNFTEVDVCBpZCBGUk9NIHN1cnZleV92b3RlIFdIRVJFIGNyZWF0ZV90aW1lID0gJyRSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZScgIiwKKTsKCndoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgcHVzaCBAVm90ZUlEcywgJFJvd1swXTsKfQoKIyBzdG9yZSBpZHMKbXkgJURlbGV0ZWRJRHMgPSAoCiAgICBSZXF1ZXN0SURzID0+IFxAUmVxdWVzdElEcywKICAgIFZvdGVJRHMgICAgPT4gXEBWb3RlSURzLAopOwoKIyBleGVjdXRlIGNvbW1hbmQKbXkgJEV4aXRDb2RlID0gJENvbW1hbmRPYmplY3QtPkV4ZWN1dGUoJy0tZm9yY2UnKTsKCiMgY2hlY2sgaWYgZGVsZXRlIGRvbmUKZm9yIG15ICRDaGVjayAoIHNvcnQga2V5cyAlRGVsZXRlZElEcyApIHsKCiAgICBmb3IgbXkgJERlbGV0ZWRSZXF1ZXN0SUQgKCBAeyAkRGVsZXRlZElEc3tSZXF1ZXN0SURzfSB9ICkgewoKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBDT1VOVChpZCkgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBXSEVSRSBpZCA9ID8gIiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRGVsZXRlZFJlcXVlc3RJRCBdCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRSb3dbMF0sCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlJlcXVlc3RzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBmb3IgbXkgJERlbGV0ZWRWb3RlSUQgKCBAeyAkRGVsZXRlZElEc3tWb3RlSURzfSB9ICkgewoKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBDT1VOVChpZCkgRlJPTSBzdXJ2ZXlfdm90ZSBXSEVSRSBpZCA9ID8gIiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkRGVsZXRlZFZvdGVJRCBdCiAgICAgICAgKTsKCiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRSb3dbMF0sCiAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgIlZvdGVzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KfQoKJFNlbGYtPklzKAogICAgJEV4aXRDb2RlLAogICAgMCwKICAgICJSZXF1ZXN0cyBkZWxldGUgLSBFeGl0Q29kZSIsCik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICA9PiAiTm8gUGFyYW1zICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGRpc2FibGVkIiwKICAgICAgICBQYXJhbXMgICA9PiBbXSwKICAgICAgICBDb25maWcgICA9PiAwLAogICAgICAgIEV4aXRDb2RlID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJXcm9uZyBQYXJhbSAnU2VuZEluSG91cnNBZnRlckNsb3NlJyBkaXNhYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gWyctLXRlc3QnXSwKICAgICAgICBDb25maWcgICA9PiAwLAogICAgICAgIEV4aXRDb2RlID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJGb3JjZSBwYXJhbSAnU2VuZEluSG91cnNBZnRlckNsb3NlJyBkaXNhYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gWyctLWZvcmNlJ10sCiAgICAgICAgQ29uZmlnICAgPT4gMCwKICAgICAgICBFeGl0Q29kZSA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICA9PiAiTm8gUGFyYW1zICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGVuYWJsZWQiLAogICAgICAgIFBhcmFtcyAgID0+IFtdLAogICAgICAgIENvbmZpZyAgID0+IDEsCiAgICAgICAgRXhpdENvZGUgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgPT4gIldyb25nIFBhcmFtICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGVuYWJsZWQiLAogICAgICAgIFBhcmFtcyAgID0+IFsnLS10ZXN0J10sCiAgICAgICAgQ29uZmlnICAgPT4gMSwKICAgICAgICBFeGl0Q29kZSA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICA9PiAiRm9yY2UgcGFyYW0gJ1NlbmRJbkhvdXJzQWZ0ZXJDbG9zZScgZW5hYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gWyctLWZvcmNlJ10sCiAgICAgICAgQ29uZmlnICAgPT4gMSwKICAgICAgICBFeGl0Q29kZSA9PiAwLAogICAgfSwKCik7CgojIGdldCBuZWVkZWQgb2JqZWN0cwpteSAkQ29tbWFuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c1NlbmQnKTsKbXkgJENvbmZpZ09iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIHNldCBjb25maWcKICAgICRDb25maWdPYmplY3QtPlNldCgKICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPntDb25maWd9LAogICAgKTsKCiAgICBteSAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSggQHsgJFRlc3QtPntQYXJhbXN9IH0gKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJEV4aXRDb2RlLAogICAgICAgICRUZXN0LT57RXhpdENvZGV9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gRXhpdENvZGUiLAogICAgKTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKbXkgJFN1cnZleU9iamVjdCAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwpteSAkUXVldWVPYmplY3QgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKTsKbXkgJERCT2JqZWN0ICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7Cm15ICRUaWNrZXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJEFydGljbGVPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwpteSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcgKTsKCiRIZWxwZXJPYmplY3QtPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ1NlbmRtYWlsTW9kdWxlJywKICAgIFZhbHVlID0+ICdLZXJuZWw6OlN5c3RlbTo6RW1haWw6OkRvTm90U2VuZEVtYWlsJywKKTsKCiRIZWxwZXJPYmplY3QtPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgVmFsdWUgPT4gMCwKKTsKCiRIZWxwZXJPYmplY3QtPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICBWYWxpZCA9PiAxLAogICAgS2V5ICAgPT4gJ1N1cnZleTo6U2VuZEluSG91cnNBZnRlckNsb3NlJywKICAgIFZhbHVlID0+IDAsCik7CgpteSAkUXVldWVSYW5kID0gJ1NvbWVRdWV1ZScgLiAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21JRCgpOwpteSAkUXVldWVJRCAgID0gJFF1ZXVlT2JqZWN0LT5RdWV1ZUFkZCgKICAgIE5hbWUgICAgICAgICAgICA9PiAkUXVldWVSYW5kLAogICAgVmFsaWRJRCAgICAgICAgID0+IDEsCiAgICBHcm91cElEICAgICAgICAgPT4gMSwKICAgIFN5c3RlbUFkZHJlc3NJRCA9PiAxLAogICAgU2FsdXRhdGlvbklEICAgID0+IDEsCiAgICBTaWduYXR1cmVJRCAgICAgPT4gMSwKICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgQ29tbWVudCAgICAgICAgID0+ICdTb21lIENvbW1lbnQnLAopOwoKJFNlbGYtPlRydWUoCiAgICAkUXVldWVJRCwKICAgICJRdWV1ZUFkZCgpIC0gJFF1ZXVlUmFuZCwgJFF1ZXVlSUQiLAopOwoKIyBDcmVhdGUgYSB0aWNrZXQKbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldF9UaXRsZScsCiAgICBRdWV1ZUlEICAgICAgPT4gJFF1ZXVlSUQsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgQ3VzdG9tZXJVc2VyID0+ICd1bml0dGVzdEBvdHJzLmNvbScsCiAgICBPd25lcklEICAgICAgPT4gMSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRUaWNrZXRJRCwKICAgICdUaWNrZXRDcmVhdGUoKScsCik7CgpteSAlQXJ0aWNsZVRlbXBsYXRlID0gKAogICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2FnZW50JywKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMScsCiAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnQWRkTm90ZScsCiAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCgopOwoKbXkgQEFkZGVkQXJ0aWNsZUlEczsKCm15ICRBcnRpY2xlSUQgPSAkQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAlQXJ0aWNsZVRlbXBsYXRlLAogICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMCwKICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEFnZW50IDxhZ2VudEBleGFtcGxlLmNvbT4nLAogICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgQSA8YWFhQGV4YW1wbGUuY29tPicsCiAgICBDYyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciBCIDxiYmJAZXhhbXBsZS5jb20+JywKICAgIEJjYyAgICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIEMgPGNjY0BleGFtcGxlLmNvbT4nLAogICAgUmVwbHlUbyAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgRCA8ZGRkQGV4YW1wbGUuY29tPicsCiAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAiT25lMSIsCiAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAiQm9keSBVbm8iLAogICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhYmMuMTIzQGV4YW1wbGUuY29tPicsCiAgICBJblJlcGx5VG8gICAgICAgICAgICA9PiAnPGFiYy4xMkBleGFtcGxlLmNvbT4nLAogICAgUmVmZXJlbmNlcyAgICAgICAgICAgPT4gJzxhYmMuMUBleGFtcGxlLmNvbT4gPGFiYy4xMkBleGFtcGxlLmNvbT4nLAopOwoKIyBDcmVhdGUgc3VydmV5LgpteSAlU3VydmV5RGF0YSA9ICgKICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJ0EgVGl0bGUnLAogICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1RoZSBpbnRlcm5hbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3F1YWxpdHlAdW5pdHRlc3QuY29tJywKICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ0hlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrISDDhMOWw5wnLAogICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAnRGVhciBjdXN0b21lci4uLiDDpMO2w7wnLAopOwoKbXkgJFN1cnZleUlEID0gJFN1cnZleU9iamVjdC0+U3VydmV5QWRkKAogICAgVXNlcklEID0+IDEsCiAgICAlU3VydmV5RGF0YSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VydmV5SUQsCiAgICAiU3VydmV5QWRkKCkiLAopOwoKZm9yICggMSAuLiAzICkgewogICAgbXkgJFF1ZXN0aW9uQWRkID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgUXVlc3Rpb24gPT4gJ1RoZSBRdWVzdGlvbicsCiAgICAgICAgVHlwZSAgICAgPT4gJ1JhZGlvJywKICAgICk7Cn0KbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCik7CmZvciBteSAkUXVlc3Rpb24gKEBMaXN0KSB7CiAgICBmb3IgKCAxIC4uIDMgKSB7CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyQWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBRdWVzdGlvbklEICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VyICAgICAgICAgPT4gJ1RoZSBBbnN3ZXInLAogICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgICk7CiAgICB9Cn0KCm15ICRTdGF0dXNTZXQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTdGF0dXNTZXQoCiAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCik7CiRTZWxmLT5JcygKICAgICRTdGF0dXNTZXQsCiAgICAnU3RhdHVzU2V0JywKICAgICJTdXJ2ZXlTdGF0dXNTZXQoKSIsCik7CgpteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgVGlja2V0SUQgPT4gJFRpY2tldElELAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlJlcXVlc3RTZW5kKCkiLAopOwoKIyBHZXQgdGhlIFJlcXVlc3RJRC4KcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICBTUUwgPT4gJwogICAgICAgIFNFTEVDVCBpZCwgcHVibGljX3N1cnZleV9rZXkKICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgV0hFUkUgdGlja2V0X2lkID0gPwogICAgICAgICAgICBBTkQgc3VydmV5X2lkID0gPycsCiAgICBCaW5kICA9PiBbIFwkVGlja2V0SUQsIFwkU3VydmV5SUQgXSwKICAgIExpbWl0ID0+IDEsCik7Cm15ICRSZXF1ZXN0SUQ7Cm15ICRSZXF1ZXN0S2V5Owp3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICRSZXF1ZXN0SUQgID0gJFJvd1swXTsKICAgICRSZXF1ZXN0S2V5ID0gJFJvd1sxXTsKfQoKIyBBZGQgc29tZSBhbnN3ZXJzIHRvIHRoZSBxdWVzdGlvbnMKbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKKTsKCmZvciBteSAkQ291bnQgKCAxIC4uIDEwICkgewoKICAgICMgU2ltdWxhdGUgdm90ZXMuCiAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25MaXN0KSB7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUmVxdWVzdEtleSwKICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJ1RoZSBWYWx1ZScsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJQdWJsaWNBbnN3ZXJTZXQoKSAkQ291bnQgZm9yIFF1ZXN0aW9uICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IiwKICAgICAgICApOwogICAgfQoKICAgIG15IEBWb3Rlc0xpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0QWxsKAogICAgICAgIFJlcXVlc3RJRCA9PiAkUmVxdWVzdElELAogICAgKTsKICAgICRTZWxmLT5JcygKICAgICAgICBzY2FsYXIgQFZvdGVzTGlzdCwKICAgICAgICBzY2FsYXIgQFF1ZXN0aW9uTGlzdCAqICRDb3VudCwKICAgICAgICAiVm90ZUdldEFsbCgpICRDb3VudCByZWNvcmRzIiwKICAgICk7CgogICAgbXkgJFJlY29yZE51bWJlciA9IDE7CiAgICBmb3IgbXkgJFZvdGUgKEBWb3Rlc0xpc3QpIHsKCiAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3KFZvdGVJRCBWb3RlVmFsdWUgUXVlc3Rpb25JRCBRdWVzdGlvbiBRdWVzdGlvblR5cGUpKSB7CiAgICAgICAgICAgICRTZWxmLT5Jc05vdCgKICAgICAgICAgICAgICAgICRWb3RlLT57JEF0dHJpYnV0ZX0gLy8gJycsCiAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICJWb3RlR2V0QWxsKCkgJENvdW50IHZvdGUgJFJlY29yZE51bWJlciAkQXR0cmlidXRlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFJlY29yZE51bWJlcisrOwogICAgfQp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwpteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgRG8gbm90IGNoZWNrIGVtYWlscy4KJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgVmFsdWUgPT4gMCwKKTsKCiMgR2V0IFRpY2tldCBvYmplY3QuCm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgojIENyZWF0ZSBzb21lIHRpY2tldHMuCm15ICRUaWNrZXRJRDEgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgQ3VzdG9tZXJJRCAgID0+ICcxMjM0NjUnLAogICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckBleGFtcGxlLmNvbScsCiAgICBPd25lcklEICAgICAgPT4gMSwKICAgIFVzZXJJRCAgICAgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICAkVGlja2V0SUQxLAogICAgdW5kZWYsCiAgICAiVGlja2V0Q3JlYXRlKCkgZm9yIFRpY2tldElEICRUaWNrZXRJRDEiLAopOwoKbXkgJFRpY2tldElEMiA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICBDdXN0b21lcklEICAgPT4gJzEyMzQ2NScsCiAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQGV4YW1wbGUuY29tJywKICAgIE93bmVySUQgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgID0+IDEsCik7CiRTZWxmLT5Jc05vdCgKICAgICRUaWNrZXRJRDIsCiAgICB1bmRlZiwKICAgICJUaWNrZXRDcmVhdGUoKSBmb3IgVGlja2V0SUQgJFRpY2tldElEMiIsCik7CgpteSAkVGlja2V0SUQzID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVGl0bGUgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgIFF1ZXVlICAgID0+ICdSYXcnLAogICAgTG9jayAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSA9PiAnMyBub3JtYWwnLAogICAgU3RhdGUgICAgPT4gJ25ldycsCiAgICBPd25lcklEICA9PiAxLAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgJFRpY2tldElEMywKICAgIHVuZGVmLAogICAgIlRpY2tldENyZWF0ZSgpIGZvciBUaWNrZXRJRCAkVGlja2V0SUQzIiwKKTsKCm15ICRBcnRpY2xlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwoKbXkgJEFydGljbGVQaG9uZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoCiAgICBDaGFubmVsTmFtZSA9PiAnUGhvbmUnLAopOwoKIyBDcmVhdGUgYXJ0aWNsZXMgZm9yIHRoZSB0aWNrZXRzLgpteSAkQXJ0aWNsZUlEMSA9ICRBcnRpY2xlUGhvbmVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElEMSwKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPGVtYWlsQGV4YW1wbGUuY29tPicsCiAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8YWdlbnRAZXhhbXBsZS5jb20+JywKICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdzb21lIHNob3J0IGRlc2NyaXB0aW9uJywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdBZGROb3RlJywKICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgJFRpY2tldElEMywKICAgIHVuZGVmLAogICAgIkFydGljbGVDcmVhdGUoKSBmb3IgQXJ0aWNsZUlEICRBcnRpY2xlSUQxIiwKKTsKCm15ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JDaGFubmVsKAogICAgQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJywKKTsKbXkgJEFydGljbGVJRDIgPSAkQXJ0aWNsZUludGVybmFsQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRUaWNrZXRJRDIsCiAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2FnZW50JywKICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEFnZW50IDxhZ2VudEBleGFtcGxlLmNvbT4nLAogICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPGVtYWlsQGV4YW1wbGUuY29tPicsCiAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnc29tZSBzaG9ydCBkZXNjcmlwdGlvbicsCiAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnQWRkTm90ZScsCiAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCik7CiRTZWxmLT5Jc05vdCgKICAgICRUaWNrZXRJRDMsCiAgICB1bmRlZiwKICAgICJBcnRpY2xlQ3JlYXRlKCkgZm9yIEFydGljbGVJRCAkQXJ0aWNsZUlEMiIsCik7CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICA9PiAnTm8gUGFyYW1zJywKICAgICAgICBQYXJhbSAgID0+IHt9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1dyb25nIFVzZXJFTWFpbCcsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXInLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnV3JvbmcgVGlja2V0SUQnLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElEMywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1VzZXJFbWFpbCcsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXIgPHVzZXJAaG9tZS5jb20+JywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiAndXNlckBob21lLmNvbScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICdVc2VyRW1haWwgTXVsdGlwbGUnLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDx1c2VyQGV4YW1wbGUuY29tPiwgVXNlcjIgPHVzZXIyQGhvbWUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gJ3VzZXIyQGhvbWUuY29tJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBjdXN0b21lcicsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQxLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+ICdlbWFpbEBleGFtcGxlLmNvbScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICdUaWNrZXRJRCBMYXN0IGFydGljbGUgYWdlbnQnLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElEMiwKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiAnZW1haWxAZXhhbXBsZS5jb20nLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVXNlckVtYWlsIChCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsndXNlckBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVXNlckVtYWlsIE11bHRpcGxlIChCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4sIFVzZXIyIDx1c2VyMkBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsndXNlcjJAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBjdXN0b21lciAoQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQxLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnZW1haWxAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBhZ2VudCAoQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQyLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnZW1haWxAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCgogICAgewogICAgICAgIE5hbWUgID0+ICd1YyBVc2VyRW1haWwgKEJsYWNrTGlzdCknLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDxVc2VyQGV4YW1wbGUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWyd1c2VyQGV4YW1wbGUuY29tJ10sCiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICd1YyBVc2VyRW1haWwgTXVsdGlwbGUgKEJsYWNrTGlzdCknLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDx1c2VyQGV4YW1wbGUuY29tPiwgVXNlcjIgPFVzZXIyQGV4YW1wbGUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWyd1c2VyMkBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVXNlckVtYWlsICh1YyBCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnVXNlckBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVXNlckVtYWlsIE11bHRpcGxlICh1YyBCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4sIFVzZXIyIDx1c2VyMkBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnVXNlcjJAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBjdXN0b21lciAodWMgQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQxLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnZW1haWxAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBhZ2VudCAodWMgQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQyLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnZW1haWxAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ3VjIFVzZXJFbWFpbCAodWMgQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXIgPFVzZXJAZXhhbXBsZS5jb20+JywKICAgICAgICB9LAogICAgICAgIEJsYWNrTGlzdCA9PiBbJ1VzZXJAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ3VjIFVzZXJFbWFpbCBNdWx0aXBsZSAodWMgQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXIgPHVzZXJAZXhhbXBsZS5jb20+LCBVc2VyMiA8VXNlcjJAZXhhbXBsZS5jb20+JywKICAgICAgICB9LAogICAgICAgIEJsYWNrTGlzdCA9PiBbJ1VzZXIyQGV4YW1wbGUuY29tJ10sCiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICB9LAopOwoKbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKClRFU1Q6CmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgIyBTZXQgYmxhY2tsaXN0LgogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6Ok5vdGlmaWNhdGlvblJlY2lwaWVudEJsYWNrbGlzdCcsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPntCbGFja0xpc3R9IC8vIFtdLAogICAgKTsKCiAgICAjIEV4ZWN1dGUgYWN0dWFsIHRlc3QuCiAgICBteSAkUmVjaXBpZW50ID0gJFN1cnZleU9iamVjdC0+X0dldFJlcXVlc3RSZWNpcGllbnQoICV7ICRUZXN0LT57UGFyYW19IH0gKTsKCiAgICBpZiAoICEkVGVzdC0+e1N1Y2Nlc3N9ICkgewogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJFJlY2lwaWVudCwKICAgICAgICAgICAgdW5kZWYsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IC0gX0dldFJlcXVlc3RSZWNpcGllbnQoKSIsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBURVNUOwogICAgfQogICAgJFNlbGYtPklzKAogICAgICAgICRSZWNpcGllbnQsCiAgICAgICAgJFRlc3QtPntFeHBlY3RlZFJlc3VsdHN9LAogICAgICAgICIkVGVzdC0+e05hbWV9IC0gX0dldFJlcXVlc3RSZWNpcGllbnQoKSIsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBzZXQgc2VuZCBwZXJpb2QgdG8gYWx3YXlzIHNlbmQgc3VydmV5CiRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICBLZXkgICA9PiAnU3VydmV5OjpTZW5kUGVyaW9kJywKICAgIFZhbHVlID0+IDAsCik7CgojIHNldCBzZW5kIHBlcmlvZCB0byBhbHdheXMgc2VuZCBzdXJ2ZXkKJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgIEtleSAgID0+ICdDaGVja0VtYWlsQWRkcmVzc2VzJywKICAgIFZhbHVlID0+IDAsCik7CgpteSAkUXVldWVSYW5kID0gJ1NvbWVRdWV1ZScgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwpteSAkUXVldWVJRCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlQWRkKAogICAgTmFtZSAgICAgICAgICAgID0+ICRRdWV1ZVJhbmQsCiAgICBWYWxpZElEICAgICAgICAgPT4gMSwKICAgIEdyb3VwSUQgICAgICAgICA9PiAxLAogICAgU3lzdGVtQWRkcmVzc0lEID0+IDEsCiAgICBTYWx1dGF0aW9uSUQgICAgPT4gMSwKICAgIFNpZ25hdHVyZUlEICAgICA9PiAxLAogICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICBDb21tZW50ICAgICAgICAgPT4gJ1NvbWUgQ29tbWVudCcsCik7CgokU2VsZi0+VHJ1ZSgKICAgICRRdWV1ZUlELAogICAgIlF1ZXVlQWRkKCkgLSAkUXVldWVSYW5kLCAkUXVldWVJRCIsCik7CgpteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwpteSAkU3VydmV5VGl0bGUgID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKbXkgJFN1cnZleUlEICAgICA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUFkZCgKICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdTdXJ2ZXkgRGVzY3JpcHRpb24nLAogICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAnc3Zpa0BleGFtcGxlLmNvbScsCiAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAnU3VydmV5IE5vdGlmaWNhdGlvbiBCb2R5JywKICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWyRRdWV1ZUlEXSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VydmV5SUQsCiAgICAiU3VydmV5IElEICRTdXJ2ZXlJRCBpcyBjcmVhdGVkIiwKKTsKCm15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgU3VydmV5SUQgICAgICAgPT4gJFN1cnZleUlELAogICAgUXVlc3Rpb24gICAgICAgPT4gJ1RoZSBRdWVzdGlvbicsCiAgICBBbnN3ZXJSZXF1aXJlZCA9PiAwLAogICAgVHlwZSAgICAgICAgICAgPT4gJ1RleHRhcmVhJywKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiUXVlc3Rpb24gaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkuIiwKKTsKCm15IEBRdWVzdGlvbkxpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQKKTsKCiRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+U3VydmV5U3RhdHVzU2V0KAogICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgIE5ld1N0YXR1cyA9PiAnTWFzdGVyJwopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlN1cnZleSBzdGF0dXMgaXMgc2V0IHRvIE1hc3RlciBzdWNjZXNzZnVsbHkuIiwKKTsKCm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7Cm15ICREQk9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCm15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgUXVldWVJRCAgICAgID0+ICRRdWV1ZUlELAogICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICBDdXN0b21lcklEICAgPT4gJzEyMzQ2NScsCiAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQGV4YW1wbGUuY29tJywKICAgIE93bmVySUQgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgID0+IDEsCik7CiRTZWxmLT5UcnVlKAogICAgJFRpY2tldElELAogICAgIlRpY2tldENyZWF0ZSgpIGZvciBUaWNrZXRJRCAkVGlja2V0SUQiLAopOwoKbXkgJEFydGljbGVPYmplY3QgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7Cm15ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0ID0gJEFydGljbGVPYmplY3QtPkJhY2tlbmRGb3JDaGFubmVsKAogICAgQ2hhbm5lbE5hbWUgPT4gJ1Bob25lJywKKTsKCm15ICRBcnRpY2xlSUQgPSAkQXJ0aWNsZUludGVybmFsQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPGVtYWlsQGV4YW1wbGUuY29tPicsCiAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8YWdlbnRAZXhhbXBsZS5jb20+JywKICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdzb21lIHNob3J0IGRlc2NyaXB0aW9uJywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdBZGROb3RlJywKICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkQXJ0aWNsZUlELAogICAgIkFydGljbGVDcmVhdGUoKSBmb3IgQXJ0aWNsZUlEICRBcnRpY2xlSUQiLAopOwoKJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0U2VuZCgKICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJSZXF1ZXN0IGlzIHNlbnQgc3VjY2Vzc2Z1bGx5LiIsCik7CgokREJPYmplY3QtPlByZXBhcmUoCiAgICBTUUwgPT4gJwogICAgICAgIFNFTEVDVCBwdWJsaWNfc3VydmV5X2tleQogICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICBXSEVSRSB0aWNrZXRfaWQgPSA/JywKICAgIEJpbmQgID0+IFsgXCRUaWNrZXRJRCBdLAogICAgTGltaXQgPT4gMSwKKTsKCm15ICRQdWJsaWNTdXJ2ZXlLZXk7CndoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgJFB1YmxpY1N1cnZleUtleSA9ICRSb3dbMF07Cn0KCm15ICRWb3RlcyAgICAgID0gMzsKbXkgJEFuc3dlclRleHQgPSAnU29tZSBhbnN3ZXInOwpmb3IgbXkgJFRlc3QgKCAnJywgJEFuc3dlclRleHQgKSB7CiAgICBmb3IgKCAxIC4uICRWb3RlcyApIHsKICAgICAgICAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY0Fuc3dlclNldCgKICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb25MaXN0WzBdLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIFZvdGVWYWx1ZSAgICAgICA9PiAkVGVzdCwKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJQdWJsaWMgYW5zd2VyIGlzIHNldCBzdWNjZXNzZnVsbHkuIiwKICAgICAgICApOwogICAgfQp9CgojCm15ICRWb3RlVmFsdWUgPSAnJzsKaWYgKCAkREJPYmplY3QtPnsnREI6OlR5cGUnfSBlcSAnb3JhY2xlJyApIHsKICAgICRWb3RlVmFsdWUgPSAwOwp9CgpteSAkQW5zd2VyTm8gPSAkU3VydmV5T2JqZWN0LT5Wb3RlQ291bnQoCiAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbkxpc3RbMF0tPntRdWVzdGlvbklEfSwKICAgIFZvdGVWYWx1ZSAgPT4gJFZvdGVWYWx1ZSwKKTsKCiRTZWxmLT5JcygKICAgICRBbnN3ZXJObywKICAgICRWb3RlcywKICAgICJBbnN3ZXJObyBjb3VudCBpcyBhcyBleHBlY3RlZC4iLAopOwoKbXkgJVJlcXVlc3REYXRhID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdEdldCgKICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAopOwoKbXkgQFZvdGUgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0KAogICAgUmVxdWVzdElEICA9PiAkUmVxdWVzdERhdGF7UmVxdWVzdElEfSwKICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uTGlzdFswXS0+e1F1ZXN0aW9uSUR9LAopOwoKbXkgJEFuc3dlclRleHRWb3RlID0gc2NhbGFyIGdyZXAgeyAkXy0+e1ZvdGVWYWx1ZX0gZXEgJEFuc3dlclRleHQgfSBAVm90ZTsKCiRTZWxmLT5JcygKICAgICRBbnN3ZXJUZXh0Vm90ZSwKICAgICRWb3RlcywKICAgICJBbnN3ZXIgY291bnQgd2l0aCBzb21lIHRleHQgaXMgYXMgZXhwZWN0ZWQuIiwKKTsKCiMgY2xlYW51cCBpcyBkb25lIGJ5IFJlc3RvcmVEYXRhYmFzZS4KMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7Cgp1c2UgRGF0YTo6RHVtcGVyOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgY3JlYXRlIGxvY2FsIGNvbmZpZyBvYmplY3QKbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgojIHNldCBjb25maWcgdG8gbm90IHNlbmQgZW1haWxzCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdTZW5kbWFpbE1vZHVsZScsCiAgICBWYWx1ZSA9PiAnS2VybmVsOjpTeXN0ZW06OkVtYWlsOjpEb05vdFNlbmRFbWFpbCcsCik7CgojIGRpc2FibGUgZW1haWwgY2hlY2sKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgVmFsdWUgPT4gMCwKKTsKCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBGcmVlemUgVGltZQokSGVscGVyT2JqZWN0LT5GaXhlZFRpbWVTZXQoKTsKJFNlbGYtPlRydWUoCiAgICAxLAogICAgJy0tIFNldCBGaXhlZCBUaW1lIC0tJywKKTsKCiMgZ2V0IHR5cGUgb2JqZWN0Cm15ICRUeXBlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKCm15ICRSYW5kb20gPSAkSGVscGVyT2JqZWN0LT5HZXRSYW5kb21OdW1iZXIoKTsKCiMgY3JlYXRlIGEgdGVzdCB0eXBlCm15ICRUaWNrZXRUeXBlSUQgPSAkVHlwZU9iamVjdC0+VHlwZUFkZCgKICAgIE5hbWUgICAgPT4gJ1VuaXQgVGVzdCBOZXcgVHlwZScgLiAkUmFuZG9tLAogICAgVmFsaWRJRCA9PiAxLAogICAgVXNlcklEICA9PiAxLAopOwoKIyBnZXQgc2VydmljZSBvYmplY3QKbXkgJFNlcnZpY2VPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScpOwoKIyBjcmVhdGUgYSB0ZXN0IHNlcnZpY2UKbXkgJFNlcnZpY2VJRCA9ICRTZXJ2aWNlT2JqZWN0LT5TZXJ2aWNlQWRkKAogICAgTmFtZSAgICA9PiAnVW5pdCBUZXN0IE5ldyBTZXJ2aWNlJyAuICRSYW5kb20sCiAgICBWYWxpZElEID0+IDEsCiAgICBDb21tZW50ID0+ICdVbml0IFRlc3QgQ29tbWVudCcsCiAgICBVc2VySUQgID0+IDEsCgogICAgIyBUeXBlSUQgYW5kIENyaXRpY2FsaXR5IGlzIG5lZWRlZCB0byB0ZXN0IFN1cnZleVNlbmQoKSB0b2dldGhlciB3aXRoIElUU00KICAgIFR5cGVJRCAgICAgID0+IDIsCiAgICBDcml0aWNhbGl0eSA9PiAnMyBub3JtYWwnLAopOwoKIyBjcmVhdGUgYSB0ZXN0IGN1c3RvbWVydXNlcgpteSAkVGVzdEN1c3RvbWVyVXNlcjEgPSAkSGVscGVyT2JqZWN0LT5UZXN0Q3VzdG9tZXJVc2VyQ3JlYXRlKCk7Cm15ICRUZXN0Q3VzdG9tZXJVc2VyMiA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKCiMgY3JlYXRlIHN1cnZleQpteSAlU3VydmV5RGF0YSA9ICgKICAgIFRpdGxlICAgICAgICAgICAgICAgICAgPT4gJ0EgVGl0bGUnLAogICAgSW50cm9kdWN0aW9uICAgICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgPT4gJ1RoZSBpbnRlcm5hbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIE5vdGlmaWNhdGlvblNlbmRlciAgICAgPT4gJ3F1YWxpdHlAdW5pdHRlc3QuY29tJywKICAgIE5vdGlmaWNhdGlvblN1YmplY3QgICAgPT4gJ0hlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrISDDhMOWw5wnLAogICAgTm90aWZpY2F0aW9uQm9keSAgICAgICA9PiAnRGVhciBjdXN0b21lci4uLiDDpMO2w7wnLAogICAgVGlja2V0VHlwZUlEcyAgICAgICAgICA9PiBbJFRpY2tldFR5cGVJRF0sCiAgICBTZXJ2aWNlSURzICAgICAgICAgICAgID0+IFskU2VydmljZUlEXSwKICAgIEN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPT4gewogICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOZWdhdGlvbiAgICA9PiAwLAogICAgICAgICAgICAgICAgUmVnRXhwVmFsdWUgPT4gJFRlc3RDdXN0b21lclVzZXIxLAogICAgICAgICAgICB9LAogICAgICAgIF0sCiAgICB9LAopOwoKIyBnZXQgU3VydmV5IG9iamVjdApteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKbXkgJFN1cnZleUlEID0gJFN1cnZleU9iamVjdC0+U3VydmV5QWRkKAogICAgVXNlcklEID0+IDEsCiAgICAlU3VydmV5RGF0YSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VydmV5SUQsCiAgICAiU3VydmV5QWRkKCkiLAopOwoKZm9yICggMSAuLiAzICkgewogICAgbXkgJFF1ZXN0aW9uQWRkID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgUXVlc3Rpb24gPT4gJ1RoZSBRdWVzdGlvbicsCiAgICAgICAgVHlwZSAgICAgPT4gJ1JhZGlvJywKICAgICk7Cn0KbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCik7CmZvciBteSAkUXVlc3Rpb24gKEBMaXN0KSB7CiAgICBmb3IgKCAxIC4uIDMgKSB7CiAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyQWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBRdWVzdGlvbklEICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VyICAgICAgICAgPT4gJ1RoZSBBbnN3ZXInLAogICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAxLAogICAgICAgICk7CiAgICB9Cn0KCm15ICRTdGF0dXNTZXQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTdGF0dXNTZXQoCiAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCik7CiRTZWxmLT5JcygKICAgICRTdGF0dXNTZXQsCiAgICAnU3RhdHVzU2V0JywKICAgICJTdXJ2ZXlTdGF0dXNTZXQoKSIsCik7CgpteSAlU3VydmV5R2V0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAopOwoKIyBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlU3VydmV5R2V0ICkgewojICAgICBuZXh0IGlmICFkZWZpbmVkICRTdXJ2ZXlEYXRheyRLZXl9OwojICAgICAkU2VsZi0+SXMoCiMgICAgICAgICAkU3VydmV5R2V0eyRLZXl9LAojICAgICAgICAgJFN1cnZleURhdGF7JEtleX0sCiMgICAgICAgICAiU3VydmV5R2V0KCkiLAojICAgICApOwojIH0KCmZvciBteSAkQXR0cmlidXRlICggc29ydCBrZXlzICVTdXJ2ZXlEYXRhICkgewoKICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAkU3VydmV5R2V0eyRBdHRyaWJ1dGV9LAogICAgICAgICRTdXJ2ZXlEYXRheyRBdHRyaWJ1dGV9LAogICAgICAgICJTdXJ2ZXlHZXQoKSIsCiAgICApOwp9CgpteSBAVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJyMxIHRyeScsCiAgICAgICAgJ1N1cnZleTo6U2VuZFBlcmlvZCcgPT4gMTAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMSwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnIzIgdHJ5JywKICAgICAgICAnU3VydmV5OjpTZW5kUGVyaW9kJyA9PiAxMDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIENvbW11bmljYXRpb25DaGFubmVsID0+ICdFbWFpbCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxTT01FQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICcjMyB0cnknLAogICAgICAgICdTdXJ2ZXk6OlNlbmRQZXJpb2QnID0+IDEwMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NPTUVAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnIzQgdHJ5JywKICAgICAgICBTbGVlcCAgICAgICAgICAgICAgICA9PiA4MCwKICAgICAgICAnU3VydmV5OjpTZW5kUGVyaW9kJyA9PiAxIC8gMjQgLyA2MCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NPTUVAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMSwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnIzUgdHJ5JywKICAgICAgICBTbGVlcCAgICAgICAgICAgICAgICA9PiAyMCwKICAgICAgICAnU3VydmV5OjpTZW5kUGVyaW9kJyA9PiAxIC8gMjQgLyA2MCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NPTUVAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgPT4gJyM2IHRyeScsCiAgICAgICAgVGlja2V0ID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnTXkgTmFtZScsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFJlc3VsdCA9PiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgXSwKICAgIH0sCik7CgojIGdldCB0aWNrZXQgb2JqZWN0Cm15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgIGlmICggJFRlc3QtPnsnU3VydmV5OjpTZW5kUGVyaW9kJ30gKSB7CiAgICAgICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpTZW5kUGVyaW9kJywKICAgICAgICAgICAgVmFsdWUgPT4gJFRlc3QtPnsnU3VydmV5OjpTZW5kUGVyaW9kJ30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5vIHNlbmQgY29uZGl0aW9uIGNoZWNrIGluIG5vcm1hbCB0ZXN0cwogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJywKICAgICAgICBWYWx1ZSA9PiAwLAogICAgKTsKCiAgICBpZiAoICRUZXN0LT57U2xlZXB9ICkgewogICAgICAgICRIZWxwZXJPYmplY3QtPkZpeGVkVGltZUFkZFNlY29uZHMoICRUZXN0LT57U2xlZXB9ICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIDEsCiAgICAgICAgICAgICItLSBBZGRlZCAkVGVzdC0+e1NsZWVwfSBTZWNvbmQocykgdG8gRml4ZWQgVGltZSAtLSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgJXsgJFRlc3QtPntUaWNrZXR9IH0sCiAgICApOwoKICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckNoYW5uZWwoCiAgICAgICAgQ2hhbm5lbE5hbWUgPT4gJFRlc3QtPntBcnRpY2xlfS0+e0NvbW11bmljYXRpb25DaGFubmVsfSwKICAgICk7CgogICAgbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgJXsgJFRlc3QtPntBcnRpY2xlfSB9LAogICAgKTsKCiAgICAjIHNlbmQgc3VydmV5IGZpcnN0IHRpbWUKICAgIG15ICRSZXNwb25zZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICBUZXN0ICAgICA9PiAkVGVzdC0+e05hbWV9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHN1cnZleSBnb3Qgc2VudAogICAgaWYgKCAkVGVzdC0+e1Jlc3VsdH0tPlswXSApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXNwb25zZS0+e1N1Y2Nlc3N9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwoKICAgICAgICAkUmVzcG9uc2UtPntEYXRhfS0+e0hlYWRlcn0gPX4gbXsgXiBTdWJqZWN0OiBbIF0gKCAuKz8gKSBcbiBcUys6IFsgXSB9eG1zOwogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJDEsCiAgICAgICAgICAgICdIZWxwIHVzIHdpdGggeW91ciBmZWVkYmFjayEgPT9VVEYtOD9RPz1DMz04ND1DMz05Nj1DMz05Qz89JywKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gVGVzdCBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gZW1haWwgc3ViamVjdCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWZpbmUgbWFpbCBib2R5CiAgICAgICAgbXkgJE1haWxib2R5MSA9IDw8J0VORCc7ClRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuLi4KCi0tLS0tLS0tLS0tLT1fTUVTU0FHRUlECkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD0idXRmLTgiCkNvbnRlbnQtRGlzcG9zaXRpb246IGlubGluZQpDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBxdW90ZWQtcHJpbnRhYmxlCgpEZWFyIGN1c3RvbWVyLi4uID1DMz1BND1DMz1CNj1DMz1CQz0KCi0tLS0tLS0tLS0tLT1fTUVTU0FHRUlECkNvbnRlbnQtVHlwZTogdGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCIKQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCjwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9M0QiQ29udGVudC1UeXBlIiBjb250ZW50PTNEInRleD0KdC9odG1sOyBjaGFyc2V0PTNEdXRmLTgiLz48L2hlYWQ+PGJvZHkgc3R5bGU9M0QiZm9udC1mYW1pbHk6R2VuZXZhLEhlbHZldGljPQphLEFyaWFsLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPkRlYXIgY3VzdG9tZXIuLi4gPUMzPUE0PUMzPUI2PUMzPUJDPC89CmJvZHk+PC9odG1sPj0KCi0tLS0tLS0tLS0tLT1fTUVTU0FHRUlELS0KRU5ECgogICAgICAgICMgY29weSBtYWlsIGJvZHkKICAgICAgICBteSAkTWFpbGJvZHkyID0gJFJlc3BvbnNlLT57RGF0YX0tPntCb2R5fTsKCiAgICAgICAgIyBwcmVwYXJlIG1haWwgYm9keQogICAgICAgICRNYWlsYm9keTIgPX4gc3sgXGR7OCwxMn0gLSBcZHszLDZ9IC0gXGR7MSwzfSB9e01FU1NBR0VJRH14bXNnOwoKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRNYWlsYm9keTIsCiAgICAgICAgICAgICRNYWlsYm9keTEsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IFRlc3Qgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGVtYWlsIGJvZHkiLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRSZXNwb25zZS0+e1N1Y2Nlc3N9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gbm8gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwogICAgfQoKICAgICMgc2VuZCBzdXJ2ZXkgc2Vjb25kIHRpbWUKICAgICRSZXNwb25zZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICk7CgogICAgIyBjaGVjayBpZiBzdXJ2ZXkgZ290IHNlbnQKICAgIGlmICggJFRlc3QtPntSZXN1bHR9LT5bMV0gKSB7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXNwb25zZS0+e1N1Y2Nlc3N9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAyIFJlcXVlc3RTZW5kKCkgLSBzdXJ2ZXkgZ290IHNlbnQiLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRSZXNwb25zZSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gMiBSZXF1ZXN0U2VuZCgpIC0gbm8gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwogICAgfQoKICAgIG15ICREZWxldGUgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICApOwp9CgpteSBAU2VuZENvbmRpdGlvblRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgPT4gJ1NlbmRDb25kaXRpb24jMSB3aXRob3V0IHNlbmQgY29uZGl0aW9uIGNoZWNrICh0aWNrZXQgdHlwZSBhbmQgc2VydmljZSknLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1NlbmRDb25kaXRpb24jMiB0cnkgd2l0aCBjaGVjayBmb3IgdGlja2V0IHR5cGUnLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAkVGlja2V0VHlwZUlELAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIENvbW11bmljYXRpb25DaGFubmVsID0+ICdFbWFpbCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnU2VuZENvbmRpdGlvbiMzIHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSAodmFsdWUgZmFsc2UpJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMCwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1NlbmRDb25kaXRpb24jNCB0cnkgd2l0aCBjaGVjayBmb3Igc2VydmljZScsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgICAgID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgICAgID0+IDEsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnID0+IDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTZW5kQ29uZGl0aW9uIzUgdHJ5IHdpdGggY2hlY2sgZm9yIHNlcnZpY2UgKHZhbHVlIGZhbHNlKScsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgICAgID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgICAgID0+IDEsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnID0+IDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTZW5kQ29uZGl0aW9uIzYgdHJ5IHdpdGggY2hlY2sgZm9yIHRpY2tldCB0eXBlIGFuZCBzZXJ2aWNlJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gJFRpY2tldFR5cGVJRCwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSA9PiAnU2VuZENvbmRpdGlvbiM3IHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSBpZCAodmFsdWUgZmFsc2UpIGFuZCBzZXJ2aWNlJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gMCwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+ICRTZXJ2aWNlSUQsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSA9PiAnU2VuZENvbmRpdGlvbiM4IHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSBhbmQgc2VydmljZSAodmFsdWUgZmFsc2UpJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gJFRpY2tldFR5cGVJRCwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSA9PgogICAgICAgICAgICAnU2VuZENvbmRpdGlvbiM5IHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZSAodmFsdWUgZmFsc2UpIGFuZCBzZXJ2aWNlICh2YWx1ZSBmYWxzZSknLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lID0+CiAgICAgICAgICAgICdTZW5kQ29uZGl0aW9uIzEwIHRyeSB3aXRoIGNoZWNrIGZvciBmaXJzdG5hbWUgb2YgY3VzdG9tZXJ1c2VyIC0gbWF0Y2gnLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gMSwKICAgICAgICB9LAogICAgICAgIFRpY2tldCA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlcjEsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZUlEICAgICAgID0+IDAsCiAgICAgICAgICAgIFNlcnZpY2VJRCAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIEFydGljbGVUeXBlICAgID0+ICdlbWFpbC1leHRlcm5hbCcsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSA9PgogICAgICAgICAgICAnU2VuZENvbmRpdGlvbiMxMSB0cnkgd2l0aCBjaGVjayBmb3IgZmlyc3RuYW1lIG9mIGN1c3RvbWVydXNlciAtIG5vIG1hdGNoJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMCwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMCwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gewogICAgICAgICAgICBVc2VyRmlyc3RuYW1lID0+IDEsCiAgICAgICAgfSwKICAgICAgICBUaWNrZXQgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJFRlc3RDdXN0b21lclVzZXIyLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBBcnRpY2xlVHlwZSAgICA9PiAnZW1haWwtZXh0ZXJuYWwnLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAopOwoKZm9yIG15ICRUZXN0IChAU2VuZENvbmRpdGlvblRlc3RzKSB7CgogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgIFZhbHVlID0+ICcwJywKICAgICk7CgogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnLAogICAgICAgIFZhbHVlID0+ICRUZXN0LT57J1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZSd9LAogICAgKTsKCiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPnsnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJ30sCiAgICApOwoKICAgICRDb25maWdPYmplY3QtPlNldCgKICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPnsnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcyd9LAogICAgKTsKCiAgICBteSAkVGlja2V0SUQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgJXsgJFRlc3QtPntUaWNrZXR9IH0sCiAgICApOwoKICAgIG15ICRBcnRpY2xlQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckNoYW5uZWwoCiAgICAgICAgQ2hhbm5lbE5hbWUgPT4gJFRlc3QtPntBcnRpY2xlfS0+e0NvbW11bmljYXRpb25DaGFubmVsfSwKICAgICk7CgogICAgbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlQmFja2VuZE9iamVjdC0+QXJ0aWNsZUNyZWF0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgJXsgJFRlc3QtPntBcnRpY2xlfSB9LAogICAgKTsKCiAgICAjIHNlbmQgc3VydmV5IGZpcnN0IHRpbWUKICAgIG15ICRSZXNwb25zZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICk7CgogICAgIyBjaGVjayBpZiBzdXJ2ZXkgZ290IHNlbnQKICAgIGlmICggJFRlc3QtPntTdWNjZXNzfSApIHsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRSZXNwb25zZS0+e1N1Y2Nlc3N9LAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgaWYgKCAkUmVzcG9uc2UgZXEgJ1F1ZXVlJyB8fCAkUmVzcG9uc2UgZXEgJ1NlcnZpY2UnIHx8ICRSZXNwb25zZSBlcSAnVHlwZScgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFJlc3BvbnNlLAogICAgICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gUmVxdWVzdFNlbmQoKSAtIG5vIHN1cnZleSBnb3Qgc2VudCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICAgICAkUmVzcG9uc2UsCiAgICAgICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBSZXF1ZXN0U2VuZCgpIC0gbm8gc3VydmV5IGdvdCBzZW50IiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERlbGV0ZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cn0KCiMgdGVzdCBHZXRSaWNoVGV4dERvY3VtZW50Q29tcGxldGUKewogICAgbXkgJVRleHQ7CgogICAgI3Rlc3RzIGZvciByaWNoIHRleHQKICAgICRUZXh0e1JpY2hUZXh0fSA9IHsKICAgICAgICBJbnB1dCA9PgogICAgICAgICAgICAnJGh0bWwvdGV4dCQgPGVtPlRoaXMgaXMgdGhlIGludHJvZHVjdGlvbiB0byB0aGlzIHN1cnZleSwgaWYgeW91IHdhbnQgdG8gYW5zd2VyIGl0IHlvdSBoYXZlIHRvPGJyIC8+CnJlYWQgdGhpcyBmaXJzdCwgcGxlYXNlIGxldCB1cyB0ZWxsIHlvdSB0aGFua3MgZm9yIHRoZSBvcHBvcnR1bml0eSB0byBpbnRlcmFjdDxiciAvPgp3aXRoIHlvdS48L2VtPjxiciAvPgo8dWw+CiAgICA8bGk+CiAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMTI4KTsiPlBsZWFzZSByZWFkIGFsbCB0aGUgaW5zdHJ1Y3Rpb25zPC9zcGFuPjwvbGk+CiAgICA8bGk+CiAgICAgICAgPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMTI4KTsiPlBsZWFzZSB0YWtlIGF0dGVudGlvbiBpbiBldmVyeSBxdWVzdGlvbjwvc3Bhbj48L2xpPgogICAgPGxpPgogICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDEyOCk7Ij5BbnN3ZXIgYXMgY2xlYXIgYXMgcG9zc2libGU8L3NwYW4+PC9saT4KPC91bD4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMjU1LCAxNjAsIDEyMik7Ij5UaGlzIGlzIGFsbCB3ZSBoYXZlIHRvIHRlbGwgeW91IGZvciBub3csIHBsZWFzZSB0YWtlIHRoZSBvcHBvcnR1bml0eSBub3cgdG88YnIgLz4KZXhwcmVzcyB5b3VyIGZlZWxpbmdzIGluIG91ciBzdXJ2ZXkuPC9zcGFuPjxiciAvPgo8YnIgLz4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMjU1LCAxNjAsIDEyMik7Ij4gZ3JlZXRpbmdzLDxiciAvPgo8YnIgLz4KZGFuaWVseiw8L3NwYW4+PGJyIC8+JywKICAgICAgICBPdXRwdXQgPT4KICAgICAgICAgICAgJzwhRE9DVFlQRSBodG1sPjxodG1sPjxoZWFkPjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ii8+PC9oZWFkPjxib2R5IHN0eWxlPSJmb250LWZhbWlseTpHZW5ldmEsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTJweDsiPjxlbT5UaGlzIGlzIHRoZSBpbnRyb2R1Y3Rpb24gdG8gdGhpcyBzdXJ2ZXksIGlmIHlvdSB3YW50IHRvIGFuc3dlciBpdCB5b3UgaGF2ZSB0bzxiciAvPgpyZWFkIHRoaXMgZmlyc3QsIHBsZWFzZSBsZXQgdXMgdGVsbCB5b3UgdGhhbmtzIGZvciB0aGUgb3Bwb3J0dW5pdHkgdG8gaW50ZXJhY3Q8YnIgLz4Kd2l0aCB5b3UuPC9lbT48YnIgLz4KPHVsPgogICAgPGxpPgogICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDEyOCk7Ij5QbGVhc2UgcmVhZCBhbGwgdGhlIGluc3RydWN0aW9uczwvc3Bhbj48L2xpPgogICAgPGxpPgogICAgICAgIDxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDEyOCk7Ij5QbGVhc2UgdGFrZSBhdHRlbnRpb24gaW4gZXZlcnkgcXVlc3Rpb248L3NwYW4+PC9saT4KICAgIDxsaT4KICAgICAgICA8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAxMjgpOyI+QW5zd2VyIGFzIGNsZWFyIGFzIHBvc3NpYmxlPC9zcGFuPjwvbGk+CjwvdWw+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDI1NSwgMTYwLCAxMjIpOyI+VGhpcyBpcyBhbGwgd2UgaGF2ZSB0byB0ZWxsIHlvdSBmb3Igbm93LCBwbGVhc2UgdGFrZSB0aGUgb3Bwb3J0dW5pdHkgbm93IHRvPGJyIC8+CmV4cHJlc3MgeW91ciBmZWVsaW5ncyBpbiBvdXIgc3VydmV5Ljwvc3Bhbj48YnIgLz4KPGJyIC8+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDI1NSwgMTYwLCAxMjIpOyI+IGdyZWV0aW5ncyw8YnIgLz4KPGJyIC8+CmRhbmllbHosPC9zcGFuPjxiciAvPjwvYm9keT48L2h0bWw+JywKICAgIH07CgogICAgIyBjcmVhdGUgdGVzdHMgZm9yIHNpbXBsZSB0ZXh0CiAgICAkVGV4dHtTaW1wbGVUZXh0fSA9IHsKICAgICAgICBJbnB1dCA9PiAiVGhpcyBpcyBhbiBpbnRlcm5hbCBkZXNjcmlwdGlvbiBleGFtcGxlOgoKIC0gT25lCiAtIFR3bwogLSBUaHJlZQogLSBGb3VyCiAtIEZpdmUKClRoYXQncyBpdC4KLWR6CiIsCiAgICAgICAgT3V0cHV0ID0+CiAgICAgICAgICAgICc8IURPQ1RZUEUgaHRtbD48aHRtbD48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIvPjwvaGVhZD48Ym9keSBzdHlsZT0iZm9udC1mYW1pbHk6R2VuZXZhLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOyBmb250LXNpemU6IDEycHg7Ij5UaGlzIGlzIGFuIGludGVybmFsIGRlc2NyaXB0aW9uIGV4YW1wbGU6CgogLSBPbmUKIC0gVHdvCiAtIFRocmVlCiAtIEZvdXIKIC0gRml2ZQoKVGhhdFwncyBpdC4KLWR6CjwvYm9keT48L2h0bWw+JywKICAgIH07CgogICAgbXkgJERvY3VtZW50Q29tcGxldGU7CiAgICBmb3IgbXkgJFRleHRUeXBlICggc29ydCBrZXlzICVUZXh0ICkgewogICAgICAgICREb2N1bWVudENvbXBsZXRlID0gJFN1cnZleU9iamVjdC0+R2V0UmljaFRleHREb2N1bWVudENvbXBsZXRlKCBUZXh0ID0+ICRUZXh0eyRUZXh0VHlwZX0tPntJbnB1dH0gKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRUZXh0eyRUZXh0VHlwZX0tPntPdXRwdXR9LAogICAgICAgICAgICAkRG9jdW1lbnRDb21wbGV0ZSwKICAgICAgICAgICAgIkdldFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSBUZXN0IC0gJFRleHRUeXBlIiwKICAgICAgICApOwogICAgfQp9CgojIGFkZGVkICh2ZXJ5IGxpbWl0ZWQpIFN1cnZleVNlYXJjaCB0ZXN0cwoKbXkgQElEcyA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVNlYXJjaCgKICAgIE5vdGlmaWNhdGlvblNlbmRlciA9PiAncXVhbGl0eUB1bml0dGVzdC5jb20nLAogICAgTGltaXQgICAgICAgICAgICAgID0+IDE1MCwgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKKTsKCiRTZWxmLT5UcnVlKAogICAgc2NhbGFyIEBJRHMsCiAgICAiU3VydmV5U2VhcmNoKCkiLAopOwoKbXkgQFNvcnRlZElEcyA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVNlYXJjaCgKICAgIE5vdGlmaWNhdGlvblNlbmRlciA9PiAncXVhbGl0eUB1bml0dGVzdC5jb20nLAogICAgT3JkZXJCeSAgICAgICAgICAgID0+IFsgJ1N1cnZleUlEJywgJ1RpdGxlJyBdLCAgICAjIChvcHRpb25hbCkKICAgIE9yZGVyQnlEaXJlY3Rpb24gICA9PiBbICdEb3duJywgJ1VwJyBdLCAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICBMaW1pdCAgICAgICAgICAgICAgPT4gMTUwLCAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgVXNlcklEICAgICAgICAgICAgID0+IDEsCik7CgokU2VsZi0+VHJ1ZSgKICAgIHNjYWxhciBASURzLAogICAgIlN1cnZleVNlYXJjaCgpIHdpdGggc29ydCIsCik7CgojIGNsZWFudXAgaXMgZG9uZSBieSBSZXN0b3JlRGF0YWJhc2UKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAxLAogICAgICAgICAgICAgICAgVXNlclBob25lID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleUFkZAogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5QWRkIik7CgogICAgICAgICMgY2hlY2sgcGFnZQogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhUaXRsZSBJbnRyb2R1Y3Rpb24gTm90aWZpY2F0aW9uU2VuZGVyIE5vdGlmaWNhdGlvblN1YmplY3QgTm90aWZpY2F0aW9uQm9keSBRdWV1ZXMgRGVzY3JpcHRpb24pCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1RpdGxlIiwgICAgICAgICdjc3MnICktPnNlbmRfa2V5cygkU3VydmV5VGl0bGUpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0ludHJvZHVjdGlvbiIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gSW50cm9kdWN0aW9uJyk7CiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNRdWV1ZV9TZWFyY2gnKS52YWwoJzJ8fFJhdycpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7Iik7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjRGVzY3JpcHRpb24iLCAnY3NzJyApLT5zZW5kX2tleXMoJ1NlbGVuaXVtIERlc2NyaXB0aW9uJyk7CgogICAgICAgICMgc2Nyb2xsCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgIlwkKCcjQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycpWzBdLnNjcm9sbEludG9WaWV3KHRydWUpOyIsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgiXCQoJyNDdXN0b21lclVzZXJDb25kaXRpb25zJykudmFsKCdVc2VyTG9naW4nKS5jaGFuZ2UoKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEZXNjcmlwdGlvbiIsICdjc3MnICktPnNlbmRfa2V5cygnY3VzdG9tZXInKTsKCiAgICAgICAgIyBVc2VyTG9naW4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQ3JlYXRlJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgdmFsdWVzCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkU3VydmV5VGl0bGUgKSA+IC0xLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIHRpdGxlIGlzIGZvdW5kIgogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgbXkgJFN1cnZleVRpdGxlUXVvdGVkID0gJERCT2JqZWN0LT5RdW90ZSgkU3VydmV5VGl0bGUpOwogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIGlkIEZST00gc3VydmV5IFdIRVJFIHRpdGxlID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleVRpdGxlUXVvdGVkIF0KICAgICAgICApOwogICAgICAgIG15ICRTdXJ2ZXlJRDsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJFN1cnZleUlEID0gJFJvd1swXTsKICAgICAgICB9CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgojIERlbGV0ZSBrZXlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBjb21wYXJlLiBOb3RlIHRoYXQgQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0pTT04gaGFzIHNvbWV0aW1lcyBkaWZmZXJlbnQgb3JkZXIgYW5kIHRoZXJlZm9yZQojIGl0J3Mgbm90IGV2YWx1YXRlZC4gQWxzbywgTm90aWZpY2F0aW9uQm9keSBjb250YWlucyBPVFJTIGxpbmssIHdoaWNoIGlzIGRpZmZlcmVudCBmb3IgZWFjaCBzeXN0ZW0gYW5kIGl0J3Mgbm90IHNvIHJlbGV2YW50IGZvciB0aGUgdGVzdC4KICAgICAgICBmb3IgbXkgJEtleSAoCiAgICAgICAgICAgIHF3KENyZWF0ZVRpbWUgQ3JlYXRlQnkgQ2hhbmdlVGltZSBDaGFuZ2VCeSBTdXJ2ZXlOdW1iZXIgQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0pTT04gTm90aWZpY2F0aW9uQm9keSkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgIG15ICRWYWx1ZSA9IGRlbGV0ZSAkU3VydmV5eyRLZXl9OwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRWYWx1ZSwKICAgICAgICAgICAgICAgICJNYWtlIHN1cmUgdGhhdCB0aGVyZSB3YXMgJyRLZXknIGRlZmluZWQgaW4gU3VydmV5IGhhc2guIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVFeHBlY3RlZFZhbHVlID0gKAogICAgICAgICAgICAiQ2hhbmdlVXNlckZpcnN0bmFtZSIgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyRnVsbG5hbWUiICAgICA9PiAiJFRlc3RVc2VyTG9naW4gJFRlc3RVc2VyTG9naW4iLAogICAgICAgICAgICAiQ2hhbmdlVXNlckxhc3RuYW1lIiAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyTG9naW4iICAgICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgIkNyZWF0ZVVzZXJGaXJzdG5hbWUiICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICAiQ3JlYXRlVXNlckZ1bGxuYW1lIiAgICAgPT4gIiRUZXN0VXNlckxvZ2luICRUZXN0VXNlckxvZ2luIiwKICAgICAgICAgICAgIkNyZWF0ZVVzZXJMYXN0bmFtZSIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICAiQ3JlYXRlVXNlckxvZ2luIiAgICAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDdXN0b21lclVzZXJDb25kaXRpb25zIiA9PiB7CiAgICAgICAgICAgICAgICAiVXNlckxvZ2luIiA9PiBbCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAiTmVnYXRpb24iICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICJSZWdFeHBWYWx1ZSIgPT4gIiIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJEZXNjcmlwdGlvbiIgICAgICAgICA9PiAiU2VsZW5pdW0gRGVzY3JpcHRpb25jdXN0b21lciIsCiAgICAgICAgICAgICJJbnRyb2R1Y3Rpb24iICAgICAgICA9PiAiU2VsZW5pdW0gSW50cm9kdWN0aW9uIiwKICAgICAgICAgICAgIk5vdGlmaWNhdGlvblNlbmRlciIgID0+ICJxdWFsaXR5XEBleGFtcGxlLmNvbSIsCiAgICAgICAgICAgICJOb3RpZmljYXRpb25TdWJqZWN0IiA9PiAiSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shIiwKICAgICAgICAgICAgIlF1ZXVlcyIgICAgICAgICAgICAgID0+IFtdLAogICAgICAgICAgICAiU2VuZENvbmRpdGlvbnNSYXciID0+ICItLS1cbkN1c3RvbWVyVXNlckNvbmRpdGlvbnM6XG4gIFVzZXJMb2dpbjpcbiAgLSBOZWdhdGlvbjogMFxuICAgIFJlZ0V4cFZhbHVlOiAnJ1xuIiwKICAgICAgICAgICAgIlN0YXR1cyIgICAgICAgICAgICA9PiAiTmV3IiwKICAgICAgICAgICAgIlN1cnZleUlEIiAgICAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICJUaXRsZSIgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgXCVTdXJ2ZXksCiAgICAgICAgICAgIFwlRXhwZWN0ZWRWYWx1ZSwKICAgICAgICAgICAgJ0NoZWNrIFN1cnZleSBoYXNoIGRlZXBseS4nLAogICAgICAgICk7CgogICAgICAgICMgY2xlYW4tdXAgdGVzdCBjcmVhdGVkIHN1cnZleSBkYXRhCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXlfcXVldWUgV0hFUkUgc3VydmV5X2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTdXJ2ZXktUXVldWUgZm9yICRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleSBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIERvIG5vdCBjaGVjayBSaWNoVGV4dC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAxLAogICAgICAgICAgICAgICAgVXNlclBob25lID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCBzdXJ2ZXkuCiAgICAgICAgbXkgJFN1cnZleVRpdGxlICAgICAgICAgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRJbnRyb2R1Y3Rpb24gICAgICAgID0gJ1N1cnZleSBJbnRyb2R1Y3Rpb24nOwogICAgICAgIG15ICREZXNjcmlwdGlvbiAgICAgICAgID0gJ1N1cnZleSBEZXNjcmlwdGlvbic7CiAgICAgICAgbXkgJE5vdGlmaWNhdGlvblNlbmRlciAgPSAncXVhbGl0eUBleGFtcGxlLmNvbSc7CiAgICAgICAgbXkgJE5vdGlmaWNhdGlvblN1YmplY3QgPSAnU3VydmV5IE5vdGlmaWNhdGlvbiBTdWJqZWN0JzsKICAgICAgICBteSAkTm90aWZpY2F0aW9uQm9keSAgICA9ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIEJvZHknOwoKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICAgICBteSAkU3VydmV5SUQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgICAgPT4gJEludHJvZHVjdGlvbiwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICAgICA9PiAkRGVzY3JpcHRpb24sCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgICAgPT4gJE5vdGlmaWNhdGlvblNlbmRlciwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCAgICA9PiAkTm90aWZpY2F0aW9uU3ViamVjdCwKICAgICAgICAgICAgTm90aWZpY2F0aW9uQm9keSAgICAgICA9PiAkTm90aWZpY2F0aW9uQm9keSwKICAgICAgICAgICAgUXVldWVzICAgICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgICAgIEN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPT4gewogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5lZ2F0aW9uICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgIFJlZ0V4cFZhbHVlID0+ICdKb2huJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4uCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50U3VydmV5Wm9vbSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBDbGljayBvbiAnRWRpdCBHZW5lcmFsIEluZm8nIGFuZCBzd2l0Y2ggc2NyZWVuLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI01lbnUwMTAtRWRpdEdlbmVyYWxJbmZvIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNUaXRsZSIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBHZXQgdGVzdCBwYXJhbXMuCiAgICAgICAgbXkgQFRlc3QgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgU3RvcmVkID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgICAgIEVkaXRlZCA9PiAkU3VydmV5VGl0bGUgLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgICAgIFN0b3JlZCA9PiAkSW50cm9kdWN0aW9uLAogICAgICAgICAgICAgICAgRWRpdGVkID0+ICRJbnRyb2R1Y3Rpb24gLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgU3RvcmVkID0+ICREZXNjcmlwdGlvbiwKICAgICAgICAgICAgICAgIEVkaXRlZCA9PiAkRGVzY3JpcHRpb24gLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnTm90aWZpY2F0aW9uU2VuZGVyJywKICAgICAgICAgICAgICAgIFN0b3JlZCA9PiAkTm90aWZpY2F0aW9uU2VuZGVyLAogICAgICAgICAgICAgICAgRWRpdGVkID0+ICROb3RpZmljYXRpb25TZW5kZXIgLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnTm90aWZpY2F0aW9uU3ViamVjdCcsCiAgICAgICAgICAgICAgICBTdG9yZWQgPT4gJE5vdGlmaWNhdGlvblN1YmplY3QsCiAgICAgICAgICAgICAgICBFZGl0ZWQgPT4gJE5vdGlmaWNhdGlvblN1YmplY3QgLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgICA9PiAnTm90aWZpY2F0aW9uQm9keScsCiAgICAgICAgICAgICAgICBTdG9yZWQgPT4gJE5vdGlmaWNhdGlvbkJvZHksCiAgICAgICAgICAgICAgICBFZGl0ZWQgPT4gJE5vdGlmaWNhdGlvbkJvZHkgLiAnIGVkaXRlZCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayB0ZXN0IHN1cnZleSB2YWx1ZXMgYW5kIGVkaXQgdGhlbS4KICAgICAgICBmb3IgbXkgJFN1cnZleVN0b3JlZCAoQFRlc3QpIHsKCiAgICAgICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdXJ2ZXlTdG9yZWQtPntJRH0iLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgICAgICRTdXJ2ZXlTdG9yZWQtPntTdG9yZWR9LAogICAgICAgICAgICAgICAgIiMkU3VydmV5U3RvcmVkLT57SUR9IHN0b3JlZCB2YWx1ZSIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIEVkaXQgdmFsdWUuCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdXJ2ZXlTdG9yZWQtPntJRH0iLCAnY3NzJyApLT5zZW5kX2tleXMoJyBlZGl0ZWQnKTsKICAgICAgICB9CgogICAgICAgICMgVXBkYXRlIGN1c3RvbWVyIHVzZXIgY29uZGl0aW9uLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnMnKVswXS5zY3JvbGxJbnRvVmlldyh0cnVlKTsiLAogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVXNlckxvZ2luSW5wdXQxIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCcgZWRpdGVkJyk7CgogICAgICAgICMgU3VibWl0IHVwZGF0ZXMgYW5kIHN3aXRjaCBiYWNrIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nVXBkYXRlJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDEgKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMF0gKTsKCiAgICAgICAgIyBDbGljayBvbiAnRWRpdCBHZW5lcmFsIEluZm8nIGFnYWluIGFuZCBzd2l0Y2ggd2luZG93LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRSZWZyZXNoKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWVudTAxMC1FZGl0R2VuZXJhbEluZm8iLCAnY3NzJyApLT5jbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1RpdGxlIikubGVuZ3RoJyApOwoKICAgICAgICAjIENoZWNrIGVkaXRlZCB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRTdXJ2ZXJ5RWRpdGVkIChAVGVzdCkgewoKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJFN1cnZlcnlFZGl0ZWQtPntJRH0iLCAnY3NzJyApLT5nZXRfdmFsdWUoKSwKICAgICAgICAgICAgICAgICRTdXJ2ZXJ5RWRpdGVkLT57RWRpdGVkfSwKICAgICAgICAgICAgICAgICIjJFN1cnZlcnlFZGl0ZWQtPntJRH0gc3RvcmVkIHZhbHVlIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBrZXlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBjb21wYXJlLgogICAgICAgICMgTm90ZSB0aGF0IEN1c3RvbWVyVXNlckNvbmRpdGlvbnNKU09OIGhhcyBzb21ldGltZXMgZGlmZmVyZW50IG9yZGVyIGFuZCB0aGVyZWZvcmUKICAgICAgICAjIGl0J3Mgbm90IGV2YWx1YXRlZC4KICAgICAgICBmb3IgbXkgJEtleSAocXcoQ3JlYXRlVGltZSBDcmVhdGVCeSBDaGFuZ2VUaW1lIENoYW5nZUJ5IFN1cnZleU51bWJlciBDdXN0b21lclVzZXJDb25kaXRpb25zSlNPTikpIHsKCiAgICAgICAgICAgIG15ICRWYWx1ZSA9IGRlbGV0ZSAkU3VydmV5eyRLZXl9OwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRWYWx1ZSwKICAgICAgICAgICAgICAgICJNYWtlIHN1cmUgdGhhdCB0aGVyZSB3YXMgJyRLZXknIGRlZmluZWQgaW4gU3VydmV5IGhhc2guIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVFeHBlY3RlZFZhbHVlID0gKAogICAgICAgICAgICAiQ2hhbmdlVXNlckZpcnN0bmFtZSIgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyRnVsbG5hbWUiICAgICA9PiAiJFRlc3RVc2VyTG9naW4gJFRlc3RVc2VyTG9naW4iLAogICAgICAgICAgICAiQ2hhbmdlVXNlckxhc3RuYW1lIiAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyTG9naW4iICAgICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgIkNyZWF0ZVVzZXJGaXJzdG5hbWUiICAgID0+ICdBZG1pbicsCiAgICAgICAgICAgICJDcmVhdGVVc2VyRnVsbG5hbWUiICAgICA9PiAnQWRtaW4gT1RSUycsCiAgICAgICAgICAgICJDcmVhdGVVc2VyTGFzdG5hbWUiICAgICA9PiAnT1RSUycsCiAgICAgICAgICAgICJDcmVhdGVVc2VyTG9naW4iICAgICAgICA9PiAncm9vdEBsb2NhbGhvc3QnLAogICAgICAgICAgICAiQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIgPT4gewogICAgICAgICAgICAgICAgIlVzZXJMb2dpbiIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aW9uIiAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICAiUmVnRXhwVmFsdWUiID0+ICJKb2huIGVkaXRlZCIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJEZXNjcmlwdGlvbiIgICAgICAgICA9PiAiJERlc2NyaXB0aW9uIGVkaXRlZCIsCiAgICAgICAgICAgICJJbnRyb2R1Y3Rpb24iICAgICAgICA9PiAiJEludHJvZHVjdGlvbiBlZGl0ZWQiLAogICAgICAgICAgICAiTm90aWZpY2F0aW9uQm9keSIgICAgPT4gIiROb3RpZmljYXRpb25Cb2R5IGVkaXRlZCIsCiAgICAgICAgICAgICJOb3RpZmljYXRpb25TZW5kZXIiICA9PiAiJE5vdGlmaWNhdGlvblNlbmRlciBlZGl0ZWQiLAogICAgICAgICAgICAiTm90aWZpY2F0aW9uU3ViamVjdCIgPT4gIiROb3RpZmljYXRpb25TdWJqZWN0IGVkaXRlZCIsCiAgICAgICAgICAgICJRdWV1ZXMiICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgICAgICJTZW5kQ29uZGl0aW9uc1JhdyIgPT4KICAgICAgICAgICAgICAgICItLS1cbkN1c3RvbWVyVXNlckNvbmRpdGlvbnM6XG4gIFVzZXJMb2dpbjpcbiAgLSBOZWdhdGlvbjogMFxuICAgIFJlZ0V4cFZhbHVlOiBKb2huIGVkaXRlZFxuIiwKICAgICAgICAgICAgIlN0YXR1cyIgICA9PiAiTmV3IiwKICAgICAgICAgICAgIlN1cnZleUlEIiA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICJUaXRsZSIgICAgPT4gIiRTdXJ2ZXlUaXRsZSBlZGl0ZWQiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgXCVTdXJ2ZXksCiAgICAgICAgICAgIFwlRXhwZWN0ZWRWYWx1ZSwKICAgICAgICAgICAgJ0NoZWNrIFN1cnZleSBoYXNoIGRlZXBseS4nLAogICAgICAgICk7CgogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIENsZWFuLXVwIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgZGF0YS4KICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwogICAgICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgICAgICMgQ3JlYXRlIHRlc3Qgc3VydmV5LgogICAgICAgIG15ICRTdXJ2ZXlUaXRsZSA9ICdTdXJ2ZXkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJFN1cnZleUlEICAgID0gJFN1cnZleU9iamVjdC0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAnU3VydmV5IERlc2NyaXB0aW9uJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncXVhbGl0eUBleGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlPdmVydmlldyBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXciKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgQ2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBzdXJ2ZXkuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJFN1cnZleVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gdGVzdCBjcmVhdGVkIHN1cnZleS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9kaXZbXEB0aXRsZT0nJFN1cnZleVRpdGxlJ10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIFZlcmlmeSB3ZSBhcmUgaW4gQWdlbnRTdXJ2ZXlab29tIHNjcmVlbi4KICAgICAgICBteSAkVVJMQWN0aW9uID0gJFNlbGVuaXVtLT5nZXRfY3VycmVudF91cmwoKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIGluZGV4KCAkVVJMQWN0aW9uLCAiQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiICkgPiAtMSwKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIkxpbmsgZnJvbSBPdmVydmlldyB0byBab29tIHZpZXcgLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIEFnZW50U3VydmV5T3ZlcnZpZXcgb2YgY3JlYXRlZCB0ZXN0IHN1cnZleS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3Iik7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI1N1cnZleVNlYXJjaCcsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgbXkgJERpYWxvZ0ZvdW5kID0gJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNTdXJ2ZXlPdmVydmlld1NldHRpbmdzRGlhbG9nIikubGVuZ3RoJwogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkRGlhbG9nRm91bmQsCiAgICAgICAgICAgICdEaWFsb2cgZGlzcGxheWVkLicKICAgICAgICApOwoKICAgICAgICAjIFNlbmQgU3VydmV5SUQuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZyBpbnB1dFtuYW1lPSJGdWxsdGV4dCJdJywgJ2NzcycgKS0+c2VuZF9rZXlzKCRTdXJ2ZXlJRCk7CgogICAgICAgICMgTWFrZSBzdXJlIHRoYXQgZm9sbG93aW5nIGZpZWxkcyBhcmUgZGlzcGxheWVkLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI1N1cnZleU92ZXJ2aWV3U2V0dGluZ3NEaWFsb2cgI1N0YXRlc19TZWFyY2gnLCAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI1N1cnZleU92ZXJ2aWV3U2V0dGluZ3NEaWFsb2cgI05vVGltZVNldCcsICAgICAnY3NzJyApOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI1N1cnZleU92ZXJ2aWV3U2V0dGluZ3NEaWFsb2cgI0RhdGVSYW5nZScsICAgICAnY3NzJyApOwoKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJyNEaWFsb2dCdXR0b24xJywgJ2NzcycgKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiAhJCgiLkRpYWxvZy5Nb2RhbCIpLmxlbmd0aCcgKTsKCiAgICAgICAgbXkgJExpbmtTdXJ2ZXlJRCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnLk1hc3RlckFjdGlvbkxpbmsnLCAnY3NzJyApLT5nZXRfYXR0cmlidXRlKCdpbm5lckhUTUwnKTsKICAgICAgICBteSAkTGlua0NvbnRlbnQgID0gJyc7CgogICAgICAgIGlmICggJExpbmtTdXJ2ZXlJRCA9fiBte15ccyooXGQrKVxzKiR9ICkgewogICAgICAgICAgICAkTGlua0NvbnRlbnQgPSAkMTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExpbmtDb250ZW50LAogICAgICAgICAgICAkU3VydmV5SUQgKyAxMDAwMCwKICAgICAgICAgICAgJ0NyYXRlZCBzdXJ2ZXkgbGluayBmb3VuZC4nCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiBjaGFuZ2Ugc3RhdHVzIGRyb3Bkb3duIGlzIG1vZGVybml6ZWQuCiAgICAgICAgIyBTZWUgYnVnIzEzNzQxIGh0dHBzOi8vYnVncy5vdHJzLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NDEKICAgICAgICBteSAkUXVlc3Rpb24gICA9ICdRdWVzdGlvbiAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkUXVlc3Rpb25JRCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIFF1ZXN0aW9uICAgICAgID0+ICRRdWVzdGlvbiwKICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ1llc05vJywKICAgICAgICApOwoKICAgICAgICAjIEdvIHRvIEFnZW50U3VydmV5Wm9vbSBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1cnZleUlEPSRTdXJ2ZXlJRCIpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnI05ld1N0YXR1cy5Nb2Rlcm5pemUnKS5sZW5ndGggPT09IDE7IiApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcjTmV3U3RhdHVzLk1vZGVybml6ZScpLmxlbmd0aCA9PT0gMTsiKSwKICAgICAgICAgICAgIidDaGFuZ2UgU3RhdHVzJyBkcm9wZG93biBpcyBtb2Rlcm5pemVkIiwKICAgICAgICApOwoKICAgICAgICAjIFN3aXRjaCBzdGF0dXMgb2Ygc3VydmV5LgogICAgICAgIGZvciBteSAkU3RhdHVzIChxdyhNYXN0ZXIgVmFsaWQpKSB7CgogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCd3aW5kb3cuQ29yZS5BcHAuUGFnZUxvYWRDb21wbGV0ZSA9IGZhbHNlOycpOwogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgIlwkKCcjTmV3U3RhdHVzJykudmFsKCckU3RhdHVzJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAgICAgJ3JldHVybiB0eXBlb2YoQ29yZSkgPT0gIm9iamVjdCIgJiYgdHlwZW9mKENvcmUuQXBwKSA9PSAib2JqZWN0IiAmJiBDb3JlLkFwcC5QYWdlTG9hZENvbXBsZXRlJwogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCdsYWJlbDpjb250YWlucyhTdGF0dXMpJykubmV4dCgpLnRleHQoKS50cmltKCk7IiksCiAgICAgICAgICAgICAgICAiJFN0YXR1cyIsCiAgICAgICAgICAgICAgICAiU3VydmV5IHN0YXR1cyBpcyBzZXQgdG8gJFN0YXR1cyIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIERlbGV0ZSBzdXJ2ZXkgcXVlc3Rpb24uCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24gV0hFUkUgc3VydmV5X2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTdXJ2ZXktUXVldWUgZm9yICRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAjIENsZWFuLXVwIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgZGF0YS4KICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgICAgICAgICA9ICdTdXJ2ZXkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEludHJvZHVjdGlvbiAgICAgICAgPSAnU3VydmV5IEludHJvZHVjdGlvbic7CiAgICAgICAgbXkgJERlc2NyaXB0aW9uICAgICAgICAgPSAnU3VydmV5IERlc2NyaXB0aW9uJzsKICAgICAgICBteSAkTm90aWZpY2F0aW9uU2VuZGVyICA9ICdxdWFsaXR5QGV4YW1wbGUuY29tJzsKICAgICAgICBteSAkTm90aWZpY2F0aW9uU3ViamVjdCA9ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnOwogICAgICAgIG15ICROb3RpZmljYXRpb25Cb2R5ICAgID0gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keSc7CgogICAgICAgIG15ICRTdXJ2ZXlJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICRJbnRyb2R1Y3Rpb24sCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJERlc2NyaXB0aW9uLAogICAgICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICROb3RpZmljYXRpb25TZW5kZXIsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJE5vdGlmaWNhdGlvblN1YmplY3QsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJE5vdGlmaWNhdGlvbkJvZHksCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleVpvb20gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjaGVjayBwYWdlCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KE1lbnUwMDAtQmFjayBNZW51MDEwLUVkaXRHZW5lcmFsSW5mbyBNZW51MDIwLUVkaXRRdWVzdGlvbnMgTmV3U3RhdHVzKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgdGVzdCBjcmVhdGVkIHN1cnZleSB2YWx1ZXMKICAgICAgICBteSBAVmFsdWVzID0gKCAkU3VydmV5VGl0bGUsICRJbnRyb2R1Y3Rpb24sICREZXNjcmlwdGlvbiApOwogICAgICAgIGZvciBteSAkU3VydmV5Q2hlY2sgKEBWYWx1ZXMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRTdXJ2ZXlDaGVjayIgKSA+IC0xLAogICAgICAgICAgICAgICAgIiRTdXJ2ZXlDaGVjayBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleSBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHN1cnZleS4KICAgICAgICBteSAkU3VydmV5VGl0bGUgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdXJ2ZXlJRCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAnU3VydmV5IERlc2NyaXB0aW9uJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAnc3Zpa0BleGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbi4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlab29tIG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1cnZleUlEPSRTdXJ2ZXlJRCIpOwoKICAgICAgICAjIENsaWNrIG9uICdFZGl0IFF1ZXN0aW9ucycgYW5kIHN3aXRjaCBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWVudTAyMC1FZGl0UXVlc3Rpb25zIiwgJ2NzcycgKS0+Y2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNBbnN3ZXJSZXF1aXJlZCIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBDaGVjayBwYWdlLgogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhRdWVzdGlvbiBUeXBlIEFuc3dlclJlcXVpcmVkKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgR2V0IHRlc3QgcGFyYW1zLgogICAgICAgIG15IEBUZXN0ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdZZXNOb1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1llc05vJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnUmFkaW9RdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdSYWRpbycsCiAgICAgICAgICAgICAgICBBbnN3ZXIxID0+ICdTZWxlbml1bSBvbmUnLAogICAgICAgICAgICAgICAgQW5zd2VyMiA9PiAnU2VsZW5pdW0gdHdvJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnQ2hlY2tib3hRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgICAgICBBbnN3ZXIxID0+ICdTZWxlbml1bSBvbmUnLAogICAgICAgICAgICAgICAgQW5zd2VyMiA9PiAnU2VsZW5pdW0gdHdvJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGV4dGFyZWFRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBUeXBlID0+ICdUZXh0YXJlYScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgPT4gJ05QU1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ05QUycsCiAgICAgICAgICAgICAgICBBbnN3ZXIxID0+ICdTZWxlbml1bSBvbmUnLAogICAgICAgICAgICAgICAgQW5zd2VyMiA9PiAnU2VsZW5pdW0gdHdvJwogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3QgcXVlc3Rpb25zLgogICAgICAgIG15ICRTdWNjZXNzOwogICAgICAgIGZvciBteSAkUXVlc3Rpb25zIChAVGVzdCkgewoKICAgICAgICAgICAgIyBBZGQgcXVlc3Rpb24uCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1F1ZXN0aW9uIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkUXVlc3Rpb25zLT57TmFtZX0gKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI1R5cGUnKS52YWwoJyRRdWVzdGlvbnMtPntUeXBlfScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQWRkJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIEFkZCBhbnN3ZXJzIGZvciByYWRpbywgY2hlY2stYm94IGFuZCBOUFMgcXVlc3Rpb25zLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkUXVlc3Rpb25zLT57TmFtZX0gZXEgJ1JhZGlvUXVlc3Rpb24nCiAgICAgICAgICAgICAgICB8fCAkUXVlc3Rpb25zLT57TmFtZX0gZXEgJ0NoZWNrYm94UXVlc3Rpb24nCiAgICAgICAgICAgICAgICB8fCAkUXVlc3Rpb25zLT57TmFtZX0gZXEgJ05QU1F1ZXN0aW9uJwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBWZXJpZnkgcXVlc3Rpb24gaXMgaW4gaW5jb21wbGV0ZSBzdGF0ZS4KICAgICAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF90ZXh0KCIvL2RpdltcQGNsYXNzPSdDb250ZW50J10iKSwgJ0luY29tcGxldGUnICkgPiAtMSwKICAgICAgICAgICAgICAgICAgICAiJFF1ZXN0aW9ucy0+e05hbWV9IGlzIGluY29tcGxldGUiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIENsaWNrIG9uIHRlc3QgY3JlYXRlZCBxdWVzdGlvbi4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAkUXVlc3Rpb25zLT57TmFtZX0sICdsaW5rX3RleHQnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNBbnN3ZXIiLCAnY3NzJyApLT5zZW5kX2tleXMoICRRdWVzdGlvbnMtPntBbnN3ZXIxfSApOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0FkZCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0Fuc3dlciIsICdjc3MnICktPnNlbmRfa2V5cyggJFF1ZXN0aW9ucy0+e0Fuc3dlcjJ9ICk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQWRkJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gYmFjayB0byBhZGQgcXVlc3Rpb24gc2NyZWVuLgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0dvIGJhY2snXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgVmVyaWZ5IHF1ZXN0aW9uIGlzIGluIGNvbXBsZXRlIHN0YXRlLgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF90ZXh0KCIvL2RpdltcQGNsYXNzPSdDb250ZW50J10iKSwgJ0NvbXBsZXRlJyApID4gLTEsCiAgICAgICAgICAgICAgICAiJFF1ZXN0aW9ucy0+e05hbWV9IGlzIGNvbXBsZXRlZCIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIERlbGV0ZSB0ZXN0IHF1ZXN0aW9uLgogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIi5RdWVzdGlvbkRlbGV0ZSIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggQWxlcnRQcmVzZW50ID0+IDEgKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5hY2NlcHRfYWxlcnQoKTsKCiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCcuRGF0YVRhYmxlIHRyOmNvbnRhaW5zKFwiJFF1ZXN0aW9ucy0+e05hbWV9XCIpJykubGVuZ3RoOyIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuICFcJCgnLkRhdGFUYWJsZSB0cjpjb250YWlucyhcIiRRdWVzdGlvbnMtPntOYW1lfVwiKScpLmxlbmd0aDsiKSwKICAgICAgICAgICAgICAgICIkUXVlc3Rpb25zLT57TmFtZX0gaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgQ2xlYW4tdXAgdGVzdCBjcmVhdGVkIHN1cnZleSBxdWV1ZS4KICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgRGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkuCiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKdXNlIHZhcnMgKHF3KCRTZWxmKSk7CgpteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewogICAgICAgIG15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKICAgICAgICAjIERvIG5vdCByZWFsbHkgc2VuZCBlbWFpbHMuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1NlbmRtYWlsTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0tlcm5lbDo6U3lzdGVtOjpFbWFpbDo6RG9Ob3RTZW5kRW1haWwnLAogICAgICAgICk7CgogICAgICAgICMgRG8gbm90IGNoZWNrIGVtYWlsIGFkZHJlc3NlcyBpbiB0aGlzIHRlc3QuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgU2V0IHNlbmQgcGVyaW9kIHRvIHplcm8gdG8gYWx3YXlzIHNlbmQgc3VydmV5LgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgU2V0IG5vIHNlbmQgY29uZGl0aW9uIGNoZWNrIGluIG5vcm1hbCB0ZXN0cy4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHN1cnZleS4KICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgICAgIG15ICRTdXJ2ZXlUaXRsZSAgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdXJ2ZXlJRCAgICAgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJ1N1cnZleSBJbnRyb2R1Y3Rpb24nLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdTdXJ2ZXkgRGVzY3JpcHRpb24nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdxdWFsaXR5QHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIKICAgICAgICApOwoKICAgICAgICAjIEFkZCBxdWVzdGlvbiB0byB0ZXN0IHN1cnZleS4KICAgICAgICBteSAkUXVlc3Rpb25OYW1lID0gJ1F1ZXN0aW9uICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIFF1ZXN0aW9uICAgICAgID0+ICRRdWVzdGlvbk5hbWUsCiAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+IDEsCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICdZZXNObycsCiAgICAgICAgKTsKCiAgICAgICAgIyBHZXQgcXVlc3Rpb24gSUQgZnJvbSB0aGUgdGVzdCBzdXJ2ZXkuCiAgICAgICAgbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICAgICAgbXkgJFF1ZXN0aW9uSUQgPSAkUXVlc3Rpb25MaXN0WzBdLT57UXVlc3Rpb25JRH07CgogICAgICAgICMgU2V0IHRlc3Qgc3VydmV5IG9uIG1hc3RlciBzdGF0dXMuCiAgICAgICAgbXkgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICAgICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInLAogICAgICAgICk7CgogICAgICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICAgICAgbXkgJERCT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICBteSAkQXJ0aWNsZUludGVybmFsQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckNoYW5uZWwoCiAgICAgICAgICAgIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICBteSBAVGlja2V0TnVtYmVyczsKICAgICAgICBteSBAVGlja2V0SURzOwogICAgICAgIGZvciBteSAkQ291bnQgKCAxIC4uIDMgKSB7CgogICAgICAgICAgICAjIENyZWF0ZSB0ZXN0IHRpY2tldC4KICAgICAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgICAgICAgICBteSAkVGlja2V0SUQgICAgID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgICAgICAgICAgICAgVE4gICAgICAgICAgID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gIlNlbGVuaXVtIFRlc3QgVGlja2V0IiwKICAgICAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICduZXcnLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdTZWxlbml1bUN1c3RvbWVyJywKICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAndGVzdEBsb2NhbGhvc3QuY29tJywKICAgICAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAVGlja2V0SURzLCAgICAgJFRpY2tldElEOwogICAgICAgICAgICBwdXNoIEBUaWNrZXROdW1iZXJzLCAkVGlja2V0TnVtYmVyOwoKICAgICAgICAgICAgIyBBZGQgYXJ0aWNsZSB0byB0ZXN0IHRpY2tldC4KICAgICAgICAgICAgbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMCwKICAgICAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICAgICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBBZ2VudCA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdDdXN0b21lcjxjdXN0b21lci1hQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgICAgICBDYyAgICAgICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXI8Y3VzdG9tZXItYkBleGFtcGxlLmNvbT4nLAogICAgICAgICAgICAgICAgUmVwbHlUbyAgICAgICAgICAgICAgPT4gJ0N1c3RvbWVyIEIgPGN1c3RvbWVyLWJAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdzb21lIHNob3J0IGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0IFBlcmwgbW9kdWxlcyBwcm92aWRlIGEgcmFuZ2Ugb2YnLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDaGFyc2V0ICAgICAgICAgICAgICA9PiAndXRmOCcsCiAgICAgICAgICAgICAgICBNaW1lVHlwZSAgICAgICAgICAgICA9PiAndGV4dC9wbGFpbicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgICJBcnRpY2xlIElEICRBcnRpY2xlSUQgaXMgY3JlYXRlZCIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgU2VuZCBzdXJ2ZXkgcmVxdWVzdC4KICAgICAgICAgICAgbXkgJFJlcXVlc3QgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0U2VuZCgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFJlcXVlc3QsCiAgICAgICAgICAgICAgICAnU3VydmV5IHJlcXVlc3QgaXMgc2VudCcKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgR2V0IHB1YmxpYyBzdXJ2ZXkga2V5IGZyb20gdGVzdCBzdXJ2ZXkgcmVxdWVzdC4KICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIHB1YmxpY19zdXJ2ZXlfa2V5IEZST00gc3VydmV5X3JlcXVlc3QgV0hFUkUgc3VydmV5X2lkID0gPyBBTkQgdGlja2V0X2lkID0gPyIsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCwgXCRUaWNrZXRJRCBdLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkUHVibGljU3VydmV5S2V5OwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUm93WzBdOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIENyZWF0ZSBwdWJsaWMgYW5zd2VyIHZvdGVzLgogICAgICAgICAgICBpZiAoICRDb3VudCA9PSAnMScgKSB7CgogICAgICAgICAgICAgICAgIyBOYXZpZ2F0ZSB0byBwdWJsaWMgcGFnZSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5IGFuZCBhZGQgcHVibGljIGFuc3dlciB2aWEgZnJvbnRlbmQuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljU3VydmV5O1B1YmxpY1N1cnZleUtleT0kUHVibGljU3VydmV5S2V5Iik7CgogICAgICAgICAgICAgICAgIyBTZWxlY3QgJ1llcycgYXMgYW4gYW5zd2VyLgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEB2YWx1ZT0nWWVzJ11bXEB0eXBlPSdyYWRpbyddIiktPmNsaWNrKCk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgICAgICAgICAgSmF2YVNjcmlwdCA9PgogICAgICAgICAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgXCQoJ2lucHV0W3ZhbHVlPVllc11bdHlwZT1yYWRpb106Y2hlY2tlZCcpLmxlbmd0aCIKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0ZpbmlzaCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEFkZCBwdWJsaWMgdm90ZSB2aWEgYmFja2VuZC4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBTbGVlcCBvbmUgc2Vjb25kIGJldHdlZW4gcHVibGljIGFuc3dlci4KICAgICAgICAgICAgICAgIHNsZWVwIDE7CgogICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb25JRCwKICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJ1llcycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUludmFsaWRTZXQoCiAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gem9vbSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIik7CgogICAgICAgICMgQ2xpY2sgb24gc3VydmV5ICdTdGF0cyBEZXRhaWxzJyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNZW51MDMwLVN0YXRzRGV0YWlscyIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIGRldGFpbHMgYXJlIHByZXNlbnQuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIi5TZWVEZXRhaWxzIikubGVuZ3RoJyApOwoKICAgICAgICAjIENoZWNrIHNjcmVlbi4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIiwgICAgICAgICAgICAgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRoZWFkIHRyIHRoIiwgJ2NzcycgKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggInRhYmxlIHRib2R5IHRyIHRkIiwgJ2NzcycgKTsKCiAgICAgICAgIyBWZXJpZnkgc3RhdHMgYXJlIHByZXNlbnQgZm9yIGFsbCB0aWNrZXRzLgogICAgICAgIGZvciBteSAkVGlja2V0TnVtYmVyIChAVGlja2V0TnVtYmVycykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkVGlja2V0TnVtYmVyICkgPiAtMSwKICAgICAgICAgICAgICAgICJUaWNrZXQgbnVtYmVyICRUaWNrZXROdW1iZXIgaXMgZm91bmQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENsaWNrIHRvIHNlZSBkZXRhaWxzIG9mIHN1cnZleS4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgJ1RpY2tldE51bWJlcj0kVGlja2V0TnVtYmVyc1syXScgKV0iKS0+Y2xpY2soKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiBcJCgnLkhlYWRlciBoMTpjb250YWlucygkVGlja2V0TnVtYmVyc1syXSknKS5sZW5ndGgiICk7CgogICAgICAgICMgVmVyaWZ5IHF1ZXN0aW9uIHZhbHVlcy4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRRdWVzdGlvbk5hbWUgKSA+IC0xLAogICAgICAgICAgICAiJFF1ZXN0aW9uTmFtZSBpcyBmb3VuZCIKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJ1llcycgKSA+IC0xLAogICAgICAgICAgICAiQW5zd2VyICdZZXMnIGlzIGZvdW5kIgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgJ1ByZXZpb3VzIFZvdGUnIGV4aXN0cy4KICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93TGVmdCcpLmxlbmd0aCIpLAogICAgICAgICAgICAiJ1ByZXZpb3VzIFZvdGUnIGlzIG5vdCBmb3VuZCBmb3IgZmlyc3QgYW5zd2VyIgogICAgICAgICk7CgogICAgICAgICMgQ2hlY2sgaWYgJ05leHQgVm90ZScgZXhpc3RzLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5TdXJ2ZXlBcnJvd1JpZ2h0JykubGVuZ3RoIiksCiAgICAgICAgICAgICInTmV4dCBWb3RlJyBpcyBmb3VuZCBmb3IgZmlyc3QgYW5zd2VyIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgb24gdGhlICdOZXh0IFZvdGUnIGxpbmsuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsICdUaWNrZXROdW1iZXI9JFRpY2tldE51bWJlcnNbMV0nICldIiktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICJyZXR1cm4gXCQoJy5IZWFkZXIgaDE6Y29udGFpbnMoJFRpY2tldE51bWJlcnNbMV0pJykubGVuZ3RoIiApOwoKICAgICAgICAjIENoZWNrIGlmIHRpY2tldCBudW1iZXIgaXMgY29ycmVjdCwgYW5kIGxpbmtzIHRvICdQcmV2aW91cyBWb3RlJyBhbmQgJ05leHQgVm90ZScgZXhpc3QuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJFRpY2tldE51bWJlcnNbMV0iICkgPiAtMSwKICAgICAgICAgICAgIlRpY2tldCBudW1iZXIgJFRpY2tldE51bWJlcnNbMV0gaXMgZm91bmQiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93TGVmdCcpLmxlbmd0aCIpLAogICAgICAgICAgICAiJ1ByZXZpb3VzIFZvdGUnIGlzIGZvdW5kIGZvciBzZWNvbmQgYW5zd2VyIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93UmlnaHQnKS5sZW5ndGgiKSwKICAgICAgICAgICAgIidOZXh0IFZvdGUnIGlzIGZvdW5kIGZvciBzZWNvbmQgYW5zd2VyIgogICAgICAgICk7CgogICAgICAgICMgR28gdG8gbmV4dCB2b3RlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCAnVGlja2V0TnVtYmVyPSRUaWNrZXROdW1iZXJzWzBdJyApXSIpLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcuSGVhZGVyIGgxOmNvbnRhaW5zKCRUaWNrZXROdW1iZXJzWzBdKScpLmxlbmd0aCIgKTsKCiAgICAgICAgIyBDaGVjayBpZiB0aWNrZXQgbnVtYmVyIGlzIGNvcnJlY3QsICdQcmV2aW91cyBWb3RlJyBleGlzdHMgYW5kICdOZXh0IFZvdGUnIGRvZXMgbm90IGV4aXN0LgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRUaWNrZXROdW1iZXJzWzBdIiApID4gLTEsCiAgICAgICAgICAgICJUaWNrZXQgbnVtYmVyICRUaWNrZXROdW1iZXJzWzBdIGlzIGZvdW5kIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93TGVmdCcpLmxlbmd0aCIpLAogICAgICAgICAgICAiJ1ByZXZpb3VzIFZvdGUnIGlzIGZvdW5kIGZvciB0aGlyZCBhbnN3ZXIiCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+RmFsc2UoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93UmlnaHQnKS5sZW5ndGgiKSwKICAgICAgICAgICAgIidOZXh0IFZvdGUnIGlzIG5vdCBmb3VuZCBmb3IgdGhpcmQgYW5zd2VyIgogICAgICAgICk7CgogICAgICAgICMgRGVmaW5lIGRhdGEgZm9yIGNsZWFudXAuCiAgICAgICAgbXkgQENsZWFuRGF0YSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1F1ZXVlJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcXVldWUnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3N1cnZleV9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdBbnN3ZXInLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9hbnN3ZXInLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3F1ZXN0aW9uX2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRRdWVzdGlvbklELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVlc3Rpb24nLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9xdWVzdGlvbicsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1JlcXVlc3QnLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9yZXF1ZXN0JywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdzdXJ2ZXlfaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnVm90ZScsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X3ZvdGUnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3F1ZXN0aW9uX2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRRdWVzdGlvbklELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnU3VydmV5JywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXknLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIERlbGV0ZSBjcmVhdGVkIHRlc3QgdGlja2V0cy4KICAgICAgICBteSAkU3VjY2VzczsKICAgICAgICBmb3IgbXkgJFRpY2tldElEIChAVGlja2V0SURzKSB7CiAgICAgICAgICAgICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0RGVsZXRlKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICJUaWNrZXRJRCAkVGlja2V0SUQgaXMgZGVsZXRlZCIKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgRGVsZXRlIHRlc3Qgc3VydmV5IGRhdGEgZnJvbSBEQi4KICAgICAgICBmb3IgbXkgJERlbGV0ZSAoQENsZWFuRGF0YSkgewogICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSAkRGVsZXRlLT57VGFibGV9IFdIRVJFICREZWxldGUtPntTUUxJRH0gPSA/IiwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcIiREZWxldGUtPntJRH0iIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiJERlbGV0ZS0+e05hbWV9IGZvciAkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZleVRpdGxlID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3N2aWtAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIEJvZHknLAogICAgICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlab29tIG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIik7CgogICAgICAgICMgY3JlYXRlIG1lbnUgbW9kdWxlIHRlc3QgcGFyYW1zCiAgICAgICAgbXkgQE1lbnVNb2R1bGUgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gIkJhY2siLAogICAgICAgICAgICAgICAgSUQgICA9PiAiTWVudTAwMC1CYWNrIiwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAiRWRpdCBHZW5lcmFsIEluZm8iLAogICAgICAgICAgICAgICAgSUQgICA9PiAiTWVudTAxMC1FZGl0R2VuZXJhbEluZm8iLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICJFZGl0IFF1ZXN0aW9ucyIsCiAgICAgICAgICAgICAgICBJRCAgID0+ICJNZW51MDIwLUVkaXRRdWVzdGlvbnMiLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICJDaGFuZ2UgU3RhdHVzIiwKICAgICAgICAgICAgICAgIElEICAgPT4gIk5ld1N0YXR1cyIsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBzdXJ2ZXkgbWVudSBtb2R1bGVzCiAgICAgICAgZm9yIG15ICRTdXJ2ZXlNZW51IChATWVudU1vZHVsZSkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdXJ2ZXlNZW51LT57SUR9IiwgJ2NzcycgKSwKICAgICAgICAgICAgICAgICJTdXJ2ZXkgbWVudSAkU3VydmV5TWVudS0+e05hbWV9IGlzIGZvdW5kIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgREIgb2JqZWN0CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgY2xlYW4tdXAgdGVzdCBjcmVhdGVkIHN1cnZleSBkYXRhCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXlfcXVldWUgV0hFUkUgc3VydmV5X2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTdXJ2ZXktUXVldWUgZm9yICRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZleVRpdGxlID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3N2aWtAZXhhbXBsZS5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIEJvZHknLAogICAgICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgY3JlYXRlIHRlc3QgdXNlciBhbmQgbG9naW4KICAgICAgICBteSAkVGVzdFVzZXJMb2dpbiA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgICAgICAgICBHcm91cHMgPT4gWyAnYWRtaW4nLCAndXNlcnMnIF0sCiAgICAgICAgKSB8fCBkaWUgIkRpZCBub3QgZ2V0IHRlc3QgdXNlciI7CgogICAgICAgICRTZWxlbml1bS0+TG9naW4oCiAgICAgICAgICAgIFR5cGUgICAgID0+ICdBZ2VudCcsCiAgICAgICAgICAgIFVzZXIgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICBQYXNzd29yZCA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlPdmVydmlldyBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRTdXJ2ZXlPdmVydmlldztTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjaGVjayBvdmVydmlldyBzY3JlZW4KICAgICAgICBmb3IgbXkgJENvbHVtbnMgKCAnU3VydmV5IycsICdUaXRsZScsICdTdGF0dXMnLCAnQ3JlYXRlZCcgKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDb2x1bW5zICkgPiAtMSwKICAgICAgICAgICAgICAgICJDb2x1bW4gJENvbHVtbnMgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBmb3IgdGVzdCBjcmVhdGVkIHN1cnZleQogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgIiRTdXJ2ZXlUaXRsZSIgKSA+IC0xLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGZvdW5kIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleSBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgpteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICBteSAkSGVscGVyICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgICAgIG15ICREQk9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICAgICAjIERvIG5vdCByZWFsbHkgc2VuZCBlbWFpbHMuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1NlbmRtYWlsTW9kdWxlJywKICAgICAgICAgICAgVmFsdWUgPT4gJ0tlcm5lbDo6U3lzdGVtOjpFbWFpbDo6RG9Ob3RTZW5kRW1haWwnLAogICAgICAgICk7CgogICAgICAgICMgRG8gbm90IGNoZWNrIGVtYWlsIGFkcmVzc2VzIGluIHRoaXMgdGVzdC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgc2VuZCBwZXJpb2QgdG8gYWx3YXlzIHNlbmQgc3VydmV5LgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgU2V0IG5vIHNlbmQgY29uZGl0aW9uIGNoZWNrIGluIG5vcm1hbCB0ZXN0cy4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIERvIG5vdCBjaGVjayBSaWNoVGV4dC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHN1cnZleS4KICAgICAgICBteSAkU3VydmVyeUludHJvZHVjdGlvbiAgICA9ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgbXkgJFN1cnZlcnlEZXNjcmlwdGlvbiA9ICdTdXJ2ZXkgRGVzY3JpcHRpb24nLAogICAgICAgICAgICBteSAkU3VydmV5VGl0bGUgICAgICAgID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkU3VydmV5SUQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJFN1cnZlcnlJbnRyb2R1Y3Rpb24sCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJFN1cnZlcnlEZXNjcmlwdGlvbiwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncXVhbGl0eUB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnLAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIEJvZHknLAogICAgICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFsyXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VydmV5SUQsCiAgICAgICAgICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgR2V0IHF1ZXN0aW9uIGRhdGEuCiAgICAgICAgbXkgQFF1ZXN0aW9uRGF0YSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSA9PiAnWWVzTm8nLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ1JhZGlvJywKICAgICAgICAgICAgICAgIEFuc3dlciA9PiBbICJSYWRpb09uZSIsICJSYWRpb1R3byIgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSAgID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgICAgICBBbnN3ZXIgPT4gWyAiQ2hlY2tCb3hPbmUiLCAiQ2hlY2tCb3hUd28iIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRhcmVhJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSAgID0+ICdOUFMnLAogICAgICAgICAgICAgICAgQW5zd2VyID0+IFsgIk5QU09uZSIsICJOUFNUd28iIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBBZGQgcXVlc3Rpb24gYW5kIGFuc3dlcnMgdG8gdGVzdCBzdXJ2ZXkuCiAgICAgICAgbXkgQFF1ZXN0aW9uTmFtZXM7CiAgICAgICAgbXkgQFF1ZXN0aW9uSURzOwogICAgICAgIG15IEBBbnN3ZXJOYW1lczsKICAgICAgICBteSBAQW5zd2VySURzOwogICAgICAgIGZvciBteSAkUXVlc3Rpb25zIChAUXVlc3Rpb25EYXRhKSB7CiAgICAgICAgICAgIG15ICRRdWVzdGlvbk5hbWUgPSAkUXVlc3Rpb25zLT57VHlwZX0gLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICAgICBRdWVzdGlvbiAgICAgICA9PiAkUXVlc3Rpb25OYW1lLAogICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICRRdWVzdGlvbnMtPntUeXBlfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgR2V0IHRlc3QgcXVlc3Rpb24gSUQuCiAgICAgICAgICAgIG15ICRRdWVzdGlvblF1b3RlZCA9ICREQk9iamVjdC0+UXVvdGUoJFF1ZXN0aW9uTmFtZSk7CiAgICAgICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBpZCBGUk9NIHN1cnZleV9xdWVzdGlvbiBXSEVSRSBxdWVzdGlvbiA9ID8iLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUXVlc3Rpb25RdW90ZWQgXQogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkUXVlc3Rpb25JRDsKICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICAgICAkUXVlc3Rpb25JRCA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25JRHMsICRRdWVzdGlvbklEOwoKICAgICAgICAgICAgIyBBZGQgYW5zd2VyIGZvciByYWRpbyBhbmQgY2hlY2stYm94IHF1ZXN0aW9ucy4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFF1ZXN0aW9ucy0+e1R5cGV9IGVxICdSYWRpbycKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbnMtPntUeXBlfSBlcSAnQ2hlY2tib3gnCiAgICAgICAgICAgICAgICB8fCAkUXVlc3Rpb25zLT57VHlwZX0gZXEgJ05QUycKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VycyAoIEB7ICRRdWVzdGlvbnMtPntBbnN3ZXJ9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+QW5zd2VyQWRkKAogICAgICAgICAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgID0+ICRRdWVzdGlvbklELAogICAgICAgICAgICAgICAgICAgICAgICBBbnN3ZXIgICAgICAgICA9PiAkQW5zd2VycywKICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIEdldCB0ZXN0IGFuc3dlciBJRC4KICAgICAgICAgICAgICAgICAgICBteSAkQW5zd2VyUXVvdGVkID0gJERCT2JqZWN0LT5RdW90ZSgkQW5zd2Vycyk7CiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgaWQgRlJPTSBzdXJ2ZXlfYW5zd2VyIFdIRVJFIGFuc3dlciA9ID8gQU5EIHF1ZXN0aW9uX2lkID0gPyIsCiAgICAgICAgICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJEFuc3dlclF1b3RlZCwgXCRRdWVzdGlvbklEIF0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG15ICRBbnN3ZXJJRDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEFuc3dlcklEID0gJFJvd1swXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQW5zd2VySURzLCAgICRBbnN3ZXJJRDsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBBbnN3ZXJOYW1lcywgJEFuc3dlcnM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25OYW1lcywgJFF1ZXN0aW9uTmFtZTsKICAgICAgICB9CgogICAgICAgICMgU2V0IHRlc3Qgc3VydmV5IG9uIG1hc3RlciBzdGF0dXMuCiAgICAgICAgbXkgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICAgICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN0YXR1c1NldCwKICAgICAgICAgICAgIlN1cnZleSBtYXN0ZXIgc3RhdHVzIGlzIHNldCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBDcmVhdGUgdGVzdCB0aWNrZXQuCiAgICAgICAgbXkgJFRpY2tldE51bWJlciA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZU51bWJlcigpOwogICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgIFROICAgICAgICAgICA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gIlNlbGVuaXVtIFRlc3QgVGlja2V0IiwKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICAgICAgICAgIEN1c3RvbWVySUQgICA9PiAnU2VsZW5pdW1DdXN0b21lcicsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAndGVzdEBsb2NhbGhvc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRUaWNrZXRJRCwKICAgICAgICAgICAgIlRpY2tldCBJRCAkVGlja2V0SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEFydGljbGVJbnRlcm5hbEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyktPkJhY2tlbmRGb3JDaGFubmVsKAogICAgICAgICAgICBDaGFubmVsTmFtZSA9PiAnSW50ZXJuYWwnLAogICAgICAgICk7CgogICAgICAgICMgQWRkIGFydGljbGUgdG8gdGVzdCBjcmVhdGVkIHRpY2tldC4KICAgICAgICBteSAkQXJ0aWNsZUlEID0gJEFydGljbGVJbnRlcm5hbEJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgIFRpY2tldElEICAgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMCwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2FnZW50JywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQWdlbnQgPGVtYWlsQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdDdXN0b21lciBBIDxjdXN0b21lci1hQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgIENjICAgICAgICAgICAgICAgICAgID0+ICdDdXN0b21lciBCIDxjdXN0b21lci1iQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgIFJlcGx5VG8gICAgICAgICAgICAgID0+ICdDdXN0b21lciBCIDxjdXN0b21lci1iQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdzb21lIHNob3J0IGRlc2NyaXB0aW9uJywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQgUGVybCBtb2R1bGVzIHByb3ZpZGUgYSByYW5nZSBvZicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAiQXJ0aWNsZSBJRCAkQXJ0aWNsZUlEIGlzIGNyZWF0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgU2VuZCBzdXJ2ZXkgcmVxdWVzdC4KICAgICAgICBteSAkUmVxdWVzdCA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlcXVlc3QsCiAgICAgICAgICAgICJTdXJ2ZXkgcmVxdWVzdCBpcyBzZW50IiwKICAgICAgICApOwoKICAgICAgICAjIEdldCBwdWJsaWMgc3VydmV5IGtleSBmcm9tIHRlc3Qgc3VydmV5IHJlcXVlc3QuCiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgcHVibGljX3N1cnZleV9rZXkgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXk7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIE5hdmlnYXRlIHRvIFB1YmxpY1N1cnZleSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5LgogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNTdXJ2ZXk7UHVibGljU3VydmV5S2V5PSRQdWJsaWNTdXJ2ZXlLZXkiKTsKCiAgICAgICAgIyBHZXQgdGVzdCBkYXRhLgogICAgICAgIG15IEBUZXN0ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnVGlja2V0IE51bWJlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRTdXJ2ZXJ5SW50cm9kdWN0aW9uLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVlc3Rpb24nLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gW0BRdWVzdGlvbk5hbWVzXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ0Fuc3dlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBbQEFuc3dlck5hbWVzXSwKICAgICAgICAgICAgfSwKCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayB0ZXN0IHN1cnZleSB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRDaGVja1ZhbHVlIChAVGVzdCkgewogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJENoZWNrVmFsdWUtPntWYWx1ZX0gKSApIHsKICAgICAgICAgICAgICAgIGZvciAoIEB7ICRDaGVja1ZhbHVlLT57VmFsdWV9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkXyApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICIkQ2hlY2tWYWx1ZS0+e05hbWV9ICRfIGlzIGZvdW5kIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRDaGVja1ZhbHVlLT57VmFsdWV9ICkgPiAtMSwKICAgICAgICAgICAgICAgICAgICAiJENoZWNrVmFsdWUtPntOYW1lfSAkQ2hlY2tWYWx1ZS0+e1ZhbHVlfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIEdldCB2b3RlIGRhdGEuCiAgICAgICAgbXkgQFZvdGVEYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICA9PiAiMSRRdWVzdGlvbklEc1swXVllcyIsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnWWVzJwogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICA9PiAiMiRRdWVzdGlvbklEc1sxXSRBbnN3ZXJJRHNbMF0iLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ1JhZGlvT25lJwogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICA9PiAiMyRBbnN3ZXJJRHNbMl0iLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gIkNoZWNrQm94T25lIgogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBJRCAgICAgPT4gIiRRdWVzdGlvbklEc1szXSIsCiAgICAgICAgICAgICAgICBBbnN3ZXIgPT4gJ1NlbGVuaXVtIFN1cnZleSBBbnN3ZXInLAogICAgICAgICAgICAgICAgQ2hlY2sgID0+ICdTZWxlbml1bSBTdXJ2ZXkgQW5zd2VyJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgPT4gIjUkUXVlc3Rpb25JRHNbNF0kQW5zd2VySURzWzRdIiwKICAgICAgICAgICAgICAgIENoZWNrID0+ICdOUFNPbmUnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgRmlsbCBpbiBzdXJ2ZXkgcXVlc3Rpb25zLgogICAgICAgIGZvciBteSAkU3VydmV5Vm90ZSAoQFZvdGVEYXRhKSB7CiAgICAgICAgICAgIGlmICggJFN1cnZleVZvdGUtPntBbnN3ZXJ9ICkgewogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjUmljaFRleHQkU3VydmV5Vm90ZS0+e0lEfSIsICdjc3MnICktPnNlbmRfa2V5cyggJFN1cnZleVZvdGUtPntBbnN3ZXJ9ICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQGlkPSdQdWJsaWNTdXJ2ZXlWb3RlJFN1cnZleVZvdGUtPntJRH0nXSIpLT5jbGljaygpOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICAgICAgICAgIEphdmFTY3JpcHQgPT4KICAgICAgICAgICAgICAgICAgICAgICAgInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjUHVibGljU3VydmV5Vm90ZSRTdXJ2ZXlWb3RlLT57SUR9OmNoZWNrZWQnKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFN1Ym1pdCB2b3RlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdGaW5pc2gnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgcG9zdCB2b3RlIG1lc3NhZ2VzLgogICAgICAgIG15ICRQb3N0Vm90ZSA9IFsgIlN1cnZleSBJbmZvcm1hdGlvbiIsICJUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suIiwgIlRoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuIiBdOwogICAgICAgIGZvciBteSAkUG9zdFZvdGVNZXNzYWdlICggQHskUG9zdFZvdGV9ICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkUG9zdFZvdGVNZXNzYWdlICkgPiAtMSwKICAgICAgICAgICAgICAgICInJFBvc3RWb3RlTWVzc2FnZScgbWVzc2FnZSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gQWdlbnRTdXJ2ZXlab29tIG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkuCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1cnZleUlEPSRTdXJ2ZXlJRCIpOwoKICAgICAgICAjIENsaWNrIG9uICdTdGF0cyBEZXRhaWxzJyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNZW51MDMwLVN0YXRzRGV0YWlscyIsICdjc3MnICktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyBXYWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIuU2VlRGV0YWlscyIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBDbGljayB0byBzZWUgZGV0YWlscyBvZiBzdGF0cy4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkUmVmcmVzaCgpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLlNlZURldGFpbHMiLCAnY3NzJyApLT5jbGljaygpOwogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAicmV0dXJuIFwkKCcuVGFibGVMaWtlJykubGVuZ3RoIiApOwoKICAgICAgICAjIFZlcmlmeSB2b3RlIGRldGFpbHMuCiAgICAgICAgZm9yIG15ICRWb3RlRGV0YWlscyAoQFZvdGVEYXRhKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRWb3RlRGV0YWlscy0+e0NoZWNrfSApID4gLTEsCiAgICAgICAgICAgICAgICAiVm90ZSAkVm90ZURldGFpbHMtPntDaGVja30gaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgY2xlYW4tdXAgZGF0YS4KICAgICAgICBteSBAQ2xlYW5EYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVldWVzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcXVldWUnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3N1cnZleV9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdBbnN3ZXJzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfYW5zd2VyJywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdpZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiBbQEFuc3dlcklEc10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdRdWVzdGlvbnMnLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV9xdWVzdGlvbicsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1JlcXVlc3RzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcmVxdWVzdCcsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1ZvdGVzJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfdm90ZScsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gW0BRdWVzdGlvbklEc10sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdTdXJ2ZXknLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleScsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIG15ICRTdWNjZXNzOwoKICAgICAgICAjIERlbGV0ZSB0ZXN0IGRhdGEgZnJvbSBEQi4KICAgICAgICBmb3IgbXkgJERlbGV0ZSAoQENsZWFuRGF0YSkgewogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERlbGV0ZS0+e0lEfSApICkgewoKICAgICAgICAgICAgICAgIG15ICRJRHMgICAgICA9IGpvaW4gJywgJywgQHsgJERlbGV0ZS0+e0lEfSB9OwogICAgICAgICAgICAgICAgbXkgJFNRTFdoZXJlID0gIldIRVJFICREZWxldGUtPntTUUxJRH0gSU4gKCAkSURzICkiOwoKICAgICAgICAgICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgICAgICBTUUwgPT4gIkRFTEVURSBGUk9NICREZWxldGUtPntUYWJsZX0gJFNRTFdoZXJlIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICAgICAiJERlbGV0ZS0+e05hbWV9IGZvciAkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSAkRGVsZXRlLT57VGFibGV9IFdIRVJFICREZWxldGUtPntTUUxJRH0gPSA/IiwKICAgICAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCREZWxldGUtPntJRH0gXSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgICAgICAgICAiJERlbGV0ZS0+e05hbWV9IGZvciAkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSB0ZXN0IHRpY2tldC4KICAgICAgICAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgojIyBubyBjcml0aWMgKE1vZHVsZXM6OlJlcXVpcmVFeHBsaWNpdFBhY2thZ2UpCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyBxdygkU2VsZik7Cgp1c2UgRGF0YTo6RHVtcGVyOwoKJEtlcm5lbDo6T00tPk9iamVjdFBhcmFtQWRkKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyA9PiB7CiAgICAgICAgUmVzdG9yZURhdGFiYXNlID0+IDEsCiAgICB9LAopOwpteSAkSGVscGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiMgQ3JlYXRlIGxvY2FsIGNvbmZpZyBvYmplY3QuCm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBTZXQgc2VuZCBwZXJpb2QgdG8gYWx3YXlzIHNlbmQgc3VydmV5LgokSGVscGVyT2JqZWN0LT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgS2V5ICAgPT4gJ1N1cnZleTo6U2VuZFBlcmlvZCcsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBEaXNhYmxlIGVtYWlsIGNoZWNrLgokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBTZXQgc2VuZCBwZXJpb2QgdG8gc2VuZCBpbW1lZGlhdGVseSBhZnRlciB0aWNrZXQgY2xvc2UuCiRDb25maWdPYmplY3QtPlNldCgKICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZScsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBGcmVlemUgVGltZS4KJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lU2V0KAogICAgJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICBPYmplY3RQYXJhbXMgPT4gewogICAgICAgICAgICBTdHJpbmcgPT4gJzIwMTgtMDYtMjAgMTI6MDA6MDAnLAogICAgICAgIH0sCiAgICApLT5Ub0Vwb2NoKCkKKTsKCm15ICRSYW5kb21JRCA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbUlEKCk7CgojIENyZWF0aW5nIFF1ZXVlLgpteSAkUXVldWVSYW5kID0gIlNvbWVRdWV1ZSRSYW5kb21JRCAiOwpteSAkUXVldWVJRCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPlF1ZXVlQWRkKAogICAgTmFtZSAgICAgICAgICAgID0+ICRRdWV1ZVJhbmQsCiAgICBWYWxpZElEICAgICAgICAgPT4gMSwKICAgIEdyb3VwSUQgICAgICAgICA9PiAxLAogICAgU3lzdGVtQWRkcmVzc0lEID0+IDEsCiAgICBTYWx1dGF0aW9uSUQgICAgPT4gMSwKICAgIFNpZ25hdHVyZUlEICAgICA9PiAxLAogICAgVXNlcklEICAgICAgICAgID0+IDEsCiAgICBDb21tZW50ICAgICAgICAgPT4gJ1NvbWUgQ29tbWVudCcsCik7CiRTZWxmLT5UcnVlKAogICAgJFF1ZXVlSUQsCiAgICAiUXVldWVBZGQoKSAtICRRdWV1ZVJhbmQsICRRdWV1ZUlEIiwKKTsKCiMgU2V0dXAgc3VydmV5LgpteSAkU3VydmV5VGl0bGUgPSAiQSBUaXRsZSRSYW5kb21JRCAiOwpteSAlU3VydmV5RGF0YSAgPSAoCiAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJ1RoZSBpbnRyb2R1Y3Rpb24gb2YgdGhlIHN1cnZleScsCiAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICdUaGUgaW50ZXJuYWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1cnZleScsCiAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdxdWFsaXR5QHVuaXR0ZXN0LmNvbScsCiAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdIZWxwIHVzIHdpdGggeW91ciBmZWVkYmFjayEnLAogICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAnRGVhciBjdXN0b21lci4uLicsCiAgICBRdWV1ZXMgICAgICAgICAgICAgID0+IFskUXVldWVJRF0sCik7CgojIEdldCBzdXJ2ZXkgb2JqZWN0LgpteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKIyBDcmVhdGUgc3VydmV5LgpteSAkU3VydmV5SUQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICBVc2VySUQgPT4gMSwKICAgICVTdXJ2ZXlEYXRhLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdXJ2ZXlJRCwKICAgICJTdXJ2ZXlBZGQoKSIsCik7CgojIEFkZCBxdWVzdGlvbiB0byBzdXJ2ZXkuCm15ICRRdWVzdGlvbkFkZCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQWRkKAogICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgIFN1cnZleUlEICAgICAgID0+ICRTdXJ2ZXlJRCwKICAgIFF1ZXN0aW9uICAgICAgID0+ICdUaGUgUXVlc3Rpb24nLAogICAgQW5zd2VyUmVxdWlyZWQgPT4gMCwKICAgIFR5cGUgICAgICAgICAgID0+ICdUZXh0YXJlYScsCik7CgojIFNldHVwIHN1cnZleSB0byBNYXN0ZXIuCm15ICRTdGF0dXNTZXQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTdGF0dXNTZXQoCiAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInLAopOwokU2VsZi0+SXMoCiAgICAkU3RhdHVzU2V0LAogICAgJ1N0YXR1c1NldCcsCiAgICAiU3VydmV5U3RhdHVzU2V0KCkiLAopOwoKIyBHZXQgbGlzdCBvZiBxdWVzdGlvbnMuCm15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAopOwoKIyBHZXQgY3JlYXRlZCBzdXJ2ZXkuCm15ICVTdXJ2ZXlHZXQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCik7CgojIEdlbmVyYXRlIER5bmFtaWMgbGlzdCB0ZXN0IHN0YXRpc3RpYy4KbXkgJFN0YXRzT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdGF0cycpOwpteSAkU3VydmV5U3RhdElEID0gJFN0YXRzT2JqZWN0LT5TdGF0c0FkZCgKICAgIFVzZXJJRCA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdXJ2ZXlTdGF0SUQsCiAgICAnU3RhdHNBZGQoKScsCik7CgojIENyZWF0aW5nIHRpY2tldC4KbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJERCT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVGl0bGUgICAgICAgID0+ICJTb21lIFRpY2tldCBUaXRsZSRSYW5kb21JRCIsCiAgICBRdWV1ZUlEICAgICAgPT4gJFF1ZXVlSUQsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgIEN1c3RvbWVySUQgICA9PiAnMTIzNDY1JywKICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkVGlja2V0SUQsCiAgICAiVGlja2V0Q3JlYXRlKCkgZm9yIFRpY2tldElEICRUaWNrZXRJRCIsCik7CgpteSAkQXJ0aWNsZU9iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKTsKbXkgJEFydGljbGVJbnRlcm5hbEJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoCiAgICBDaGFubmVsTmFtZSA9PiAnUGhvbmUnLAopOwoKbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIEFnZW50IDxhZ2VudEBleGFtcGxlLmNvbT4nLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ3NvbWUgc2hvcnQgZGVzY3JpcHRpb24nLAogICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ0FkZE5vdGUnLAogICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRBcnRpY2xlSUQsCiAgICAiQXJ0aWNsZUNyZWF0ZSgpIGZvciBBcnRpY2xlSUQgJEFydGljbGVJRCIsCik7CgojIFNldCB0aWNrZXQgc3RhdGUgdG8gY2xvc2UuCm15ICRTdWNjZXNzID0gJFRpY2tldE9iamVjdC0+VGlja2V0U3RhdGVTZXQoCiAgICBTdGF0ZSAgICA9PiAnY2xvc2VkIHN1Y2Nlc3NmdWwnLAogICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgVXNlcklEICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJUaWNrZXQgaXMgY2xvc2VkIHN1Y2Nlc3NmdWxseS4iLAopOwoKIyBTZW5kIHN1cnZleSByZXF1ZXN0LgokU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgVGlja2V0SUQgPT4gJFRpY2tldElELAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlJlcXVlc3QgaXMgc2VudCBzdWNjZXNzZnVsbHkuIiwKKTsKCiMgU2V0IHN1cnZleSBwdWJsaWMgYW5zd2VyLgokREJPYmplY3QtPlByZXBhcmUoCiAgICBTUUwgPT4gJwogICAgICAgIFNFTEVDVCBwdWJsaWNfc3VydmV5X2tleQogICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICBXSEVSRSB0aWNrZXRfaWQgPSA/JywKICAgIEJpbmQgID0+IFsgXCRUaWNrZXRJRCBdLAogICAgTGltaXQgPT4gMSwKKTsKCm15ICRQdWJsaWNTdXJ2ZXlLZXk7CndoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgJFB1YmxpY1N1cnZleUtleSA9ICRSb3dbMF07Cn0KCiRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICBRdWVzdGlvbklEICAgICAgPT4gJExpc3RbMF17UXVlc3Rpb25JRH0sCiAgICBWb3RlVmFsdWUgICAgICAgPT4gJ1NvbWUgYW5zd2VyJywKKTsKCiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiUHVibGljIGFuc3dlciBpcyBzZXQgc3VjY2Vzc2Z1bGx5LiIsCik7CgojIFVwZGF0ZSBjcmVhdGVkIHN1cnZleSBzdGF0LgpteSAkVXBkYXRlU3VjY2VzcyA9ICRTdGF0c09iamVjdC0+U3RhdHNVcGRhdGUoCiAgICBTdGF0SUQgPT4gJFN1cnZleVN0YXRJRCwKICAgIEhhc2ggICA9PiB7CiAgICAgICAgVGl0bGUgICAgICAgID0+ICJUaXRsZSBmb3IgcmVzdWx0IHRlc3RzJFJhbmRvbUlEIiwKICAgICAgICBEZXNjcmlwdGlvbiAgPT4gJ3NvbWUgRGVzY3JpcHRpb24nLAogICAgICAgIFRpbWVab25lICAgICA9PiAnVVRDJywKICAgICAgICBUaW1lU3RhbXAgICAgPT4gJzIwMTgtMDYtMjAgMTI6MDA6MDAnLAogICAgICAgIE9iamVjdCAgICAgICA9PiAnU3VydmV5TGlzdCcsCiAgICAgICAgT2JqZWN0TmFtZSAgID0+ICdTdXJ2ZXlMaXN0JywKICAgICAgICBGb3JtYXQgICAgICAgPT4gJ0NTVicsCiAgICAgICAgT2JqZWN0TW9kdWxlID0+ICdLZXJuZWw6OlN5c3RlbTo6U3RhdHM6OkR5bmFtaWM6OlN1cnZleUxpc3QnLAogICAgICAgIFN0YXRUeXBlICAgICA9PiAnZHluYW1pYycsCiAgICAgICAgQ2FjaGUgICAgICAgID0+IDEsCiAgICAgICAgVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgUGVybWlzc2lvbiAgID0+IFsKICAgICAgICAgICAgJzMnCiAgICAgICAgXSwKICAgICAgICBVc2VBc1h2YWx1ZSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICAgID0+ICdJbmRpdmlkdWFsS2V5JywKICAgICAgICAgICAgICAgIEJsb2NrICAgICAgICAgID0+ICdNdWx0aVNlbGVjdEZpZWxkJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBFbGVtZW50ICAgICAgICA9PiAnU3VydmV5QXR0cmlidXRlcycsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnQXR0cmlidXRlcyB0byBiZSBwcmludGVkJywKICAgICAgICAgICAgICAgIFNvcnRJbmRpdmlkdWFsID0+IFsKICAgICAgICAgICAgICAgICAgICAnQ3JlYXRlZCcsCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICAgICAgVmFsdWVzID0+IHsKCiAgICAgICAgICAgICAgICAgICAgQ3JlYXRlZCA9PiAnQ3JlYXRlIFRpbWUnLAoKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgICA9PiAxLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZXMgPT4gWwogICAgICAgICAgICAgICAgICAgICdDcmVhdGVkJywKICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgfQogICAgICAgIF0sCiAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdTb3J0IHNlcXVlbmNlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgID0+IDEsCiAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlcyA9PiBbCiAgICAgICAgICAgICAgICAgICAgJ1VwJwogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIEJsb2NrICAgID0+ICdTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgICAgICBTZWxlY3RlZCA9PiAxLAogICAgICAgICAgICAgICAgRWxlbWVudCAgPT4gJ1NvcnRTZXF1ZW5jZScsCiAgICAgICAgICAgICAgICBWYWx1ZXMgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJ1VwJyA9PiAnYXNjZW5kaW5nJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVmFsdWVzID0+IHsKICAgICAgICAgICAgICAgICAgICAkU3VydmV5SUQgPT4gJFN1cnZleVRpdGxlLAoKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBTZWxlY3RlZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZXMgPT4gWwogICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlJRAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+IDEsCiAgICAgICAgICAgICAgICBCbG9jayAgICAgICA9PiAnU2VsZWN0RmllbGQnLAogICAgICAgICAgICAgICAgRWxlbWVudCAgICAgPT4gJ1N1cnZleUlEcycsCiAgICAgICAgICAgICAgICBGaXhlZCAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1N1cnZleSBMaXN0JwogICAgICAgICAgICB9CiAgICAgICAgXSwKICAgIH0sCiAgICBVc2VySUQgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkVXBkYXRlU3VjY2VzcywKICAgICdTdGF0c1VwZGF0ZSgpJywKKTsKCiMgU2V0dXAgb2YgdGVzdCBjYXNlcy4KbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIFRpbWVab25lICA9PiAnVVRDJywKICAgICAgICBUaW1lU3RhbXAgPT4gJzIwMTgtMDYtMjAgMTI6MDA6MDAgKFVUQyknLAogICAgfSwKICAgIHsKICAgICAgICBUaW1lWm9uZSAgPT4gJ0V1cm9wZS9CZWxncmFkZScsCiAgICAgICAgVGltZVN0YW1wID0+ICcyMDE4LTA2LTIwIDE0OjAwOjAwIChFdXJvcGUvQmVsZ3JhZGUpJywKICAgIH0sCiAgICB7CiAgICAgICAgVGltZVpvbmUgID0+ICdBbWVyaWNhL05ld19Zb3JrJywKICAgICAgICBUaW1lU3RhbXAgPT4gJzIwMTgtMDYtMjAgMDg6MDA6MDAgKEFtZXJpY2EvTmV3X1lvcmspJywKICAgIH0sCik7CgojIFNldHVwIGR5bmFtaWMgc3RhdGlzdGljIHdpdGggU3VydmV5TGlzdCBvYmplY3QuCmZvciBteSAkVGltZSAoQFRlc3RzKSB7CiAgICBteSAkVXBkYXRlU3VjY2VzcyA9ICRTdGF0c09iamVjdC0+U3RhdHNVcGRhdGUoCiAgICAgICAgU3RhdElEID0+ICRTdXJ2ZXlTdGF0SUQsCiAgICAgICAgSGFzaCAgID0+IHsKICAgICAgICAgICAgVGltZVpvbmUgPT4gJFRpbWUtPntUaW1lWm9uZX0sCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CiAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAkVXBkYXRlU3VjY2VzcywKICAgICAgICAnU3RhdHNVcGRhdGUoKScsCiAgICApOwoKICAgICMgR2V0IGFsbCB0aGUgc3RhdCBkYXRhLgogICAgbXkgJFN0YXQgPSAkU3RhdHNPYmplY3QtPlN0YXRzR2V0KAogICAgICAgIFN0YXRJRCA9PiAkU3VydmV5U3RhdElELAogICAgKTsKCiAgICBteSBAUmVzdWx0RGF0YSA9ICRTdGF0c09iamVjdC0+U3RhdHNSdW4oCiAgICAgICAgU3RhdElEICAgPT4gJFN1cnZleVN0YXRJRCwKICAgICAgICBHZXRQYXJhbSA9PiAkU3RhdCwKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgKTsKCiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlc3VsdERhdGFbMF1bMl1bMF0sCiAgICAgICAgJFRpbWUtPntUaW1lU3RhbXB9LAogICAgICAgICJUaW1lIHpvbmUgaXMgc2V0IGNvcnJlY3RseSB0bzogJFRpbWUtPntUaW1lU3RhbXB9IiwKICAgICk7Cn0KCjE7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyBpbiBBZ2VudFN1cnZleUFkZCBhbmQgQWdlbnRTdXJ2ZXlFZGl0LgogKi8KU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICB2YXIgQWN0aW9uID0gJCgnaW5wdXRbbmFtZT0iQWN0aW9uIl0nKS52YWwoKTsKICAgIHZhciBEcm9wZG93bklEOwogICAgdmFyIEVycm9yc09iajsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgSW5pdGlhbGl6ZSBidWlsZGluZyB0aGUgc2VuZCBjb25kaXRpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciAkRHJvcGRvd24gPSAkKCcjQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycpLAogICAgICAgICAgICBDdXN0b21lclVzZXJDb25kaXRpb25zID0gQ29yZS5Db25maWcuR2V0KCJKU0RhdGEuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpLAogICAgICAgICAgICBFcnJvcnMgPSBDb3JlLkNvbmZpZy5HZXQoIkpTRGF0YS5DdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnMiKTsKCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCREcm9wZG93bikpIHsKCiAgICAgICAgICAgIERyb3Bkb3duSUQgPSAkRHJvcGRvd24ucHJvcCgnaWQnKTsKCiAgICAgICAgICAgICREcm9wZG93bi5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIEZpZWxkTmFtZSA9ICREcm9wZG93bi52YWwoKTsKCiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IGZpZWxkIGZvciBGaWVsZE5hbWUuCiAgICAgICAgICAgICAgICBUYXJnZXROUy5BZGRDb25kaXRpb24oRmllbGROYW1lKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnc3Bhbi5SZW1vdmVCdXR0b25DdXN0b21lckZpZWxkJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gR2V0IHdob2xlICJjb250YWluZXIiIGFuZCByZW1vdmUgaXQuCiAgICAgICAgICAgICAgICB2YXIgJEZpZWxkID0gJCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKTsKCiAgICAgICAgICAgICAgICBUYXJnZXROUy5SZW1vdmVDb25kaXRpb24oJEZpZWxkKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnc3Bhbi5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbicsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAvLyBHZXQgZmlyc3QgY29uZGl0aW9uIHRvIGNsb25lIGl0IChlbXB0eSkuCiAgICAgICAgICAgICAgICB2YXIgJEZpZWxkID0gJCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5jaGlsZHJlbignbGknKS5maXJzdCgpOwogICAgICAgICAgICAgICAgdmFyIEZpZWxkTmFtZSA9ICQodGhpcykucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucHJvcCgnaWQnKTsKICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZENvbmRpdGlvbkxpbmUoJEZpZWxkKTsKICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlc2V0TGlzdEl0ZW1JRHMoRmllbGROYW1lKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnc3Bhbi5SZW1vdmVCdXR0b25DdXN0b21lckNvbmRpdGlvbicsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICB2YXIgJEZpZWxkID0gJCh0aGlzKS5wYXJlbnQoKTsKICAgICAgICAgICAgICAgIHZhciBGaWVsZE5hbWUgPSAkKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnByb3AoJ2lkJyk7CiAgICAgICAgICAgICAgICBUYXJnZXROUy5SZW1vdmVDb25kaXRpb25MaW5lKCRGaWVsZCk7CiAgICAgICAgICAgICAgICBUYXJnZXROUy5SZXNldExpc3RJdGVtSURzKEZpZWxkTmFtZSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ2lucHV0LkN1c3RvbWVyVXNlckNvbmRpdGlvbnNDaGVja2JveCcsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgJHRoaXMucHJldignaW5wdXRbdHlwZT0iaGlkZGVuIl0nKS52YWwoKCgkdGhpcy5wcm9wKCdjaGVja2VkJykpID8gMSA6IDApKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucykgewoKICAgICAgICAgICAgICAgIGlmIChFcnJvcnMpIHsKCiAgICAgICAgICAgICAgICAgICAgRXJyb3JzT2JqID0gRXJyb3JzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlc3RvcmVDb25kaXRpb25zKEN1c3RvbWVyVXNlckNvbmRpdGlvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIEFkZENvbmRpdGlvbgogICAgICogQG1lbWJlcm9mIFN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBGaWVsZE5hbWUgLSBUaGUgZmllbGQgdGhhdCBzaG91bGQgYmUgYWRkZWQKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBDb25kaXRpb25zIC0gVGhlIGNvbmRpdGlvbnMgZm9yIHRoZSBmaWVsZCB3aGljaCBzaG91bGQgYmUgaW5zZXJ0ZWQgKGZvciBlZGl0KQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEFkZHMgYSBuZXcgZmllbGQgdG8gdGhlIGNvbmRpdGlvbnMgYW5kIGluc2VydHMgc2F2ZWQgY29uZGl0aW9ucy4KICAgICAqLwogICAgVGFyZ2V0TlMuQWRkQ29uZGl0aW9uID0gZnVuY3Rpb24gKEZpZWxkTmFtZSwgQ29uZGl0aW9ucykgewoKICAgICAgICB2YXIgJENsb25lLCAkQ2hlY2tib3gsICRMYWJlbCwgJElucHV0OwogICAgICAgIHZhciBOZXdOYW1lLCBOZXdDaGVja2JveElELCBOZXdJbnB1dElEOwogICAgICAgIHZhciBEYXRhOwogICAgICAgIHZhciBTZWxlY3RlZFZhbHVlczsKCiAgICAgICAgaWYgKCFGaWVsZE5hbWUpIHJldHVybjsKCiAgICAgICAgJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnKS52YWwoJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnKS52YWwoKSArICcsJyArIEZpZWxkTmFtZSk7CgogICAgICAgICRDbG9uZSA9ICQoJyNUZW1wbGF0ZUxldmVsMScpLmNsb25lKCk7CgogICAgICAgIC8vIENoYW5nZSBuZWVkZWQgdGV4dHMsIElEcywgLi4uCiAgICAgICAgJENsb25lLmZpbmQoJ3N0cm9uZycpLnRleHQoRmllbGROYW1lKTsKCiAgICAgICAgJENoZWNrYm94ID0gJENsb25lLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKTsKICAgICAgICAkTGFiZWwgICAgPSAkQ2xvbmUuZmluZCgnbGFiZWwnKTsKICAgICAgICAkSW5wdXQgICAgPSAkQ2xvbmUuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdJyk7CgogICAgICAgIE5ld05hbWUgICAgICAgPSBGaWVsZE5hbWU7CiAgICAgICAgTmV3Q2hlY2tib3hJRCA9IEZpZWxkTmFtZSArICdDaGVja2JveDEnOwogICAgICAgIE5ld0lucHV0SUQgICAgPSBGaWVsZE5hbWUgKyAnSW5wdXQxJzsKCiAgICAgICAgLy8gVGhlIGxhYmVsIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrL3VuY2hlY2sgdGhlIGNoZWNrYm94LgogICAgICAgICRDaGVja2JveAogICAgICAgICAgICAucHJvcCgnaWQnLCBOZXdDaGVja2JveElEKQogICAgICAgICAgICAucHJldignaW5wdXRbdHlwZT0iaGlkZGVuIl0nKS5wcm9wKCduYW1lJywgTmV3TmFtZSArICdDaGVja2JveCcpOwogICAgICAgICRMYWJlbC5wcm9wKCdmb3InLCBOZXdDaGVja2JveElEKTsKCiAgICAgICAgJElucHV0CiAgICAgICAgICAgIC5wcm9wKCduYW1lJywgTmV3TmFtZSkKICAgICAgICAgICAgLnByb3AoJ2lkJywgTmV3SW5wdXRJRCk7CgogICAgICAgICRDbG9uZQogICAgICAgICAgICAucHJvcCgnaWQnLCBGaWVsZE5hbWUpCiAgICAgICAgICAgIC5maW5kKCdkaXYuVG9vbHRpcEVycm9yTWVzc2FnZScpLnByb3AoJ2lkJywgTmV3SW5wdXRJRCArICdTZXJ2ZXJFcnJvcicpLmVuZCgpCiAgICAgICAgICAgIC5pbnNlcnRCZWZvcmUoJyNUZW1wbGF0ZUxldmVsMS5GaWVsZC5IaWRkZW4nKTsKCiAgICAgICAgLy8gUGVyZm9ybSBBSkFYIGNhbGwgdG8gY2hlY2sgd2hldGhlciB0aGUgZmllbGQgaXMgYW4gaW5wdXQgb3Igc2VsZWN0IGZpZWxkLgogICAgICAgIERhdGEgPSB7CiAgICAgICAgICAgIEFjdGlvbjogQWN0aW9uLAogICAgICAgICAgICBTdWJhY3Rpb246ICdBSkFYUmVxdWVzdCcsCiAgICAgICAgICAgIEZpZWxkTmFtZTogRmllbGROYW1lCiAgICAgICAgfTsKCiAgICAgICAgLy8gQWRkIHZhbHVlcyBmcm9tIGNvbmRpdGlvbnMgYXMgc2VsZWN0ZWQgdmFsdWVzIGZvciBzZWxlY3Rpb24uCiAgICAgICAgaWYgKHR5cGVvZiBDb25kaXRpb25zICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBTZWxlY3RlZFZhbHVlcyA9IFtdOwogICAgICAgICAgICBPYmplY3Qua2V5cyhDb25kaXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChGaWVsZCkgewoKICAgICAgICAgICAgICAgIENvbmRpdGlvbnNbRmllbGRdLmZvckVhY2goZnVuY3Rpb24gKENvbmRpdGlvbikgewoKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIERhdGEuQ2hlY2tib3hWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YS5DaGVja2JveFZhbHVlID0gQ29uZGl0aW9uLk5lZ2F0aW9uOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlcy5wdXNoKENvbmRpdGlvbi5SZWdFeHBWYWx1ZSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBEYXRhLlNlbGVjdGVkVmFsdWVzID0gU2VsZWN0ZWRWYWx1ZXM7CiAgICAgICAgfQoKICAgICAgICAvLyBDYWxsIHRoZSBBSkFYIGZ1bmN0aW9uCiAgICAgICAgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLCBEYXRhLCBmdW5jdGlvbiAoUmVzcG9uc2UpIHsKCiAgICAgICAgICAgIGlmIChSZXNwb25zZS5TdWNjZXNzKSB7CgogICAgICAgICAgICAgICAgLy8gSW5zZXJ0IGFuZCBtb2Rlcm5pemUgZmllbGQuCiAgICAgICAgICAgICAgICAkKFJlc3BvbnNlLlNlbGVjdEZpZWxkKQogICAgICAgICAgICAgICAgICAgIC5wcm9wKCduYW1lJywgTmV3TmFtZSkKICAgICAgICAgICAgICAgICAgICAucHJvcCgnaWQnLCBOZXdJbnB1dElEKQogICAgICAgICAgICAgICAgICAgIC5pbnNlcnRBZnRlcigkQ2hlY2tib3gpOwoKICAgICAgICAgICAgICAgICRDaGVja2JveAogICAgICAgICAgICAgICAgICAgIC5wcm9wKCdjaGVja2VkJywgRGF0YS5DaGVja2JveFZhbHVlKQogICAgICAgICAgICAgICAgICAgIC5wcmV2KCdpbnB1dFt0eXBlPSJoaWRkZW4iXScpLnZhbCgoKERhdGEuQ2hlY2tib3hWYWx1ZSkgPyAxIDogMCkpOwoKICAgICAgICAgICAgICAgICRJbnB1dC5yZW1vdmUoKTsKCiAgICAgICAgICAgICAgICAkQ2xvbmUuZmluZCgnLkFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uJykuYWRkQ2xhc3MoJ0hpZGRlbicpLmVuZCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gQWRkIGEgbmV3IGxpbmUgZm9yIGVhY2ggY29uZGl0aW9uIChmb3IgaW5wdXQgZmllbGRzKS4KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQ29uZGl0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHsKCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoQ29uZGl0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAoRmllbGQpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbnNbRmllbGRdLmZvckVhY2goZnVuY3Rpb24gKENvbmRpdGlvbikgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkRmllbGQgPSAkKCcjJyArIEZpZWxkICsgJyB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaS5EYXRhSXRlbSB1bCBsaScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENvbmRpdGlvbi5DbG9uZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZCA9ICRGaWVsZC5maXJzdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkID0gJEZpZWxkLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXROUy5BZGRDb25kaXRpb25MaW5lKCRGaWVsZCwgQ29uZGl0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgY29ycmVjdCBJRHMgZm9yIHRoZSBlbnRpcmUgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlc2V0TGlzdEl0ZW1JRHMoRmllbGQpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkQ2xvbmUucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwoKICAgICAgICAgICAgaWYgKFJlc3BvbnNlLlN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJENsb25lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKEVycm9yc09iaiAmJiBFcnJvcnNPYmpbRmllbGROYW1lXSkgewoKICAgICAgICAgICAgICAgIFRhcmdldE5TLlNob3dFcnJvcnMoRmllbGROYW1lLCBFcnJvcnNPYmpbRmllbGROYW1lXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LCAnanNvbicpOwoKICAgICAgICAvLyBSZW1vdmUgRmllbGROYW1lIGZyb20gZHJvcGRvd24gdG8gcHJldmVudCBtdWx0aXBsZSBlbnRyaWVzLgogICAgICAgICQoJyMnICsgRHJvcGRvd25JRCkKICAgICAgICAgICAgLmZpbmQoIm9wdGlvblt2YWx1ZT0nIiArIEZpZWxkTmFtZSArICInXSIpLnJlbW92ZSgpLmVuZCgpCiAgICAgICAgICAgIC52YWwoJycpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIFJlbW92ZUNvbmRpdGlvbgogICAgICogQG1lbWJlcm9mIFN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRmllbGQgLSBUaGUgZmllbGQgdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFJlbW92ZXMgdGhlIGZpZWxkIGZyb20gdGhlIGNvbmRpdGlvbnMuCiAgICAgKi8KICAgIFRhcmdldE5TLlJlbW92ZUNvbmRpdGlvbiA9IGZ1bmN0aW9uICgkRmllbGQpIHsKCiAgICAgICAgdmFyIEZpZWxkTmFtZSA9ICRGaWVsZC5maW5kKCdzdHJvbmcnKS50ZXh0KCk7CiAgICAgICAgdmFyIEZpZWxkc1ZhbCA9ICQoJyNDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzJykudmFsKCk7CiAgICAgICAgRmllbGRzVmFsID0gRmllbGRzVmFsLnJlcGxhY2UoJywnICsgRmllbGROYW1lLCAnJyk7CiAgICAgICAgJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnKS52YWwoRmllbGRzVmFsKTsKCiAgICAgICAgLy8gQWRkIEZpZWxkTmFtZSB0byBkcm9wZG93bi4KICAgICAgICAkKCcjJyArIERyb3Bkb3duSUQpLmFwcGVuZCgKICAgICAgICAgICAgJCgnPG9wdGlvbj48L29wdGlvbj4nKS52YWwoRmllbGROYW1lKS5odG1sKEZpZWxkTmFtZSkKICAgICAgICApOwoKICAgICAgICAkRmllbGQucmVtb3ZlKCk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgQWRkQ29uZGl0aW9uTGluZQogICAgICogQG1lbWJlcm9mIFN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRmllbGQgLSBUaGUgZmllbGQgZm9yIHdoaWNoIGEgbGluZSBzaG91bGQgYmUgYWRkZWQKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBDb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHdoaWNoIHNob3VsZCBiZSBhZGRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEFkZHMgYSBuZXcgY29uZGl0aW9uIGxpbmUgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGQuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZENvbmRpdGlvbkxpbmUgPSBmdW5jdGlvbiAoJEZpZWxkLCBDb25kaXRpb24pIHsKCiAgICAgICAgdmFyICRDbG9uZTsKICAgICAgICB2YXIgQ2xvbmVGaWVsZCA9IHRydWU7CiAgICAgICAgdmFyIFRleHRWYWx1ZSA9ICcnOwogICAgICAgIHZhciBDaGVja2JveFZhbHVlID0gZmFsc2U7CgogICAgICAgIGlmICh0eXBlb2YgQ29uZGl0aW9uICE9PSAndW5kZWZpbmVkJykgewoKICAgICAgICAgICAgQ2xvbmVGaWVsZCA9IENvbmRpdGlvbi5DbG9uZTsKICAgICAgICAgICAgVGV4dFZhbHVlID0gQ29uZGl0aW9uLlJlZ0V4cFZhbHVlOwogICAgICAgICAgICBDaGVja2JveFZhbHVlID0gQ29uZGl0aW9uLk5lZ2F0aW9uOwogICAgICAgIH0KCiAgICAgICAgaWYgKENsb25lRmllbGQpIHsKICAgICAgICAgICAgJENsb25lID0gJEZpZWxkLmNsb25lKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ2xvbmUgPSAkRmllbGQ7CiAgICAgICAgfQoKICAgICAgICAvLyBDbGVhciB0aGUgY2xvbmVkIGZpZWxkcyAob3Igc2V0IHRoZSB2YWx1ZXMgZnJvbSB0aGUgZ2l2ZW4gY29uZGl0aW9uKS4KICAgICAgICAkQ2xvbmUKICAgICAgICAgICAgLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5wcm9wKCdjaGVja2VkJywgQ2hlY2tib3hWYWx1ZSkuZW5kKCkKICAgICAgICAgICAgLmZpbmQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdJykudmFsKChDaGVja2JveFZhbHVlID8gMSA6IDApKS5lbmQoKQogICAgICAgICAgICAuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdJykudmFsKFRleHRWYWx1ZSkuc2hvdygpLmVuZCgpOwoKICAgICAgICBpZiAoQ2xvbmVGaWVsZCkgewogICAgICAgICAgICAkQ2xvbmUuYXBwZW5kVG8oJEZpZWxkLnBhcmVudCgpKTsKICAgICAgICB9CgogICAgICAgIC8vIFRvZ2dsZSBidXR0b25zIHRvIGFkZC9yZW1vdmUgdGhlIGNvbmRpdGlvbi4KICAgICAgICBpZiAoJEZpZWxkLnBhcmVudCgpLmNoaWxkcmVuKCdsaScpLmxlbmd0aCAhPT0gMSkgewoKICAgICAgICAgICAgJENsb25lCiAgICAgICAgICAgICAgICAuZmluZCgnLlJlbW92ZUJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnLkFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpLmVuZCgpOwoKICAgICAgICAgICAgLy8gSGlkZSB0aGUgYnV0dG9uIHRvIGFkZCBhIGNvbmRpdGlvbiBvbiB0aGUgcHJldmlvdXMgZWxlbWVudC4KICAgICAgICAgICAgJENsb25lLnByZXYoKS5maW5kKCcuQWRkQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24nKS5hZGRDbGFzcygnSGlkZGVuJykuZW5kKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ2xvbmUKICAgICAgICAgICAgICAgIC5maW5kKCcuUmVtb3ZlQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24nKS5hZGRDbGFzcygnSGlkZGVuJykuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCcuQWRkQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24nKS5yZW1vdmVDbGFzcygnSGlkZGVuJykuZW5kKCk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIFJlbW92ZUNvbmRpdGlvbkxpbmUKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEZpZWxkIC0gVGhlIGZpZWxkIGZvciB3aGljaCB0aGUgbGluZSBzaG91bGQgYmUgcmVtb3ZlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFJlbW92ZXMgYSBuZXcgY29uZGl0aW9uIGxpbmUgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGQuCiAgICAgKi8KICAgIFRhcmdldE5TLlJlbW92ZUNvbmRpdGlvbkxpbmUgPSBmdW5jdGlvbiAoJEZpZWxkKSB7CgogICAgICAgIC8vIFNob3cgdGhlIGJ1dHRvbiBmb3IgYWRkaW5nIGEgY29uZGl0aW9uIG9uIHRoZSBwcmV2aW91cyBlbGVtZW50LgogICAgICAgIGlmICghJEZpZWxkLmZpbmQoJy5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbicpLmhhc0NsYXNzKCdIaWRkZW4nKSkgewogICAgICAgICAgICAkRmllbGQucHJldigpLmZpbmQoJy5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbicpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICB9CgogICAgICAgICRGaWVsZC5yZW1vdmUoKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBSZXNldExpc3RJdGVtSURzCiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IEZpZWxkTmFtZSAtIFRoZSBmaWVsZCBmb3Igd2hpY2ggdGhlIGxpc3RpdGVtcyBzaG91bGQgYmUgcmVzZXR0ZWQKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBSZXNldHMgdGhlIElEcyBvZiB0aGUgbGlzdGl0ZW1zLgogICAgICovCiAgICBUYXJnZXROUy5SZXNldExpc3RJdGVtSURzID0gZnVuY3Rpb24gKEZpZWxkTmFtZSkgewoKICAgICAgICB2YXIgJExpc3RJdGVtcyA9ICQoJyMnICsgRmllbGROYW1lICsgJyB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaS5EYXRhSXRlbSB1bCBsaScpCgogICAgICAgIC8vIFNldCBjb3JyZWN0IElEcyBmb3IgdGhlIGxpc3RpdGVtcy4KICAgICAgICB2YXIgaSA9IDE7CiAgICAgICAgJExpc3RJdGVtcy5lYWNoKGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CiAgICAgICAgICAgIHZhciBDaGVja2JveElEID0gRmllbGROYW1lICsgJ0NoZWNrYm94JyArIGk7CiAgICAgICAgICAgIHZhciBJbnB1dElEID0gRmllbGROYW1lICsgJ0lucHV0JyArIGk7CgogICAgICAgICAgICAkdGhpcwogICAgICAgICAgICAgICAgLmZpbmQoJ2xhYmVsJykucHJvcCgnZm9yJywgQ2hlY2tib3hJRCkuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykucHJvcCgnaWQnLCBDaGVja2JveElEKS5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0W3R5cGU9InRleHQiXSwgc2VsZWN0JykucHJvcCgnaWQnLCBJbnB1dElEKS5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2Rpdi5Ub29sdGlwRXJyb3JNZXNzYWdlJykucHJvcCgnaWQnLCBJbnB1dElEICsgJ1NlcnZlckVycm9yJykuZW5kKCk7CgogICAgICAgICAgICBpKys7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgUmVzdG9yZUNvbmRpdGlvbnMKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0FycmF5fSBDb25kaXRpb25zIC0gVGhlIGNvbmRpdGlvbnMgdG8gZGlzcGxheQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFJlc3RvcmVzIHRoZSBjb25kaXRpb25zIGluIGNhc2Ugb2YgYW4gZXJyb3Igb3IgdG8gZWRpdCB0aGVtLgogICAgICovCiAgICBUYXJnZXROUy5SZXN0b3JlQ29uZGl0aW9ucyA9IGZ1bmN0aW9uIChDb25kaXRpb25zKSB7CgogICAgICAgIE9iamVjdC5rZXlzKENvbmRpdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKEZpZWxkKSB7CgogICAgICAgICAgICB2YXIgQ29uZGl0aW9uc09iaiA9IHt9OwogICAgICAgICAgICBDb25kaXRpb25zT2JqW0ZpZWxkXSA9IFtdOwoKICAgICAgICAgICAgQ29uZGl0aW9uc1tGaWVsZF0uZm9yRWFjaChmdW5jdGlvbiAoQ29uZGl0aW9uLCBpZHgpIHsKCiAgICAgICAgICAgICAgICB2YXIgQ29uZGl0aW9uT2JqID0gewogICAgICAgICAgICAgICAgICAgIENsb25lOiAoKGlkeCA9PT0gMCkgPyBmYWxzZSA6IHRydWUpLAogICAgICAgICAgICAgICAgICAgIFJlZ0V4cFZhbHVlOiBDb25kaXRpb24uUmVnRXhwVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgTmVnYXRpb246IEJvb2xlYW4ocGFyc2VJbnQoQ29uZGl0aW9uLk5lZ2F0aW9uLCAxMCkpCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIENvbmRpdGlvbnNPYmpbRmllbGRdLnB1c2goQ29uZGl0aW9uT2JqKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBBZGQgYSBjb25kaXRpb24gY29udGFpbmVyIGZvciB0aGUgZmllbGQgYW5kIGluc2VydCB0aGUgZ2l2ZW4gY29uZGl0aW9ucy4KICAgICAgICAgICAgVGFyZ2V0TlMuQWRkQ29uZGl0aW9uKEZpZWxkLCBDb25kaXRpb25zT2JqKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBTaG93RXJyb3JzCiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IEZpZWxkIC0gVGhlIHNlbGVjdGVkIGZpZWxkIGZyb20gdGhlIGRyb3Bkb3duIHdoaWNoIGhhcyBlcnJvcnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBFcnJvcnMgLSBDb250YWlucyB0aGUgaW5kZXggb2YgdGhlIGZpZWxkcyB3aGljaCBhcmUgaW52YWxpZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIERpc3BsYXkgZXJyb3IgbWVzc2FnZXMuCiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dFcnJvcnMgPSBmdW5jdGlvbiAoRmllbGQsIEVycm9ycykgewoKICAgICAgICB2YXIgSXRlbTsKCiAgICAgICAgZm9yIChJdGVtIGluIEVycm9ycykgewoKICAgICAgICAgICAgaWYoIUVycm9ycy5oYXNPd25Qcm9wZXJ0eShJdGVtKSkgY29udGludWU7CgogICAgICAgICAgICAkKCcjJyArIEZpZWxkICsgJyB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaS5EYXRhSXRlbSB1bCBsaScpLmVxKEl0ZW0pCiAgICAgICAgICAgICAgICAuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdLCBzZWxlY3QnKS5hZGRDbGFzcygnU2VydmVyRXJyb3InKTsKICAgICAgICB9CgogICAgICAgIENvcmUuRm9ybS5WYWxpZGF0ZS5Jbml0KCk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMgfHwge30pKTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5RWRpdFF1ZXN0aW9ucy4KICovClN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0CiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXQgZWRpdCBzdXJ2ZXkgc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJy5RdWVzdGlvbkRlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICAgICAgaWYod2luZG93LmNvbmZpcm0oQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhIikpKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAkKHRoaXMpLmRhdGEoJ3F1ZXJ5LXN0cmluZycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BbnN3ZXJEZWxldGUnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAgICAgICAgIGlmKHdpbmRvdy5jb25maXJtKENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyIpKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJCh0aGlzKS5kYXRhKCdxdWVyeS1zdHJpbmcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucyB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBTdXJ2ZXkuQWdlbnQuU3VydmV5T3ZlcnZpZXcKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5T3ZlcnZpZXcuCiAqLwpTdXJ2ZXkuQWdlbnQuU3VydmV5T3ZlcnZpZXcgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuU3VydmV5T3ZlcnZpZXcKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXQgZWRpdCBzdXJ2ZXkgc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJyNTdXJ2ZXlTZWFyY2gnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lcicpLAogICAgICAgICAgICAgICAgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlNldHRpbmdzIiksICcyMCUnLCAnQ2VudGVyJywgdHJ1ZSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU3VibWl0IiksCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6ICdTdWJtaXQnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzczogJ1ByaW1hcnknCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwoKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gYmluZCB0aGUgQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyCiAgICAgICAgJCgnI1Nob3dDb250ZXh0U2V0dGluZ3NEaWFsb2cnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coJCgnI0NvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lcicpLCBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU2V0dGluZ3MiKSwgJzIwJScsICdDZW50ZXInLCB0cnVlLAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWw6IENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTdWJtaXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ1N1Ym1pdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnUHJpbWFyeScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIENvcmUuVUkuQWN0aW9uUm93LkluaXQoKTsKCiAgICAgICAgJCgnLk1hc3RlckFjdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBiaW5kIHRoZSBDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIKICAgICAgICAkKCcjU3VydmV5U2VhcmNoJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKCQoJyNTdXJ2ZXlPdmVydmlld1NldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksCiAgICAgICAgICAgICAgICBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU2V0dGluZ3MiKSwgJzIwJScsICdDZW50ZXInLCB0cnVlLAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWw6IENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTdWJtaXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ1N1Ym1pdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnUHJpbWFyeScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oU3VydmV5LkFnZW50LlN1cnZleU92ZXJ2aWV3IHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBTdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5U3RhdHMuCiAqLwpTdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXQgZWRpdCBzdXJ2ZXkgc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJ2EuTGlua1pvb21WaWV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuUG9wdXAuRmlyZVBvcHVwRXZlbnQoJ1VSTCcsIHsgVVJMOiAkKHRoaXMpLmF0dHIoJ2hyZWYnKX0pOwogICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5Qb3B1cC5DbG9zZSgpOwogICAgICAgIH0pOwoKICAgICAgICAkKCcjU2VsZWN0QWxsUmVxdWVzdHMnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBTdGF0dXMgPSAkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCgnOmNoZWNrYm94JykucHJvcCgnY2hlY2tlZCcsIFN0YXR1cyk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oU3VydmV5LkFnZW50LlN1cnZleVN0YXRzIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91Ci8vIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LlN1cnZleVpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5Wm9vbS4KICovClN1cnZleS5BZ2VudC5TdXJ2ZXlab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwICgkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ0FjdGlvbicpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNOZXdTdGF0dXMnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ2Zvcm0nKS5zdWJtaXQoKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBuYW1lIElmcmFtZUF1dG9IZWlnaHQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJElmcmFtZSAtIFRoZSBpZnJhbWUgd2hpY2ggc2hvdWxkIGJlIGF1dG8taGVpZ2h0ZWQKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBTZXQgaWZyYW1lIGhlaWdodCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHJlYWwgY29udGVudCBoZWlnaHQgYW5kIGRlZmF1bHQgY29uZmlnIHNldHRpbmcuCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewogICAgICAgIHZhciBOZXdIZWlnaHQ7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuaGVpZ2h0KCk7CiAgICAgICAgICAgIGlmICghTmV3SGVpZ2h0IHx8IGlzTmFOKE5ld0hlaWdodCkpIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnU3VydmV5LkhUTUxSaWNoVGV4dEhlaWdodERlZmF1bHQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiBDb3JlLkNvbmZpZy5HZXQoJ1N1cnZleS5IVE1MUmljaFRleHRIZWlnaHRNYXgnKSkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnU3VydmV5LkhUTUxSaWNoVGV4dEhlaWdodE1heCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShTdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbSB8fCB7fSkpOwo=
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIERlZmF1bHQgU2V0dGluZ3MKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKLyoqCiAqIEBzdWJzZWN0aW9uIFN1cnZleSBHcmFwaAogKi8KCmZpZWxkc2V0LlN1cnZleUdyYXBocyB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIG1hcmdpbi1ib3R0b206IDIwcHg7Cn0KCmZpZWxkc2V0LlN1cnZleUdyYXBocyAuUXVlc3Rpb24gewogICAgZGlzcGxheTogYmxvY2s7CiAgICBsaW5lLWhlaWdodDogMS41ZW07CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIHdpZHRoOiAyNSU7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIG1hcmdpbi1ib3R0b206IDEwcHg7Cn0KCmZpZWxkc2V0LlN1cnZleUdyYXBocyAuQW5zd2VyIHsKICAgIGZsb2F0OiBsZWZ0OwogICAgbGluZS1oZWlnaHQ6IDEuM2VtOwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkFGQUZBOwogICAgd2lkdGg6IDI1JTsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIGNsZWFyOiBsZWZ0Owp9CgpkaXYuU3VydmV5R3JhcGggewogICAgZmxvYXQ6IGxlZnQ7CiAgICB3aWR0aDogNTAlOwogICAgaGVpZ2h0OiAyMnB4OwogICAgcGFkZGluZy1sZWZ0OiA1cHg7CiAgICBwYWRkaW5nLWJvdHRvbTogM3B4Owp9CgpkaXYuU3VydmV5R3JhcGhDb250YWluZXIgewogICAgd2lkdGg6IDk1JTsKICAgIGhlaWdodDogMjJweDsKfQoKZGl2LlN1cnZleUdyYXBoQmFyIHsKICAgIGhlaWdodDogMjJweDsKICAgIGJhY2tncm91bmQtY29sb3I6ICNGMkIxM0U7Cn0KCnAuU3VydmV5R3JhcGhMZXllbmQgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBsaW5lLWhlaWdodDogMS4zZW07CiAgICB0ZXh0LWFsaWduOiBsZWZ0OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIHdpZHRoOiAxMCU7CiAgICBtYXJnaW4tYm90dG9tOiA1cHg7CiAgICBoZWlnaHQ6IDIycHg7Cn0KCi5TdWJMYWJlbCB7CiAgICB3aWR0aDogMzUlOwogICAgdGV4dC1hbGlnbjogcmlnaHQ7CiAgICBmbG9hdDogbGVmdDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgouU3ViRmllbGQgewogICAgbWFyZ2luLWxlZnQ6IDM1JTsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgphLkFycm93VXAsCmEuQXJyb3dVcERpc2FibGVkLAphLkFycm93RG93biwKYS5BcnJvd0Rvd25EaXNhYmxlZCB7CiAgICBoZWlnaHQ6IDE2cHg7CiAgICBwYWRkaW5nOiAxcHg7CiAgICBtYXJnaW4tdG9wOiAwOwogICAgbWFyZ2luLWJvdHRvbTogMXB4OwogICAgYm9yZGVyLXN0eWxlOiBub25lOwogICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKICAgIHRleHQtYWxpZ246IGNlbnRlcjsKfQoKYS5BcnJvd1VwLAphLkFycm93RG93biB7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmEuQXJyb3dVcERpc2FibGVkLAphLkFycm93RG93bkRpc2FibGVkIHsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKYS5BcnJvd1VwOmFjdGl2ZSwKYS5BcnJvd0Rvd246YWN0aXZlIHsKICAgIG1hcmdpbi10b3A6IDFweDsKICAgIG1hcmdpbi1ib3R0b206IDA7Cn0KCmEuQXJyb3dVcERpc2FibGVkOmFjdGl2ZSwKYS5BcnJvd0Rvd25EaXNhYmxlZDphY3RpdmUgewogICAgbWFyZ2luLXRvcDogMHB4OwogICAgbWFyZ2luLWJvdHRvbTogMXB4Owp9CgphLkFycm93VXAgaSwKYS5BcnJvd0Rvd24gaSB7CiAgICBjb2xvcjogIzMzOTlGRjsKfQoKYS5BcnJvd1VwOmhvdmVyIGksCmEuQXJyb3dEb3duOmhvdmVyIGkgewogICAgY29sb3I6ICMzMzk5MDAgIWltcG9ydGFudDsKfQoKYS5BcnJvd1VwRGlzYWJsZWQsCmEuQXJyb3dEb3duRGlzYWJsZWQgewogICAgZGlzcGxheTogaW5saW5lICFJbXBvcnRhbnQ7Cn0KCmEuQXJyb3dVcERpc2FibGVkIGksCmEuQXJyb3dEb3duRGlzYWJsZWQgaSB7CiAgICBjb2xvcjogIzkwOTA5MDsKICAgIGN1cnNvcjogZGVmYXVsdDsKfQoKYS5TZWVEZXRhaWxzIHsKICAgIGhlaWdodDogMTVweDsKICAgIHBhZGRpbmc6IDFweDsKICAgIG1hcmdpbi10b3A6IC02cHg7CiAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgY3Vyc29yOiBwb2ludGVyOwp9CgphLlNlZURldGFpbHMgc3BhbiB7CiAgICBiYWNrZ3JvdW5kOiBub25lOwogICAgZGlzcGxheTogbm9uZTsKfQoKYS5TZWVEZXRhaWxzIGkgewogICAgY29sb3I6ICNGRjk5MjI7Cn0KCmxhYmVsLlRleHRhcmVhLApkaXYuVGV4dGFyZWEgewogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKICAgIG1hcmdpbi10b3A6IDEwcHg7Cn0KCi5GaWVsZCB1bCBsaXsKICAgIG1hcmdpbi1sZWZ0OiAzMHB4OwogICAgbGlzdC1zdHlsZTogZGlzYzsKfQoKLkZpZWxkIG9sIGxpewogICAgbWFyZ2luLWxlZnQ6IDMwcHg7CiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsOwp9CgouRmllbGQgdWwuQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0xpc3QgbGkgewogICAgbGlzdC1zdHlsZTogbm9uZTsKICAgIG1hcmdpbi1ib3R0b206IDJweDsKfQoKI1N1cnZleUVtcHR5TWVzc2FnZVNtYWxsIHsKICAgIGJvcmRlci1jb2xvcjogI2RkZDsKICAgIGJvcmRlci1pbWFnZTogbm9uZTsKICAgIGJvcmRlci1zdHlsZTogc29saWQ7CiAgICBib3JkZXItd2lkdGg6IDFweDsKICAgIHBhZGRpbmc6IDdweDsKICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwp9CgoKLlRhYmxlU21hbGwgdGJvZHkgdHIuSW52YWxpZCB7CiAgICBjb2xvcjogI0NDQzsKfQoKPDw8PDw8PCBIRUFECi5OYXZpZ2F0aW9uIHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHRvcDogMDsKICAgIGJvdHRvbTogMDsKICAgIHJpZ2h0OiAwOwogICAgcGFkZGluZy10b3A6IDNweDsKICAgIHBhZGRpbmctcmlnaHQ6IDEwcHg7Cn0KCi5TdXJ2ZXlBcnJvdyB7CiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xNXMgZWFzZTsKICAgIGNvbG9yOiAjRkY5OTIyOwp9CgouU3VydmV5QXJyb3dMZWZ0IHsKICAgIGZsb2F0OiBsZWZ0Owp9CgouU3VydmV5QXJyb3dSaWdodCB7CiAgICBmbG9hdDogcmlnaHQ7Cn0KCi5TdXJ2ZXlBcnJvdyBpewogICAgZm9udC1zaXplOiAyMHB4OwogICAgbWFyZ2luOiAwIDVweDsKfQoKLlN1cnZleUFycm93OmhvdmVyewogICAgY29sb3I6ICNGRjg2MDA7Cn0KCi5EaXNhYmxlZCB7CiAgICBkaXNwbGF5OiBub25lOwp9Ci5XaWRnZXRTcGFjaW5nUmlnaHQgewogICAgbWFyZ2luLXJpZ2h0OiAxM3B4Owp9Cgp9Cj09PT09PT0KLlJlbW92ZUJ1dHRvbkN1c3RvbWVyRmllbGQsCi5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbiwKLlJlbW92ZUJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKLlJlbW92ZUJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIHsKICAgIG1hcmdpbi1yaWdodDogMnB4Owp9Cgp9Cj4+Pj4+Pj4gb3JpZ2luL2ZlYXR1cmUtc3VydmV5aW1wcm92ZW1lbnRzLW1lcmdlZC1mbGktbWFzdGVyCg==
LyoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwtMy4wLnR4dC4KKi8KCi8qKgogKiBAcGFja2FnZSAgICAgU3VydmV5IC0gU2tpbiAiRGVmYXVsdCIKICogQHNlY3Rpb24gICAgIEN1c3RvbWVyCiAqLwoKQG1lZGlhIHNjcmVlbixwcm9qZWN0aW9uLHR2LGhhbmRoZWxkIHsKCmRpdi5TdXJ2ZXlCbG9jayB7CiAgICBtYXJnaW46IDhweCAwIDEzcHg7CiAgICBwYWRkaW5nLWJvdHRvbTogNXB4OwogICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgI0ZGRkZGRiAwJSwgI0Y4RjlGOSAxMDAlKSByZXBlYXQgc2Nyb2xsIDAgMCB0cmFuc3BhcmVudDsKICAgIGJvcmRlcjogMXB4IHNvbGlkICNFQUVFRUU7CiAgICBib3JkZXItcmFkaXVzOiA1cHg7CiAgICB3aWR0aDogNzM4cHg7Cn0KCi5TdXJ2ZXlCbG9jayBkaXYuQ29udGVudCB7CiAgICBib3JkZXI6IDBweDsKfQoKLlN1cnZleUJsb2NrSGVhZGVyIHsKICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRThFOUU5OwogICAgYm9yZGVyLXJhZGl1czogNXB4IDVweCAwIDA7CiAgICBib3JkZXItdG9wOiAxcHggc29saWQgI0ZGRkZGRjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgbWFyZ2luOiAwOwogICAgcGFkZGluZzogNXB4IDhweCA0cHg7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkZGRkZGOwp9CgpmaWVsZHNldC5TdXJ2ZXkgewogICAgd2lkdGg6IDczOHB4Owp9CgpkaXYuQWN0aW9uUm93IHsKICAgIHdpZHRoOiA3MjBweDsKfQoKZGl2LkludHJvIC5Db250ZW50ewogICAgYm9yZGVyLXRvcDogMDsKfQoKZGl2LlF1ZXN0aW9uewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNDOUM5Qzk7CiAgICBjb2xvcjogIzkyOTI5MjsKICAgIGZvbnQtc2l6ZTogMTJweDsKICAgIG1hcmdpbi1sZWZ0OiA0MHB4OwogICAgbWFyZ2luLXRvcDogMTVweDsKICAgIHdpZHRoOiA1MjBweDsKICAgIHBhZGRpbmc6IDRweCA5cHggM3B4IDlweDsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNFQ0VFRUU7CiAgICBmb250LXdlaWdodDogYm9sZDsKICAgIGRpc3BsYXk6IGJsb2NrOwp9CgpkaXYuTWFuZGF0b3J5IHsKICAgIGNvbG9yOiBibGFjazsKfQoKZGl2LkVycm9yIHsKICAgIGNvbG9yOiAjZmY1MDVlICFpbXBvcnRhbnQ7Cn0KCmRpdi5Ub29sdGlwRXJyb3J7CiAgICBtYXJnaW46IC0xMHB4IDAgMHB4IDc1cHg7Cn0KZGl2LlRvb2x0aXBFcnJvciBkaXY6Zmlyc3QtY2hpbGQgewogICAgYm9yZGVyLXRvcDogMHB4ICFpbXBvcnRhbnQ7Cn0KZGl2LlRvbmd1ZSB7CiAgICBib3JkZXI6IDBweDsKICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50Owp9CgpsYWJlbC5BbnN3ZXIgewogICAgYmFja2dyb3VuZDpub25lOwogICAgYm9yZGVyOiBub25lOwogICAgd2lkdGg6IDM2NXB4OwogICAgbWFyZ2luLWxlZnQ6IDhweDsKICAgIG1hcmdpbi10b3A6IDNweDsKICAgIHRleHQtYWxpZ246bGVmdDsKfQoKbGFiZWwuQW5zd2VyLk5QUyB7CiAgICB3aWR0aDogYXV0byAhaW1wb3J0YW50Owp9CgpmaWVsZHNldCBpbnB1dCwKZGl2LkFuc3dlciB7CiAgICBmbG9hdDpsZWZ0Owp9CgpmaWVsZHNldCBpbnB1dCwKZmllbGRzZXQgaW5wdXQuTlBTLApmaWVsZHNldCB0ZXh0YXJlYSwKZGl2LkFuc3dlciB7CiAgICBtYXJnaW46IDdweCAwIDdweCA3NXB4Owp9CgpmaWVsZHNldCBpbnB1dC5OUFM6bm90KDpmaXJzdC1vZi10eXBlKSB7CiAgICBtYXJnaW46IDdweCAwIDdweCA3cHg7Cn0KCi5SaWNoVGV4dEFuc3dlciB7CiAgICBtYXJnaW46IDdweCAwIDdweCA3NXB4Owp9CgpkaXYuQW5zd2VyIHsKICAgIHBhZGRpbmc6MHB4Owp9CgouU3VydmV5QnV0dG9uIHsKICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21sZWZ0OjVweDsKICAgIC1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo1cHg7CiAgICAtbW96LWJveC1zaGFkb3c6MCAwIDNweCAjRjZGOUY5OwogICAgYm9yZGVyLWNvbG9yOi1tb3otdXNlLXRleHQtY29sb3IgI0Q2RDZENiAjRDZENkQ2OwogICAgYm9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjRDZENkQ2OwogICAgYm9yZGVyLXN0eWxlOm5vbmUgc29saWQgc29saWQ7CiAgICBib3JkZXItd2lkdGg6bWVkaXVtIDFweCAxcHg7CiAgICBib3R0b206LTIycHg7CiAgICBjb2xvcjojOTk5OTk5OwogICAgZGlzcGxheTpub25lOwogICAgaGVpZ2h0OjEwcHg7CiAgICBtYXJnaW46MCAxM3B4OwogICAgcGFkZGluZzo0cHggOHB4IDdweCAyNHB4OwogICAgcG9zaXRpb246YWJzb2x1dGU7Cn0KfQo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgLS0KIyBUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQojIHRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC0zLjAudHh0LgojIC0tCgpwYWNrYWdlIHZhcjo6cGFja2FnZXNldHVwOjpTdXJ2ZXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpPdXRwdXQ6OlRlbXBsYXRlOjpQcm92aWRlcjsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnLAopOwoKPWhlYWQxIE5BTUUKCnZhcjo6cGFja2FnZXNldHVwOjpTdXJ2ZXkgLSBjb2RlIHRvIGV4ZWN1dGUgZHVyaW5nIHBhY2thZ2UgaW5zdGFsbGF0aW9uCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBmdW5jdGlvbnMKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRDb2RlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgndmFyOjpwYWNrYWdlc2V0dXA6OlN1cnZleScpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIEZvcmNlIGEgcmVsb2FkIG9mIFpaWkF1dG8ucG0gYW5kIFpaWkFBdXRvLnBtIHRvIGdldCB0aGUgZnJlc2ggY29uZmlndXJhdGlvbiB2YWx1ZXMuCiAgICBmb3IgbXkgJE1vZHVsZSAoIHNvcnQga2V5cyAlSU5DICkgewogICAgICAgIGlmICggJE1vZHVsZSA9fiBtL1paWkFBP3V0b1wucG0kLyApIHsKICAgICAgICAgICAgZGVsZXRlICRJTkN7JE1vZHVsZX07CiAgICAgICAgfQogICAgfQoKICAgICMgYWx3YXlzIGRpc2NhcmQgdGhlIGNvbmZpZyBvYmplY3QgYmVmb3JlIHBhY2thZ2UgY29kZSBpcyBleGVjdXRlZCwKICAgICMgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGNvbmZpZyBvYmplY3Qgd2lsbCBiZSBjcmVhdGVkIG5ld2x5LCBzbyB0aGF0IGl0CiAgICAjIHdpbGwgdXNlIHRoZSByZWNlbnRseSB3cml0dGVuIG5ldyBjb25maWcgZnJvbSB0aGUgcGFja2FnZQogICAgJEtlcm5lbDo6T00tPk9iamVjdHNEaXNjYXJkKAogICAgICAgIE9iamVjdHMgPT4gWydLZXJuZWw6OkNvbmZpZyddLAogICAgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBDb2RlSW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlSW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVJbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlUmVpbnN0YWxsKCkKCnJ1biB0aGUgY29kZSByZWluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVJlaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVSZWluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlKCkKCnJ1biB0aGUgY29kZSB1cGdyYWRlIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVbmluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIHVuaW5zdGFsbCBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVW5pbnN0YWxsKCk7Cgo9Y3V0CgpzdWIgQ29kZVVuaW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMF85MigpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gMi4wLjkyLgoKbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fMl8wXzkyKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMF85MiB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgU0VMRUNUIGFsbCBmdW5jdGlvbmFsaXR5IHZhbHVlcwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzZW5kX3RpbWUKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdCcsCiAgICApOwoKICAgIG15IEBMaXN0OwogICAgUk9XOgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbmV4dCBST1cgaWYgISRSb3dbMV07CgogICAgICAgIHB1c2ggQExpc3QsIFxAUm93OwogICAgfQoKICAgICMgc2F2ZSBlbnRyaWVzIGluIG5ldyB0YWJsZQogICAgZm9yIG15ICRFbnRyeSAoQExpc3QpIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5X3JlcXVlc3QKICAgICAgICAgICAgICAgIFNFVCBjcmVhdGVfdGltZSA9ID8KICAgICAgICAgICAgICAgIFdIRVJFICBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRFbnRyeS0+WzFdLCBcJEVudHJ5LT5bMF0gXSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMV81KCkKClRoaXMgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBpZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSB2ZXJzaW9uIGlzIHNtYWxsZXIgdGhhbiAyLjEuNS4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMV81KCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMV81IHsgICAgIyMgbm8gY3JpdGljCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgc2V0IGFsbCBzdXJ2ZXlfcXVlc3Rpb24gcmVjb3JkcwogICAgIyB0aGF0IGRvbid0IGhhdmUgYW5zd2VyX3JlcXVpcmVkIHNldCB0byBzb21ldGhpbmcKICAgICMgdG8gMAogICAgJFNlbGYtPl9QcmVmaWxsX0Fuc3dlclJlcXVpcmVkRnJvbVN1cnZleVF1ZXN0aW9uXzJfMV81KCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzEoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDQuMC4xLgoKbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzEoKTsKCj1jdXQKCnN1YiBDb2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzEgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBtaWdyYXRlIHRoZSBEVEwgQ29udGVudCBpbiB0aGUgU3lzQ29uZmlnCiAgICAkU2VsZi0+X01pZ3JhdGVEVExJblN5c0NvbmZpZygpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gNC4wLjkxLgoKbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZUZyb21Mb3dlclRoYW5fNF8wXzkxKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoYW5nZSBjb25maWd1cmF0aW9ucyB0byBtYXRjaCB0aGUgbmV3IG1vZHVsZSBsb2NhdGlvbi4KICAgICRTZWxmLT5fTWlncmF0ZUNvbmZpZ3MoKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9QcmVmaWxsX0Fuc3dlclJlcXVpcmVkRnJvbVN1cnZleVF1ZXN0aW9uXzJfMV81KCkKCkluc2VydHMgMCBpbnRvIGFsbCBhbnN3ZXJfcmVxdWlyZWQgcmVjb3JkcyBvZiB0YWJsZSBzdXZleV9xdWVzdGlvbgp3aGVyZSB0aGVyZSBpcyBubyBlbnRyeSBwcmVzZW50LgoKICAgIG15ICRTdWNjZXNzID0gJFBhY2thZ2VTZXR1cC0+X1ByZWZpbGxfQW5zd2VyUmVxdWlyZWRGcm9tU3VydmV5UXVlc3Rpb25fMl8xXzUoKTsKCj1jdXQKCnN1YiBfUHJlZmlsbF9BbnN3ZXJSZXF1aXJlZEZyb21TdXJ2ZXlRdWVzdGlvbl8yXzFfNSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBhbnN3ZXJfcmVxdWlyZWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24nLAogICAgKTsKICAgIG15IEBJZHNUb1VwZGF0ZTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewoKICAgICAgICAjIGlmIHdlIGhhZCBhbiBpZAogICAgICAgICMgYnV0IG5vIGFuc3dlcl9yZXF1aXJlZCBvciBhbnN3ZXJfcmVxdWlyZWQgaXNuJ3QgMCBvciAxCiAgICAgICAgIyBjb2xsZWN0IHRoZSBJRCBpbiBASWRzVG9VcGRhdGUKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJFJvd1swXQogICAgICAgICAgICAmJiBsZW5ndGggJFJvd1swXQogICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAhZGVmaW5lZCAkUm93WzFdCiAgICAgICAgICAgICAgICB8fCAoICRSb3dbMV0gbmUgJzAnICYmICRSb3dbMV0gbmUgJzEnICkKICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBwdXNoIEBJZHNUb1VwZGF0ZSwgJFJvd1swXTsKICAgICAgICB9CiAgICB9CgogICAgZm9yIG15ICRRdWVzdGlvbklEIChASWRzVG9VcGRhdGUpIHsKICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgICAgICBTRVQgYW5zd2VyX3JlcXVpcmVkID0gMAogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgICAgICBcJFF1ZXN0aW9uSUQsCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiAxOwp9CgpzdWIgX01pZ3JhdGVEVExJblN5c0NvbmZpZyB7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFN5c0NvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKTsKICAgIG15ICRQcm92aWRlck9iamVjdCAgPSBLZXJuZWw6Ok91dHB1dDo6VGVtcGxhdGU6OlByb3ZpZGVyLT5uZXcoKTsKCiAgICAjIGdldCBzZXR0aW5nJ3MgY29udGVudAogICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKICAgIHJldHVybiBpZiAhJFNldHRpbmc7CgogICAgTUVOVU1PRFVMRToKICAgIGZvciBteSAkTWVudU1vZHVsZSAoIHNvcnQga2V5cyAleyRTZXR0aW5nfSApIHsKCiAgICAgICAgbXkgJFNldHRpbmdDb250ZW50ID0gJFNldHRpbmctPnskTWVudU1vZHVsZX0tPntMaW5rfTsKCiAgICAgICAgIyBkbyBub3RoaW5nIG5vIHZhbHVlIGZvciBtaWdyYXRpbmcKICAgICAgICBuZXh0IE1FTlVNT0RVTEUgaWYgISRTZXR0aW5nQ29udGVudDsKCiAgICAgICAgbXkgJFRUQ29udGVudDsKICAgICAgICBldmFsIHsKICAgICAgICAgICAgJFRUQ29udGVudCA9ICRQcm92aWRlck9iamVjdC0+TWlncmF0ZURUTHRvVFQoIENvbnRlbnQgPT4gJFNldHRpbmdDb250ZW50ICk7CiAgICAgICAgfTsKICAgICAgICBpZiAoJEApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRNZW51TW9kdWxlLT5MaW5rIDogJEAhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBuZXh0IE1FTlVNT0RVTEUgaWYgJFNldHRpbmdDb250ZW50IGVxICRUVENvbnRlbnQ7CgogICAgICAgICAgICAkU2V0dGluZy0+eyRNZW51TW9kdWxlfS0+e0xpbmt9ID0gJFRUQ29udGVudDsKICAgICAgICB9CgogICAgICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgIENvbW1lbnRzID0+ICdEZXBsb3kgc3VydmV5IG1lbnUgbW9kdWxlLicsCiAgICAgICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZScsCiAgICAgICAgICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJFNldHRpbmcsCiAgICAgICAgICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgKTsKICAgIH0KICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgX01pZ3JhdGVDb25maWdzKCkKCmNoYW5nZSBjb25maWd1cmF0aW9ucyB0byBtYXRjaCB0aGUgbmV3IG1vZHVsZSBsb2NhdGlvbi4KCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPl9NaWdyYXRlQ29uZmlncygpOwoKPWN1dAoKc3ViIF9NaWdyYXRlQ29uZmlncyB7CgogICAgIyBjcmVhdGUgbmVlZGVkIG9iamVjdHMKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIG1pZ3JhdGUgc3VydmV5IG1lbnUgbW9kdWxlIHN5c2NvbmZpZwogICAgIyBnZXQgc2V0dGluZyBjb250ZW50IGZvciBzdXJ2ZXkgc3lzY29uZmlnCiAgICBteSAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZScpOwoKICAgIG15IEBTZXR0aW5nc0RlcGxveTsKCiAgICBDT05GSUdJVEVNOgogICAgZm9yIG15ICRNZW51TW9kdWxlICggc29ydCBrZXlzICV7JFNldHRpbmd9ICkgewoKICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICBteSAkTW9kdWxlID0gJFNldHRpbmctPnskTWVudU1vZHVsZX0tPnsnTW9kdWxlJ307CiAgICAgICAgbmV4dCBDT05GSUdJVEVNIGlmICEkTW9kdWxlOwoKICAgICAgICBpZiAoICRNb2R1bGUgIX4gbXtLZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudShcdyspfSApIHsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNOwogICAgICAgIH0KCiAgICAgICAgJFNldHRpbmctPnskTWVudU1vZHVsZX0tPntNb2R1bGV9ID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjokMSI7CgogICAgICAgICMgc2V0IG5ldyBzZXR0aW5nCiAgICAgICAgcHVzaCBAU2V0dGluZ3NEZXBsb3ksIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMnIC4gJE1lbnVNb2R1bGUsCiAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBtaWdyYXRlIHN1cnZleSBvdmVydmlldyBzbWFsbCBTeXNDb25maWcKICAgICMgZ2V0IHNldHRpbmcgY29udGVudCBmb3Igc3VydmV5IFN5c0NvbmZpZwogICAgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3Jyk7CgogICAgaWYgKCAkU2V0dGluZy0+eydTbWFsbCd9LT57TW9kdWxlfSApIHsKCiAgICAgICAgIyB1cGRhdGUgbW9kdWxlIGxvY2F0aW9uCiAgICAgICAgJFNldHRpbmctPnsnU21hbGwnfS0+e01vZHVsZX0gPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU92ZXJ2aWV3OjpTbWFsbCI7CgogICAgICAgICMgc2V0IG5ldyBzZXR0aW5nCiAgICAgICAgcHVzaCBAU2V0dGluZ3NEZXBsb3ksIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1N1cnZleTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IyMjU21hbGwnLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkU2V0dGluZy0+eydTbWFsbCd9LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgIyBtaWdyYXRlIHN1cnZleSBwcmVmZXJlbmNlIFN5c0NvbmZpZwogICAgIyBnZXQgc2V0dGluZyBjb250ZW50IGZvciBzdXJ2ZXkgU3lzQ29uZmlnCiAgICAkU2V0dGluZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKTsKCiAgICBpZiAoICRTZXR0aW5nLT57J1N1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24nfS0+e01vZHVsZX0gKSB7CgogICAgICAgICMgdXBkYXRlIG1vZHVsZSBsb2NhdGlvbgogICAgICAgICRTZXR0aW5nLT57J1N1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24nfS0+e01vZHVsZX0gPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljIjsKCiAgICAgICAgIyBzZXQgbmV3IHNldHRpbmcKICAgICAgICBwdXNoIEBTZXR0aW5nc0RlcGxveSwgewogICAgICAgICAgICBOYW1lICAgICAgICAgICA9PiAnUHJlZmVyZW5jZXNHcm91cHMjIyNTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duJywKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJFNldHRpbmctPnsnU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93bid9LAogICAgICAgICAgICBJc1ZhbGlkICAgICAgICA9PiAxLAogICAgICAgIH07CiAgICB9CgogICAgbXkgJFN1Y2Nlc3MgPSAkU3lzQ29uZmlnT2JqZWN0LT5TZXR0aW5nc1NldCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIENvbW1lbnRzID0+ICdEZXBsb3kgc3VydmV5IHNldHRpbmdzLicsCiAgICAgICAgU2V0dGluZ3MgPT4gWwogICAgICAgICAgICBcQFNldHRpbmdzRGVwbG95LAogICAgICAgIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwczovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLTMuMC50eHQ+LgoKPWN1dAo=
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMTkwOTIwMTUyOTU4WikKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2ZZ1BUWRaA73uvc6Chu2kyNDlJlNCA5JwkSBYV6G4yLTQ5mJDBERhBRCQpgogCDjg6BBlFRRQDoqCAeRoZBJRxcBRRUVnAH7NVu7VbW7W1f7bPj/e+OufWO+e+ulXvq3oAyJDi2QnJsD4ACbwUvq+zHTMoOISJvQ9wgAxIgAow4ezkRFtvbw+wHCtrwT/E+1EArdzv6fzz+r8MEieBxwEAoi9zLIebzF7mncsczUngrOSnVzg9JTEFANh7men85QGXmbPCEd84Y4WjvnHR6ho/X/tlPgoAjhS1yoRTKxyxytSuFWZH8xMAkO5bXq/CTuQvP196pZfitxlWQ3RlP8woLo/LD0/hcpj/4db+ffxdL3Ty8sv/rzf4H/dZOTvf6K3l6pmAGBV/5baWAcB6DQBS8ldO5TAAlN0AdPT8lYs4DkBnCQCSz9ip/LRvOdTq7IAAKIAOpIA8UAYaQAcYAlNgAWyAI3ADXsAPBIPNgA2iQQLgg3SQA3aBfFAISsBBUAVqQQNoAq3gDOgE58FlcA3cAnfBCHgMBGASvAJz4D1YhCAIC5EhGiQFKUCqkDZkCLEgK8gR8oB8oWAoDIqCeFAqlAPthgqhUqgKqoOaoJ+gc9Bl6AY0BD2ExqEZ6E/oE4zAJJgOy8FqsB7Mgm1hd9gP3gRHwUlwFpwH74Mr4Hr4FNwBX4ZvwSOwAH4FzyMAISIMRBHRQViIPeKFhCCRCB/ZjhQg5Ug90op0I/3IPUSAzCIfURgUDcVE6aAsUC4ofxQblYTajipCVaFOojpQfah7qHHUHOormoyWRWujzdGu6CB0FDodnY8uRzei29FX0SPoSfR7DAbDwKhjTDEumGBMLCYbU4Q5jGnDXMIMYSYw81gsVgqrjbXEemHDsSnYfGwl9hT2InYYO4n9gCPiFHCGOCdcCI6Hy8WV45pxPbhh3BRuES+KV8Wb473wHHwmvhjfgO/G38FP4hcJYgR1giXBjxBL2EWoILQSrhKeEN4SiUQlohnRhxhD3EmsIJ4mXieOEz+SqCQtkj0plJRK2kc6QbpEekh6SyaT1cg25BByCnkfuYl8hfyM/EGEJqIr4irCEdkhUi3SITIs8pqCp6hSbCmbKVmUcspZyh3KrCheVE3UXjRcdLtoteg50THReTGamIGYl1iCWJFYs9gNsWkqlqpGdaRyqHnUY9Qr1AkaQlOm2dPYtN20BtpV2iQdQ1enu9Jj6YX0H+mD9DlxqriReIB4hni1+AVxAQNhqDFcGfGMYsYZxijjk4SchK0EV2KvRKvEsMSCpIykjSRXskCyTXJE8pMUU8pRKk5qv1Sn1FNplLSWtI90uvQR6avSszJ0GQsZtkyBzBmZR7KwrJasr2y27DHZAdl5OXk5Z7lEuUq5K3Kz8gx5G/lY+TL5HvkZBZqClUKMQpnCRYWXTHGmLTOeWcHsY84pyiq6KKYq1ikOKi4qqSv5K+UqtSk9VSYos5QjlcuUe5XnVBRUPFVyVFpUHqniVVmq0aqHVPtVF9TU1QLV9qh1qk2rS6q7qmept6g/0SBrWGskadRr3NfEaLI04zQPa97VgrWMtaK1qrXuaMPaJtox2oe1h9ag15it4a2pXzOmQ9Kx1UnTadEZ12Xoeujm6nbqvtZT0QvR26/Xr/dV31g/Xr9B/7EB1cDNINeg2+BPQy1DtmG14f215LVOa3es7Vr7xkjbiGt0xOiBMc3Y03iPca/xFxNTE75Jq8mMqYppmGmN6RiLzvJmFbGum6HN7Mx2mJ03+2huYp5ifsb8DwsdiziLZovpderruOsa1k1YKlmGW9ZZCqyYVmFWR60E1orW4db11s9tlG04No02U7aatrG2p2xf2+nb8e3a7Rbsze232V9yQBycHQocBh2pjv6OVY7PnJScopxanOacjZ2znS+5oF3cXfa7jLnKubJdm1zn3Ezdtrn1uZPcN7hXuT/30PLge3R7wp5ungc8n6xXXc9b3+kFvFy9Dng99Vb3TvL+xQfj4+1T7fPC18A3x7d/A23Dlg3NG9772fkV+z321/BP9e8NoASEBjQFLAQ6BJYGCoL0grYF3QqWDo4J7grBhgSENIbMb3TceHDjZKhxaH7o6Cb1TRmbbmyW3hy/+cIWypbwLWfD0GGBYc1hn8O9wuvD5yNcI2oi5tj27EPsVxwbThlnhmvJLeVORVpGlkZOR1lGHYiaibaOLo+ejbGPqYp5E+sSWxu7EOcVdyJuKT4wvi0BlxCWcI5H5cXx+rbKb83YOpSonZifKEgyTzqYNMd35zcmQ8mbkrtS6Msf6YFUjdTvUsfTrNKq0z6kB6SfzRDL4GUMZGpl7s2cynLKOp6NymZn9+Yo5uzKGd9mu61uO7Q9YnvvDuUdeTsmdzrvPLmLsCtu1+1c/dzS3He7A3d358nl7cyb+M75u5Z8kXx+/tgeiz2136O+j/l+cO/avZV7vxZwCm4W6heWF34uYhfd/MHgh4oflvZF7hssNik+UoIp4ZWM7rfef7JUrDSrdOKA54GOMmZZQdm7g1sO3ig3Kq89RDiUekhQ4VHRValSWVL5uSq6aqTarrqtRrZmb83CYc7h4SM2R1pr5WoLaz8djTn6oM65rqNerb78GOZY2rEXDQEN/cdZx5sapRsLG7+c4J0QnPQ92ddk2tTULNtc3AK3pLbMnAo9dfdHhx+7WnVa69oYbYWnwenU0y9/Cvtp9Iz7md6zrLOtP6v+XNNOay/ogDoyO+Y6ozsFXcFdQ+fczvV2W3S3/6L7y4nziuerL4hfKO4h9OT1LF3Mujh/KfHS7OWoyxO9W3ofXwm6cr/Pp2/wqvvV69ecrl3pt+2/eN3y+vkb5jfO3WTd7LxlcqtjwHig/bbx7fZBk8GOO6Z3uu6a3e0eWjfUM2w9fPmew71r913v3xpZPzI06j/6YCx0TPCA82D6YfzDN4/SHi0+3vkE/aTgqejT8meyz+p/1fy1TWAiuDDuMD7wfMPzxxPsiVe/Jf/2eTLvBflF+ZTCVNO04fT5GaeZuy83vpx8lfhqcTb/d7Hfa15rvP75D5s/BuaC5ibf8N8s/Vn0VurtiXdG73rnveefvU94v7hQ8EHqw8mPrI/9nwI/TS2mf8Z+rvii+aX7q/vXJ0sJS0tCFxC6gNAFhC4gdAGhCwhdQOgCQhcQuoDQBYQuIHQBoQsIXeD/2AVW/+MsB7JyOTYGgF82AB63AaisAkAtEgBKaAo3I2WlytvKZG9NzOTHREWnrGGmJnOZkXwuNz5zpfY3+wIKCAplbmRzdHJlYW0KZW5kb2JqCjMgMCBvYmoKMjQ1MwplbmRvYmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE5LTA5LTIwVDE1OjI5OjU4WjwvZGM6ZGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIiByZGY6YWJvdXQ9IiI+CjxwZGY6UHJvZHVjZXI+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwvcGRmOlByb2R1Y2VyPgo8cGRmOlBERlZlcnNpb24+MS40PC9wZGY6UERGVmVyc2lvbj4KPC9yZGY6RGVzY3JpcHRpb24+CjxyZGY6RGVzY3JpcHRpb24geG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiByZGY6YWJvdXQ9IiI+Cjx4bXA6Q3JlYXRvclRvb2w+QXBhY2hlIEZPUCBWZXJzaW9uIDIuMTwveG1wOkNyZWF0b3JUb29sPgo8eG1wOk1ldGFkYXRhRGF0ZT4yMDE5LTA5LTIwVDE1OjI5OjU4WjwveG1wOk1ldGFkYXRhRGF0ZT4KPHhtcDpDcmVhdGVEYXRlPjIwMTktMDktMjBUMTU6Mjk6NThaPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg0MwplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCAyNTAwCiAgL0hlaWdodCA4ODUKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgL0RldmljZUdyYXkKPj4Kc3RyZWFtCnic7J17oesgDMaRMAmVMAlImAQkTAIOJqESJgEJk1AJk7B7tvO4e5Q+ICGBfr8/791Zk5TRr4EEYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAetgfz9dO2ghadrehd520FQAAAAAATHSuv96+cNKG0HK4+/Sl4w47aUsAAAAAAKg5nC63H3ppW2jpf/26XbyVNgYAAAAAgIzueL49MUjbQ8vw7Nv17JCOAwAAAEAD2NOLyLnTSdtESffu3e3i99JGAQAAAABksPvZAfeGk7aLkuOIg7fhdJC2CwAAAAAgic6dx+TNF2dp0yiJOXntsaoKAAAAgNrojpeItrnLG2nrKBlLNP6JVcg4UJC9tUfvT+GL8WF5vf9X7723Fuv9AIA5dtYeviaM833mGJ1Thu8p5WhtJ20rIGNSwN1p6Plhpz2FjAPsdNb5Psz85ka4hPPX1NvQjxEAQMLurtxir4JRro8ZpZM2HuSx/6xh+OAobSQdp/mBDRkHmPgSbwna7Z0hnI4WYxQAcJ9TziFzRrmc/QHvhnUym4H7JkjbSceyJyhkHKClO/gw5EyzH1zDyWHeBWCr7L/eCFcm3ibBhFIdCwXcHWlTydgtHtBnJ20raIPdgXaqfQHzLgCbwx77/Hz+GNeAxve1sFsu4L5opvOGWzOc+2bcBkJ0rh9WzqLruZ4x7wKwDXaHU2CeUKDjKiDaRiTCSdpgKvp1fg8nrKmCRIrotz8COlUD0DYFp5TzsZP2FkyxdmnnIm0wFavXtPBgBCnYE89axxTXs+uk/QYAcLA7lHwlvDOc8PTTS1h7Oztpi2nYr/W7qdZ4oAw7d2bb/zaHnoPj9gHk4VJDL214At4/uiBaSzcAW2Lvy78S3oGMU0u/9l46aYtp8Gv9bqgiFxQhftxJKZTMu3OdGMEcPjX00oZncrlLOodGiL8UT8C9oGQ6AW+s1jKNHLe1+mXGS1sMamLnwtoRxoKGeRcaLhefGnppw8n4EnMbb0EbOcK8LJcjtoWr47D2LraxptitHr1W2mRQD+IZuGcG38lGAxouF58aemnDqdlsC9qDmhmlt9KxAK+sn1+ttMkUrOks8g3eP8Ay9grel98Iop2qoeFy8amhlzach9AfLd3w1M9B14wyoO+9LlbfwSa6i6x+qxmkLQZVsHMyW47nuPZy6QtouFx8auilDWfkctpG7XW34AjM0lylU/vgmdUKv4nuIqu97qUtBhXQ6XphfuXihKICDZeLTw29tOHMDOdj4yurSrbVftJ30qEBv4TVd6+TNjmf1bsAWynHBYzY9b+lsly9yCIINFwuPjX00oYX4No3m4/rTopfCaHi1HBafe+ctMn5rHe68dc9kI0bVg8qASQmXmi4XHxq6KUNL8TlZOmGqxasmjKGGFBxOljdXKSF7iLDWp/bqMYFXOyOq4eUFGdbOjjQcLn41NBLG16O1s60xishWMr6CbZ+PbP6kAZ0+AUT7LzmNY8Pgi0bHmi4XHxq6KUNL0o7Mq6iCUVmewZ4Zn2ntPq7ixzXj1Rpk4FaKppwfymr4qDhcvGpoZc2vDTXFrqX1TWhXJ10vMD6u1Z9d5H17R+stMlAK1VNuH+UVHHQcLn41NBLGy6AeEvrTOpScHcuVjpmW2e9oKm9V9pu/TBFwhiMUse2lTHKbWWBhsvFp4Ze2nAZzvWuqdan4O70eD6KklD90knbnMf6Qxqa6IkHyLE6G/ou5FRo5oWGy8Wnhl7acCmGOs/1rFPBfXGtVzW3wPrC1NtR2uY81qvW6lePAQOd+uL/Ga5lfsjQcLn41NBLGy7H9dTRjeBCuEoV3J1zlaK5Edb3u629SnO9w07aZKCOXcLLjzoGWyBS0HC5+NTQSxsuSmWNL+wgHbAskIqTY32jjcq3hyWI1k7aZqCNw5Dwu1FIgfdnaLhcfGropQ0XpiIV1wXpYGWDVJwYCXfLSducQ7/a3dqLOAA11S+j/od/QRUaLhefGnppw8WpRMU1kdS/DTjNSIiEfdlVnwC/ftNB1e4Ceo4Vb1z5JDBPvdBwufjU0EsbroBSlTs5tJLUr32nfLUkpBRqPqoh4YmCkQmeaGDZ4w3PGi9ouFyS74+04Rq4JkevELt2kvpYT5UhJY1b8f7F9efd48B78ERbSbhvLpxDHBouF58aemnDdVCkcieZtuYT1pkEREjY419zs41htbM1Zx0BMe0l4b5hzDVDw+XiU0MvbbgW9KaHmptPUJ8qQMKJqRXv8k8owz1L2wzUUHMLp2lCxxUzaLhcfGropQ1XQ6FWiKs5NDifKA1106Tcp2ozpglLqV7aZqCElnaufMD2Ag0Nl4tPDb204Yrge0dJp9H5BDWAxQkJt6naxdRhva9W2magg33C4KkJph81NFwuPjX00oZrQt8iX7Pzid6l61bpE+5SrSeIpiwcS9sMdHBMGDt1cek44gYNl4tPDb204bpQdjR7Ez3hxrnoinT7JD2bOmmr00jwtfKTxQANuz7lZ1IZLLkKaLhcfGropQ1XhqYmtI2uo/4AEVeWpDm20o2LCQ2NvbTNQAH7hJFTI54+dNBwuSTfFGnDtXF1dMM6j2bXUX+AiCvKLukeSVudRMpSqpU2GshjG6wfG4d+Lws0XC4+NfTShutDyX77duvbf4GIK8qQco86aatTSFk2lrYZyNP+Vrj/kG+Kg4bLxaeGXtpwhQQN2iKhO0J1QMSVJGllvsrF1IQFMWyHA33KD6RarsS7hqDhcvGpoZc2XCPyJwm0vRXuD4i4giQVyNSobVKWUqvtogKI2G1kK9x/HGn8oOFy8amhlzZcJdTvKGvZzHwCEVeOlNO2brcKb1DKkpi6rkKgLN1WptwnSJPs0HC5+NTQSxuuE1kR13o1wxN1bpqvkpT0FPXLehFSnsYVSlVAyL753cdjUG79hobLxaeGXtpwrTi60b2WTc0nSipItkDSsKrvGNEUrYpXiW2zqSn3CcLZFxouF58aemnD1eLohvc6tlPg/gA7kUoRku5PdRmqlKVUDMJN45J+GS1At5kFGi4Xnxp6acP14qhG9zo2N58IxXl7pJ364aTNXkvKUiq2w22ZzU25T5CJOGi4XHxq6KUNV4zInrgNzifiVcAbIa2oobbF1KRtf9UlGwEdG5xyn6AScdBwufjU0EsbrhiJwoYtzidXPEGLkFbUUJu+Sck2YjvchtnilPsMkYiDhsvFp4Ze2nDNlBdx25xP8AgtQ9pGSydt9jqGBBexHW67bHPKfYZGxEHD5eJTQy9tuGpKty/b6nyCZ2gRQtLNqWsxdZ/iIrbDbZatTrnPkDzmoOFy8amhlzZcN2UzREnPnybAQ7QEaUUNdZ2ZmnRGXWXLxYAMSLg7FCIOGi4Xnxp6acOVU7J92VabFN2wJa4MaUUNdZ2ZOiQ4iLX8rQIJ9w2BiIOGy8Wnhl7acO247MG9lA1LuDrP5ayOxKKGmiROUirbS1sNZICE+yX/Nw4Nl4tPDb204dopVtewmTNSx6kq2VMrQ9q96aTtXk6f4p+VthqIsN29K59kLzhBw+XiU0Mvbbh6StU1bFvC3a5dmTBvmnPavalIXyflsqWNBiJseuHjg1wRBw2Xi08NvbTh+ilTNNlLuykNVlP5SSxqqGcxNWnHH0beJukg4V7weeGEhssl+QZIG14BJYomUw55bIyKsj21kjrPdtKGL6VP8c5LWw0E2PjelRFcVjyh4XLxqaGXNrwCChRN4geA2tQSJN6aWvr37ZK8s9JmAwEg4T7I2vqNR1guPjX00obXAHuDEaT175Ts47JREh9cg7TdC0mrM5S2GgjQp/0Smiarfg8aLhefGnppw6vAZoztJeCd8AF3mEGfeGcETg5OIalmo65zKAAJ2LsyRk79HjRcLj419NKGVwFzHiKpt3yD1LN3vlZSG2LVsZia1v8O+zC3R2K36+bJKO+BhsvFp4Ze2vA6SA7vEjCh/OI4wwzSO2JdpQ1fRFpypZIcI6BDSVeRa/iPDosyXtag4XLxqaGXNrwOOPfb76R/vk8zibAlA8oamEkda1UcaJu0JaEOeQoIkS1JvYbeO2tHzLL26M9B0raMHzo0XC4+NfTShlcC42JSYuPVbB5TyWcSQnQm8XxhBndS72sN9SZpScYaPAOkSM24t6H3dv41tbP+LPZen1zXAA2Xi0+MPDTcQrrUAM8hsbs2+MOsPyIzCfqLMJPY5fd2q+DGpG0rddJmg8LI1DNcToc1v6HO9YOMnYm/dGi4XHxa4KHhlsL1ul68rUg4rnjT+ppJytrnmcIMvkmeaZ205fOkjdRO2mxQFoFTUq9nl6KM9keJRd/EJx00XC4+LfDQcIvpUiM8TSjpw7Vf9S74zf40FLSwgnxP1aTeGP0HUqWVBtXS+g4QsRtSfwKp9BmbSTsBGeeSLIWGy8WnDhJpw6uBJxFXsib1nDyX7E/FsnGeMLjgk+RHQidt+Rxpu5zq6JoCyCi8Ge6SlIF7pis3+X6TtiUOGi4XnzpCpA2vhy41xBOUq0kdjnlziSv0PohEHC/JvQi9tOUzpJ2zVUfBLSCj7Ga4nqZxjQtFrU7q0wkNl4tPHR7ShtcDxxt7qe6+geBRZUMRU9FylZXkxK/2RcfEhzNeGTZFyc1wV083uApNvj+kPOqg4XLxqYND2vB6YMgQFZpRgqUxt8hEol0rVE5iuuqm/iS0tDyx/m1+gJJyu8soFdydoirOJthX0Lw28alDQ9rwinCpMY4SSphNpeDuHAZ+e7G6xUryU0x3I7XE1yEvbTcoSblTDYkV3J2CKi6h2To0XC4+dWBIG14R5Md5lihoGBypybvkBmOLQWqElT71vujeqZjoFg7a2hLFdMa5Y7HfDaUcWP/CBg2Xi08dFtKG1wT1hD/wm3wif/Du2ZcjOmqTwROpx94rbxGXVhyEg7a2RKm2IoNl84D/FfqH1ash0HC5+NRRIW14TRCvJqU/TZdy4Ugz7LgXJNDugZMu+b5oTpAm/pbO0naDghRaSWVYRv0P/yv0N6tXU3dWAp4y46OIL13qmFAdA//gHIL0sfDfEL+1D9z20ifhvnG8twPJEVaG5BvTSZseJ6R55KTtBuUokykauJfnC6Xi6niT5rmnVtqtddQSg509+D6wWLsc0u323L/FK19xwJ5XxKGqgZM++b54adOjpCYXO2nDQTmG5IG/gp5/1+i+iCN1CBloOFOPhvuhO5wCi8mLIF1MZc4tsqyj/tKxZvSxwsVJ+hK+3rYviatkeh0C5JTIX11dCU92Rc6aqOLHAQ1nqtNwD+xJ4izgG+0qH/NuuAvv++CO9Q6oroCsnfQNcXoTpEOaP3WsFwEKMob9Yljfm58pctqEL+RMDtBwpk4NZ2TOAr6RPsQGVkPZm3mxijjHbf2mGZLvi9YEaWqTHrWaFJATkkf9Ys7l3j0PJXaId8XcSQYazlSr4b7o/MBi/BR00og3DVegHyuniNOqFdqgT78xShOkqWtL0naDYvA3ASjbBLvEpjjNheg/QMOZmjXcF4fAYn4cuj0CrGnEIrNJx/gqqFQrtEHG40znYbapy2R4VdgMO/68VeHfBu9ulm/056mh4UzlGq70WcB06WXWOvdCzybG6lRXxoNtkrEzSOc+59Td6joVKWCAvzWcK+1SARGn8+f+DDScqV7DlVZxVNN+z2gjcznDf/jWJ5Ah4SRj8rfSto8xJDrTSRsOCsFf0ODKO1VAxPnyXq0DGs40oOHYW86+QCQuOOeUguda9mw+FHNhi2QkJTQefJ9a0aA/ywCICOkjfhlOwit+Eaf7jGQDDfeghRiU6ZfzgEhccPYqsjQmLoFvEtG/E6NiUkXPHYWTeuqvH51FtgL7CQ1Oxi9+Eafxne0ZaDjThoYrVGr9gKYD0MBnoCcxcCF7Li/wfGVkl3Fj9O0hS85p4z1hKwwZA34JTsoxfhHXSbm2DGg404qGYz444AlHYW1OImSGwvXgXAnFS1k3NkbGj0XfAmTyyrC04aAQ3H1FBN9r2EWc8v4i0HCmGQ1XbD2VJEHU89nXUdi3nN3A5IfCNbt2yFHeVtr4d1JT8Kib2Qhsc9QPouuNzEdXK/y9vwANZ9rRcLylnv+heC9hbFbkCcxbBVdKEQtdjOTMfNqkT3KSRd+qMGCB+aBU4UwV23YWHe7NAA1nWtJwhUQcgaF8uf2hfPoq8HiCDXGc5NyZTtr4V0IjfgAmmNv7FuvkFIN7pdgK+zcJNJxpSsOVEXEERQ18y74u37i1MNV8YUMcJzkj0Esb/0JyGgIDbCPwpuGupY65j8Pcv1h1Ig4azrSl4RjF0X/yF/lyygKnEdlwHnh8kXBlMxwzboyuqoY+1Q0kercBcxrOSftnmM9t1K1ooOFMYxquxBlyPttKvqpUl21bAkyJOCvhy1bI6jHtpK1/Iv0JbaVNB0XgTcOpeBNglqmaE3HQcKYxDcd6DvsP+Xu6ey7ThDIkgcUZbDnnZMi4M5rm9OSEIk4C2Qa8+kZ8M9w3jL2q7lhp/+JAw5nWNBz3aL5RPMHYZhWfH78UeGKuvUN43fQ5t6aTtv4/A4YXmII3DSe/Ge4b3i1xml7a3oCGM81pOP4tcdkv8HzF4B1B/FIYOJzBnnNOsnS3Hv2T7oaTNh2UgDcNp2atgLkFnpX2Lwo0nGlPwzHvDbjlb7ZnezMU69zF45GUN5sgq65Gz0nYIdkHNS4ATljTcIryU7xd4hQ5+gY0nGlPw2WV3C0iN3/OVnfhKMKXQtYO+Sha1inaJOTcGi35h/SBhyzvNuB8o7920t49wbuaqnYuhoYzDWo49gOOM53j6ywil1pgWcDGSQ2cZL3qaGkv0id7oEWFAlZY+996ae+e4V1N1bN74g1oONOihuPuW52pLdiqLgQT3iwh93L+bIC8xRcd+jpj34TaxAKgZMga5dNoeZH5ganF0w+dtHsRoOFMixqOOxHn86xj26GRaVcOLLlFbQdzNsaQc290bJBJzyUqe/4CHli7FFhp795grebz0t5FgIYzTWo45kScz7MucNllKWKXCMf8oUMnNEveBppO2vw7Q7L5KlqzAm5C1hifRt0rJmtvVD1lTK9Aw5kmNRxzaWrm/M9mF03w0mApJJF0qH3ychQaNshkvKtZadtBAXhqrb5RVdDwDWsNrpP2bhxoONOkhuM7COFBXn6IrQhctNKOZbaUdGgD5N0cBe/lIdl4HNKwCfq8IT6Jl3buE9ayBqW7D6DhTJsaTnOzHLbWJ7K5/YHBIyvqUfPkrX97afNzpm8NWUTADed6jMq1RdZNRFbau1Gg4UybGo63qiFPw/VcZnma0Clyy4p61Dx5M778e3mfbryOslrAC2enUJ29aQZGj3W+90DDmUY1HGvDwzwNF7jMkp1VOF4Bdc6TzZC5/u0qNl9jEgVQM+QN8Cnk32BGYa3DVfmjgYYzjWo41l45eRqOzSxLE7pEODbEeVGP2ifvwBDpkw4y3tPUlRQCBjgfAk7auQiB0WeVr9TQcKZRDcenlG6Z72B8pVKWKHSJMOw98bIeNU/mWpMVNT5ns5MTtRyUoc8b3lMoTcPx6laVTkPDmVY1XGBx64ccw/h+ZB1R6BIJ9B6hQRwvmaU/srcnp5FCJ2o5KALfmYaaXwLYDuO+KXiqjwANZ1rVcKytcnQaRhU6PY5BwzEz5N2frlLbpVeBQQkYKxpUFqV+w1maqrGqARrOtKrhWDd35hjGV21BFbpEGCIODcdM5mCUnNNznlUqN/YAYhgzUl7atwkGPrc1SldoONOqhuPs0J2lloJKqwhg6MmncgNGS+ROgJ2c6UOdZoNScPYIVahl/uBMxDlp5z6BhjOtajjWooYcuwaVVlHQoEvNk1mI4sUMz5m68WqwBRjbS2lcU/yDs7GxwoURaDjTrIYLLH49yHoG8JlFFblUGNYupF1qnj7v/sgtroQMq3He/RZglDKdtG+TcPZG7aSd+wAazjSr4fIOEpok522EcY2XLHSJhPZcap7cTYxeyO6smXsvZDQoCOOGaIXZqGc4txHp20kKDWea1XCMhak5v2HG/j0dVegSYXj/E/ZoA2RmK6SWJXPe0LCUugX6vIE9hZP2bQbG9IW+im5oOAMNtx6lGs5ShS4RhogLe7QB+sw75ESszko1YCl1C/AtpV6lXZuDsydDJ+3cO9BwplkNxyiWcjQco7S0VKFLhGHqEPZoA+RWsckktfock7GUugEYdYz+d4CBz3l1i6nQcAYabj05py0yajhHFbpEGCIu7NEGyG5m7wSMzkrDYSl1C/S54zpOJ+3bLIwPGXWLqdBwBhpuPT7DLMafV45ZFDA0ZELKhJ3czTMSk3qfY7DqxhCACL6lVHUq5hPOqoZO2rk3oOFMsxqOcRz7DLMY95uKP5wCOdBw7GS3BLXFTc7LHR6K2wuKw7iUqm41cYSwHfeh4UyzGo6xEVvOMA58ZikveQcqyV5MLT/ssnLZ6nekAwL63FEdR/MZDb8wntWgLQ0JDWeg4co6F/jMwu4xkEB2ZtgWNjivEb14thoUgG8pNWczdDGyX8wm6KSdewUazkDDlXUu8JmF3WMggex39tKJuLwtpVhK3QCMS6lO2rdFMG7ZcdK+vQINZ6Dh1pNjVeAzS9uvC1RB/ju7LWtvVo4FS6lbgPG4qRqWUlkXU5UlIqHhDDTcenKsGvjMwjIRSCH7nb1sIi4vDYffyBYYcod0FGUKJgbnYqq0b69AwxlouNVkPbLYrLqh8xVIIv+dvStobV4aDkupW4Chy9EvTtq3hTAupur6CUHDmWY1HF9/uKxXMTar7nREsQNbIv+dvWRyKy8Nh6XULXDMHtFR6lhKZV1M1XVOBTScgYZbjc8xi82qO9p694Aq6LMHXlfM1sw0nK7nD+AhZA/oGNo6a0RhXEzVtdwDDWeg4VaTlUtms+pONTMM0ER+FV+5RFzmOSco3d4AjPqlnrfkC18QOmnfnoGGM81qOL7y8qznAJtV+aaBrZLfTasrZGlmGk5XCgHwwNhZpJ4JlnE92Un79gw0nGlWw/EdTJplFptVD1B1BxLoqxl4mb9qLKVuAb7OIhW9AzDWdaiqzYWGM9Bwa8nrpMBl1TfXWrbcAk0QJC66IoZmpuEqSqOAdPiWEWt6Rx7YoqCqMAgazjSr4QKLX7fcd/mBy6xvPE3wwLbIH5Vlnm6ZL2YVpVFAMl32YI7ipH1bQc8XBk2vQtBwBhpuLXntcdjM+gaJOJAAwepTV8DM3DQcllK3AGNbjZpmV8YwaKrsgIYzzWo4FrfudFlmBTa7vvEkwQPbgmDzTInDGnL3R3QFbATS9PmDOUJVdf+M1bmaNsRBw5lWNRxbQj1zPSZw2fXDtSMJH9gWQ/7Is+xG5qbhqnoEg1QIxnKEuvK4fNsCNW2Ig4YzrWo4tvryzI0/jGegfKPpHQnUAkEnAv5EXG4aTtMSEOCCcTucrlOm5uArz9W0IQ4azrSq4djKUjN/x3wtT4gMBFuE4sFnmW3MTcNhKXUTMHaHq2k7HGsgFL0NQcOZVjVcYHHrlv075tdwKGsA6wn5A487EZf70ymxYw+Iw5d+qmwtnnFDnKIeK9BwplUNx+LVLf93zPhyRGUi2CAUVWyW1cLsNJxjNQ8oAd3hfhnYIqGoSQ80nGlUw7GdlpqbReY7xvU/tc01QB6Kl3beRFefax7y05uAYCBHcNKuraTnC4We3xI0nGlUw7El1LtMwxgT3P9xBBEE26JXPu6yd+zhzWYTML4kK9rJvwjGDnF6Nl1Dw5lGNdzA4hXFOiWTYa+4/AiCbUGxyM+5xNLnGqfnsQMY4dtwrKmjxiIYj0z10r79AQ1n2tRwbKM3vyAncJn2gsuPIdgWg+phl52Gq+4JDJLga95UX00MWygUxQIazrSp4dQupbJuUnjGZRsKtgXFb2Zg2yeT/Wiuqz8rSGUgGMbjeGnXVhPYYqHnjQgazrSp4QYWp0hKPvmbi3zj800FW4KkN6pnMi5/pq5tMxNIAh1+n2B81nTSvv0CDWea1HBsDTxcvm0lClMfnPXUDoEaoGjKwNWcMOQapqgbAmCEsXdTJ+3bahiDoUbQQsOZJjUc154IiidUkcLUBxekHsAKSMrYPItp+RO1os7ygBHG1JO0a+vZQlEDNJxpUcOx5dNJ2hPw9aB854oHF1hOdhPdBx2HaYNOs4A6UNLwDFsw9EQDGs60qOF6FpduRA8CNutGCCQWg21AMjI52rDlZwjPDFYBhQz5IzhCjUUxgS0aaooaoOFMgxqOLQ1H8+7B2HlxBI9dcWAhNNMh/Qr+bsg2ypEbBTTCuFOlxkUNvrNj1ZzUAA1nGtRwPYtHZE6V2xD3YHAkVoMNMFAMOPpVlvw9TmqyBoAXxooxK+1bAsf2wwENZ9rTcGw/Y6rStnIb4r65WCLDQePQTPmW2CqCfXo4Z2sjMIoWLYmnNTBKWi/t2w/QcKY9DccmkRyRgYwJ7ghBTSU40AxNipi6jUefbxIqtDcC39xaZSqXcc1Hy2sRNJxpTsOxFZeTPZoYK77jxrsaXyNBYWiq+hypTQTbW9EcbiuE/MESQU0h5ipISs1VxwMazrSm4fgEkiOzcWCzcYLrqSNzADQKTVNQ2ka/Id+gGrejgxT4NEuNZamsp3NLu/YDNJxpTMPt2FZSCd87yi+mfnNBMg5MM5AMNE9oEcUcjWG/ERjXDr20b0n0fAFR8qOChjONabiexRtijyQWU384Q8aBCYh2InR0FhG8lKE53FZAWeobjMdWWGnfvoGGM21pOL6yJNLnwMBm5hJPIONADKJEBt2vhaKbIip6tgJjWWqdZTGMolbJBgVoONOUhmNsn9tR2sn4drSIcCR1B7RDTzPCLJE5FOd/oaJhM+C01DfaPzEVGs60pOGqGbBsJ0ksZ+gPSMeBD4imxAuRORQPZU9kC1BPIBgu49T6IsAWEC2FqdBwpiENt+crShqI9Q7fycxruJywygTeGGjGliMxhuRlpyMxBVQAX/t0JYplNXzPRKrXtEyg4Uw7Gu7AN1zJ3WHcprCScEI+DjxBtKWIpr8IxbsOKhq2A8FwiaClpe1aAl9IpF37BhrONKPhOI+Sp+8NNDBau5rLyXXkHoI6odiBdofiN0MyPyPXvBkY96h4ad8SYVzx0fHuDw1nWtFwnD3XqFdSDa/iTGLoj3VWXgFieqIRRTCcBgIzat3IBNbTfhXmappvLgINZ9rQcLvA4gWjMwOnwYlcg+dwFVQFVWVQ/g4ikmVdnx8RUAmMb8ZW2rdEGLut6EhwQ8OZJjQc51Y4pqeAukTcL9ggt3UC0UjKneNpVnU7ipCAKmg+6bQextSkl/btATScaUDD7XirPJnqbwZWo/O4QMdtGKrXi9wtCD2FEaho2BAkI2YcaddSYdRwOk6QhYYz9Wu4I2sS7nbteMxWm4j7ATpus1D9oHyWFTRrujoWfEARAsmQGUXatWT4QqKj3Qo0nKldw7mBxf4CnvD1MiIDOm6TkC1JdTlWBAoLUNGwJfimVCXN0BJgCwk0nB5qjgG7gmOsR9LTI24S6LjNQdaiIWeWp8lTe6qYgAogGTKj6NArKQx8QZF27QE0nKlYw+2OA4vtz3C2dtRxWMMSoOO2RU81cNJXMona1HV0QQHqIRkyo9Sr4QJfUKRdewANZ6rVcIeexfBXWFPoHe9GPmIuJ8sZDKAIsnkxvayBpt8jKhq2RDXnZZck8AWlk/btDjScqVPDHfoi+ufCm31iLIXnAf3jNgLZxiKfaADR49gSxgRop/k+Gim03m8FGs7Up+H2x1KLkAznM7xSQVnDBwHnObQPXdF0l2ZAILk4Kho2xYFk0IzipX1LBhquWteWU1EM9gcfyi1AXtnFCmPyn5PrGeerNs5ANVbSNhIRdZev9YAkkETrciUJxqB4ad/uQMOZGjTcztqD96Fw1opfwlW4mvrHgDKHlqEbmC7h6kQFDVeM0E0BDTdC6wvM0HCGScNdAg1yq40lJBzrjlN+gseyaqMQqahbmpDqaS7NWVQO9EE0bMaw0r4lAw2XgpV2ax0sMaieMhKustrUT6490nFN0pMNkfVH8lBNyx19WIBiAtG4GaHeSY5Rw6louAINZ6DhRrmUyjAx7sMtRTh2hYIFikHW5zdhPiRKvqt4xIByBJpxM4a0a+kQ/pDfUfEDg4Yz0HBjMDcVeabeLXFPDGge1xp0xd9rmyxS/SIcR1iAXhg33ki7lgFfUKDhtMASg7oJJVPnQdpbGq49jhdvCcK50a+6MNX2AjQW2Ro042YUadcy4AvKVdq1O9BwBhruk7J7oXc1dokb5Xp29e4bAW/QDctrt+a6geiqnicsQC1EA2eEeo+8b17ZQsMZaLgPXOEbsK+8ruEFyLhWoOvzu2rRhWyDKMbh1qAaOZ+oWDVMZOALi7Rrd6DhDDTcG4UKUp9pSsR9yTgsqjbBQDcklo8IsqYmaCyyNVrfvZ9I4AuLtGt3oOEMNNwrRbfC/UKY8lAB9sa1AOGoXN4kjuas+xsai2yP1rtoJBL4wqKhPSg0nIGGe8HL3IPWRNy9UrWTCSWggq7P7/KsGNmMXPNTFyQBDTdK4AuLlfbNQMM9YIlBnQxW6ia0J+Jutwu2xtUNZdsbu+ySA9X1kAjeHK2fSJBI4AuLlfbNQMM9YIlBlfSCmqNFEfcVUSsXUZALZSJuWPTbIlONaCyyPaDhRqFr9PiBlfbNQMM9YIlBhQyyr+5tirjbcEQyrlp6woGw5MitPdnVHHdogDqOZKPnAy/tWwaMTeSttG8GGu4BSwzq4yStNRoVcbdbr2HrK0iAtNJvwSgga0m3vIYCNAOjWPHSvmXAGBYn7ZuBhnvAEoPauFjp29CwiLsFJx1bkERPOAjm+6TSJVI8f2iANqDhRmk8LNBwBhrui6uTvgkP2hVxt8EjM1IhpIk4P3cxuu13XYHYAGU0LlZSaTws0HAGGu5rKGrRF7atZr8vXNFspEJIN0TPrKYGsguhv+8WaVyspNJ4WKDhDDRc30nfgf80dmLDG5oiDRZBOkNOr6YSbknHBswtwihWjtK+ZQANl4CVdmsdLDGoBmW6Ykd30rhGlEUbzBIob7+fuBDhSmrNHVlBMo0XYKYCDZeAlXZrHSwxqAR9mmLXS8eEF30RB1PQTpETCTLCVVtbLDpAEdBwo0DDJWCl3VoHSwxq4Oo76diPwdjmSAVQcVURKO99fDX1QHcR9PfdJoFuCL1jpX3LgPCX9Y6X9s1Awz1giYF+BrUnQbVc2fAAKq4iaOdIH7kK5ZEQrmB0gB4C3RB6x0r7lkHjx1dAw5mNajjVh0B1bW+Ku2dAtepn8EEgvfWR1VTClVSk4TZKoBtD71hp3zKAhkvASru1DpYYqOai/vwnxj0MOlDSkQ/MQ7sWM76aSnmNmmsIQQaBcBC9YaV9ywAaLgEr7dY6WGKgl+FUQ+eB5tdTb8FKxxgsYyC9737kCpQrqThma6sEukH0jpX2LQNGDXeW9s1Awz1giYFS6hBwd3ak3VVV0uNpWwXEx4eM/AIpx7ovHh+gg0A4it6w0r5lwKjhNDTxgYYzG9Jw4dhJx3oNh+ZTcVhQrYOB9K5/rqaSrtbixWCrBMph9IqV9i0DaLgErLRb62CJgTYup0N1k/sGUnGhkw4ymIc4Eeffvp5yJRXHbG2XQDiM3rDSvmUADZeAlXZrHSwx0ESoUL99s4FUHHagV8BAe9PfVlMD5Xd3IgECCiAdR69Yad8ygIZLwEq7tQ6WGCjiJB3gDHYn6eixg1ScfogTca+rqaQ9rZGG2y6BciC9YqV9y4BRw2n4tUHDmfY13O12DWfvrHSc07Ct94q7XQ/SMQZzDLS3/Pm1ivCc1BvScFsmUA6kV6y0bxmgt0gCVtqtdbDEQCND8IdOOtrrOTa/oIoCVe1Qn9dj/391oPxeDc0OgBCkI+kVK+1bBtBwCVhpt9bBEgO1XM/HWtqL/NL+guqltluyOQLtDR/+VDvt6cBWMERAmEA6lJoZV9BwCVhpt9bBEgPVXM+uk476KrogHTJm0GVEOdQz5e9Omj3pt2rYYw2kYCzjt9K+ZYAz7xOw0m6tgyUG6rlU0+33gQ3SAWNGw/ZYECcQ3++fTZC0uz2taIiALIwHFFpp3zJgDIuX9s1Awz1giUENDFX1/HWDdLx4uWBTnGaop8rvI7Fony9Iw20aRrFScwckaLgErLRb62CJQSWcnXT0V9C4ihuqSoxujkB8u++Ci3j+tdIxApI0LlZSaTws0HBm2xruSzn4ivI/bau4K0ScYsjnyqPZDaRfiDTctmlcrKTSeFig4czWNdyXdICK04KTDi+IE4hv9nXf036hlY4QEKVxsZJK42GBhjPQcFBxenDS0QVRaEtIvxhovw5puI3TuFhJpfGwQMMZaLg7VfW2aLlG1UkHF0TppQfHNFY6PkCWxsVKKoxh0XDCDjScgYb7pqo2s9SrUIqo+XTbxumkx8YkSMNtHdp20S94ad8yaLzlCjScgYb7xUvfiDV0vtUTuCDi1NJLj40prHR0gDCNH+6eCjRcpZ6tgCUGNVJVKs4YR9sfVQ1OOrAgAu3x9LQgDbd5GDVczaOr8eMroOEMNNx/qtoVZ+5Lqoofquk46biCCIyv9LlY6dgAaaDhRgl8YbHSvhlouAcsMaiU2nLmuyaTcU46rGCcndp3hpofsoAGaLhRAl9YOmnfDDTcA5YY1EqoqMvINy0m4+pa1N4QahNxVjoyQBzGmhtouFGkXbsDDWeg4V6p8dhOx7jlQQSc2KAU4pMVyKj5GQuoYBxg0q5lENqOCjScgYZ7o0YRZ3bHttZUq7wJW8BJj4xxrHRcgAIYB5i0axkwPhmkXbsDDWeg4d6pVD90p0E6coScpcMJxhmkR8YYSMMBAw03Dl9QBmnX7kDDGWi4DyoVccbsG5JxXjqYYBTGjePpWOmoAA0MfCOs1keC4Xy+q3h1goYz0HCfVCviWpJxVjqUYJQgPTA+QdIW3Al8Q8xK+5YOX1Cg4bTAEoO6qa3FyAuNyLhrvUK6aRQm4jrpmAAVBL4hZqV9S4cvKCrenaDhDDTcGF76puTRtVDioGKGAB/00gPjnarfuAAdjZ9IkAbjO5eX9u0ONJyBhhvFSt+VXHb1Nxw5SMcQjMHYhiuNTjoiQAeM3Qu9tG/JQMOlYKXdWgdLDGqniZW8Q92rqk3cgwZR1uj3JB0PoARouBEYNdxR2rc70HAGGm6cRlbyumPF6bhG7kFr6DpxC0of/MDYvNBL+5YMY1CstG93oOEMNFyEdlbyDqdad8e1cw+a4ig9Lp7x0tEAWsCBqSMwJiettG93oOEMNFyEpt7vO9cP0gFNYGjpHjTEID0w/tPUzxRkAQ03AqOG66R9uwMNZ6DhYrRW7rY/nlUtgi3BSwcNjKGov4iTjgVQw45vmKk4kiCJni8o0q49gIYz0HBRGjx4vTYdhyyLToL0wPil3mcroIdxoEm7lkxoPCbQcAYaLkq9+fNJqtJxrSVDG0FNfxHsmAT/GfgGWrUvk4EtJDqej9BwBhoujpW+NWzUo+M66VCBMU7S4+IbHY8RoITAN9KstG+pDGwh0fHjg4Yz0HBxdAxSLjpXQ70qEnEqUdJfxErHAWgCBzV8whcSHY0ZoeEMNNwEVvresGOP50E6ytN00iECY6joL4IGguAZNPn9pPWQQMMZaLgJ2k7E/bI7+KAjrTIGEnE6GaQHxg36HrwCDfcBYwm5jr2o0HCGScP1npFQbA2wwdLUCJ07hVJRXQVKU3WioL+IjsUcoAY0iPuAMSRW2rcH0HCGScNZZqP3Zc6Q2lgSSOXKqpeOChhF/BA3qHvwyp5vsNWq4Rj3POj4+UHDmUo13Bc7F1hMf0HHOC2JulIHtADTiXh/ERVHbgNNMI42adcSYVxelnbtG2g4U6+G+8IGFuOf2OZzYqfqiFUd+y7AO4yPhyVA24N3GLf1Vvo237MF5CLt2jfQcKZqDfd1B5m1xnYfFLuDliNWUX2ok90gOiystP9AHQHD7Q2+iChZXYaGM5VrOPZswHaqGkboyuw6nKPSV+DmOUgOCiWPEKCJnm+8OWnf0hjYAuKlXfsGGs5Ur+HMnrUvxuZr3w69eN8RJx0DME4QHBSdtPNAH2gu8g5fQJRsM4KGM/VrOLPjXE/d7mLqf6RlHBZTlSJY1rD5dyswAmNmuM68L2OlrpX27RtoONOAhuMVcZteTP3j0DOGeBYspipFrKwBfUXACIySRckW/pUwtodT8guEhjMtaDhWEYcX/m92Tq5U1Uk7D8YRK2tQspADlME45KRdS4KxPZy0az9Aw5kmNByniMNi6h97qTVVLKZqRaisoc6kCGBn4BtzVS7InNjCoWVtGRrOtKHhTMenLrrCrmhm5we2OE9wlfYbxAgS46G2KRaUgnE4Vtmmki8eWo4wgoYzjWg4xoV/LNu84Aa2SMex0l6DCCJlDcjLgnFQmPrK0Hw4oOFMKxqOL2uMB8YbAirOS/sMYgiUNVw7aaeBUhzfqNOyeLgKvnBYadd+gIYzzWg4vleO8q5ox5feF1fl/LkNBMoavLTPQCuMhak1boxuvywVGu5OKzFgG68Cvmhnx7dXdpx8i22+12AMxufEODU+TCthb6UtyIVx3GlRLSvgS0uq2aIMDWfa0XBsB614AV/Usy/baSS7KMzfbuF06Ag8B2+UPo/NSjvcIHvrT2G41V/BxTgtWWnf1sO30UHNygg0nGlIw3Ftr1YzXHVRdCOUy7V2+P6e4Xy0+a6DZ3ZlV9axP5WSnXU+PAkfLeWGqfR8A89L+7ae0H4woOFMQxqOS1WoSRsro2QqLrfT8ksfs3A6VLguohfGRqKfoKCBiJ09nsKH/K79AAzGsVjhy8PAFgwn7dov0HCmJQ3HlRCosrtjAXY9T7xHyM2Fflg69A63lYqS6+pe2tkGuOfeYnOlkzYuD8bdmfXtw9zxBUPN5AkNZ1rScFyJdHSIi1EsA5OZCx2fzK5nb0nCsHUYqwHfqe9BqorO+vO04q585wijbKlvryCjoJV27Q9oONOUhmPaEVf7HhFGDqX2QuUt8UzUZwVvK18+UkC5vZFW2tVq2R/iybdnOmlD82DMCVd3UsMGShqg4e60FAOeEjmczhhnX0jE2Swrw/SXX7BBLo9iTeIq3JOkgL07hcUh9tLW5tGzjb3sTbnF4asY1xMKaDjTloZjOoJbxpk6KCTist6Bl+RnoeNyKNQkrvYd9+XpDj6si3Hlq9WM2zuqe5cf2EKhJyUJDWfa0nBMo1bKmyooI+J8jolL5/XLyXU0QdkcPefN/wM7U1ews/6c8ttUs109Cc63CWnfVsK4N7CT9u0PaDjTmIbjOT8Aj44pioi4rOT9mj0yyMclUaRJXHWJEDH2rk/eGFb59l/KAfeGlfZtHUyrUjdVuVpoONOYhuOpkNOz+q8SxoOm/8jZRLt6UEDHrYfvgfGfujNEpUhMv/1ReT/MQDTYRvDSvq2Dr6RB0bZUaDjTmIbjWUzVU4WjkwJliTm3ICk5+6XjyOKzCfiP3MKr1By7w4rihSh1D3zGo5wrew4EtkAoWpiChjOtaTieX7CUN7UQWKL+TM4y2pB60YD+ccvpuFdTB+RGp/jSb0R9NepeTOVMCEv7tg6+OChKiEPDmdY0HM8vuJNypxIK7IZKNy5rff16PiqasFTD3fDZSjuoFzr9dqfuxVTOLr9VZSi30OEXGu5BYzFozJ1K4N8NlW5bdmp26B1SQAsIBLc5jqI9OKqg1W8PqpIqHzB2+a1qNX8LHX6h4R40FgOWbTlezJ1aCBxhfybdtIHi8peTJYtVq7CupqI13BjWcyiWuhdTGTfEVVUYHdjC4KVdewIazjSn4VhWdKp6/xKB6Ziz/yRbRleqjGXVGXqyUH9yRezf2B+5ykjqXkzlXBPopJ1bAV8UrLRrT0DDmeY0HEt3kczksQssqFKWPUfcn0g2jPS1fOjRdSQKb6NAJOKe2Ll+YIx11XqZc0Ock3ZuOXzb4VRJfGg405yGY/Enc9Qy7UxQtUOIOxGXbBj5YlNAOm4U7l7PF4i4b/YsC6jPqHo7XA1jdFRNudNsojscNNyD1mIQOPzJM4np5+RJ4kVFz+PkL6lmsWhLpOM+2XELC1VbqaXYub7AiRiK+vAnwLghTlNF5gx8P0dF3eGg4R60FgMWwZTnzyY0HM8RGX+kmsXW8QLpuFfYJVzte+3z2R8LBPlB1UObc0NcNSW7jCvKqgYHNJxpT8Ox/ILzfrqb0HDMD3GNVg19NVM6Oz1jnP/w0l4KcmDdAfeGqlTLahgDU81rBN8BiLqStNBwpj0Nx7J45rNM2oaG4z02NdEo9nrZs+sog1grnOtXTzhpP2XYubwjUFdTVRONDwJfYFTt55+iZwuBLhkLDWfa03CGY7bLG7fb0HCc9WDJGo5XWH5z8apWFyQoEeYHG0x8dsdQKrr/qXq7J+eJIbUMQD7NrysC0HCmQQ0XGPzJ2069DQ3H2+c30Sb+k9gfbHxVlf+Yjl+21iau3Ba4V5y04zlwbs3VlYWKwviL1CXvoeFMgxqOY1knL4W+EQ3HemBmok2cJr1x3uyJXNxdRZ7Zkojbn4ZygX1FVf+I1TCGrZLF1J4tAMqqw6HhTIMajkVKZFm0EQ3HWpmaZlK5BNGDy7EjjWgdlJRw22kTJyjgbtVIlQicuzPrSLjz/SSVlbtAw5kGNRzLXc16+9+IhmNNeqVZ1HOaNMrltKFE0QP+xnBvEd6AiJMVcHesdAhy4Hx1qyJDyRiATtq3V6DhTIMajqUUMcuhrWi4wOPngzSLBkaLogybknGlJVwlT9EM5AXcrfajGjgzwzW8QvRs3murWIaGMw1qOBaPfI5BTBvFsmzigHEJI23qYO47HOe6nRqHQlUjz1SyrzyJzg/lAzqCtmf1OnrGyDhp5xbAp2G1aXtoONOihuNIDPgcg5iOH9b2c+IsakjbSctaZTHDRmRcLxFbdSOfiE6oCnWMTjoYOXAuplagbhnd17bEAA1nWtRwgcGhrGocJg2nrEKIzc90X4WfiBuQcYV6+77jpP1mYOcEUppxnHQ8cmDtValNxnzSs/mu65AGAw33oL0YcDxXoOEWwLh0mbQHirfr8CIal3HFevu+46Q9p+bQS4UyQt0L1pxyWH1kGOc9dRlwaDjTooZjKSHIMYhJw+lL6vP4ecenmFO4s0iEhmWcmISrbpadZn8qe5TWEuruLsI5Mq/aqxoYt5Coy0FCw5kWNRzLozvHIK41RqqAkcHk5y1Rw/V89qzj2malqljJyK2lXr/dcRCMY5yqA8yagnfS3s3At4VE3VIqNNyd9mLAcltzPOI6eJ0qYGQw+XlL7Cw58NmzmgYbjpTt7ftOIyJO1ya4Z5Q1c11JzxgZfUrmBcZtyeqWUqHh7rQXA30N4jgMyrWJA74XQJtgjWSaaIzGTnGQlXBfIq6TjkA2GtdQ/1C33XYVrPsorLR3k/R8jut7b4KGMy1qOH0N4jgMuik89iUwOZo2oCQ7i0QI7ZypWr637zuVH9iwc+IRnEY6QHlwqmPV8pZxGVnfDmxouDsNxoDDI6/NoFybOAhMjqY9T3SuUp3VKe8k5CVc3SLO9opTcN9Y6Rhl0XOGRl8+6j9MpwLdUbi8Dg1nmtRwgcGjrFcvDoNuCg8dYvLzlqbhtD4kW6hw0CDh6hVxO6VlDK946TBlwbqTQnN7EcZpr5P27RNoOAMNtxCNGk7d3loeN29p0Wfc2pvNUPvWOCU5TnVvMUuwvXTYlqF6xXCegTM2nbR3URi7qmj8tUHDmSY1HEeT36x2SVxPPG1pCCY302YPxjUFCs6OOvoF6aWj94vmhMgoOzdIx2wx2qaXdbBuh9U77gY+p520byNAw5kmNZy6Jr9ccsISBYwKJjfTlnUCmzVEXPta11R76dD9R+/DdIy9/l1wT9S9c5Oro9M3nbR7ERjTcCq7PkPDmSY1HMs4znnecmk4TxUxGvgqolyCNWzGEHI51pjrEDokdZyKRJwL0sFah5cOWB6s6/1ah93A57K+5nAGGu5BgzFQ1+SXq1mRsh0rfDvQbII1RyV7tmboU3wTRfCErTG8dDyW0fmaUnBfc4u30iHLhPeovU7avVE4f5udtHNjQMMZaLil5NRVs4kbspCRwDdpJhpkTyrKJ2cYfEd5F7hRJuF0btN5p5Y6hm8up0ON+eF3Bs4YKXt//oHRZZ0OQ8OZJjWcugZxbFszLFHAaGCrIsgowO3cuYL8R0VN49RJuApEnPZuvs9ce9dJx4sI3qomK+3eCJw/Tift3CjQcAYabilZhdUcBt3RtUWBbfEys6i9hnRcLck4hRJO6+Plh5oWUcOx1jKbMXirGhQeWrAb+NxVWdEADfegxRhwPLKzUskDg0F3dHWIY1NKPtu0GtJxZ5vtJjvazqD9wUnHJcq+l47NUoa+iQXUZ3rWgOk7tYAz8eilnRsHGs60qeECh0/qDLrTEUWMAr6yVEti3+E0sFlIw6C9TFX6nPsoTjoy4xyCdGAW0lYC7hfeNt9XbT/WjvPX2Ul7Nw40nGlTw/UcPuUYxNaNwRNFjAK+kgayyXJ/1L6qqrpnnFoJp/MEy0ra+TaYgPuF99eurb8IZyG+Nl9/gYYzbWo4lpxyjk9sPcM1LaayCVVSJ3dOec+Ri6N0lxLFEu521SbidnVsg7t4bYGjhHn3ppX27wXWrKPWUQINZ9rUcCySyWUYxPfzUvTbGrh8JH8HPOhul3/VWd+gWcJpE3Gd7hH2w7mZEtQYA2v8NL1B8/qqs7GIgYZ70GIMWG6szzCIb6uYnhw3XxUYx+bhve7NcQrrG3RLOFUiroZChmtfTz+bdJgPTfbS/j3B6qrasQINZ6DhFpPV4ILt+adnYy3fHML0cN57zZvjBsfjdSqsG6ZJ0CLibJCOxCzDSUmsuNkxj1o9YWStGNeVcHwGGs60qeFYnMpKJwcOix54opBlM3B5yNiZqNNc46BqSXWnOFC/qBBx+ktR294C9wZzIm5Q8wrN+vt00t5FgYYz0HCLyZISfMeEa3lF4tvyl9nhdwbVMk5NlWoNEk6DiFNfino5dtIxKgrfLpZvtHRZ53vA3PQ8Y0aAhjONajiWJ06OQYwFUo4oZpnwVXs6btM1y7jA7v0S6pBw4iJOu4LbmoC70zPHVMdOMd5OeE7avTjQcKZRDRe0OcW4W0HHSxLjuTZdCfP1yrjBia/X1CLhZEWccgV3lh9HEvAeuPU14jppDw33tj8dT5hxoOFMoxquV+cU44/M0cQsj57NvVLnEuqVcdIb4+qRcHIibucHadenCNsUcHd65tBeFEQ2sHropN2bABrONKrhWHay+hyLAodF32goTWXMMxbccdIdBz4/sui7clF4pyYJJyTidDf03eIS6n+4E3EK2juxboZTnYaDhrvTZAxYmvxmiYnGjyMOfN6VfSar7RsXbNE4/KcuCSch4lQruG0LuDs9d4g5+leugfk0Cifs3iTQcKZRDcdyZ7Oai7BuOu2IwpYM31GpnJ1FIuyV9tiXKW+oTcIVF3GaFdygqT2NFPydDZ2of8zNt1Wn4aDh7jQZA5Y7m7Uxi7XGXfokFM4ttSIrFYeez6EMBPr+1ifhCos4vQpuM41852DuESdcDs19fooT9G0eaDjTqIbj8SrLItZnoXA2n/MUeaHa/Z0LjE4lM/iymx9rlHAln6lqa1G3cZTWMrgPaxAVcdy/UN1pOGi4O23GgMWrrMcn675T2QJ3zv0YglOIzgqHa0kVV6eEK/ZMVavgNtpHJAZ7Ik6uroz9F2qFHFsINJxpVcOxjOwsr3i7MJZqwDEGazJftg+6yq1x5VRcrRKujIjTquCGzVcxvLMb2IMu1GGE/RcqvU1nDmg406qGCxxe5a1OcFj0HzmtwztBim/pcZwLxamUaTVSr4QrIOLsIO3iKFdsghuBuXLzjoiI4/+Fah9N0HCmVQ3Xc3jls0xi1gKOJG7r4Z1GJPOLv6hcUy2g4mqWcF9ixnHGxgZp/0Y5szpdMYE/9gIijv8XKt/7bgZoONOqhmPZAZE3oFl61v1HalttYPVKuvXSD1bhmiq3iqtbwt0432r2Qdq3MbCGGod3J8s3xWdg/l+ohvbx00DDmVY1HEvyPG9vAPvBfSIirud1Ss0csnP6JA2riuv0+bsWxxSZXtqxEa695fG2EfoS96BwO3L+X6iSV+gJoOFMqxqO5dZm1khy/+QkkvmB1yVVqfz9SV0yjk/FcXedKoJjCMyul/ZqhAvqUGfg7y9y416/f6PAL1R5X5E70HCmVQ3Hc35nnk28p9rdBEQcezJf245afU3jmFRcExKOQcRpPJTh2mv7mWiEeSvLD76YPwXKNOQf4/NAw5lWNRyPW3lzJeO58D8UFnH7gdkfhYXtnbpkHIeKa0TCkYs4py8uSMEtpMzegHOZu1EkG6xqFSQCNJxpVsOxTLaZbg0cNr1w6ShitxD+B5or6M1y1O2M66mfG81IONrnkL52IkjBLadEWcMXlxJ3pMBWuBoKGgw03INGYxA43Mrc4snfLrzgttoCb4Jqt2Noa/1L3PW3IQlHKOL0FaMOSMGtgX0vyw/8hQDHIj9Q/QUNBhruQaMxCBxu+TybuCtT75TaVlsiJ1HIlRR2ypr0U6o425KEoxJx+opRUYi6kgKnNXwTOlY/ulDGC1YnqICGM81qOJacV+6wLrIIV+LEhl2Jd1q1abhvbF8gBsu5Ur02l9gsXRQCEaeulGHwXb5XW+NQ6u6Q/RbHKJOEEz6CezHQcAYabg25pwaUeTwyvwaaUlu7HbcbuXS6nuyDo3CqmIQLxbYVZpf6KEu63gLJnd4e5Y7NC1x7WoodEFLFSio03INGY8BzbzONKtKk6OsVKu9g1zlsmYev8jTcN7rqGwab71ApWy+7Qr+GW66IKzTeF4M6hlTKjbjb7cSxV7Hcin4dK6nQcA8ajQHPve0yrepZrPrknGtonGIvgo7NBVJ0LakGm+dNmS5at++lmnK1ExkiriuXvFnCQFu+sjGKrabeyAuNTNEV/UpWUqHhHrQaA5V+8beI++HqCUI4wiGU8qCKNNwDXUuqWfK9L2Xld/10uUfqkJi7UrYR7uIybi4oV5v6gFbFFR2KlaykQsM9aDUGLH5lD+3AYtYYNLujXihajMm7HkyLrirV9FWcvpiN7vuC5eon0pruqLqvt7NNvbHgh2K1qd/QqbiyddFnIqv5gYYz7Wq4wOGXz7WqZNEfsYqzRZui1bIf45diS8wLSE3C9sUs/HsXKpcXSRBxqjrCXfnOxt0SxVZCfiHZvVj4jL8quvt+Aw1noOFWka8sBg6zYtCpuP2pqOH6TkqdZ9+XjdAUKTee/fDb/zx1++iLXXTtBssi/XOWQr+5aqsUaLT+xuWYd+/2xY/3szShLgE0nGlXw6lsLlJ8CrlS9JEqLuDqOKrvA00b41YXNxSUcC8rNQWLPt2aeGg6GpVhX8R2CQI38Jx8oobA3Ju/2lQQaDgDDbeObLNKlrd/E7JO5OmcxLlSFSXzX9gdh/LBirCuuKGghHstEi144RXbWTX1Ewk1bQ3VT/kZ+PsuHlcvLcjMvQSJioJAw5l2NRzPzc1f4iufy/96nB+7FFP3x34QsPZWUVnUJ4q2wa9Yfyt4ROrwZlVX8Dm1ML2raRk1t1sMeIfnybCA6/lolxq5d1Jzb13vz9BwBhqutGNCr4HDyXUrjLTHUxCx80FtBQ2v6ClvWHx4bkEJ91lbUPDiy0ScomVUFDIwIPEa/cel97absm5vfR8EDbRlbgIRWh/zRWk2BiyO+Xy75GaQa/CHmUTizh6+ZhDhZ1g1DSZjWDV9YZdlcQ6SEq5sreB8t19F1ahQcDzI/zyHcPb+aJ9x3p+C9NRb12Y4Aw33oNkYsDhGcX62tEL6nD7u84c/K5hAvql4JfWXsu2cpligA0o2vHHSBsyIOD3LqChFZaPkHszKqKcz3DfQcKZhDRc4HKNY5RNN5VdA3Supv6hRcbPd4oqdr3WLloYWbZs4lYo+DAUtmQIKjpOSy/dVkXeysADQcKZhDceTMKewbGCxrBWqX0n9pSve1ynCYKfM7AtacooZUTL7Fe/224WCZkwBBcdMyYNTK6K+uRcazjSs4XjSXR2BZSWzDvXhCCKsBDWnbU70GekLmjGxE6GkGbFSDy13CwqOn5LJ53qor7M6NJxpWMPx/EpJejUFFtPaoMruvlG0qLjYgmrRnUGTe236goaMvifslWySgoIrQi99nxXipG/KeqDhTMMajufuegrTih/aVw/VbciYQ4uKG11QLSrhpm9t2X3mH28KWmoZoOBKEaRvtTq89C1JABrONKzhOhbPaOp2lDww9JFwMrl6tKi4zwXVolu759R5YRH3ao0dSl48ChRcOVCc+kaVKyDQcKZhDcfjGc1BJLuBxbj6cSTh1YYSFfe+oGpLWvV+PMNIlIo+VJ8l5U6+YdgdKLiiYBJ+obauIt9Aw5mWNRzPI4HGNtRFjRKtW6wdJSruYp9sKlpasyTBWvLUra9Y/FlUsMXxBFBwpUGHkScq3cQCDWda1nBBs2s63vyVUeer4DKUqLjT31RdtDJv2Rp52Yfqj01KGopAwZUHIu6PSiUcNNyddmPAs+mM6BAB6dMaNFLrPLIQHdvmrz+V1X3Riy7c5lhYxLmvSx5V/BBxqpYIEHE/VDv1QsOZljUcT4M4qp2fPIOvZq61ziOL0XF2Q+i+9GQoesnFHXkKP1SPOpJwUHBSYBZ+UF9v31+g4UzLGo7n9tIUNRjUpr7TYknqBypU3NUXrslzywO0wYdq2MLA1wr6rd+qnnqh4UzLGo6pCxuZfahtf6HeeWQVOjI/RXFr4rO1h2qwPOMMLGNr422EiiUcNNydhmPA4hqdb9iM8YyjCqt6bJCOdVncuvBs6qE6rAwOIGdT422MmiUcNNydhmMwsPhGVNRg0GDkGUcW1Qo4DNLhLsjq38t2HqpXurkEJKOjtYwYl5olHDTcnYZjEFh8I2yAgS1xvzi6oFaBG6QjXoqEGqCtiDi0E9HBphdEqq1I/QYazjSt4XgKUwdCC9El7htHGNM6UNIujp2kMu5NiDgUo6phwyKucgkHDXen4RgwdTHt6CzEmX0PHF1E60FHuzhmEjvxtC/iUMqgic2KuNolHDTcnYZjwNSnYHGzqwWUPV5IKY4woDXRNZ+GTW6mWPQQifIMlHMIyGejL9NVHnP/AjScaVrDdSy+0R7qudk3wD+uljKeddF4iWrGI6KXtp2RqycbQICITYq4+iUcNNydlmPA4htdl98HG2xq+kLVle35tFzckPWI6KWtZ6Ovff2qTXrpcVEcJx1yAqDhTNsaLrA4d6Odg9vf+zNF3ZXtBLRb3JD5lt9L288DTmXQCk8JnFraWP+AhjNtazim/UbEm1m2LOKq31NLgIrzt+jJXqjppT1gAD19FeNafZsao5GXZ2g407aGY3qzIt0QZ7Ys4hrYkEFBi9viCG5tL+0DOegIp5r9ID1AihEaGYnQcKZtDcd0EALthjizXRHnqANZLc2lAEgSrL20F7SEjiAmgJFdkB4jhaBOQ4gBDWfa1nBc9QIdtaGbFHFtbMggYtfWbhyiNfKWgoJ+IjXQ0oiLcm1nKELDmbY1HFNhKkP+aINn9rWSzaeiC9J3hA6ybY7tvNxgGbUObPsz8aWTDjId0HCmcQ03sHhHeWTqL5vrE+fpY1g7h0H6phBBuM2xERGHZdRqaH49tZl11DvQcKZxDRdYvLtdGUzd0H7aG9ZRx2lkQZW0UqUFEYdl1Kpo41cYoaF11DvQcKZxDcf1a+T4HWypU/gZC0vjtLCgSlxsXL+IwzJqZTT8Pt3aDhZoONO4huOa/3nS0T2Ttdq4HlnC1wbVL6iS94upXMRhGbU+difpUcNDezMvNJxpXMNxFaYOPOZW/rRaCB5qk1S+oMrQ8q/mn8XV0ccD8GMH6ZHDQIMzLzScaVzDcRWm3piaXDecxP+lvVdBcmpeUGXp2lyviMPZqLXSXiquyZkXGs60ruEGFvf4ant2TMeDqQE74ZZQbctfpoM3Kq3aHixPOEAJGkvFNZiEM9BwD9qOQWBxj20x9YtjnY+rZeChtpBKswBsZ6dVKeI8VzRAGere1fBCY+Wof0DDmdY1HNuv0LKZvG+2PvXq2YLWHrbCYeD5wlGfiGsz77Etat7V8MKp1eUPaDjTuoZjOjGV97T2hl7/nuk7xpg1iK9NtjjOaFQm4prcfLRBqi8TvxOYtm8rABrOtK7h9izufXHlfLFpMRUXLGPA2qSyLIBjjkZNPwps+2yG6l6l3mm6wzQ0nGldw7EVpjI/sVrbFYeNcEnUVNvguINRTxPsVjcfbZNdLz2ecmh8Aws0nGlew7HN+4HX7q6lAtXB8QarXaqpUy4hW2oRcc1uPtoq9U7G19bPCIGGM81ruJ7Fvzvcewxq3NQ+ChRcDnV0OLgW2XFTRUYEKecGsUF6WCXR/hZkaDjTvIbjqw/grGr4xg1sxpcDCi6TGtqMlJFwpobj6JCEa5MKVVz7Cg4a7kHjMeA6besL/sl6V/1+2oCdQfmoT8VdytW99dK+ToMkXLtUpuK2oOCg4R40HoMdi38PfAnzq1ZxvS0Qog2g/AjVS8nUk+pzt1rffbRxul56gC2l+X1wv0DDmeY1nOHTQKztRf6oVsVdT12J+GwDzd1miko4zSKuYDoSyNCdapiNh+NGFBw03IPWYxBYHHzgy3iwOw58PnBxcWWCsxnUpuKKH+tulT5GfeE4AAl26ncpb2r/CjScaV/DMT77yiTi7jjFaZgRrj0yEuQoTcXxl/Z8RkKjiEMSbjNYxa1GrtvYBvcHNJxpX8OxnbZ1K/rmbXtGP2g5u3Jh2RQaU3FeIhAKj2xAOeqW6JQujVzc1oYhNJxpX8N1LA7+0BV0pI4l1cuxZEw2hr5UnJMJhLZuvyhH3Ry215YNHra4ARkazrSv4RiLGm63c1lX9M0br0DAcaMrFSd3ppSubr9Iwm0Sp2hN9dpvaRfcf6DhzAY0XGDxUMjRnaZ54xUIuBJoSsUV6+w7Ri/t/R9Iwm0WJdPxVgWcgYZ70HwMWFMXQ/k3cCXzxitn1xUPxEZRc2yD8C5+LT1GzkjCbZmv6Vh2cWTDAs5Awz1oPgacRQ0iZXkK5o0XhtOWJ5HyKDm2oXBbuE+cht+A3HIyUMPhNAgNv4vfeDl05znopN1aR/Mx6Fg8/EPKLXvSsKp27ZGAK46KE1SLt4X7REGPkSAfBaCB7lj8tXroN1eFCkBbdK4fCs8bL3PI+bjxl0Ax5NvcnqRDcEe6x8j1KB0BoIh9OR2HuReARhDScZcT8m+S7IT3RDrpAHyzC5JBQFtf8M7+yD4fY+4FoDF2Bx/KJWYu/dFKewxEd4Mp2gTWy0XBS/sOdLKz/jywDDnMvQA0S/cl5Hgmjj+uwTsr7Sf4oQu8d3sCTfknsSiI13QA1djjifDNesDcC8AWsI5FyV3uMwieWaoQ3AwmUow9Ti8WhNvVSjsP1PM1IfdZUm4IvT9YaTcAACXZ26M/U7wEXr4mEGc7aX/AJ0fJsgYtOSjZ/XA4nwEspLMH/zUlLx6u1xDO/ku7ddKGAwAE6az1/hSWTx0Phsf84ayVNh9Eka5p0LGdX/zYVB1hADWxt9a6775UffjP6fufDl//20mbCADQx87+nzvub4T/6f3/6QPPpCo4iPcWET1n6wcF/eFQ2AAAAACAxajo8SvfXkS+Sd4dpOIAAAAAsAwlZ21Jp6C0nJeKRr8AAAAAWIKXFi1/iJan6gnDLXSSgQAAAABADeylt/E/I3haaC/t+zNIxQEAAABgGkXZpztSPUaky3I/QCoOAAAAAHFUJeEeyJSnivcU+QSpOAAAAADEUJaEeyAh4gRPqJgAqTgAAAAAjKEvCfeNKx4IFT1FPkEqDgAAAACfaEzCfePKBkKrhLshFQcAAACAd7Qm4R6cSkbC6ZVwSMUBAAAA4BW9SbgHBRvFaensGwOpOAAAAAD8ojoJ9+BcqseIdgl3u119oVAAAAAAQDnKk3APCjWK66X9XAJOUAUAAACAMVZ9Eu5BERHXS3u5EC93fgUAAAAAVLA7SeuRpRTIPvXSPi5msOzBAAAAAIBi7CCtRpbD3e1310t7uIYeqTgAAABgs6g7FXQaXhGn8HytSa4HzmgAAAAAQC+qO6GNcbV8wahNwt3QZgQAAADYJl2Q1iAJOK5oVCjh0GYEAAAA2CI1NBQZwfFEo0oJd0NtAwAAALA1aqpleMVxhKNWCXdDbQMAAACwJeqqwHzD0cdD/zkVE+AIVQAAAGArHGurZXjFU8djX3c8bgHnNgAAAAAbYB+kNUcuPXFAKpdwX5ywoAoAAAA0Tj3nMkxAKuIakHC329VRhgQAAAAA2qiuJdw4hCKuCQl3w4IqAAAA0DL1L6P+QibiWpFwNyyoAgAAAK3SxDLqL0QiriEJhwpVAAAAoE0aWUb9hUTENSXhvrhYiqgAAAAAQA82SOsLaghEXGsS7otzlx8WAAAAAGih6qa+MbJFXIMS7guPbXEAAABAK/gmxUquiGtTwt1ugyMZNAAAAAAQ5jBIqwouskRcqxLuhm1xAAAAQAu0009khAwRV/Ex9wvAtjgAAACgbprcCPdEsohrW8Ld0C0OAAAAqJldoxvhnkgUcc1LuNvt6knHEgAAAACK4QZpHVGAJBG3AQl3Q3EDAAAAUCd2EzolScRtQ8J9ESz5sAIAAAAAK12Q1g/FWC3iNiPhvgh7jtEFAAAAAB66Xlo7lGStiDtLG1yUvuMYYQAAAACgZ+eldUNh1p313kubW5oeJaoAAABABWygGPUDtyI+fVHLeg1JvyvO3wIAAADU4zQouOvRlb2gWxyfvrRddih6xXGg4gAAAADd6GgnErriWtItDFDRZebr4X7J3ankNWOgXRwAAACgFx0K7vq9Pa3weaRuWYRKmnT9rQndqyiERbs4AAAAQCdKGsL9HdXZFbXnuqSJRlEJd+n+X/ioYYUbKg4AAABQiA3SCuHB9/LhN2X7sC0QcYeS9lxedqDtNNQ2QMUBAAAA2lCi4N7bWPQlrz0r4oqu7n409FBR2wAVBwAAAGhCi4Ib7LtlRbfzX6drL8tKuBEDlDR9gYoDAAAAdKBFwd3G+leU3YE2JeJ2JRXUeNfhTseCKlQcAAAAoAA1Ci5yMuehpHSaEHFFN+e56N0aCloxweDQLw4AAACQxOmoRf1rKDJC0SXMELOipIS72ok7pmRBFV1/AQAAAEF09IO7M3UkZ9HuaGP70O705UyYqa3QsqAKFQcAAAAIoUfBfdYyvFB0GXNcxPXlDLjM9jjRsqB6u566lIEHAAAAgHR2fpBWAL/Mn+JUtDmaGzGg4Albk3UVv+ho+Xun71YOPAAAAABksNOyq+r2dC7DFH1Bg9zH1QsWxy6ScF83sC9n0gxnu2bkAQAAACCdrpd+7v9nOMzbe6dkozj7dm1b7tKx7Xif7EM5q2YIC+8hAAAAAHKwvfQz/4nl2+IL5sLeigoKFsYul3BfHIZids2BhnEAAAAAN4cg/bx/YtEy6i8lRdyzXQV7+55W3kxFK+IoUgUAAAAY2ekpRb3NVqN+UDAf9rQrrWBRrFt/Q4ueRTbNFeUNAAAAAA+dorTNkmrUD0qKuL+LhmLXdEk3tZx986C8AQAAAKBn30s/4V9IStrsh3L2/VyyL3ZFl3hj1RyWdueS6gUAAAAARnFB+un+QrBpbhRc2Pzem3YsdbmZwxmmb+5QysoFXH2X7gkAAAAAntkdB+kn+wtXl+5K2d1pxeoociScUVXc8EWf5wwAAAAAHux7VQ/4Nf1ERtiFYnbachvwMiWcrqbNNyypAgAAAPkoW0QlOJypL2Xp1ZbSRQNB4kpT4+YbllQBAACALDo9h6L+kLoR7ple2glqFp6vNYcyFYcqVQAAACARW/Kk+EUQtfPvpf2ghUjCGWUlql8MRzT+BQAAAFairY7hltQRLkKxatES0Ek4o0/Fob4BAAAAWIWqM1F/OBFqlYLnbnFDKuGMQhV3cUjGAQAAAItQmIJbeTTqPM2IOGoJ98VhkHbqjSuScQAAAMA8GlNwJKUMrzQi4vp5T1OCM0j79Q6ScQAAAMAk+gpR76w93H4RTlVDtER4JJzRqOJuveVyFgAAAKgdp64Q9Q5RMeoHxRrw8sEm4YxKFTccO0aHAQAAgErZn1RqGrpi1E+PVTq8Ak4JZ1SquNvZ8foMAAAAVMbuWO4c0TVcs87VmqNyEccs4YxOFXc9ocABAAAA+OGgcg31RttOZIyqRRy/hPviEKTdHOGCNVUAAABA4ZH2f2SfjLrAea2+z1NEwhmF/eIeYE0VAADAxtFZh/qggIIzFYu4UhLOaFVxV9SpAgAA2Cyd0k1wd8ooOFOtiCso4b7oeml/RxmwNQ4AAMAG2elsJPJNKPhs7vQK2ThlJZxRq+KwNQ4AAMDW0CzgGA5lmGRXn4grLuHuYfJKM5Y4wgEAAMBmOKitYrhTWMGZCkWchIQzSs/RfXCGjAMAANA+ugWcgIIz1Yk4IQl3x6mNFGQcAACAplEu4GQUnKlMxAlKOKO1SPUBZBwAAIBG0S7gbr1clWFFIk5Wwhm95Q13IOMAAAC0xs6dlQu4ct1ExgNUi4gTl3BGcXnDHcg4AAAA7aC6jcgPsgrOVCPiNEi4O3o3xt0g4wAAALSB5ka+v1xPnXSYKhFxWiTcF1b1i8EZfeMAAABUzf5UgTC5eh1ZkwpEnCIJ90V3Urykem//i1McAAAA1In6GoYHw1GHgvtiN0gHYwZdEs7cV+kH6ZhMMpysdIgAAACAdXQVbIG7MzjpSD2j/OzUixq1+4TuJdXb7dofNIYNAAAAGMPWsIJ6R6odXBTVIk6lhPui01yl+gCb4wAAAFTAzlWxgnpHsB1cFMUiTquEu+OCdHTmuGBVFQAAgGasryQBp6QUdQS1Ik6zhPtir//V4dqj5QgAAACNdPq7+P5HUSHDO0pFnHIJZ+4Z4ApeIC5eYfK3IJ21R//LwVr1owoAAJpndzgN0k/HFYSDdMCmUCnirlU8bCtIxj3ScZ10oASwx1MYuzuXsz900sYBAMBWsT6UfgxmoXEb3AsKRdxVe8x+qSIZt7ndcbNTxBVVHwAAUJz9saIF1DuDkn6+k1jpKL1TjYS7U0Uy7nYvVq0pquks3WMxnLYRjzpwnp9O2sl0YuFx0obpJDYCrLRhm6eSh+V/gpMO2TKcdKBeqUrCmWqScfcTQqRDxc06Qa14m+rWCFxj/gkr7WQ6sfAEacN0EhsBXtqwzVOXhLuqX0T9jy4RV0/c/lB+DNcvJ+k48ZKgpftO2mhwJ9AP9g+stJPpxMIDDTdKbAR4acM2j/IO+S9U9oqvScQ56WCkcahgeFrpIHGSeA5aRa9aDRNIx/k4VtrJdGLhgYYbJTYCvLRhm+fI89NmoLfSsVqLHhHnpEORTHccpIM3g3SEGMk4yRa5OHkC2RiPY6WdTCcWHmi4UWIjwEsbtnn2PD9taoYqN8/20mH7wUkHIgvdBQ7tzvg2ZAWmhsqjtsm7f8uw0k6mEwtPu7/oLGIjwEsbBjQ/H385q24GN0EvHbkH9e/YUrym6qVjw8TulBuZwUr7sHECwfCew0o7mU4sPNBwo8RGgJc2DOh9Ov5QZwruh146el/00kGgYHdUWqfa6M4vOxDE5oRUnCSB4BbOYaWdTCcWHmi4UWIjwEsbBpRviKtvF9wr8hK5CQl3p/ODdCw/uUpHhYfsJNw3Q6MKtw4CzU2cxEo7mU4sPNBwo8RGgJc2DGjeEHepqxB1jJ10+ugiHQFK9urajZylQ8IB4aB10r5smEB2F+NYaSfTiYUHGm6U2Ajw0oYBM7D8tvO5ttHzXVjE6T/nfiUHXRUOR+l4MEB6UFwzaeD6CIS3MYaVdjKdWHig4UaJjQAvbRhQsWXrk7OTjgsVoiKuOQl3x8kvUP/RSQeDHkcrkkOLQ7AKAul9HMdKO5lOLDzQcKPERoCXNgwo6mL2RwNrqE+QpjXWUdsJW0vZaZFxg3Qk6CGfD5p8j6iBQH0nR7DSTqYTCw803CixEeClDQNmx/PjTqa9c7PFRFyrEu6ODhlXf9uWdxhe6SDiZAj0t/IDK+1kOrHwQMONEhsBXtowYIz0rvtnrn2treCmkKobsdKO86JAxjU3Wlmy8hBxIgSOe/mGlXYynVh4oOFGiY0AL20YMMbz/LoTaGcT3Bsy69VO2m1+pGVca+KEaaBCxEkQeG7mC1bayXRi4YGGGyU2Ary0YUBNd5Gza3iilxBxTtrpMkjKuName7apoMkWLNoJXHfzCSvtZDqx8LT2oyYiNgK8tGHAqDhu63LspKPAS/lk54aaOuycUMORxjqLMG7cbG/joH4C2938j5V2Mp1YeKDhRomNAC9tGDDy3UWaF3B3Sgd5QxLugUjfuLZqRli74Dhp77ZHYLydv1hpJ9OJhQcabpTYCPDShgEj3F1kEwLuTtkVv6aOZ1jI/jQUjXFrnUV6zli1XCOtlMB5P3+w0k6mEwsPNNwosRHgpQ0DRrK7yGYEnCnc63erm8j3x5JRbmuBcPGr3OXsj/aB86ewNP251SEpR0gb1auw0k6mEwsPNNwosRHgpQ0Dd2KjmZez66QdL0pBEXftpJ2VoytX49BUZ5FukRi7ePvxhwt3I7aleCsgZA3uZVhpJ9OJhQcabpTYCPDShoE7R57f9xRNV6FGWPaUJGDz61aHfigRZmk3SQkLHD51kT92C/665ud9lSy5J7lYaSfTiYUHGm6U2Ajw0oaBOx3P7ztGm418F1DqwIaNhveFvWdPezbVMGP+Pe7qp167bJj9gmF7r22i7O08E7f9suDPbcW3NDZgoeFGiQ0TL20YeFBwE9GluaO0VnAoEmIn7aYSuFdVnbSDhOxmXy/Oc4/rw+xX+BKegDXY+N1qXcuEjfqdCH7UujnNzb5EnDdUwzBKiRJg7Dt64sBYq1pxDuKDfsbX64Lc7m5WMnfsfoB1QMNtzu9EYsPESxsGHpQ4qmHoDy099BLhV8tbaww3S3fkSce11L5lbgJYWFQ694rS1OpzE0DDbc7vRGLDxEsbBr4ZZibfXMJxwyuoL/TMkW5JWdDBkY5r6ZCGMO3q4veCuR2fltEHkAA03Ob8TiQ2TLy0YeAbzvQQEnAv8O49RBeuGOTpuE7aIzomnuR3VqR2Z0Qcno/KgIbbnN+JxIaJlzYMfMO1mHrd/A64D3jbxCHdOcXhRBf8lhKeYdLTVavzMyLOMnkA0oCG25zficSGiZc2DPwwTM68aYTPfqCAuTjVS3unnaUdaWdpaCl1Og238pk2PbyxI04X0HCb8zuR2DDx0oaBH6gXUy8nNCmLwLuYikTcPPtjyA90J+0FHf2Un6u7unnWsHX3E76+YOpNdm+Zdv96Zy37L2n348qhwLViMGq4rzt18Iy36hHAv7tlV/91WOX317XuVzqy9sTbc13k6148vjktUg9iw8Qnfdv+aXB0aQZNsvv5/kPVLQzXQbmY+qXfNhO39Uw/4rLBW+QycpdVG1pKnW7xvV5ehKmvyyib3rnT21dferpaqb37OPv1Gk5c5wFa/3YxxmtN2hG/U+kzye7gw/D+bf3R0pl9v8LH7zf0qxZ+YsP00++vd77XmxUIx90PnevfHLqcKdaxOvd5L9ZG6kFsmPiV32OP/ccZy/fBTxbQ7mOaCBsRJB/3OQ3otxnYD9xqaI2PmZ3LOJKroTBPvlX49d83OcSvidPD7hjR3BSnvuwmFtgH+qbkh9jVLtHDzLig13D7iZcjmhMWJ4vMLye78GvCMr+7yNUoTxvqooP77DK+dmpY37c6rRrYsa/xK76jm1oAIdk7H43kZQOHexIspgYP/TbLxCCmYcvn3a+nc+c0Ud1JW07HMOFm0vlYk+d2uc/PRz5p/3+i66e+cpg8BWyWw1zB8uC7Zd8UU0TPn9n5YepaweW4shpiDddNO/fF2eYZvJ/fznrtF10jLPF78gi56dPnpi7iX64xOf6uSwffOwtOqRlWvDPEvsPP/uUPUXn1xOWY9Uuevlt99/+TkffWv3u/i3/PMgvjX8C3ySxvMfVKkvfdAAVO28Jq6kr2x/U6rqGl1Mkh6ZK+clg3PCOftL//P63gHpxS5/6dmzL2j+f5P868htv52aE22Oj300Oq4Wy/JJSDSzfXLdwAMSzQAmHe79lDgGdVXOQL/IprfH16/eDu5sfZj7du4TdGjVv258vGxhd9ctp7PpL/Z4k5DWfiAtgtMiba7vya6t4ChtnoRrj0dGvZrTN/LCUBTtrLClmr4xpaSu0n3Ex8H5iUhd3HxyMftD//vWgH6dUnWbr0Uff1bFnwIJ3VcG7R5WaPpqWDUMMtECM/pKrUZXL7m/kcWczcP7+7JQ0lh+m0SuQi/u8aMStenVmZu1nw0vPkgVv0nbE/97N/adaMjS+CXeftj89L7tZfIGc1XHwKW1ZaH7WG8yjMlMXUa/DbKfugoMjBtKlbjrbOGh3XSRtLx5TPNvE7w8R3fsrfyYsv7qd4Wf8meRgWfved67xun9Fw8wfK/l7KrnYlETINt0o23EKXYOrKIqS5+xVm/D4snAwmH8qRi/if/16m6W/L3iB+2a0tm5vRod/E/tjP/qXZR6IQJWF4HNfdrVkNNzEtLjEnvpTKme+ark4bcVekjqpuZvrhU4EmXMks1HENrVdP5cySV4ynDk79/NLIB+39/+ZO73rGrzNyWQ7kidlHy7SG2w/LL+XWuZIMlYZbns/8ZoEgfmWX8Po7rerDtN/Lrzd1Nk7kIv77f/sVviwWcUu15zMLRFPsT/3cH6bcubXLx7uw+Ju/C+PnNVzc6iWKNzqrDqv8Wsvy1xzKSuBNwdsa7j9W2tGqWaDjnLSNdPQsbg4T3/oxPU+M4jUS7mtiWjPzL31zf+I6E5BJDWdXXW/mSlTQaLguYWJbt2Bsh/VXuE0LjDDpd7/iKhP6KnKRh12L07JzF3lm3Zf+Ma+pY385FeI7iXduWKMw1rwdfYu4eQ0XLxBY0h6pj/0x7yacyWqyPych39JZFGEKkqoJwRP741TfkZZWq6fcTP/WqeUc9/7hyOfsWgm3Zj018Vk3PX9Pabi11UwfUWKBRMMtXhF8Yc1TOrmp5np59e13T3SVyEW8WX/o4iIRt+5F4Zk5TR37Oz/9Z+ntUJernZVO93Gznsd89PYsmRajFnWLvUphZjF1CP7Aa0DrFClo+IZz4+Rm6Fys1VVGo1ptTNWjZ7g5NZl8fG3kc3a1hPuaXxcKg1Vv7s9MpvomNNx6V2xS4FdCoeFSN/ku3vWXqLe/LxIdECHyF3e/+5VXif5SIhfxCddYskUmJ0swo6ljf+an/ijnzi3eAzi1cSNm8gINF4/l/GJq9IWNe5tTNN7hdETpQj4543ktSJbScG8I/xldK20WHVOzfs4gmkgyfLzHRj5n12YqHl++yOj0dMVkOiSu4RJaexdJ9uZruJzHtFt2hawtKNEBESJ/EFKkUCxpFLmIT1K+s5mpfv13PjH904n9lWe7cwuXjxPaddklGi5eljD/btvH/tQt8SiDET17P5SjY77sVihU0PBNQ/3L5LFvG+R496WWZeIJnOXm1GOwe/ts5GM2KcGzRMStfnN/ZuLJEtdwKQ+zEtnebA2X95h27FeID4gQ+XxI6ZUaE9yRi/ikRqFz7dv7hO98Yep2xP7G8925RSJufYL7frcWaLj41Di/mBqzibM53IPntb5rOEG90TKsH2sZNNTATAXPC6stxXZiVGZpiKnFVPf22cjHEtfo5jeDZkm4qSdLVMOl7QqyOTdgGbkaLvcxPb8slS0EYiIuRD4edkPCRSI/lshFfNq+mumVuD7lK19x8W+P/YlnvHMLRFxaIPslGi4us+dGbfQlgP+1rH+4cfbOsl9qezCfdf8OjtxiwPp7Qq6lioYpqZV3KMwQ/+L33ZrEQ39OfGRKuImZOKaIEg/BKdDBJlPDZT+mZ7OmBEIg8oMNkU+HtHeHbtT8yEV84gK0nYhUn/aVr8RvR+wvPOedmxdxiRcJkX9++e6oPJyTYtERxL/FqXPY9sYF+1n376BJHA+dc9ImEDK1pJM3F/TxL35XB9RD308alrL4svACMUU0JF7HZt2BJWRquJDo2H/msqYkm4hHd5aEyIcTh8f4cz1ykSHtGlOTOk2OIK6pY3/hY39A00hrZlMQcWbkdcxHpdjckugQ+buWNuFskJ52sC3ASrsM9DMxB2ZOOFPZrrePFh36JC9TkQtQb3nlX3rJ03A9gY/T75pEz+ixOv1A89V/rEr2pdLFAkV1EHc08RX7A884Nu5M/gbyTnn/JCz89ukliujftbQJZ3sULWj4Bk3iwCwTaY5MATE1vXavHy069EnSA5HldPJfOftPOEvDZS9KP5h6sJEF1H5+d6D67h9G/aC+iI8Eim6ZJ6apV1pEMzbuuInxQd00Pyz8+um5MZq/6yb/DOim1AkNz3hpp4F6At/wmRiZdvEnE4nbTnRi8fiTjlzDucx7MEuOhiPSDRM7d5OqC0YZWZILVN8dvwT9RWLJccLrRDR17OOec2zcmRgf5E3zw8Lvn15MHZZ9O6iKYic0vNBJuw20MzF6bOZXh/hX+8VGPHE5OXvfrWO/K0vShv60yrqevX1U41s7eU7HLRIdcg3Hvqk1R8NNv5f+3q7OjrZYXHShOcF9v127JZcYUyZzf7GabsSDIheZf74M/dHaRTcjqpliH/ejn567yP8f8zHWSP2P6PiYrUm9nA73n/Nu0ZQxcql4i7ipxdRonZib+COgnIInNDwD3Q+miU9S+W8Affyr/esnFwzlq3815xCmPx9Z7JhM7PRvE3N3mvjZjiZEFmm481/TJuv6mYmBvZ9Uhoab0g3D8XUVeOfCxKfdeuPu13C75ZcYWf2e/PjvNU6/PRq6w2mY+fCYGysvYmcFzWiWbDrrde1fCxV2bvoi4y8OsU/7sQ9Pr6QOx+7VfD/9MxgL7J3pzZIfU0Y/+fEH72M+utVkajE19sNoqZ/B9iBawFlNXncI0DxTT8nc756YYd+myvmB7D+nPzv9IOrW2nQe+YtYK9CHSSNfP6/h3oTH1/N0+vHF3YwgXcNN6IarG7vSEA9K5BJTd3jskPbJ49U/Ph8mPvzNm/YxdvpPxp7r6y+yn67EHRVY/eQFRqTDYZj6Czt2jdiH/chnJ3MWY3duN6niIuJnOjNy+vyjLkz9wZ33MR/VolMvV7Fh29AJjduDunpmMShrAJNMPMKzT/qYqJRbqeEiJzlOvhmNTpjxbnjXyOtO/FCusQfLnIYbfXxNPrO5K9nSNVwf/cPIOZe7+F/40T+YSuZcRofExCU+hWKY+Po7Y6L+MCUbxn4x5BcZ07tTwy5yKO1u6sczqqljH/Yjn51KkIURj7/opgT72DWmrxJxe27N+WPMR29FPD0SnWTGTQJVEGZGDh9e2nWgmok5LXshfuLJ8vaQmBnE0XYHkys23cgf9NFLjH36QbybnF/l8sRVolbd+N/dkzVc/L3URf8m6uh4omWYiGRsSEzE8v2pG+Ifjbsx2Vxw5PMzFxmX6JMXGfF84iLxHrlTP54x32Of9Z8fnUqQxQd0H/+j9eOji1xkpjnkx5iPGhX3IzanojlcxVC17kmhk3YeaGbiVXaspdYqpo6AeP3k9BA+x5PJUzPyiP1Ri6a6wUevMfJgmdZw0atMZOK4t7Qma7gQ+zM38UdRR8e0zITImLhfffSP3p+6UQ8m3Zi6xXZFmCYvMrVw83mRqWR6ysAelxuxz/rPj67cgfBLv+7P0sbHtIj7GPPROxFfTA0JrgPlDFOjhhmUNYAJEmfbZUwMy8UfnDltZ2IeH5lk+5RLxK/hPj46qeHiGxum8hZTlhGQquHSau+iJSVjoiG+uDZ5v6J/9j4gQtz1KTcmFiFH/mjyIvGF8onf5ecf9dHPTg/sidyC/fx07KP+45MTw3k6rRx3ZCwRF3/zmTzAbfI3+jnmh9hHY4up0TKxbtJ3oJnCB6W+gbIGEEe/hpsp5ppw4GPkx3TH3JmdIfJ3n8Jj8vlg41eYkKLMO1pTNVwf+aOZ7G30cp/TVNyy6aOg4zmst9sc4q5P9XSZUCj+89NTF5kI8JqLTGzynAzU1E6KEf+XOx0fzXMZhRD9S/cZouhnZ555k5v1lscoJkdj3mfvLwZiCPUV+QVlDSBOiA8cn/3lE6Nyt/SDs+8gcQ8+JtnY5D1XN7B8k/KUhptMQcTniI9r0JKo4WIP0Nk9P7Hkyado6KOGzQyJ6B/618+FuOuTLw5xDTCifCYuMpmYiV/k47bEPzr7/h637tO22Cf9xyfjmdC5Z1G81vlTAcWV4twe0onqic8xH/3xxxZTYyPczVgF9NLHR0wRvHQAgF5CfNzY7C+fmCtfv3xi9M42uZ3IQrx/dBj/3PwLch+5wsfDYkrDdVNXiC/Q2ak/yydRw8WyE7PWRm/X++M9nmaZS+ZEL/E2lkLcdZ/0/WOWTVxkUmqscH9YYc5iVz7fa2Kf9O8fjCdC54us45nBj1x5dCl1VimuG/PR64wr5OiNQy6lWqZ2dpehkw4BUEuIDxtb7suzBm88DfHmQWz7z7yj0UXY9w9OPB2mkwPx556ftS6LRA0XkecLdt/2kau9P9/jaZZu7hIh8ofDso/NXiL6brLuQK/pi8QlytsH40NnNlATP57PhGrsk/79g9H3kSWFmUPsjz8W6aNufxj0QYj+7cgAjg7E8V907ONoDlcv8fFSCvbzekC1TIxOW+7L459bMPPF9yq8Tfv9+KeWPFliD9T3V/EJRTSzrrWmgwklaRouphsWbL6NXZCkQ/430WTO68dC1POZGTP+1vD52fhFZtK/8YzU2wejkmmJaoin+7r3j8Y+6N8/OMQ+6RYYFFVM7z/T6MBdcBpCfNCPjfloXfrody+dKkA1kJ+gmICVDgLQSuAcNYu/PP65bsFl+tgfvz0lI3Pxki66sRTe+2NyYh/+zBWiksUvMC+DNA0XUTGLTgYbIpd7e/RGzepmrxBd+nhdjwvRS7jp74/H7POz8YvMjLt4eu3tg0Psc3YuTnf6xebFPujfPheN/rL+aFF3utfPRYX0EukavcjYmO9jHx6VZZFZBs3h6iU6WgqCihgQIcRHjS335XkjN75b4UUWxJ68i06zWjgzx5/uc8nw6COJOYuepuEiq4mL1otieaPXJ2LUriXNkobI39qXT4Wo53OZnOgffn40fpEu9SKv1sV7Hs5F6UFUKn7EOfZB//a5aALx/YPjRNOKb6IyxD635PcctXFsdEVDNDbcY2972d02gRSTneSLwX1gD6iVEB80+cn/If7l9uWDmQM3uj/p5So5uaNomqx7/VhcEc15kqVZMkjScLEVOLfkirFH4usTMappl1wjdrfsy6dC7BKz6meI/eWn+IteZHbcRf/y1YvoE2bhpB/15f2Dsc/5t89FM8rdInuiiuntZWbdCucbUeE7OuaHFZfqs5wH+oj2tCzLgi0CYJNMnBDgs798YkQu/GC36DrL3vzD+GeWaaTYk9K9fiyuiOzMBdY9VehI0nCxZMOilGbs6fuqnELMqiVTWWfH6ZZdYjadGP1Lu/yjs/nV6E/z9SJ97GPLbkY87/XuS+xz/u1zMXH1r71zL3CdBaL4lVAJkVAJSFgJkVAJOKiESKgEJKyESKiEvdt9tUk4wwCT5tHz++v77vIYCA0nAwza1cRelR/+XnRnB1Al0TEP3y9umlY1uMmGWDa87x16ckmUdcf4Vb72dZ/uVc1EU8boh5WzU2oEyrhGDYfmfV2VSJwM1NkTuiOgOnwqp1r31FQCf5rDSpATWiuZ4GUNYz+esiFQXGnnoA4V0DymguNW535ElUSHV0aTUG+2ysaTtbFweN8HmqW7gqySdWs47Xl8zac/eukrl4xBFaN3PpxZ0jMqasMaNVyoMhWNOfeQBspyX9NYVSsUO0GV8kqsJDnulJWgVNp9lPBk6vjHh9L5YTKoCVulQXBxeNDujEcQA7nW4kM4gNTTXzVS91wI2yodGmhPh9emkhiChqseMtKR7GFKlEq7jxMuOz2kQW/tzqvoVQ2p2NUWinNWUaThQIZe15UdyO4fatBN5HWgHk+vQlpouGRDoBga5KwXuz0oYPz4lRXBvlGu7SpbBKvRVaKNcPMNHI2TNvXxdAzvtVWWD+97xy3dGWSNCGdu5tRwo+0htYNWM28IV5XXMHyLwyanF5ICyLlCDTfTe+3R8QOfqKFDI6A6kjlhpzl9JcmG6CrRKT0JzQfQDZTMD5N1yuIwqICBYzCARMolZOR9jI95uJ42/llXxE0kq6RDo3EBuKmSRBCmcN2BTQEcpXT8qkTJtBO2ZiILqp9JNm5gCOxOn2wDsm+FGm6mmJeP9QWQxjLMFqrjORrOqBIodhttN2g9WiiZ1zVYP47RDr9BCbXV5GXvQPLxcAQfitWvUrIQawjve6ddujvICsGRRDM+nAGC52u016bWAtiKh8VY4fLWGvzAkNfQcII4r+Fxpgu5NhWA6kh/7m5Bw6m7QbtsjZL5YbIeJNM/uQBK6DWJtNWA/CA7fBajxVTQeB4p3CpomC0D44uQCMKIcZVFB1y0Vxmhf+0r6lH9SPIZtqTitFwAOVeo4eY6bf9QBUpiORsGUEe6xw00XNqhqKukvPzcxqBkviiZgEqWotVNbTUhnh09+x5UNxyP6FtSuxWQrIx1ueFmv7SHbJIeD5jayNDCoex2mBKk0ssXxRtd+SvJZWhjxuQ+JqgqMGdNGq65V4GSeMOmB1DHUzScVSXl5f8CndijTVwomS9KJqDScLXVhHh21G3IpqFUBg5q7mPaKmCULMa1WbpHyPoIeMBoI3sApJ3vbpgUpNKf5kKtuL+S8eXedbyihkOm1uL+aoBPqzVsOmrGi2k4W3EGf/Wt2h64uFtgNASIMtRtsFkDFxvYr8FrkjaKcOJvISrnZLJHhE1rlZ+P8KDBh3a7tFfXFUAJ91fyXF5xajg7XNoqh2wqADVjFxou42WP6vElyQyenKoIpdGQTA0H+/lxMRUJPe5i2ig9GmXL0SzdJ2R1SJ8ade8eQR2ON+uAZF5dVwAlzK/hhk2hhqvBpa1yyKYCUDM2peFQIq/tBWq4R+BjQe/Jx98/WEplcLiNsj43HAP9kinSwdS6qEbCQdDxWw0k8+q6QnLEz7Y7dWAHNVwNLm2VQzYVgJpBDRctQpdsrxoOhoh7WEwFb7xW3XKyKno0yJbELd0rZHUIw6XqEKC0Hc7rbBgnwwRQAjVcijVpOJ+2yhk2HTWDGi5ahC7Z0hpO6/TK1XAwRNz9JQneeAwOt1HW6IajI45MCXi4VAVUlX4BbpQWJPPVjaCGS0ENN4EaLlqELtmzNFwAabQ/ly43O7Lq/pIEbzxuQ98mhx6Nw2Vpl+4YsjakQBE1cY3gFT4f0/ijIJlXVxZACdRwKajhJmxKw/Ugkdf2wotqOJBfyN6DGv9ekuCNx+Bw22SuCEq1WF5VQ3aBJG4qPiGlpdTJixKk06/lhmRN1HBx1qTh3tJWOcOmo2ZsSsOVl/8HqseXJDN4cvBA+6MaQu3W3k8B9q4J3Ybm9N+3FIiHwyl3m8ANkIvTLt01ZG0IY7Xibg/pK2YSLwmkq7+e56EE3e8jm+Ful9fQcJKLtQaXtsry8vAA6ngxDQdj8Y1+piiZL0omAF8dj4k6lKjRVQJyC92Gvkp/RRpYSmVwuG2yVjccb9wiE6QZuS0utRdKnawugHT19zTMr+FeMT7cXK8391cDPC3tDZseQB0vpuG0jUHJfFEyAZWGg4kcKHUIGmBSt6GD9j+vM/AebdTtJitivW443rhFxkiHD4oXAvIKBQn1J7oUox0lObkqhnr0tTXce11XuofvS2TTbu5LtaqkQ6nU3fAkDaffl6FqEojFpp3g0PtJeiwoz1lqOIPDbZP1uuHoiCNjxFuo2sJCe6HM6TyMUmprg5vv/D1NAElcYQujvIaGK5kAM8m2qYDyHl+RhlM5rURgCc0wHUrmrRqcVQLsHZ1oQosPkpXoRfn9TQp28bXqZpMVsWY3HB1xZIy0mFroiBND60wPaqGUTlkdfKG39zQBJDHdr/IaGg7lMbzbG61bWe4QL+/xFWk4+EubmgKA96mM0qFkXtdgvVNdsTFC+PLU1aOqY0wHMh3xHxkcbpus2Q33wQV6MkIUXEUSRwytE5mGUdJWWZ9mcwxK40saiHgNDQfnTzuzUG9Y3j1Z3uMr0nCaz5eyblBeiDf+AcHfovbJwdE1rAg6SjTHXuDRV/GxoFxnbA+Dw22SdbvhOKzIGGnAFq29i18xEVWIkmp3P3WogOaeBilV0w0rr6Hh4ICxE1iVW9bPIcrwWZf3+Io0HFQ86p2DqICxhSidHyardgwqVWlAyTTzW6dt9JA+nummdoG+0zaarApjN9xJuHeyjGbpHiLropNGS4HGke5gjU70KKl2cQ7+RBRGGS4AvoyGQ7Y6M7OgEvCq7L2mReU9viINB/W0dlyrjwAr00Gzx+UhlPIdLgErvjpx8Er5saA6j+gdyuBwm8TYDXf5d7T269ERRwZI8XgLduUexK+O2OiDiXWOHeiLGLyRUaLc5km8iIabf10aKguVNEEDYuibKu/xNWk4uJtV6RSFBzzHa5IonVemq7xBYfxDhcuhiu0fHcwrG4lelGckpcd9QzaBrRvu9lEBf2WlNEv3EVkXQRyCuZfFdOLgc5EcMHGrqhA6bQZzNmpkzKBSXkTDofnTcF0afrhqpAmybzi7l/f4mjQcnG/aZA2igZOORul8aYFxdB9k0odnn6pI+GZNPBbwddqjb45G1WSyLozdcF8fQ8G0SDriyAhhIv/kPW+bk/zJEX1JwtR1gQKG09gzDjW8iIZD86zhKTzdMwV0qqdQ3uNr0nCVQTagnpksA6KEfpQOLnK2KoN0H2T/pPBFY4vGBJgz9ViQccd4o2f+7ZJ5sHXDfY9b81MSbtk+ImsjiMMlS8SJp1zB0MPJNTXjAHfNY7InRMR4FQ2XCllvAPwS0DyuHuQdpirv8TVpuDqPJe7nyZkIlNCP0pWd+fwjKJuNtWJqGEofmQkb4SJ9H/3nVtVisi5s5davVxiv/ZfB7wMyQHbE5Yi4hISLjzyc3iuqhJ9NI1cC+mk2qoYdUlcL3HgVDYe6XOnhP6ZvvMDrXWmdiF6XowaV9/iqNBz0WPpkFf8Eb9YkRIe6GjgFNgp74EbIiY9XmBTF95V44ir1WDpgXPxfGU9/iySmsEzcb7HWt0w73ALyigR5vLw3ynJSbmgXzYXTK16D+LNppCg6kMyrWhb/7G+GiV5Fw6F5UDdrxb0ZI8cPPBiT1onobemHyUJ+u39YlYaDU47mYeDMk6QopR8nhJNVVdSPaWbBXSLUJB8RTD2WLG8K9yxtkj7nGae4v9XEoKkF0BFHBiQccR9XpynlkPrWAONOyOGTlWLZOHIloPevSnjEleJ4Ye9VNBx8z3lNnfEnNvKv4RWvlCMOuvDcMF0oaPc3q9JweCuBT9aB56up/lDXgnVO2oWKh+M0dG8H0wryKRHlIflYejF7ymSyfkzdcI8TRGqOzcUt1UNknSQ9vee00nF9qpAmnrEgyx8NfimPLUYpfbp7gBuuHfcAMsUlKwgg5zo1HFJYGj0cf2LjPfSlMbzwUB67lkJh+SvTcFjLXJtUHfj7Z9oSlNJPUsJfZLrRAbYlo4NuXOIDsU3sdUpaKOzCG8PgcJuk1z/hNIOvloyxo4GOODJAkEI/9InPykOXHHUodnzNSA0w5+RgHvwNFfsHxhPFy2g4qLAU1wPEV0n9OBn+qpADgEE30Ng3Ewra/c26NBx+hKlK8NawjAvx/CQlnqtSoduw8zU2rnqY+taCcTd90iS/VJOPRY5fnjSZrB1TN5wfFG29muoW6SCyWhRRCIPD2Q8+fZoHBm4Sc8m7SoRvm3acFgqP5JkNsAIzMe1lNBx2/rSpGkHORm+ZGLEQb48cf4OEknbLprlJ0mdU0qOUCQ+zEIw740K8aR1C/DX5a0kQSE0keWK67UZ5mnP6FZV+LPprk2Imk7VjeS3WeKtNxgeABjriyJCgGZSnuNpxneY8tkNVy9lawWjhNR5ZfelQ2kQsLbSJZtKg19FwMF8qJHQXzxZ5Aj20TIriCt/BE9dSKGm33Hg3SfqMSoQfQStUIEi42JI4SuunSbG7Sxwdwl61+A+0xw3/znX6q+54Up0LTD8WdcR900v8yJMw3bQ2GezG97C6BTqIrJj0auoX734UUOPYqgSctLaQyOhhRulLPFKdsOokeeLQJprpC/91NJywc8kJuaBuiGQSHi52nHYwj9e2YHMaTtIyLSxfuhLPR9JnpBUGlSDipOMG0zbf0Kx7vYdP1M6V9GPBR0hGtMmiyPoI2serwE+Lt/Ty0RFHxuh3AlxDOPsbF/3bUVqwTGUFG5TlHXhNJEfA1sG5BdfSTtK+kIYTMnqY6Q1N09G6elwFkAIH1Isx1xJKuz0NJ/1y0VaEo/DLjZ5MQYl9JC1q9a1stK1WOm6AeqsXGl6E4temjfPF4HAbxNINF3PEGq+mumf3D1k5ne0AGyKtoiQzxzYo/3OifozOXcJOHXTwtu2hURGTUNqY/UMCyLlWDSfN0+8umkPYUh7NIL5QfSxDj9NPxwNqwPY0nKhl4g9DXNXxsRw5icWpKvpFJh83aHL7qBTFr00ZIo7B4baIZSDe6IRnu5pKRxwZIq2uVNMKFWtGqxvlOXZyhiZak3S8+9pNfnUHrOCi4Z9eScNJevgjtJOJWnpgoCrUJ1/07bgpUvJInA2UfIMaTtYy3TiHOKxRUAyU2scSi2EUrr4ZJW86sQF4F4Z18HvNr023c4TB4TaI+E7LxMersJ1j3TN7h2wA84t573ipXlUJ/fntVxccnE/9FMBncKKF/bm96zgnb4OOve5fScOlPikvp/vGyeYN3Cgpd09ii+bDiEhVEBt/ASTdoIZLaZn+fH8W6d39sQoyNVzqTfI5OP6SJn/MQtBB6zeW5temCvMVOVFFVk9nN5LQkRbb1VQ64siIRBTzcuSVhYwxe0ORDr72NSshX5UkeyLmKn8pDacJd6TbUQ5HhybgjWrLeuwka0AllneaW6YSnZZ5Vw1r6PVCyX00tfp3pkgnubRKV1OBjtX82lSzMIPDbRBLNxzcOmS7mto8sXvIJjDec/lLInaHfYU4mGhnVEP0Jf1SGs5ssAh+FtQrucRkACp7ixou7yJPERS4BaX38eSdmUGyHCqbEs8gm+rXplkOS4cNJ6vDUF55XIvpaiq3XZIxpmGqf0nF0DWvUHgVG236i890r6Xh9LGyZAQ/i9FaWfRNF0DiTWo4s4t84NkjlMHHk5ttrk29PLqiMms0nGLYMzjcBjFcmJeev62fpHlW75DNMIOIE4Ov3bCuULwo0ma9OD7TvZiGs3G2iJ+SJi+8uAwIIPU2NZyVy7JF9qAMHqRXxptMkb70Nf9cw6dOrdFwihBxqUvFyAox+iS9IbphTVdT6YgjE8z3xKVHmXGFifCaFstO4B39ahrOwtmS8LMYfFMA11IAyTeq4WwcXx7ak53D5EWSuvbjRpdbaAvnUd2vLa0aGRxug/S54wji5YpMV1ObZ3QN2RbGIk6xuxdlLRzrKdFYLwtQDa+m4QyEQ3KSrn9aLl5wAMk3quFMRJzw00FZPMxh4dJvk/30L1vE3cqs0nDJr8DE/l+yRuxWoFIr6aarqXTEkSmmceJaRYUorxzFF5F+D9f+WuEr+uU0XPVYUfhZap9WC8oNIP1WNZzB71aaD1Aej7PUz4ptspu+yFoF+yqzSsMlQ8QxONwGsZv1XKoqy9VU4UQYeWGsNkh/9KrzWSi3K9llmtoDfaNucsE1vJ6GqxQOmqWyyqfVomIDyLBZDVct4sRPepTJC3ng3Wo6xKt3Bxx7dZnfI65OwyXejwwOt0Hs7vxIrzxpwjKp8fP3DdkglS/fX8BFp2NQdlewrquRcPLljBWNekENVyUcVBKuajTC6zn3qOGk+2IVtKI9KJeXMlXty1COju+WK10bvz/eOg2XWAxjcLgNYnblBwrO84jlJXF0xJEoB4MhLcyfQ1ABLn8SSJ6B/UH/4T5Gcla8ooar8NrqvLT/Kp6WVEMAeTas4Wo86CmnF8rnxVwVCl/7U/6hCeki7/cu12m4xPZ3BofbHnbxfZ2mOrOVrg8egiaIt75yaHXqdzAqwf3LFXH6DZ6FIvXaSoW+poYr9ZNlTNKHrqgG0Q8citu9Yg1X7LMsDgDkE/lK9/6kyp3iukQT26RV2jEvbsCL3zdLVk1i7OjRnWexvCSO440ADr5mnE0uqRdAZXwVkeGDkQXWmJLZLsif2C+q4YoE8TXv87HgkyJRQyhu95o1XNnHieKXg7L6VMZjiSvuvciX1fgetrAblFip4USvDf0i28NMU2lXNu0uVlGf/CEvSKH345O+zakHleK+rdBOSrnv/UOuQzspO15VwxVIrEuTaal2x5O6hlDc7lVruM+c2aJJ4zJHeX066yl3gszU948cT5dpbe9nN0pWqeHEQ4xNsfFkKczi+7baGs3239ERRySaIl/ce5tXCyrH/fxdNQeUvPebLqNVV5+c6V5Xw/371/YZfZnjpf0j62mlawjF7V65hst8Fh9dky6xSsNluvQVPzSZxp18F77pfOsiSYCGU+/FED4oGBxug/QZ41NC/9K0XE1183UM2T6HU585oC4ut47k0FR4zPS77wY0nfKnpJpYXlnDZSiHIgV3Q/20NDWU9/jqNdzns0AVj7nqFFydhrupuF5pUH96xjk78ELx2vyC36adz2oyE2Yrm42+TsOrvWaeJMjmcdqZ85P3U5NfASrM3ZPIs/f1XFDrD4eTYunp0qrKem0NpxspfcWz+nxabfppKWso7/ENaLh//45nxa82tNUHj7y2gDfF6tG1U7aullDZGPy7YXC4DQKGQzZ+iUo/eBKapHk794qRFEoE3D+VhpNm74t+IorTnILQqqu+/IMDpAs4gpwz/zqhxaU1v3XSSHk/17dHflr6Gsp7POMxP6UShDtLgvdzXDfqoj4LA2SUcWhFjd93z7vfAHSM2gCs4Xj30fawuvwqb2Oa4ZVbHHREQdOeAx5E1+BdcdGo0HGJn3PA+N0bzm82Sy/OXyLv9dCd+ImTy22kTOfqPnijR/Xv62n189awEw5vPkx7asFxfYy+Rq7hnCUoq1G+cSB48Y3vi+3RwaeZh8ur1vDKrWaObiF75Oi8D4NJIYSLP2X4BmJk/STcpwnfvOX4AFQ098K9z/F4kAnOnfz9Sc0xsx1d+1dDO7fDctMc3dtfT53WMK4fB0fr3NPrRy4Qdc/A6ZdnBLfHoVA4jcn1hhleueXn6BdCtKCB6ZY2jBCyQ8B+cv1etsDJdD8Y+cPyL72yu3KLF26RRUED0y1tGCFkh4DjFepjPDjGbzOj1WQe+loF9U2bX7NdkLiCygkxA41Lt7RhhJCVgt4ainMJaPHMa+uGnhtGedgeRoFFSh69XZA4ruGTJUHj0i1tGCFkpaC3hmJXEgrNpT2W2sCpt61pEVmEoFdKEkUbcu2CxD3vTDchE9CwdEsbRghZKQG8NRRbg3qQtamsmtuSNoh4962ec1ntJZcJR6EHmCwIGpZuacMIISsF7iVqUzlbkFG7HtXBiZRxurZH7q3ZcUrVu12QuMa0VwjJAY1Kt7RhhJCVgsN7JKZTuAlJ50o5Cq4TV98s8lyMtqQVL2XaSMgPfj+QJUGj0i1tGCFkpeDADF7OCB14sR1N53B5jG94FC+i5cby7YGcsnmUr2TaHWvgOj5ZDDQo3dKGEULWCp78nJQNbiOPKrCQM4v6OZpJZsVmQ1pTboCNiPzg6CMLggalW9owQshawcG1rsIZQTxltrHkIWcWbeZpKJkPmzC7hQcavskaYgL0ApPFQIPSLW0YIWStCHG9ri3KhGPyx3elh4xJlEcDt0eX8Xwzh44Ws2MNDC9ClgKNSbe0YYSQ1dIL81loYjmOAec4ResQMvB9tX1srkpt64ywOtbAbwiyFGhMuqUNI4SsFjlAapi4JVwnJAcrUUE/hXIta3uYxNit1U5mxxoaiy4hJB80JN3ShhFC1ksvT2nXy8n9rnK5tpNTu3gVQT+Dtk9qNbEjMYJ0FN3Q8IjVsQaGFyELgYakW9owQsh60d10GYLCz4F2pQft/MmVrA1icqLBQDnpR5kIrwkhC4GGpFvaMELIisFHUzN5R7NfUBfhntlwYkJnMHQshJPN6Vi6gslSoBHpljaMELJiDr3N3IeDkQRtEVXhJcgimJxoiJ+FyaSzsIRbMslSoBHpljaMELJmjjbbwfGOpqCdPbmMtT0sTjTYyCarYw3OxBpCMuGAJISUYLIK1eLyg64EKaowWSu9wdhxNqbguIVZ8FQDWYSZfx6EkL1Sf6bvKsVGDboy2mc1l9hhof/NTrL0BsZ88NJUsgxoPLqlDSOErJy2chlKdqEFVRntk9pKLOnqBs4XjZUxRscaTHbnEZIJGo9uacMIIWunbk9ckD0XQVNG+5yGElMs9qAZnmRRjbQkPNVAlgCNR7e0YYSQ1XOomP58omxF0eJaLFktBpF1LQOyNfXm3HB2FhGihcOREFLOqdClEr9V9ZFgUAZZJe9lY+YRb2mPzbWpPNVAFgANR7e0YYSQLdB0BdNd36YLDqky6ITbKMeCETN++KYGGcUX4akG8nzQaHRLG0YI2QbHkDnXaRRcSsMFVRlkjRi4vYz1u018EZ5qIM8HjUa3tGGEkK2Q5YvTKThRw4VTM2dzyLzUe73Mb8jtq0364KkGsgRoNLqlDSOEbIfDSbfH6do5bZFv3nchjCbXPnQndQlklbzV6KSZ5ieDUxYf0qUjhMyEA3BlnxCSQ9NeEg6W97MrK/rnrdRYmkuW4lKtlS72RoVqoz54qoEQQsiGObbn6GR4DWe6z8gXBtfdN/ZWmQT6tQx4QgghhDyfg3P+zon+M/JI/XX3huF979R7Bz8YcpoQQggh+6U6ONw83i6TQL/vc1hGCCGEELI89cHh/DyGdfUSbpZVXkIIIYSQFVAdHG6uTWcmgX5nWeYlhBBCCFmcaqXUzmWZRaBfhogjhBBCyC6pDg43n0oyccTxAjhCCCGE7JHq45/tfLbVn5hliDhCCCGE7JLq4HCznvzsDUQcQ8QRQgghZH9U32nlVm3dB0PEEUIIIWSPhEqFZH7Z/ZC+XsMxRBwhhBBCdkd1IF03r33VJy4+GCKOEEIIIfuj9tTAzG64ej/hx2whiAkhhBBCFqOv1EdubgNdvYZjiDhCCCGE7Izae7Yu85sY6kXccX4rCSGEEEKeSO09W838Jho44njfFiGEEEL2RV8njp4SPzdUa7jrM8wkhBBCCHkWtUupzTOMNHDE8b4tQgghhOyJrk4aPekaq1Ct4XjfFiGEEEL2ROWd8s1zrKz1FnIxlRBCCCG7ojKA7tO8W121iONiKiGEEEL2Q6U2ap5lZ/VlEs+IgUIIqeHonP+ldY4RgQghRKJuKfWJm8y6ahF3eJ6xhJAsju059NMf7TV03jVLG0cIIaukcim1eZ6l9Y649nnGEkLUHE8X+VvyevFuaSMJIWR1dFWq6KlnPS9Vpn5wMfWFuC/IVfHmXs13i3rCzVel63rVz/d6aV/taZQDfwBLG0YIMaVuKbV5pqn1MeI4BbwKvnqs/HIN/pU2ZaFu8DPV1/g+52l0biY79gb8ASxtGCHEkrql1CeHXAtVxn5wMfV1sNNwN66vIx1QF/hZamu67GfR0xmngRqOkJcg/x36SPNcY6sdcVxMfRVsNdzH60gH1H4/Q10FCu7G1b/Go6iCGo6Ql6BqKfXpNx+EGmtv8OX/IphruFeRDqj13rymw7n4UfStuTV7gxqOkFegbinVPdvcakdc+2yLyTLMoOE+pcMLRIlGbffWFb1VfT6GxtqenUENR8gr0FW9R59vb6ix94OLqS/DLBruc/zs3hWHWu5tqznUHjK/nmwN2hvUcIS8AlXfwu759lY74nY/B5MvZtJwH9e9u+JQw71pLce+/lHsX0/XQA1HyAtQtZS6gBvu37/3Gos/uJj6Ksyl4eYLsrESntLsti6i0Q/vrxTzJRdqOEJegK7mFeqWsLitsfiDi6mvwnwa7vkneZ4KarU3rKP2R/zLlSIOQg1HyAtQ8zn8vozJfYXJN7gA8xLMqOH2LeJQo71dFVYSjiJOgBqOkP1TtZTaLmNz7QSwkNnkucyp4XYt4lCbvVkNdhKOIg5DDUfI/ukq3p79Ukb3FUZ/7Hv+JX/MquH2vCdu9iZbSrhPEUe/ehxqOEL2T81SaruU0acKoz+5LmU3eSbzariP/Z5ORS32RuUfTY4z3HmniItCDUfI7jlWvDoXc8P9O1ROAvudfsmdmTXctVm6gXOBWuxtij/01o/ibGPY3qCGI2T3lN91s+hqUuX0zMXUV2BmDbdMYJ1ngBrsbYqvDe0bgR9lMajhCNk9ffl7c8ltKIdys28s50Ekz2NuDbfbszGovd6k9Lq7/eJwS1wMajhC9k7NUqpf0vCuwvBPeJTtBZhdw+1VOaD2eovC7VdSb3A1NQI1HCF7p2aaa5Y0vKkw/IOv/Jdgdg2317OpszZX81Su4eJvXELQPorGwradQQ1HyN6puLZq4T1ldZtqFgpOTJ7J/Bpup4441FxvUHbyOFJ/doNePbjTRXGEiVtcp1DDEbJzarxZzbKmuwrTl7eePIH5NdxOd8Sh1nqDshMPJbhorrf0J1tjYNzOcB6wtGGEEBsq4qwtfigvlNv+yWlp88nsCHIhoNntly6owtfs05+LWusNyha7tXcwX9MlHgW3RxBCXo2KBUm3tO11sd4Xl6BkdgQN5xXZm1bx89jl4ZiaXksgHkrtxKVp14tPgoG7CSEvRkWEjhVE55Bf6Sn2uZOJPFCp4T45+JQ3bpfen8pek+iEvkxtaTvImpox4gghr0WFK6td2vbaC7fapc0nc1Ov4ZK6YZ+LqdW9hhE0seJUQic9Cp5qIIS8FuIrUWQNCxd1F27xjb97LDRc8lNhj/5cg14DCCeRVJeeSufoV7A0QAghT6RcBPmlTb9Rc0/YKlQomRUbDZcQcXtcwbPotThCXzpN/kZ6ZTXV5hFCyHaouPRmFd6Huji/u9yNTh4w0nDyyZ+skjbCfG3FXak8ZCQJ6rbaPEII2Q7lfqyVLERWxfn1S1tPZsZKw4nOn8tMxi/JfD+ZAPuxVZbQ40exy/MlhBACEF6HCZqlTf+mKs7vLnejkwesNJz4sbPHIDU2vZZTst4tLjji9vgoCCEEUH7f/Wpeln1xEz5Wsh5M5sNMw0mL9nvcV2nTazkl669/EuIh8VADIeSFKI/NsZp93FVxftulrSfzYqbhxOOQ2WYdnPu+BOnNuSY7t4LjZwWnrxraz/8q2Pdp1GsRywy6UXgWJSY1zrVfffXZVXN/1R2+Hnw7ez2z8NlRb7/Ddpa9xL+jtrUv//6L+DTeGRdOyFIU33e/nu/dqvAiK9nUR+bCTsNJi6k55bhTF8Y/puDfrOb0Y+sv4/K/67h8zoz6cox6bYqw+UFdhvBU84xp3nzoRyWE7jTTWafj6eH2tn41X8EamvY86ahrOJ+cVQXHzwqm5bdNfcmf+jxE5rn34O2sJ2Qhyi9pWNFdozXhRfa4CkYesNNw0glubRnNCR/BefdNnkEREyfT4LSWs1ItGvXaFAsNJzyLDPnlzvAT9npprR1lje+Ne/JZHNpO+E4O9YpXqqA/1xT/hh/xN5+/h1rrCVmQ4nXI64qWAqrCizC6yL6x03DS4RlVAYc2JAbje4VwOGhudv1GpU+Mem2K0I/q1gvrsU5ZRHPuE93U6YoCI2y0X/jYxXsSt8RrKp+WOq4d/gBUjfvkLT2u+nOjLa2kgr7w60b5i7h2lHFks3SqQR5hVWuQNeFF/NLGk1mx03DCXnzNfNgkr129cfVlKu4oeUoi1XRNaWt9kX0PCBpOP5fiMpzOiKDppqAxSKPhmg72ZI8qV52ZR7nvyyR1Gu5wgvaNmtuqyptW0KoqSI/XMbrf2w/9aUU+CUIyKN5K1ixt+SM14UUYXWTfrETDHTrtgLzmmvVPq0iGpGZFlK/AvJGxgk3qQnAZTmOCur9CujiFhovLCf/1N7wTpEk3BHrx7nlrNNwhSwe1ihLH6CvoslRWVDRLlH48EbIoxeJnNYFFvulL2/HB6CI7Zx0aLmcu/Ohdnl3HkFH4Y/vFoQ9z5RkXMRdbdG1qC9fQZPVXUjskNdwRbMny33+FNSu2HCMB+PBlWqHh2sxP/NyB+0/ng/vhmrEFO+v39ms9V1TJ9ig+DbCy4V4eIWV1TSG2PEXDJQ5puz5zTOb4HA7lR3p6aTMoyuT1pmWW/PGUCy8OwoiIck28IVIa7g3pCf/9976iM9CG/TZpXlrD5UndH5ObtM3lFQRl6Ug0J63n9zzZGqWRRdYTWOSbmvAiq9rZR6x5ioYT3dIlIktUVwOOfX7pd9r81nqtZdkl35j911gyv8uSOqHh8LExL+b/UCwRwNNcDzlLNdyp6J2aErx1FVxbTcG57sM7+p8dIaug+ECnX9ryMV1pS9anR4kpT9FwkvIodAq0OpuqAlyL1aAcPqPH4gTJoPd5p9Eyj/17IxQpazhBwPvvFPgt3Ja25tGDV6bhDsXnxJQqvLACRem5ftZHMiQoISugeAJYnc+5/MqwlR3PIMbYaTjhi0coqdgpoLq8vWa++qZFRaMMmb0WoZMtyj+CqEZ/smTEVVCWooaTNKP/KQCK/KRgCSBjmzZP1nClq5E33jWzQ7H7OKRKr4kW+sGLe8i2KP3WWuHyY8U7p13adjIjT4kPh7/eK3ZqKn5lXXnpf7SgbJQ+s9ciJD8dlYHZsjmUvyUEESdpOLGp/qcAOEZSAchhhPZHnVOi4Y41V99oRJwrryBReq1jWh1fkJAVUPpDcksbPqXip/uEfdRkMew0nCDHGpSnKx+WChFX74W7AdQJSp7ZaxEUWzj6U1NdzYQKCSeJOEHDyVrIJ/sjsbKHXnqDN1qBhquTcAoRVyW0xNJrwkx9I7lcCVkXpeN9jTvIKk418LqtPWOn4br8HwTOoiIh4qpdDt+ACIkoeWavxehVZllfWlp1r7Iwt2MNd5Ab6n9LKF1MResorcI8QcPVSri5fWVC6ZXP+It+dTuFCAGU7hxolzY8Rlf+o+WH146x03B4ekBTbeXWnESEsPqp9od4P+SlzkLbL32nvNtVQ5UX7gYKXoc1XKKd/rcE6OFNfC2jATDotGwNZzGuxMjp1d8eWNrW3NijKJ6QdVH4UlvTVal3Kk41ZMSOJFvDTMMJ16yDJS8DP5kTDKrVJH/Ef9AodV6vRck5D291J3m1hIP+H6jhUuscPt0f4uclGpHDzSG5Gs6goz7EEzkGGtGDoutXUr9wUq8TshpKI4us9DOl/NXDDXE7xkzDBVgOWIy3mFCE7yWbzXBftLHyUeK8XsvtyyjBu+oqLTw08Tcf1HAhUZz/KwK+u8TDyR3I1GrMgxouZbUSqLwbC/exm9X2NW4WImRKqZtgpUuP5V4PbojbMVYaLvuWT5O5CkcPTnyBvZ9b13wb7k7nxPdNdOULJc7qNUCBvA112+NsFG9UmCANl3wh+b8iYFJxTbIHmYa6P1PDWX0awK8PEzdfvHRxLeb2i3BfyZzzXS8W30rdTshaKPwyXesl8RXbWVeqSokBRhpO2p4eHz5GS51oob8T8lzPzSh1I18gGZsRUdqcXoMUvXuul2IdVxM/8tGCWEchDRdSpfm/ImCQECl4JWrTaFkhT8MZddQHXK6p3iP6TXTtpBOsGXfk8dzj1HTEkU1QqHnape1GCL/gBNwQt1+MNJwwuOKuMtmf0XenL6fAIekTADvpJTdc9GooMbxtzL+E0ub0GqTYSfmp41x+dYkDosG/uZs6PLo3H8SUMWECnnS6hf5eBtS0wqsJqaFWZR7QcIkvj+vnuP3uqTbl3I2vd8oe2OvFO3cbvc6dEq6yWOmwy+OXf7S4hqjthKyLwu066zzRcKP8E5Ib4vaLiYYTBZCL5ZAG4/U8mlKOUvHxwSkEq2tBI4S1vVhP5KTNp2rJLvhMf5zk/Hlvh2+0QyuJE2fYFH8vAz4b4SZeZOboBZ2l4eS2hKHWb069mDpSviimx6GdRedxxFUGf3MoGAm+72ule74JeaTQqb3i0V28esUNcfvFQsM5aWTFZ9kgVBuZURphcdHFyu9h8hY2o8tqAzQ/3V8ahA7ScL20+o9JQVD3MRekcD9aZCeJhYbDi6mwlcgTO9b8ORpOdI/2bppBvLc+kl7oq0szTX7I+vXCxFjxo58dZwSyAQoVz4r3jpWfalhxo0gd9RrOdeLYaWJ5cCASdKc7HrwxgYWXUoVGYSfIAhrOIBrru/YyhwCLOMcl0gHnaCeJLTQcXkyd1vcD8sSOM+RouE6w9hLtqkaYRqaf+3jYosvmcSCS6YIQ6kPB7QB/EpwRyOrBX34iaz3RcKOwSR/cELdj6jTcwUlbn3EhMFN0r9oXWMS5aWIcFVbyTsEqYnu48xqcj0mI4otT1AR3jSDh8E9QM9Ou0mu4azh775xrve9CP+hJ+GjgPo8A6hgPgAwNJ26yBGYIcnfqQ+xQyvcGNRMPEz9OiuRki8r+h/udMwJZPYVOq1WP7a6sTdwQt2OEGTZ4mfA5z6aIr6TCH5e0EyFnT1TJHnjpIyeSGCX1Ug05CEGTMwhtsqIAsoo3Y0L/0qQ+pYa7TLyGj/8PHw1a1UMZJiMsQ8N12Ho8cIWYwOOughpRupsLiriJWkWlO1w4PAfBGYGsng7+8kRWe6LhRnFUVW5/2C2GoXAjgMmnB8nlzaQdqmWqNVAFid8nnG4jaVFSL9aQg7DtLIfg5GrgW0HMB9d6J4paNcImsS3GQFWeeQnIJLlewwnrGNLAxZvoxkKoA+nk61Xht834ewWlc1LpwKY1rzcR8kWPRrzIik803Chr1Ae3P+yXWTUcOKSNPEyJq8Dh5pzprw4ZJBxjvAGFQiQtSurlKnKwuvE1th3+TgC5EksKUDqM3xWKESYbKFcHXrngUU6/RvUaDjdEVjT4jPQwHXLDif7Qf/gBjpa14cmVVioc9btsEiGLUxiIwy1tt0zxhL3qJWJSwZwaDu3iCSB96ksBzScTqQh/vb6wMyJpC6vIQtoRn8NV+P0i5ZCQu/gpjkVVcoQJ2+4eQHoWxJtVGpfzzHvYgEY2HWZ0KktSL1+4BDssHvpbxXVRlCvRZEKWRogvJbD2+NWlV8By+8NumVHDIbcaGoXi5Zdf9CBnO0pXtjy4Pg1nFrb/IzS5NSRd76iTx66u1AhDJ5FHdCh/NDty9U7lovqZ450oPmG6crWzjydKL1t2oPihYMX2iw8A5HFJqwhZlLKLtvzSZqcIRc1avzglpcyn4aAkQ6ohvZcUTYbjTwx4HKAp7IxIWpTUJ1uRhetRRXlcHagA+LcUu0ICqGqkkxIjLLGA/gd8ptFx1oFemKZUP3NQpOLlCPcODjoZNdAluwYuwg5SYQ2nfQSEbAg43kWapc1OURwirlnacjIPc2m4WMTTH/p4Ds1eUjQZjiahxgESxUOvVyQtSuoVzchCvspVTxstHSkHhXMMvUxGD1IeYfp7bVA3RP1UemWq1nDwMbRJ0zuQMygSaT6fkcdhoKaFE204dAkhG6XsBGdyC8niFEcObZe2nMzDPBru6nGNaLOaZleU8g7MUtZ1LvWXpsvoeYE2VjgoW+V4By+TkbNLHmH601LA0uj3ZcYY02o4uMdScWgffjo/JgK9qdmKjIT4QLJK4UGlDZOEbJGybSjt0man6YoaptmrRDbJHBruGrsu6w+w1VQVvwZNpDbnwfGXWyQxSupNTBlipOLaSNF9PKnq946sGuoycYR5fSfAxdSI/gDv79gY02o4mE7RBLgP+SENGnwqkQv031CJIyO+k7aaegjZCkXnwbYQRa00cCjjAe2UGTTcSV4eC/FcumMzfTyzyX5NIRprJDVK6i1MmdrmQcuzaCfl1jhF4cvED1JJIyzruWUspvbxlDGpr9VwAaVrKkx/+KUAO3STClpMHdiWmNSuZ0aQIruh7FaqlQeH+6YvatrKgxeTYmbQcNdOVAAgl1eZ24HcTX1PCBJueQ3373Yvbf3GuMmDQefvVT939Joc7imRRlib0wEdKmViLPJ7xcalVsOhZKqv2yPYn/lgeYgXr/u0QYu17WOiDjXhj75r+Z4nu6DMW7WJz5jSYAVuacPJLMyzH05YmUFrRk5lrmqyKkK8FSGSHiX11ZYINpYdl78ziWQGClT6x4DqHfqOhBGW5z6Fb+V2nDJnuV6p4eA6u89qA6aqeCRaVQdfh7x37SYmMkIkioTONuJvlIaI80sbTmZhrnOpMOoX8vw0KnPR2l/lfs3m1IutiWRBSX2dJSne6rxxY68RaLbydJYqtpwwwtq8tgNjp74qoC2jCyVKDQcDhrq8NiCQRlQtasPF2sHjzjjQFvwbHXJky/Tqwf6AX9pqHYWh39d/5paUMF98uDZeYQeSex0gd8XwPLz55G8ikg0l9eWWKDn6kO59xEjsglTvuoeB7BgID2GEZeoEbegXtMYb1UNKDdcp6y4FacRO9yR6jXWwDVH67kSHHNkoZb6qZmmzdZTdQLGJAxsknxnvaYjvDw2z1FU0PJ37lCEq50QkM0rqSyzJ5u1ceg2XG/RAYSEJBn2AR1ju7S8wvMdInIEF9/gYUWq4AFJZHfayupBjxECFNfku3OCdUQMJeSJFkXC34qgqXUzlN9kumfO+1KiIm6muDJdO407+Evqc0jPa4cueQz5N22W14YeB6CiO+S0zEGd4hLW5Te5BQaOBBjb5xb8plBpOddVCBQH2UhVO11aRy6kxaiQhT6IrGent0lZrKdwX3S5tN5mDOTVcND7pTFU5TWOPb/5S5L/KaIeveRq5HE+XbN9K+5B/pqc/+J7FdTS5zUXOqpGHDaRy0TKVGg6l8rltAJS6VRN4m1reGXeEbIq+ZJhvZg9o4bc3o/zuklk1XGTanGn1LqnhDm81u8giBaKkvv6Z5HE85fnjHs9ezbSCN9BUcITlr3/DxdSBwgDnL8GZM52G0y7jFoPKr8QPaym+p+ez+xJhHwlZD/D3KrGJ4HBflAW/Y5TffTKvhpvehjmXhvNSI8t3j/0QKbPIkLlocvxx7p4v1HUL5NE2OMIKdp/0oKjBB2anSKMwb5AKDlsXLzUbVH4l4z4+1pxq7hqjxhIyL0W7/q2+x55AV/YLXtpsMgdS9K4goBRFk0+b52u4t9qgah/r13A31FFHHp5JqO+aKI/SveaSqjHIbzjwsYFuAKuBlRquyW9EjMIP6yQTnVwl4qjiyDYoeedv6dhm4X1bbmm7yQwIGs4nsh417i2nr68KYKzNHVWb0HD/bjJO05iHd1Ww6JwI7sEo+MQL7lmHSyRNMg0K36nTcNrbHEqZ69Nm6us8Vrmkr96owYTMSMmXynaWUv+VNbDolUtWT4WGu9GcE4NpPInMpeHicSpO9ddTfREpGiXV9Np8HBLBir+4e6SCTfdMcA8mwSfuxsYr6EFZDy8n4KtD+3n3reEiyvVQtwnyvTFqMiFzUbQdblPHdrqiH29uNCeyBSo1XHpKaNT1VRHbXFXncngkUjhKquu1GWn7VGvuJgarDhrhHuwx1XBon8vDbt0+ngK9ofet4aL2uTpX3Ia2DZHXpGQ73Dbu2fqlbDF1W20kOqo13OeUIDq7Rh7qJ2q4wmjWMSKtRkm1vTYfh1Qf37/GersuGuAezDGVPzC65d8OvMyl1FfUcBqdL9EaNZqQeSjZDrexwBtlK0w8W75DDDScvE96tFP0eRquyy8E+icijUZJ1b02I8debuZfwpDfRyrcgzG28gc9ovY3AVDu8A39khruU8WFikJbo1YTMgslAmdTS6mli6luabOJPRYaTnbsDpdenqbhuvwimpyZGiXV99qMHILY0r90crJy3IMttvIHOVf/fItA5ME39ItquNtW1r641I3Nd+S1KNkOt7XYaWVvDL+02cQeEw0nxoodLqYaLnAOGGu4LjP/++1CocU13MEhcmdNcTWh+U0VMntJi3uwxFb+pBZTwd/xRpCX1XD/buGhC3fG9VyTIeulZJLZ3JHNvuSHy0MNO8RGwx2EATWcPp8URCHnMpI++LeD3BmRJqOkGb02BfdObkDcgzQ7u99UQdVB+bgHS4zlD2rXj7sXPHi82aVSwzVlrZiAyq8kuYn58FZ06+6m4jCQF6NkO1yztNG5FB0v56GGHWKj4UTN1DwmfE6MX50zvQ9n/+Y0nRFpsc6QTHDvZLv6pY52v4mCqp/ycQ+GGGs49I39oyrA6xu7MXXmwfHt4qVmg8qvRCX9mzb/HhOrdhNiTsF2uK0tpRbGT+Ghhh1ipOGkn81gQxwceXAVUUczsCakhvL7uY1M6yvWcPmKR+gD95sGNbirfBqqexrKuggtpn6fnQH3HQifn5X3NMx9X+qp7kHol+Cdz7iureiiNEKeQom62dxSauFiqlvaamKOlYYTPLvDclAqwzYlVlKv3Rv4GtmVhhM6wf2mQQ22nKGtt5IFqVHgdI0QN6BSw/nCVmS16lkcT9r72nisgayWku1wzdJG51O0mOqXtpqYY6Xh4F7zsSBAk4QzbFQvDOK+xfnWrOFcblnCFZx/ZaEDxWvWcEibfum0Lv43QXDozIOdabVJOIDyn+4fOJ50u4k2Fk6LvA4F2+G2t5RauJjKjaz7w0rDCbppuJAVQCpn1ybBA3UV58TFNZyghNvswnBZ7jcJ0oyWW1+tNRySU182x78QpOYozUOprF7+yAxvVH4WmnMO3B1NVkrBdrgNLqWWLaZuUawSGTMNJ3h2B+m6+X9F+Dusl1eAFtdwgu7K/4AKsCyXrK+qEUPMw3Kgx3uEmlQaW0rzAkqm2yQc4vi/BOi7Y6nv5mNyVbVZyDJCREr8U5vc6l+0mLq00cQcMw0nxPkdCCe0WcFubQYvIl4bOefyGg5PnNd05hEBluX+0qDziIa7ncw1HJI7J/hWa+rN61AypzEZ+Vf9Xwo08Sx4diBxlYNbzjJCMAXb4bYZNq0oxoNb2mpijZmG02y/uoEGnt1khdWkS+TsUMZIWpteGxNwL2afgOxhUc1fGtRiw3vNzTUcGmnvqMni+oHSPDgxqL490JBs70mse8kCF+/Pb/ySlhGCKNgO1y5tcxklV4q1SxtNrDHTcIJkaAfpUKr5m5RclwoZthn12gjBPZ4tcnFR9zTze0VnuOIAvaQb4Myy2AMJF2hU+8LQY31wdwaQxGV3jyGHDjWbGo6slAJls8ml1LI7U3kWaXfYabigLAilc1ZNgoY0xTkjaY16bYQUFcXlFYW3hfTpRIZbX+01HOqkFijSxsI8ODNolp3RkrXCDp/ZOcZ0qNlLG0ZIlILtcNtcSk3cUw5gYMfdYafhsAtpWNDsrh80YaZ1CWxBRlpfZbtwMDVXV+Hn8fjK6kGapqoZj9hrOLSYeok/ebnftObBFRrFuEVP9fF9ivYYGKnpxsdJ5cO36DFKAVkjOdcs/tAubXMpJYupS9tMrLHTcLikYUHoO0kZrKCJxqN/TIHMSE62eEtfJLFRr43poQ12wV4ey+lAGuUx4ejDaAZJZrguPm/Hi9wUrXlwarimF2JQHYMRid7HjapLDon7MpBETBYM281FGbJGOjRgMc3SNpdS0NbtNpYA7DSc+r72HiTT7aOP+loG+q+4Pdg1HUlcXItMB234yFtNFU5nPRaD2qxT1HE9PhRNM2i4vDWERixLax4W+G3S3h7kHIz4DiTSaaW41/XedPTlJHeO1G6vsouQ54J+bJjtxkwrWUx1SxtNjFlAw6FFPtVKfbyWwTxXPHg72IJIYpTUa1qBEX+VV33Ij6PgZh8kROlaTS3xHmsGaWbQcFlrCIk3tNo86PzrU4446MoapEJPXuHn+1Ra0R55bDoo3SWL7kFOrzCLkCcj7UYBbDLA7xdCMAiIX9poYoydhsO7yUbiDP7KnKKSEM35qG3guE4Wj5VBRmu9ohFlRnxkiDi8jWm8g7cDqTSOuLigHj3uOTQcMjpG4g2tNg/vs/FyDfBZjLZSoyefKP6L+HdR+5CiuPBQYRYhT6ZgO1yztM3lFMRR2eoBDoJYQMPBWSHp0EDmDlwt8FxS6nNL+PVntNYn2yAjB9++6hacG3Su40Y7SAq7K90QIE6G5c+i4XLWEBq5KL15WF0X3v7RDtPBJ58W7sAH/vh7CvEkaale5agl5LnkX16w3aXUIsW65eaSGIYaDuqGsYaDAy951A3kbAeJStvT466IpC6tJUVqLeCsWFpzojNvVEBA6VLS4RB/4OO1vzk0XMZiauqVpTcP/1TepWeC9xiMcsEnLxZ/AyycD35OHSjcJcoud2sT8nykr9c4211KLVtMXdpmYoyhhguooMk1UT1Kmdi/DSTcSDWgwhP77aQrWiLJUVKf6KUknWDHV2vbRAFSYNaPqVDGBy5lEQck3OQZzqLhUp10J/WG1psnqGthaDVQbk6+WGCjEiMX7X10j4nQ8E5pXDg8NhoXleyaAlHTLG1zDfmS1fIeRbIGDDUcXpsfp8QeYNETh9zkI9UACxdnHTzXRhog1OLTHSWT3pTbn4SWND7ho5r8hHuUUhRxR/T2aEYJZ9Fw+sXUsTljMszrcC0deiJI6X5EHFnCqSBp6LbggQ+VX+kWgwCyKUMBEfJM8k9qbnttseByWMN7FMkaMNRwuKhJ0h4mxbMV3uPVKAuXGiTMtbEGzKjhVD6mSxvtp0Ob3OQ69ekIeyrw/I6Ew1SFz6Lh1IupyTd0hnmSzAfrncc+x7KAE0M5jb2u7TAhtMRJ3QPnCIb4JStEmM8AfmmTqyg4huuXtpnYsoyGE2TDNa4bDti9NJ5NAiwb+5VkCfdcDSd6BO+8d6fHaLrO+U7jWHfTCoVsIZL8ZmKAOZpx2nk0XKdo6o3kZpcc86QJInra5CQ8ynaaXHohg32QbY8yjB1lcLO35G7FrsGI+YQsTRB+QnE2vrQIf/8QHkzdGYYaDguz6c9EUhu9b8bJxQXCcWp8MgluDocLgz9EsqCkub0WIcs//h4+0SeP/YDxRP1JmGoTJzj7pu6ZeTScaPMDyV1bOeZJEVsiehfrqw+wFikdqrt2k5/RQaph/NyEeySh0IXeVm6HI6tE+AHF2fqegNc6h0siGGo4PK26jLTfw+z81vwmPTgvKqyJmYKTr49/dEnuki8iedTmFBAS5pRzbWL1dXKey+l+aVPTdr2UeFr+PBpO+f2Z/ubMMi+x2+bdu9+Ux7aTB5WLlR8P1ftHf27vA9idxHXz6Zq55G5totYI8wOXUskK0X7a3dn6lXH5LebB1J2xkIbTfD5cg8bFNA0qJ24R6JqJKaK75JtIa1HS3F6LoVxNLQAsVCvq+/L39alUkdbPpOF0359tspw889IxNa+qfkLiUrMl++tnkXxi068VMZZU58bJ5cMxk+SELE/+Fn+3tMm15M8VG189JiOeouEiyiGxAU1PZBuSXPTl5O5Jk+6SbyKtRUlzey1KyT14GlCQCqv6YlGaZ9JwwtLgA+X30cfN06hdDXF/6L+yW6xjxNwL8u+i7+5OvpTvW3cvHiFPJvvegkncq83R5TaZB1N3hqGGw3sRYiVJF3pmEPNnKD7Ggs6Z8Uujb2x2r0XJP16lAV+9mb+rIorLaUplF/UKexTbdzPNK1i6iNEic4y+baJXnihs71W+b37Kk3WSPalsf09A/lUNfmmTiSlP0XDRH0rBNSFTonNVwXnrBE7f2Oxei9OZt0E+gBgsKoi2fS4Np5GdbbqYXPNMhq0wc9h828SftJFS3/4mIrJP8t/82/dJ5Uc13r5uJY88RcPFV14sfE3xuaozKHmA0zc2u9cA5m2QFY2F/yfzMVd2kGYxVXF4Mtu8rqRrhoiXZ1msa4ODplYbGBQXGxPyfPI/sHYwkkNum7kRYl9Yajg4Q4BNB13u4JvQxgs2d8RFvtZQ0uxeQ3TWjQCd9UO9/wfM7HNpOMViqiYSUr55XVHvPAA3w31T7+mDH9pGGxi4kkpWSbajeQ+x0vLPcSxtMTHFUsMFWBT42umyR5/SQuvtZJGKsm3KprNtQ5uornZ+Ryu1s2m49As71eRC87qyDvolcQ9tvYgTJiaT7XyabiXk+WT7mdulLTZAd7rrkR04H8kdSw2HJ1UHcnTZw+8RvK5vdur1h0hXZCQtpeAuPEhSONSKOFjBbBou/e7SvKtKzOvKuugbxZOoE3HiSq3Bdj6v6FVCFiB7LDdLW2xBn9tqt7TFxBJLDYc1ByyqxmEmbawu0yNXdDQ9soMAlZHdawLOLE7ce6Oorkb5YmUym4ZLfnWrFkqKzKsYtiDM9JC3igd/kZVrtYjjjmiyUrK9zPu4siB7Bbld2mJiiaWGwz8hvItSuM2naiCWTFX9EbUgciELKiS71yQOoaAZEZTnCPH96SkEjTifhkv5KVtNIWXmFYusoFvHOPaF5aclVuWHgapTCVmA7E8rv7TFJmSfgvJLW0wssdRwwilnnCl1VSkg6c7IF3HvB7w8Ny0fpczutUQzDFxxvVNXl7x1LE4nKJP5NFzq6IpKLhWa15QNW3VQjkN2tNIvrm266ELTv8vffiwGsluyfzM7OZyT22weTN0VlhpOWNySXv0lC1OJBaMbuSLua3pFf3ST4lHK/F6TkS6tVHH1OVtYm1BQgzixz6fhUhdyqMooNk+8iipOhpguc/UF3aRUvBQcv1eVkFWQ+4vZ/iUN3+Rq130sIZMfTDUclhvifJqtG3RzYdZ61E+RSBVM+wIVNE1ZS9Pl9M2YyAWxMorrY0c1yBpxRg0nL6a2qjLKzWtyX51ZYrpAvV9BWLiI6SGz6MzyCXk+2SGl9rK1M/vw29IGE0tMNZywMN+IGV3IGIB9qzRHvx51/W0rmjanXy6oKD9JWU+xirtmK7hPDlkepqTrZ0YNJ7+0dYqpxrysYVvwKLKee56/Ncv0gvIJeTbZ22f2sjEgO7pIs7TFxBBTDSdsiEt98jit3lIruK9SVVt/HmYnqEInSgUl9Bnm6Tn4Xtk/j111Kpx1DydtbZ1LFjajhhMXU5XhO+vMc522o5qiBjadUk/nKyz1L+6LngqOrJzsXSe7GdJ9ZsPd0gYTQ0w1nLQw71J5G4VMuSo0w5C3kCrz0j4khyp0oghQQp9poJrjOd0/D/Tnqg27b52iCt8oSppTw0mLCMqP7FrzNMP2vVRMf3JoFd8hgzGspjlpTzdc9uKxIDsmdxfIfrb2d3kNvzRLG0wMaRykMS1NoyiOZ2lS6bu3kqmwEbRP37WjIo/I/nGxhr2m5ngKuh/pu68/cXVoRR+Qugo4Jqot/LQRjzdt8QbmycM2nJr8hg1NFB/79TIewzlFt12fGktnCjiyDfK+c/ezvTMnush79fuIEInDmw/T3+E1nNumvNDPmWoyy1YWuRjuNG3LI/3FO7PKju05xKvYzTKEDbdhO1W873bPwvlL5LGH7lQv1pvPsiNP+fM5h/PJ1ZtOyPN40+4+2NOuMGET0+gnXbc6Q4iWo3vzv5xMPDa3qaq1LnIxjs77EAaTegjB+zc3Q2UH505/T+NN5VB9Udx9iPk5PLKNc48/C1sd7R5+c7fSG9PSCXkWShkXCdy+WXT7vju+uwkhhBCyajQyTh1vewOkIz5eO26JIIQQQsgGSMq4PWmaxE2xFHCEEEII2RCyjFvaOlOEhnIPHCGEEEI2xxs8qbqfyCI3UFQviwgFhBBCCCELcPTRHf/7iSxyIxop88IwIoQQQgjZMk079VPtyz81uXaw5xY4QgghhOyB0arqniKL3Bg0LhiEjSSEEEIIWQnN6e6OS13gvTW6vx1wvFeFEEIIIfvD/VyM1y5tiDHt9wLqJu8eIoQQQghRcHj71HF7uyywoX4jhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCCGEEEIIIYQQQgghhBBCCNkh/wHj3IfsCmVuZHN0cmVhbQplbmRvYmoKOCAwIG9iago0ODMyMwplbmRvYmoKOSAwIG9iago8PAogIC9OYW1lIC9JbTIKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggMTAgMCBSCiAgL0ZpbHRlciAvRmxhdGVEZWNvZGUKICAvU3VidHlwZSAvSW1hZ2UKICAvV2lkdGggMjUwMAogIC9IZWlnaHQgODg1CiAgL0JpdHNQZXJDb21wb25lbnQgOAogIC9Db2xvclNwYWNlIFsvSUNDQmFzZWQgMiAwIFJdCiAgL1NNYXNrIDcgMCBSCj4+CnN0cmVhbQp4nOzdTatm95nl6e+Tox7XQDhBWbYzJNl6dQayVZbBGA1s3AIngrbBYENjMBqYpCdJzlJTDUX2qEDj+k5uqSJaoQidOOd5/93/va+L9QHsve59OFsL4vz97wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMN2//s//9e3U/3PYi3/7Hz95IfX/IgAAAAAAAHhxP7Wlcnvf3VLtqgAAAAAAAFTumVBtqdzY/VuqURUAAAAAAIBrO2Q/taVyewduqXZVAAAAAAAALuvYCdWcyi2dMKQaVQEAAAAAADjZOfupLZVbOnNLNaoCAAAAAABwiEtNqLZUbuZSW6pdFQAAAAAAgO+6+IRqS+VmrrGlGlUB4Hz/8O4vJ6R+DAAAwMblXz0+fACu53oTqjmV27jqkGpUBYAH5f/FwH9tAAAAbiD/fvHVA3BLt5lQbancwM22VKMqAPx92f964D81AAAAR8k/THzyACRuPKHaUrmB22+pRlUA9iP/xp+QugQAAODq8u8OnzwArWpCtaVybeGQalEFYJPyr/j5qSsCAAAuIP+ymJm6FoBbyydUcyrXlg+pRlUANiD/Wl83dXUAAMCh8s+H5VI3BnBd+XJqS+U28v3UqArAovKv8u2lrhQAAHhR/pmwmdRNAlxevpzaUrmNfDa1pQKwlvwDfCepewYAgP3KPwe2nbpegIvJl1NzKjeQb6aGVACWkH9r7zl1+dwhvwoROT/1D5JD5Q9Klkt9s7C2/BXeW+rCAc6Vz6a2VG4gn01tqQBMln9Zy7dTnwPP5McgIuen/kFyqPxByfZSHzVMlL+YUp8AwIny2dSWyg3ks6ktFYCB8u9ouT/1geAdEdlC6h8kh8oflOwn9bHDreUvndyZ+i4AjpPPprZUri3fTG2pAEyTfzjLUanvZb/y6kXk/NQ/SA6VPyjZc+rzh2vJXy55MPWNABwqn03NqVxbvpnaUgEYIv9SljNTX9Du5I2LyPmpf5AcKn9QIt+kfhvgXPlLJCekvhqAh+WzqS2Vq8o3U0MqAK38u1gum/qgdiTvWkTOT/2D5FD5gxJ5WeqXAw6VvyxyfuojArhPPpvaUrmqfDa1pQJQyb+F5Xqpj2sX8pZF5PzUP0gOlT8okUNSvyhwt/zVkMumPiiAu+WzqTmV68k3U1sqAIn8+1dulvrWtiwvV0TOT/2D5FD5gxI5NvVLA35ybjz1fQG8KN9MbalcT76Z2lIBuLH8m1eS1He3TXmtInJ+6h8kh8oflMjJqd8e9ig/e7lZ6lsDeCbfTG2pXE++mRpSAbiN/CNXJqQ+w63JCxWR81P/IDlU/qBEzk/9GrEL+Z1LkvruAL6Wb6a2VK4k30xtqQDcQP5hK9NSn+R25FWKyPmpf5AcKn9QIhdM/T6xQflVy4TUZwjsXb6ZmlO5knwztaUCcFX5x6xMTn2eW5CXKCLnp/5Bcqj8QYlcI/WLxRbkZyyjUt8jsHf5ZmpL5RryzdSWCsD15J+xskTqO11bXp+InJ/6B8mh8gclctXUbxhLyu9Wxqa+TWC/8s3UlsrF5YOpLRWAK8k/XWW51De7qrw4ETk/9Q+SQ+UPSuQGqd8zlpHfqiyR+k6BPco3U3MqF5cPpoZUAC4u/1yVpVPf73ryykTk/NQ/SA6VPyiRW6Z+4ZgrP05ZK/XBAruTD6a2VC4u30xtqQBcUP6VKttIfciLyfsSkfNT/yA5VP6gRG6f+rVjnPwmZdHUlwvsSD6Y2lK5uHwztaUCcBH5l6lsL/VRLyNvSkTOT/2D5FD5gxKpUr98jJDfoaye+oSBvcgHU3Mql5UPprZUAC4i/yaVDae+7gXkHYnI+al/kBwqf1AibepXkEx+e7Kl1OcM7EI+mNpSuaB8MDWkAnCm/DtU9pD6zKfLCxKR81P/IDlU/qBEJqR+Ebmp/N5kk6nvGti+fDC1pXJB+WZqSwXgHPkXqOwq9b3PlVcjIuen/kFyqPxBicxJ/TpyC/mZyYZTXzewcflgakvlUvLB1JYKwMnyD0/ZZ+rDHyrvRUTOT/2D5FD5gxIZlfqN5Iry65KdpL50YLPywdScyqXkg6ktFYDT5N+bsvPUb8A4eSMicn7qHySHyh+UyMDU7yWXlx+V7Cr1vQPblK+ltlQuJR9MDakAHCv/zBR5kvpVmCWvQ0TOT/2D5FD5gxIZm/rt5DLyQ5J9pj58YIPytdSWykXkg6ktFYBj5R+YIi+kfiemyIsQkfNT/yA5VP6gRCanfkE5V35CsufU5w9sUD6YmlM5Xz6Y2lIBOFz+XSnystQvxwh5CyJyfuofJIfKH5TI/NSvKafIz0bkH/z0AC4tX0ttqZwvH0xtqQAcKP+iFLk/9SvSyysQkfNT/yA5VP6gRJZI/aZynPxgRL6d+oUAtiNfS22pnClfSw2pABwo/5AUOTD1u1LKH76InJ/6B8mh8gclslDq95WD5Hci8t3UrwWwEflaak7lTPlgaksF4EH596PIsalfmkz+5EXk/NQ/SA6VPyiRtVK/stwnPw+Re1K/H8AW5FOpLZUz5YOpLRWA++VfjiKnpX51GvljF5HzU/8gOVT+oESWS/3Wcrf8MEQeTP2WAMvLp1JbKufI11JbKgD3y78ZRc5M/Q7dWv7AReT81D9IDpU/KJEVU7+4vCg/CZEDU78rwPLytdScysnytdSQCsA98q9FkYukfpNuKn/aInJ+6h8kh8oflMi6qV9fnsovQeSo1G8MsLZ8KrWlcrJ8MLWlAvAy+XeiyAVTv0+3kz9qETk/9Q+SQ+UPSmTp1G/w3uUHIHJa6lcHWFg+ldpSOU2+ltpSAbhT/nkoco3UL9aN5M9ZRM5P/YPkUPmDElk99Uu8X3n1IuekfoGAVeVTqTmV0+RrqS0VgO/KPwxFrpf69bqF/CGLyPmpf5AcKn9QIhtI/R7vUV66yJmp3yFgVflOakvlNPlaaksF4AX5V6HItVO/ZFeXP2EROT/1D5JD5Q9KZBupX+V9yesWuUjqNwlYVT6V2lI5Vj6VGlIBeEH+PShym9Sv2nXlj1dEzk/9g+RQ+YMS2Uzqt3kv8qJFLpj6fQKWlE+l5lSOla+ltlQAvi3/EhS5cep37lryBysi56f+QXKo/EGJbCn1C719ecUiF0/9VgHryXdSWyrHytdSWyoA38i/AUWS1G/eVeRPVUTOT/2D5FD5gxLZWOp3esvyckWulPrdAhaT76S2VI6ST6W2VAC+kX/9iYSp37/Lyx+piJyf+gfJofIHJbK91K/1NuW1ilw19RsGrCTfSc2pHCWfSg2pADyRf/eJ5KnfwgvLn6eInJ/6B8mh8gclssnUb/bW5IWKXDv1SwYsJt9JbakcLl9LbakA/N1/WBD5/1O/i5eUP0wROT/1D5JD5Q9KZKupX+7tyKsUuU3qVw1YSb6T2lI5UD6V2lIB+Lv/sCDyfOo38mLyJyki56f+QXKo/EGJbDX1y70ReY8it0z9wgHLyHdScyoHyqdSWyoA+YeeyMDU7+Vl5I9RRM5P/YPkUPmDEtlw6vd7eXmDIrdP/doBa8hHUlsqB8qnUkMqwM7ln3giY1O/nReQP0MROT/1D5JD5Q9KZNupX/GF5d2JJKnfPGAN+UhqS+UQ+VRqSwXYufz7TmRy6hf0AvJnKCLnp/5Bcqj8QYlsPvVbvqS8NZEw9fsHrCHfSc2pPCifSm2pAHuWf9mJzE/9mp4rf4Aicn7qHySHyh+UyB5Sv+jrySsTaVO/gsAC8pHUlsqD8qnUkAqwW/k3ncgqqV/Ws+RPT0TOT/2D5FD5gxLZQ+oXfTF5XyJ56rcQWEA+ktpSuV8+ldpSAXYr/6ATWSv1K3u6/NGJyPmpf5AcKn9QIjtJ/a4vI29KZEjqdxGYLh9JzancL59KbakA+5R/yomsmPrFPVH+3ETk/NQ/SA6VPyiR/aR+3ReQdyQyKvUbCUyXj6S2VF4m30ltqQC7lX/HiSya+t09Rf7QROT81D9IDpU/KJH9pH7dp8sLEpmW+qUEpstHUlsqL5PvpIZUgH3KP+JElk79Bh8tf2Iicn7qHySHyh+UyK5Sv/Gj5e2IDEz9XgKj5SOpOZWXyadSWyrADuWfbyIbSP0eHyd/XCJyfuofJIfKH5TIrlK/8XPl1YjMTP1qAqPlC6ktlTvlO6ktFWCH8m83kW2kfpWPkz8uETk/9Q+SQ+UPSmRvqV/6ifJSRCanfkGBufKF1JbKnfKd1JYKsDf5V5vIllK/0EfIn5WInJ/6B8mh8gclssPU7/0seR0i81O/psBc+UhqTuW78p3UkAqwK/n3mnw7StxGLvuSXk/+oETk/NQ/SA6VPyiRHaZ+72fJ69htlLVQLv7eAZuRL6S2VF6Q76S2VIC9yb/Xdhvlbjs36Pd8+VMSkfNT/yA5VP6gRPaZ+tWfIi9iJ9HjBnLtEoFF5QupOZUX5DupLRVgV/IvtV2lblvdu2v8QfkjEpHzU/8gOVT+oET2mfrVHyFvYcPR7PbSdgqMlc+jtlRekO+ktlSA/cg/0/aQuuSXyp/MHlKX/LD8EYnI+al/kBwqf1Aiu0399vfyCraXutI75M9kS6nLBIbKF1JbKt/IR1JDKsB+5B9oG07d7XHyx7Xt1PU+IH8+InJ+6h8kh8oflMhuU7/9sfz5byZ1k4fKH9QGUncIDJUvpOZUvpHvpLZUgP3IP9A2mbrVs+RPb6upi71P/nBE5PzUP0gOlT8okT2n/gGQyZ/8NlLXeKL8uS2duj1gonwetaXyRD6S2lIB9iP/NNtY6j4vLH+eG0vd533yhyMi56f+QXKo/EGJ7Dn1D4BM/uSXTt3eZeSPcdHUvQET5fOoLZUn8pHUlgqwE/l32ZZSl3lF+bPdUuoyXyp/MiJyfuofJIfKH5TIzlP/DAjkz3zd1NVdXv5Il0vdGDBRPo+aU3kiH0kNqQA7kX+XbSN1jTeSP+fNpG7ybvljEZHzU/8gOVT+oER2nvpnQCB/5iumLu268se7Vuq6gInyedSWSj6S2lIBdiL/IttA6g4D+TPfRuoa75A/ExE5P/UPkkPlD0pk56l/Btxa/sCXS93YjeTPeaHUXQET5fOoOZV8JLWlAuxB/jm2euoCY/nzXz11gXfIn4mInJ/6B8mh8gclIvWPgZvKn/Zaqeu6tfyBr5K6KGCcfBu1pZKPpIZUgM3LP8SWTt3eFHkRq6cu8EX5AxGR81P/IDlU/qBEpP4xcDv5o14odVeZ/MkvkbolYJx8G7Wl7lw+ktpSAfYg/xBbN3V14+SNLJ26vefkT0NEzk/9g+RQ+YMSkfrHwO3kj3qV1EX18gqGp+4HmCifR82pe5aPpLZUgM3Lv8IWTd3baHk7i6bujZvK721C6hKYIj/FPHUDjfyxywupL+IW8oe8ROqWBsm7GJ66H2CcfBu1pe5WvpDaUgH2IP8EWzF1aQvIO1o0dW/cTn5sE1KXwBT5KeapGxgk72LPqcu/hfwhz09d0Th5I5NTlwOMk2+jttTdyhdSQyrA5uXfX8ulbmwleVkrpi6N28mPbULqEpgiP8U8dQNz5dXsKnXbV5c/4fmpKxoq72Vy6nKAWfJt1Jy6W/lIaksF2Lb8y2u51I0tKW9tudSNcSP5pU1IXQJT5KeYp25gAXlHO0nd83Xlj3dy6nKmywsam7oZYJx8G7Wl7lC+kNpSATYv//JaK3VdC8u7Wy51Y9xCfmYTUpfAFPkp5qkbWEle1rZT13tF+bOdnLqcNeQ1zUxdCzBOvo2aU3coX0gNqQDbln92LZS6qy3IS1wrdV3cQn5mE1KXwBT5KeapG1hS3tomU7d6RfmzHZu6mZXkZc1MXQswSz6M2lL3Jl9IbakA25Z/cC2UuqvtyKtcK3VdXF1+YxNSl8AU+SnmqRtYWN7d9lJXehX5Ux2bupn15JUNTN0JMEs+jNpS9yZfSG2pANuWf3CtkrqorckLXSh1V1xdfmMTUpfAFPkp5qkbWF7e4JZSl3kV+VMdm7qZJeWtTUtdCDBOvo2aU3clX0htqQAbln9trZK6qG3Ka10odVdcV35gE1KXwBT5KeapG9iIvMdtpK7x8vJHOjZ1MwvLuxuVug1gnHwYtaXuRz6PGlIBti3/2loidUtblpe7UOquuKL8uiakLoEp8lPMUzewHXmVG0jd4eXlj3Rm6lrWltc3LXUhwCz5MGpO3Y98IbWlAmxY/p21ROqWti+veJXURXFF+XVNSF0CU+SnmKduYGvyQldPXeCF5c9zYOpOtiAvcVTqNoBZ8lXUlroT+TxqSwXYtvw7a37qivYiL3qV1EVxLflpTUhdAlPkp5inbmCD8k6XTt3eJeUPc2DqTrYjr3JO6iqAcfJh1Ja6B/k8akgF2LD8I2t+6or2Ja97idQtcS35aU1IXQJT5KeYp25gm/Ja101d3SXlD3Ng6k62I69yVOo2gFnyYdScugf5QmpLBdiq/PNqfuqK9igvfYnULXEV+V1NSF0CU+SnmKduYMvycldMXdrF5E9yYOpOtiYvdE7qKoBZ8lXUlrp5+TxqSwXYsPzzanjqfvYrr35+6oq4ivyuJqQugSnyU8xTN7Bxeb/LpW7sYvInOTB1JxuUdzokdQ/AOPkwak7dtnwetaUCbFX+bTU/dUW7lrc/P3VFXF5+VBNSl8AU+SnmqRvYvrzi5VI3dhn5Y5yWupBtymsdkroHYJx8FbWlbli+jRpSATYs/7YanrofnKgT3Z38qCakLoEp8lPMUzewC3nLa6Wu6wLyZzgtdSFblpc7IXUJwDj5KmpL3bB8HrWlAmxV/mE1PHU/PJVfwvDU/XBh+UVNSF0CU+SnmKduYBfyltdKXdcF5M9wWupCtiwvd0jqHoBZ8lXUnLpV+TZqSwXYsPyranLqcngmP4bhqfvhwvKLmpC6BKbITzFP3cBe5EUvlLqrC8if4ajUbWxfXvGE1CUA4+SrqC11k/Jt1JAKsFX5J9Xw1P3wnPwehqfuh0vKz2lC6hKYIj/FPHUDO5J3vUrqoi4gf4ajUrexfXnFE1KXAIyTr6Lm1E3K51FbKsBW5Z9Uk1OXwx3yq5icuhwuKT+nCalLYIr8FPPUDexLXvcSqVs6V/4Ap6UuZBfylvPUDQDj5JOoLXV78m3UlgqwVfn31OTU5XC3/DCGp+6Hi8lvaULqEpgiP8U8dQP7kte9ROqWzpU/wFGp29iLvOg8dQPAOPkkak7dnnwbtaUCbFX+PTU2dTPcJz+PyanL4WLyW5qQugSmyE8xT93A7uSNL5G6pbPkT29U6jb2Ii96QuoSgHHySdSWuiX5MGpIBdiw/GNqbOpmeEB+IZNTl8Nl5Ic0IXUJTJGfYp66gT3KS5+fuqLT5Y9uWupCdiTvOk/dADBOPonaUrck30ZtqQBblX9JjU3dDA/Lj2Ry6nK4jPyQJqQugSnyU8xTN7BHeenzU1d0uvzRjUrdxr7kdeepGwDGySdRc+pm5MOoLRVgw/IvqZmpa+FQ+alMTl0OF5Bf0YTUJTBFfop56gZ2Ku99eOp+Tpc/ulGp29iXvO48dQPARPkkakvdhnwYNaQCbFX+GTU2dTMcIb+Wsamb4QLyK5qQugSmyE8xT93ATuW9D0/dz+nyRzcqdRu7kzfu3oBp8knUnLoN+TZqSwXYqvwzambqWjhOfjCTU5fDufITmpC6BKbITzFP3cBO5b0PT93P6fJHNyd1FXuUl+7kgGnyPdSWugH5MGpLBdiq/BtqbOpmOFp+M2NTN8O58hOakLoEpshPMU/dwH7l1U9OXc6J8uc2KnUbe5SX7uSAgfJJ1Jy6unwYNaQCbFX+DTUzdS2cIj+bsamb4Vz5CU1IXQJT5KeYp25gv/LqJ6cu50T5cxuVuo2dynt3dcA0+R5qS11aPozaUgG2Kv96Gpu6GU6UX87Y1M1wlvx+JqQugSnyU8xTN7BreftjUzdzovy5jUrdxk7lvbs6YJp8D7WlLi0fRm2pAFuVfz3NTF0LZ8nvZ2bqWjhLfj8TUpfAFPkp5qkb2LW8/bGpmzlR/txGpW5jp/LeXR0wTb6HmlPXla+itlSADcu/ngam7oRz5Sc0NnUznC4/ngmpS2CK/BTz1A3sWt7+2NTNnCh/bqNSt7FTee+uDhgo30NtqYvKV1FDKsBW5Z9OM1PXwgXkVzQzdS2cLj+eCalLYIr8FPPUDexdfgAzU9dyivyhTUtdyH7l1bs6YJp8DzWnrihfRW2pABuWfzoNTN0Jl5Ef0szUtXC6/HgmpC6BKfJTzFM3sHf5AcxMXcsp8oc2LXUh+5VX7+qAafIx1Ja6onwVtaUCbFX+3TQzdS1cTH5LM1PXwonyy5mQugSmyE8xT93A3uUHMDN1LafIH9qo1G3sWt6+wwMGyvdQc+py8lXUkAqwVfl308zUtXAx+S3NTF0LJ8ovZ0LqEpgiP8U8dQN7lx/AzNS1nCJ/aKNSt7FrefsODxgoH0NtqWvJV1FbKsCG5d9NA1N3woXlFzUzdS2cIj+bCalLYIr8FPPUDexdfgAzU9dyivyhjUrdxq7l7Ts8YKB8DDWnriVfRW2pAFuVfzTNTF0LF5Zf1MzUtXCK/GwmpC6BKfJTzFM3gCPcyFnmD21U6jb2Lj8AhwcMlI+httRV5JOoIRVgw/KPpoGpO+Hy8qOamboWTpGfzYTUJTBFfop56gZwhBs5y/yhjUrdxt7lB+DwgIHyMdScuop8FbWlAmxY/tE0MHUnXEV+VzNT18LR8puZkLoEpshPMU/dAI5wC2eZP7FpqQvZu/wAHB4wUL6E2lKXkE+itlSADcu/mAam7oRryU9rZupaOFp+MxNSl8AU+SnmqRvAEW7hLPMnNjB1J7uWt+/qgJnyMdSWOl8+iRpSATYs/2IamLoTrii/roGpO+Fo+c1MSF0CU+SnmKduAEe4hbPMn9jA1J3sWt6+qwNmysdQc+pw+SRqSwXYtvyLaVrqQriu/MBmpq6F4+QHMyF1CUyRn2KeugEc4RbOMn9iA1N3smt5+64OmClfQm2pw+WTqC0VYMPyz6WBqTvh6vIbG5i6E46TH8yE1CUwRX6KeeoGcIRbOMv8iQ1M3cmu5e27OmCmfAk1p06W76GGVIBtyz+XBqbuhKvLb2xg6k44Tn4wE1KXwBT5KeapG8ARbuEs8yc2MHUnu5a37/CAsfIl1JY6Vj6J2lIBti3/VpqWuhBuIT+zmalr4Qj5tUxIXQJT5KeYp24AR7iFs8yf2MDUnexdfgAOD5gpX0LNqTPle6gtFWDb8g+lgak74UbySxuYuhOOkF/LhNQlMEV+innqBvhafgbTUhdytPyJDUzdCQDcIZ9Bbakz5XuoIRVg2/Iv9IGpO+FG8ksbmLoTjpBfy4TUJTBFfop56gb4Wn4G01IXcrT8iQ1M3QkA3C1fQs2p0+R7qC0VYPPyL/RpqQvhdvJjm5m6Fg6Vn8qE1CUwRX6KeeoG+Fp+BtNSF3K0/InNTF0LANwhn0FtqdPke6gtFWDb8m/zgak74abyexuYuhMOlZ/KhNQlMEV+innqBvhafgajUrdxivyhzUxdCwDcIZ9Bzamj5GOoIRVg8/Jv84GpO+Gm8nsbmLoTDpWfyoTUJTBFfop56gb4Wn4Go1K3cYr8oc1MXQsA3C2fQW2pc+R7qC0VYPPyb/NpqQvh1vKTG5i6Ew6Vn8qE1CUwRX6KeeoG+Fp+BqNSt3GK/KHNTF0LANwtn0HNqUPkY6gtFWDz8g/zgak7IZBf3cDUnXCQ/E4mpC6BKfJTzFM3gCPcwk3mD21s6mYA4A75BmpLHSIfQw2pAJuXf5UPTN0JgfzqBqbuhIPkdzIhdQlMkZ9inroBHOEWbjJ/aGNTNwMAd8tnUHNqLh9DbakAe5B/lU9LXQiN/PAGpu6Eg+R3MiF1CUyRn2KeugEc4RZuMn9oY1M3AwB3yzdQW2ouH0NtqQCbl3+SD0zdCZn89gam7oSH5UcyIXUJTJGfYp66ARzhFm4yf2iTU5cDAHfLZ1BzaihfQg2pAHuQf48PTN0Jmfz2BqbuhIflRzIhdQlMkZ9inroBHOEWDjJ/bpNTlwMAd8s3UFtqKB9DbakAe5B/j09LXQil/PwGpu6Eh+VHMiF1CUyRn2KeugEc4RYOMn9uw1P3AwB3yDdQc2olX0JtqQA7kX+MT0tdCLH8AqelLoSH5UcyIXUJTJGfYp66ARzhFg4yf27DU/cDAHfLN1BbaiJfQg2pAHuQf4kPTN0JsfwCB6buhAfkFzIhdQlMkZ9inroBHOEWDjJ/bvNTVwQAd8g3UHPq7eVLqC0VYCfyz/CBqTshll/gwNSd8ID8QiakLoEp8lPMUzeAI9zCQebPbX7qigDgDvkAaku9vXwJtaUC7ET+GT4tdSH08iMcmLoTHpBfyITUJTBFfop56gb2Lj+AUanbOF3+6JZI3RIA3CHfQM2pt5TPoIZUgP3Iv8GnpS6EEfI7nJa6EB6QX8iE1CUwRX6KeeoG9i4/gFGp2zhd/uiWSN0SANwhH0BtqbeUL6G2VICdyD/AB6buhBHyOxyYuhPuk5/HhNQlMEV+innqBvYuP4BRqds4Xf7oVkldFAC8KB9Azak3k8+gtlSA/ci/vgem7oQR8jscmLoT7pOfx4TUJTBFfop56gb2Lj+AUanbOF3+6BZK3RUAvCgfQG2pt5HPoIZUgP3IP72npS6EKfJTHJi6E+6Tn8eE1CUwRX6KeeoG9i4/gDmpqzhL/vQWSt0VALwoH0DNqTeQz6C2VIBdyT+9p6UuhEHya5yWuhDuk5/HhNQlMEV+innqBnYtb39U6jbOkj+9tVLXBQDPyddPW+oN5DOoLRVgV/Lv7mmpC2GQ/BoHpu6El8pvY0LqEpgiP8U8dQO7lrc/KnUbZ8mf3nKpGwOA5+QDqDn1qvIN1JAKsCv5F/fA1J0wSH6NA1N3wkvltzEhdQlMkZ9inrqBXcvbn5O6igvIn+FyqRsDgGfy9dOWelX5DGpLBdiV/HN7WupCmCU/yIGpO+Gl8tuYkLoEpshPMU/dwH7l1Y9K3cYF5M9wxdSlAcAz+QBqTr2SfAM1pALsTf6tPS11IYyT3+S01IXwUvltTEhdAlPkp5inbmC/8upHpW7jAvJnuGjq3gDgqXz9NKdeST6D2lIB9ib/0J6WuhDGyW9yWupCeKn8NiakLoEp8lPMUzewX3n1c1JXcRn5Y1w3dXUA8LV8+rSlXkO+gdpSAfYm/8QemLoTxslvcmDqTrhbfhgTUpfAFPkp5qkb2Km891Gp27iM/DGunrpAADCnblC+gRpSAfYm/7gemLoTxslvcmDqTrhbfhgTUpfAFPkp5qkb2Km891Gp27iM/DFuIHWHAOxdPn3aUi8r30BtqQA7lH9ZT0tdCBPlZzkwdSfcLT+MCalLYIr8FPPUDexRXvqo1G1cUv4wN5C6QwB2LZ8+zamXlW+gtlSAHco/q6elLoSh8suclroQ7pYfxoTUJTBFfop56gb2KC99VOo2Lil/mJtJ3SQA+5VPn7bUS8kHUEMqwD7lH9TTUhfCUPllTktdCHfLD2NC6hKYIj/FPHUDu5M3Pip1GxeWP8+Npe4TgD3Kp09z6kXkA6gtFWCf8u/ogak7Yaj8Mgem7oQ75FcxIXUJTJGfYp66gd3JGx+Vuo0Ly5/n9lJXCsAe5dOnLfV8+QBqSAXYp/wjemDqThgqv8yBqTvhDvlVTEhdAlPkp5inbmBf8rpHpW7jKvKnusnUrQKwL/n0aU49Uz6A2lIBdiv/fB6YuhOGyi9zYOpOuEN+FRNSl8AU+SnmqRvYl7zuUanbuIr8qW44dbcA7EW+e9pSz5QPoLZUgN3KP5ynpS6EufLjHJi6E+6QX8WE1CUwRX6KeeoGdiTvelTqNq4lf7B7SF0yANuXT5/m1JPl66chFWDP8u/laakLYbT8PqelLoQ75FcxIXUJTJGfYp66gb3Ii56WupAryp/tTlL3DMCW5bunOfVk+QBqSwXYs/xLeVrqQhgtv89pqQvhDvlVTEhdAlPkp5inbmAX8panpS7kuvLHu7fUhQOwTfnuaUs9Qb5+2lIB9iz/Oh6YuhNGy+9zYOpOeFF+EhNSl8AU+SnmqRvYhbzlaakLua788e42dfMAbEq+e5pTT5Cvn4ZUgD3LP4oHpu6E0fL7HJi6E16Un8SE1CUwRX6KeeoGti+veFrqQm4hf8g7T90/AFuQj5621GPl66ctFWDn8m/hgak7YbT8Pgem7oQX5ScxIXUJTJGfYp66gY3L+x2YupNbyB+yPEl9CACsLd89zamHy6dPQyoA+SfwtNSFMF1+ogNTd8KL8pOYkLoEpshPMU/dwJbl5Q5M3cmN5M9Zvpv6KABYTz562lIPl6+ftlQA8s/eaakLYQH5lU5LXQgvyk9iQuoSmCI/xTx1A5uVNzszdS23kz9qeVnq0wBgJfnuaU49RD592lIB+Lv/DuDrm+PlVzotdSG8KD+JCalLYIr8FPPUDWxTXuvM1LXcVP605cDUlwLAaPnoaU49RD59GlIB+Lv/DuBzm+PlVzotdSG8KD+JCalLYIr8FPPUDWxQ3unM1LUE8mcux6Y+GQDGyRdPW+qD8unTlgrA3/0XAJ/YnCS/0oGpO+E5+T1MSF0CU+SnmKduYGvyQsembiaQP3M5J/X5ADBFPnqaU++XT5+GVAD+7r8A+KzmJPmVDkzdCc/J72FC6hKYIj/FPHUD25FXOTl1OZn8yctFUt8RAKV88bSl3iOfPm2pADyRf7cOTN0JC8ivdGDqTnhOfg8TUpfAFPkp5qkb2Ii8x8mpyynlD1+ukfqsALi1fPQ0p94p3z1tqQB8I/9QHZi6ExaQX+nA1J3wnPweJqQugSnyU8xTN7C8vMHhqfvp5RXIVVPfFwC3kC+e5tQ75bunIRWAb+Qfp9NSF8Ia8kMdmLoTnpPfw4TUJTBFfop56gbWltc3P3VFvbwCuVnqWwPgivLF05b6gnz3tKUC8G35B+m01IWwjPxWp6UuhOfk9zAhdQlMkZ9inrqBVeXFLZG6pSnyIuT2qY8OgAvLF09z6gvy3dOQCsC35R+h01IXwjLyW52WuhCek9/DhNQlMEV+innqBtaTV7ZK6qIGybuQNvUBAnAB+dxpS/22fPe0pQLwgvzDc1rqQlhGfqvTUhfCc/J7mJC6BKbITzFP3cAy8qbWSl3XOHkjMiT1JQJwunzxNKc+kY+etlQAviv/2JyWuhCWkd/qtNSF8Jz8HiakLoEp8lPMUzewgLyj5VI3NlFeikxLfZIAHC2fO82pT+SjpyEVgBfkH5gDU3fCMvJbHZi6E57Jj2FC6hKYIj/FPHUDc+XVrJu6uqHyXmRs6tsE4FD53GlLzUdPWyoA35V/VA5M3QnLyG91YOpOeCY/hgmpS2CK/BTz1A3MktexgdQdjpa3I/NTHykA98nnTnNqPnoaUgH4rvxDcmDqTlhGfqsDU3fCM/kxTEhdAlPkp5inbiCWP/+Npe5zurwgWSv1wQJwh3zu3POWmo+etlQA7pR/PA5M3QnLyG91YOpOeCY/hgmpS2CK/BTz1A3cQv6Qd5K65zXkNcmiqS8XgKfyuXO3c2q+eNpSAXiZ/INxYOpOWEZ+qwNTd8Iz+TFMSF0CU+SnKLKN1K/ySvKyZOnU9wuwd/nWuds5NV88DakAvEz+nTgwdScsI7/Vgak74Zn8GCakLoEp8lMU2UDq93gxeV+ymdS3DLBT+da5wy01XzxtqQDcI/82HJi6E5aR3+rA1J3wTH4ME1KXwBT5KYqsnvolXlLemmws9UUD7Eu+de5wTs0XT0MqAPfIPwmnpS6EleTnOjB1JzyTH8OE1CUwRX6KIkunfoMXlncnm0x91wB7kW+du9pS88XTlgrA/fIvwWmpC2Ex+cVOS10Iz+THMCF1CUyRn6LIuqlf3+XlDcqGU183wMblW+d+5tR87jSkAvCg/ANwWupCWEx+sdNSF8Iz+TFMSF0CU+SnKLJi6hd3I/IeZSepLx1gm/Ktcydzar542lIBeFD+0TctdSEsJr/YaakL4Zn8GCakLoEp8lMUWS71W7speZuyq9T3DrAp+dC5hy01nzttqQAcIv/Wm5a6EBaTX+y01IXwTH4ME1KXwBT5KYqslfqV3aC8U9lb6pMH2I5869z2nJpvnYZUAA6Rf+INTN0Ji8kvdlrqQngmP4YJqUtgivwURRZK/b5uVt6s7DP14QMsLx86tz2n5nOnLRWAQ+RfdgNTd8Ji8osdmLoTnsovYULqEpgiP0WRJVK/qduXVyx7Tn3+AKvKV84Nb6n51mlIBeBA+QfdwNSdsJj8Ygem7oSn8kuYkLoEpshPUWR+6td0L/KiReqXAGA9+dC51Tk1nzttqQAcKP+OG5i6ExaTX+zA1J3wVH4JE1KXwBT5KYoMT/2O7ktet8g/eOsBjpGvnJucU/Ot05AKwOHyL7iBqTthMfnFDkzdCU/llzAhdQlMkZ+iyNjUb+dO5b2LfJP6bQBYQ75ybmxLzbdOWyoAR8k/3Aam7oTF5Bc7MHUnPJVfwoTUJTBFfooiM1O/mruWty/y7dQvBMB0+cq5sTk13zptqQAcJf9kG5i6ExaTX+zA1J3wVH4JE1KXwBT5KYpMS/1S8rX8DEReSP1OAIyWr5yb2VLzodOQCsCx8o+1gak7YTH5xQ5M3QlP5ZcwIXUJTJGfosic1K8jz8nvQeTO1G8GwET5yrmNOTUfOm2pAJwg/0YbmLoTFpNf7MDUnfBUfgkTUpfAFPkpigxJ/S5yh/wqRF6W+uUAGCdfOTcwp+ZDpyEVgBPkX2cDU3fCYvKLHZi6E57KL2FC6hKYIj9FkTz1W8h98vMQuSf1+wEwSD5xrr6l5kOnLRWA0+TfZQNTd8Ji8osdmLoTnsovYULqEpgiP0WRMPX7x0HyOxG5P/UrAjBFvnKuO6fmK6chFYCT5V9kA1N3wmLyix2YuhOeyi9hQuoSmCI/RZEk9ZvHcfKDEXkw9VsC0MsnznXn1HzotKUCcLL8W2xg6k5YTH6xA1N3wlP5JUxIXQJT5KcocuPU7xyny49H5MHUbwlALJ84V9xS85XTkArAOfKvsIGpO2Ex+cUOTN0JT+WXMCF1CUyRn6LIzVK/bVxAfkUih6R+UQAy+cS53Jyar5y2VADOlH9/DUzdCYvJL3Zg6k54Kr+ECalLYIr8FEWunfol48LyixI5MPW7AtDIJ8615tR85TSkAnCm/MtrYOpOWEx+sQNTd8JT+SVMSF0CU+SnKHK91K8XV5Rfl8ghqV8UgEC+by60peYrpy0VgPPln10DU3fCYvKLHZi6E57KL2FC6hKYIj9FkYunfqu4kfzSRA5M/a4A3Fo+cS4xp+YTpy0VgIvIP7gGpu6ExeQXOzB1JzyVX8KE1CUwRX6KIpdK/TIRyK9O5PDUrwvA7eT75hJzaj5xGlIBuIj8U2tg6k5YTH6xA1N3wlP5JUxIXQJT5Kcocmbqd4hefoQiB6Z+VwBuJ983h2+p+cRpSwXgUvLvrIGpO2Ex+cUOTN0JT+WXMCF1CUyRn6LIaalfHWbJD1Lk8NSvC8At5Pvm5Dk13zcNqQBcUP6FNTB1Jywmv9iBqTvhqfwSJqQugSnyUxQ5PPXrwnT5iYocmPpdAbiFfN8cO6fmE6ctFYALyj+vBqbuhMXkFzswdSc8lV/ChNQlMEV+iiL3p35FWEx+sSKHp35dAK4rHzdnbqn5vmlIBeCy8g+rgak7YTH5xQ5M3QlP5ZcwIXUJTJGfosgJqd8bpstPVOTA1O8KwHXl++a0OTXfN22pAFxc/lU1MHUnLCa/2IGpO+Gp/BImpC6BKfJTFLlI6jeJifKzFDkw9bsCcC35uDltTs33TUMqABeXf08NTN0Ji8kvdmDqTngqv4QJqUtgivwURS6e+q1ikPwaRQ5M/a4AXEs+bs6ZU/N905YKwDXkH1MDU3fCYvKLHZi6E57KL2FC6hKYIj9FkaumfsMYIb9DkUNSvygAV5Evm0O21HzcNKQCcCX5l9TA1J2wmPxiB6buhKfyS5iQugSmyE9R5DapXzV6+RGKPJj6LQG4inzcnDCn5vumLRWAK8k/owam7oTF5Bc7MHUnPJVfwoTUJTBFfooiN079zhHLL1DkwdRvCcCF5ctmPqfm46YhFYDryT+gBqbuhMXkFzswdSc8lV/ChNQlMEV+iiJJ6jePWH6BIvenfkUALixfNsMtNR83bakAXFX+9TQwdScsJr/Ygak74an8EiakLoEp8lMUaVO/gpTy8xO5J/X7AXBJ+bJZzan5smlIBeDa8k+ngak7YTH5xQ5M3QlP5ZcwIXUJTJGfosiE1C8ipfz8RF6W+uUAuKR82UySj5u2VACuLf9uGpi6ExaTX+zA1J3wVH4JE1KXwBT5KYrMSf06UsrPT+TO1G8GwMXks+bt86u//T/5uGlIBeDa8o+mgak7YTH5xQ5M3QlP5ZcwIXUJTJGfosio1G8ksfwCRb6b+rUAuJh83LxlPv7iy1dee/1Xb/8onzhtqQBcVf7FNDB1Jywmv9iBqTvhqfwSJqQugSnyUxQZmPq9JJZfoMgLqd8JgMvI981b5vs///C//ffvf5U/PH47XzkNqQBcT/65NDB1Jywmv9iBqTvhqfwSJqQugSnyUxSZmfrVpJcfoci3U78QAJeRT5y3yeM//+XJkPpV/umff/jpB+/lW6ctFYAryb+VBqbuhMXkFzswdSc8lV/ChNQlMEV+iiKTU7+gjJDfociT1K8CwAXkK+cN8tFnn38zpD7JT954Pd86DakAXEn+oTQwdScsJr/Ygak74an8EiakLoEp8lMUGZ76HWWK/BRF/sFPJGAT8q3zqvn4iy9fffz+C1vqV/n1u2/mi6ctFYBryL+SBqbuhMXkFzswdSc8lV/ChNQlMEV+iiLzU7+mDJJfo0j9EgCcK587r5q3fvfJd4fUr/K9H/zwT++/k4+ehlQALi7/RBqYuhMWk1/swNSd8FR+CRNSl8AU+SmKrJL6ZWWW/CBlz6nPH+Bc+eJ5pXz4b/9+55D6JI8ePcp3T1sqABeXfx8NTN0Ji8kvdlrqQngmP4YJqUtgivwURRZK/b4yUX6Wss/Uhw9wlnz0vEY+/uLLV157/Z4t9av84s0f5dOnIRWAi8u/j6alLoTF5Bc7LXUhPJMfw4TUJTBFfooia6V+ZRkqv0zZYeqrBzhLPn1ePN//+Yf3D6lP8sm/vJ0PoLZUAC4r/zialroQFpNf7LTUhfBMfgwTUpfAFPkpiiyX+q1ltPw+ZT+pjx3gXPn6ecG8+/s/HjKkPvnDqZ9+8F6+gRpSAbig/ONoWupCWEx+sdNSF8Iz+TFMSF0CU+SnKLJi6heXBeRXKntIfeYAZ8kH0Evlo88+P3BIfZI3X38tn0FtqQBcUP5lNDB1J6wkP9dpqQvhmfwYJqQugSnyUxRZNPW7yzLyW5Vtpz5wgLPkM+j5+fiLL//x7XeO2lK/yq/eXv4Pp9a3A8Ag+WfRwNSdsJL8XKelLoRn8mOYkLoEpshPUWTR1O8u68mPVraa+rQBTpcvoefn0a8+OnZIfZI/PF77D6fWtwPAIPk30cDUnbCS/FynpS6EZ/JjmJC6BKbIT1Fk3dSvL6vKT1c2lvqiAc6Sj6Hn5PGf/3LakLr6H06trwaAWfJvooGpO2EZ+a0OTN0Jz+THMCF1CUyRn6LI0qnfYNaWH7BsJvUtA5wu30NPzkefff7Ka6+fvKUu/YdT66sBYJb8g2hg6k5YRn6rA1N3wjP5MUxIXQJT5Kcosnrql5iNyC9ZVk99wgCny1fRE/LxF1+++vj9c4bUdf9wan0vAIyTfw0NTN0Jy8hvdWDqTngmP4YJqUtgivwURVZP/RKzNflJy6KpLxfgdPkwekLe+M1vzx9SF/3DqfW9ADBO/jU0MHUnLCO/1YGpO+GZ/BgmpC6BKfJTFNlA6veYzcpvW9ZKfbAAp8u30aPys7/+7VJD6nJ/OLW+FAAmyj+FBqbuhGXktzowdSc8kx/DhNQlMEV+iiLbSP0qs3H5hcsqqU8V4HT5Qnpgzv8zqUv/4dT6TACYKP8OGpi6E5aR3+rA1J3wTH4ME1KXwBT5KYpsI/WrzI7k1y6TU58nwOnykfSQXOrPpC76h1PrGwFgqPw7aGDqTlhGfqvTUhfCc/J7mJC6BKbIT1FkM6nfZvYoP3sZmPoqAU6XT6UP5oJ/JnW5P5xaXwcAo+XfQdNSF8Iy8ludlroQnpPfw4TUJTBFfooim0n9NrN3+SsgQ1JfIsDp8qn0/lz2z6Qu94dT6+sAYLT8O2hg6k5YQ36o01IXwnPye5iQugSmyE9RZEupX2h4Kn8XpE19gACnywfTl+UafyZ1oT+cWt8FANPlH0EDU3fCGvJDnZa6EJ6T38OE1CUwRX6KIltK/ULDHfL3Qm6f+ugATpdvpnfm4y++/Me337n2kPokv3hz4h9Ore8CgOnyj6CBqTthDfmhTktdCM/J72FC6hKYIj9FkY2lfqfhAfk7IrdJfWgAp8uX0+/m0a8+us2Q+iSf/MusP5xaXwQAC8i/gAam7oQ15Ic6LXUhPCe/hwmpS2CK/BRFNpb6nYYj5O+LXC/1cQGcJR9Pv53Hf/7LLYfU//a//3DqX376bj6h2lIBOFz+BTQwdScsIL/Sgak74Tn5PUxIXQJT5Kcosr3UrzWcKH935LKpDwrgdPl++k1++R//eeMh9UkePXr06Qfv5SuqIRWAA+WfPwNTd8IC8isdmLoTnpPfw4TUJTBFfop56gZGy9tZNHVvcBn5qyRnpr4ggLPkK+q//u8/k/rKa68nW+pX+emP38iHVFsqAAfKP38Gpu6EBeRXOjB1Jzwnv4cJqUtgivwU89QNrCGvabnUjcGF5e+UnJD6agDOkg+pX+X7P/+wGlKf5NfvvmlIBWAV+RfQtNSFsID8SqelLoQX5ScxIXUJTJGfYp66gcXkfa2Suii4ovz9ksNTHwvAWdoh9a3ffdIOqU/yp/ffMaQCsIT882dg6k6YLj/RaakL4UX5SUxIXQJT5KeYp25gSXlr81NXBDeSv2tyf+oDAThLOKT+7K9/y1fUJ/neD35Y/eHUun8AFpN//gxM3QnT5Sc6LXUhvCg/iQmpS2CK/BTz1A0sLO9ueOp+4Nbyl07uTH0XAGdJhtSPPvs8/DOp382jR48MqQDMl3/7DEzdCdPlJzotdSG8KD+JCalLYIr8FPPUDawtr29y6nKglL+A8k3qWwA4142H1I+/+PLVx+/n++kL+cWbP7KlAjBc/u0zMHUnTJef6LTUhfCi/CQmpC6BKfJTzFM3sLy8wbGpm4ER8jdR6hMAONeNt9RHv/ooX07vzMfvvWVIBWCy/NtnYOpOGC2/z4GpO+FF+UlMSF0CU+SnmKduYAvyEsembgYGyd/HPacuH+BcNxtS3/39H/PN9GX53g9++Kf337GlAjBW/uEzMHUnjJbf58DUnfCi/CQmpC6BKfJTzFM3sBF5jzNT1wLj5G/lPlPXDnCu2wypH/7bv+eD6f35p3/+4acfvGdIBWCs/NtnWupCGC2/z2mpC+EO+VVMSF0CU+SnmKduYDvyKgem7gTmyl/PXaVuG+ACrj2kfvTZ56+89nq+lj6YN19/zZAKwFj5t8/A1J0wV36c01IXwh3yq5iQugSmyE8xT93ApuRtDkzdCYyWv6E7Sd0zwGVcb0j9+IsvX338fr6THphfvPkjWyoAM+XfPgNTd8Jc+XFOS10Id8ivYkLqEpgiP8U8dQNbkxc6LXUhsIb8Vd186oYBLuB6W+qjX32UL6RH5eP33jKkAjBQ/uEzMHUnzJUf57TUhXCH/CompC6BKfJTzFM3sEF5p6NStwEryV/YDafuFuAyrjGkvvv7P+bb6An50/vv2FIBmCb/8BmYuhPmyo9zWupCuEN+FRNSl8AU+SnmqRvYprzWOamrgPXkr+0mU7cKcBkXH1I//Ld/z1fR0/K9H/zw0w/eM6QCMEr+4TMwdScMlV/mwNSdcIf8KiakLoEp8lPMUzewTXmto1K3AevJX9vtpa70AjbzfwQ40wWH1I8++/yV117PV9GT8+jRo0vNqXWrwBT/7//x379K/b+CteXfPgNTd8JE+VlOS10Id8sPY0LqEpgiP8U8dQOblTc7J3UVsKr85d1Y6j7Ptcn/U8BpLjKkfvzFl68+fj/fQ8/MT3/8hi0VOM2T2fRlqf/XsbD8w2dg6k6YKD/LaakL4W75YUxIXQJT5KeYp25gs/Jm56SuAtaWv8KbSd3kuTb/fxA43EW21O///MN8Cb1Ifv3um4ZU4H73z6a2VC4r//AZmLoTJsrPclrqQrhbfhgTUpfAFPkp5qkb2LK83CGpe4Dl5W/xNlLXeJa9/f8FHnTmkPrW7z7JN9AL5pN/eduWCnzjhOXUnMoF5R8+A1N3wkT5WU5LXQh3yw9jQuoSmCI/xTx1A1uWlzsndRWwvPwt3kDqDs+y5//vwMucPKT+7K9/y9fPy+Z7P/jhn95/x5AKu3Wp8dSWykXkHz4DU3fCOPlNDkzdCXfLD2NC6hKYIj/FPHUDG5f3OyR1D7AR+bu8dOr2Tuc5AHc6bUj96LPP8+nzGvmnf/7hpx+8Z0iFPbjScmpL5VLyD5+ZqWthlvwgp6UuhJfKb2NC6hKYIj/FPHUDG5f3OyR1D7Ad+eu8dOr2TuSZAC9z7JD6m8//65XXXs93zyvl0aNHtlTYpJuNp+ZULiX/8BmYuhNmyQ9yWupCeKn8NiakLoEp8lPMUzewfXnFE1KXAJuSv9Hrpq7uRJ4P8DJHDakff/Hlq4/fzxfPq+anP37DkAobEI6ntlQuIv/wGZi6E2bJD3Ja6kJ4qfw2JqQugSnyU8xTN7B9ecUTUpcAW5O/1Ium7u0UnhVwv8O31Ee/+ijfOm+QX7/7pi0VlpNvprZULiv/8BmYuhNmyQ9yWupCeKn8NiakLoEp8lPMUzewC3nLE1KXAFuTv9Qrpi7tFPlDW/S5wa4cMqS+9btP8pXzZvnkX942pMJw+UhqTuWq8l/gB6buhEHyaxyYuhNeKr+NCalLYIr8FPPUDexC3vKE1CXABuXv9XKpGztF/tA28Axh8x4cUn/217/l++Yt870f/PBP779jSIVp8lXUlsot5b+3D0zdCVPkpzgtdSHcJz+PCalLYIr8FPPUDexC3vKE1CXANuWv9lqp6zpa/sQ29jxhw+4ZUj/67PN83Ezm1E8/eM+WCrl8CbWlUsl/Vx+YuhOmyE9xWupCuE9+HhNSl8AU+SnmqRvYi7zoPHUDsFn5271Q6q6Olj+xrT5Y2KSXDamvvPZ6vmwmefTo0Z1zal0UbFw+fZpTGSL/FX1g6k6YIj/FaakL4T75eUxIXQJT5KeYp25gL/Ki89QNwJblL/gqqYs6Wv7E9vCQYTO+O6R+/MWXrz5+P980w/zkjddtqXAD+dZpS2Wg/Nfygak7YYr8FKelLoT75OcxIXUJTJGfYp66gb3Ii56QugTYrPztXiV1UcfJH9feHjhswAtb6vd//mG+Zub56Y/fMKTCNeT7pi2V4fJfxWemroVefoTTUhfCA/ILmZC6BKbITzFP3cCO5F3nqRuALctf8CVSt3Sc/HHt+eHDur4ZUt/4zW/zHXNIPn7vLUMqXES+aZpTWUv+G/jA1J3Qy49wWupCeEB+IRNSl8AU+SnmqRvYkbzrPHUDsHH5Oz4/dUXHyR+XFmBFT4bUx3/+S75gjsq//uQtWyqcLN8xJ6QugSXlv3gPTN0JvfwIp6UuhAfkFzIhdQlMkZ9inrqBHcm7zlM3ABuXv+PzU1d0hPxZaQTW9X/+4f/Kt8tp+fmf/+9//Z//q24GVpJvl9NSF8KS8l+2Z6auhVh+gdNSF8ID8guZkLoEpshPMU/dwI7kXeepGzhd/uiGpO6Bh+VHMjx1P0fIn5V2YFFP/jHbN19/LZ8v5+T7P//wm3/6uO4HRsv3yuGp+2E9+S/YM1PXQik/v2mpC+Fh+ZFMSF0CU+SnmKduYF/yuh3bafJHNyR1DzwsP5Lhqfs5Qv6s1AQrejKkfpW//PTd7/3gh/mIOSGvvPb6bz7/r2+2VHMqfFe+Ua6SuiiWlP9qPTB1J5Ty85uWuhAelh/JhNQlMEV+innqBvYlr9uxnSZ/dENS98BB8juZnLqcQ+UPak7qKmAl3wypT/Lrd9/Md8wJeff3f/z2kGpLhSfyXXLF1KWxpPzX6YGpO6GUn9+01IXwsPxIJqQugSnyU8xTN7Aved156gZOlD+3Ial74CD5nUxOXc6h8gc1MHUnsIAXtlT/0u9XefXx+y8MqeZUdi6fI1dPXSDryX+Lnpm6Fhr54Q1M3QkPy49kQuoSmCI/xTx1A/uS152nbuBE+XMbkroHDpWfytjUzRwqf1CTU5cDQ313SPUv/X6Vjz77/M4t1ZzK3uQT5GZSN8mS8t+fB6buhEZ+eNNSF8JB8juZkLoEpshPMU/dwL7kdeepGzhR/tyGpO6BQ+WnMjZ1MwfJn9JCqbuCKe4cUv1Lv9/9133NqexKPjtuMnWrLCn/nXlg6k5o5Ic3LXUhHCS/kwmpS2CK/BTz1A3sTt64eztB/tyGpO6BQ+WnMjZ1MwfJn9KKqUuD0j1D6p7/pd+X/eu+5lQ2L18bN5+6YdaT/6o8M3UtBPKrm5a6EA6S38mE1CUwRX6KeeoGdidv3L2dIH9uQ1L3wBHya5mZupaD5E9p6dTtwa09OKTu9l/6/eV//OchW6o5lc3IF8b9pK6a9eS/Ic9MXQu3lp/cwNSdcJD8TiakLoEp8lPMUzewO3nj7u0E+XMbkroHjpBfy8zUtRwkf0qbSd0kXN0hQ+o+/6Xft373yYFDqjmV1eXD4g5Td86S8l+MB6buhFvLT25a6kI4VH4qE1KXwBT5KeapG9idvHH3doL8uQ1J3QNHyK9lZupaHpY/ok2mbhWu4vAhdW//0u8/vv3Ox198edSWak5lOfmeuOfU5bOk/Pfhmalr4abye5uWuhAOlZ/KhNQlMEV+innqBnYnbzxP3cAp8oc2JHUPHCc/mIGpO3lY/oi2nbpeuJhjh9Sv8ukH7+3kX/o9/F/3NaeynHxGlCepD4H15L8Gz0xdC7eTH9vA1J1wqPxUJqQugSnyU8xTN7A7eeN56gZOkT+0Ial74Dj5wQxM3cnD8ke0k9Q9w1lOGFKf5JN/eTsfOq+dY/91X1sqS8inQ3kh9UWwpPwX4Jmpa+FG8kublroQjpBfy4TUJTBFfop56gb2KC/dyR0rf2hDUvfAcfKDGZi6kwfkz2eHqTuHU5y8pX6Vn7zxej53Xi+n/eu+5lTGyhdDeVnq02BJ+e+9M1PXwo3klzYtdSEcIb+WCalLYIr8FPPUDexRXrqTO1b+0Iak7oHj5AczMHUnD8ifz55Tlw+HOmdIffIv/f7TP2/2X/o9+V/3NacySj4UyiGpz4T15L/uzkxdC7eQn9nA1J1whPxaJqQugSnyU8xTN7BHeelO7lj5QxuSugeOkx/MwNSdPCB/PvIP44+EnTtzSH2SPzze5r/0e86/7mtOZYJ8HJSjUt8L68l/yx2buhmuLr+xaakL4Tj5wUxIXQJT5KeYp25gj/LSndyx8oc2JHUPHCc/mIGpO7lP/nDkhdQXAS+6yJD6JL9480f59HnZvPr4/TP/dV9zKqF8FpQTUl8NS8p/v52ZuhauKz+wgak74Tj5wUxIXQJT5KeYp25gj/LSndyx8oc2JHUPHC2/mWmpC7lP/nDkZalPA752wSH1SR49epQPoBfMR599fsEh1ZzKbeRroJyT+nxYUv5r7djUzXBF+XUNTN0Jx8kPZkLqEpgiP8U8dQN7lJfu5I6VP7QhqXvgaPnNTEtdyH3yhyMPpr4R9uviQ+pX+dP773zvBxv5w6nv/v6PFx9SzalcTz4CyqVSnxLryX+bHZu6Ga4ov65pqQvhaPnNTEhdAlPkp5inbmCP8tLz1A0cLX9iQ1L3wNHym5mWupD75A9HDk99LOzLNYbUJ/n1u2/mM+j5efXx+1caUs2pXFy+/cllUx8US8p/j52ZuhauJT+tgak74Wj5zUxIXQJT5KeYp25gj/LS89QNnCJ/aENS98Bx8oOZlrqQl8qfjJyW+nDYvusNqU/ykzdez8fQc/LKa69f41/3NadyWfnkJ1dKfVksKf/1dWzqZriK/K4Gpu6Eo+U3MyF1CUyRn2KeuoGdynt3dcfKH9qQ1D1wnPxgpqUu5KXyJyNnpr4gtunaQ+pX+fSD95b+l34f//kv1x5SzamcLF/65NqpT4xV5b+4zkxdC5eXH9XA1J1wivxsJqQugSnyU8xTN7BTee+u7lj5QxuSugeOkx/MqNRt3Cd/OHKR1HfEptxgSH2SPzx+O59ET8v3f/7hbYZUcyrHyjc+uVnqW2NJ+a+sY1M3w4XlFzUwdSecIj+bCalLYIr8FPPUDexU3rurO1b+0Iak7oHj5AczKnUb98kfjlw29UGxvJsNqU/yizd/lA+jx+aV117/+Isvb7mlmlN5UL7rye1THx1Lyn9THZu6GS4sv6iBqTvhFPnZTEhdAlPkp5inbmCn8t5d3bHyhzYkdQ8cJz+YUanbeKn8ycj1Uh8Xq7rxlvpVHj16lM+jR+XDf/v3Gw+ptlTukS96UqU+PVaV/446NnUzXEx+SwNTd8KJ8suZkLoEpshPMU/dwE7lvbu6Y+UPbU7qKjhCfi2jUrfxUvmTkWunPjEWc/sh9av85afvLvSHU9/63Se3H1LNqXxXPuTJhNRnyJLy307Hpm6Gi8lvaWDqTjhRfjkTUpfAFPkp5qkb2Km8d1d3rPyhzUldBUfIr2VU6jZeKn8ycrPUt8YCkiH1ST5+7618JD0krz5+//b/uq85lRfk+53MSX2MLCn/pXRy6nK4gPyKBqbuhNPlxzMhdQlMkZ9inrqBncp7z1M3cLT8ic1JXQWHyk9lWupCXip/MnL71EfHUOGQ+iQ//fEb+VT6YD767PNwSDWnki93Mi31SbKq/NfRsamb4QLyKxqYuhNOlx/PhNQlMEV+innqBnYq7z1P3cDR8ic2J3UVHCo/lWmpC3mp/MlIlfr0mCUfUr/Kpx+8N/wPpz7+81/yIdWcuk/5YCczUx8mC8t/EZ2cuhzOkt/PzNS1cLr8eCakLoEp8lPMUzewU3nveeoGjpY/sTmpq+BQ+amMSt3GQfKnJFXq06OXr6jf5E/vvzP2D6d+/+cf5hOqOXWH8rVOBqa+SjYi/xV0bOpmOEt+PwNTd8JZ8vuZkLoEpshPMU/dwH7l1Tu8o+RPbFTqNjhIfiejUrdxnPxxSZL67sjk++kLmfmHU1957fX2z6SaU3coH+xkVOp7ZIPyXz4npy6HE+WXMzN1LZwlv58JqUtgivwU89QN7FdevcM7Vv7Q5qSugoPkdzIqdRunyx+d3D710XFT+XJ6Zwb+4dRf/sd/5supOXUn8s1O5qQ+RjYu/51zcupyOEV+NjNT18K58hOakLoEpshPMU/dwH7l1Tu8Y+UPbU7qKjhIfiejUrdxAfkzlBunvjhuId9MX5Zpfzj13d//Md9Mzal7kC93MiT1JbIj+S+ck1OXw9Hym5mZuhbOlZ/QhNQlMEV+innqBvYrr97hHSt/aKNSt8ED8guZlrqQC8ufp9wy9blxLflgen/m/OHUVx+/n6+l5tTNy8c7yVPfIDuV/545PHU/HCG/lrGpm+Fc+QlNSF0CU+SnmKduYL/y6h3esfKHNip1Gzwgv5BpqQu5lvzBys1S3xoXlk+lh2TCH0595bXXf/P5f+VTqTl1w/IJT9rUBwh+n/cL8Ebk1zIzdS1cQH5FE1KXwBT5KeapG9ivvPo8dQNHy5/YqNRt8ID8QkalbuMW8ocst0l9aFxGPpIenvwPp374b/+ej6Tm1E3KJzwJU18fPCf/9XJ46n44SH4nY1M3wwXkVzQhdQlMkZ9inrqB/cqrz1M3cLT8iU1LXQj3yc9jVOo2bi1/4HKD1FfG6fJ59Ki0fzj1rd99ks+j5tTtyYc8qVKfHrxU/ovl5NTlcJD8TmamroXLyA9pQuoSmCI/xTx1A/uVV5+nbuBo+ROblroQXiq/jWmpC8nkT16unfrEOFq+jZ6Q6g+nLvFnUs2pa8m3PLl96qODg+S/Ug5P3Q8PyC9kbOpmuIz8kCakLoEp8lPMUzewX3n1eeoGTpE/tGmpC+Fu+WFMS11IL69Arpr6vjhUvoqenE/+5e0bD6mvvPb6x198ma+i5tTNyBc9uXHqi4Pj5L9Mzk9dES+V38bY1M1wMfktTUhdAlPkp5inbmDX8vbd3rHyhzYtdSHcLT+MUanbmCWvQ66a+r64T76HnplfvPmjW26pv/yP/8z3UHPqNuSjntwy9bnB6fJfI+enroi75YcxNnUzXEx+SxNSl8AU+SnmqRvYtbx9t3es/KFNS10Id8ivYlrqQobKe5HrpT4u7pAvoRfJzf5w6ru//2O+hJpTNyDf9eRmqW8NLiD/BXJ+6oq4Q34VY1M3wyXl5zQhdQlMkZ9inrqBXcvbd3vHyh/awNSd8KL8JKalLmS6vCC5UurL4pl8A71UPv3gvRv84dTv//zDfAM1p64un/bkNqkPDS4s/+1xfuqKeE5+D5NTl8Ml5ec0IXUJTJGfYp66gV3L289TN3C0/IkNTN0Jz8nvYWDqTpaRNyVXSn1Ze5cPoJfNn95/56pD6j++/c7SfybVnJrL1z25Qeorg2vJf2lcInVLPJVfwuTU5XBh+UVNSF0CU+SnmKduYNfy9vPUDZwif2gDU3fCM/kxTEtdyJLy1uQaqc9qp/Lp8xr59btvXm9L/eizz/Pp05y6onzdkxukvjK4hfw3xiVSt8TX8jOYnLocLiy/qAmpS2CK/BTz1A3sWt5+nrqBU+QPbWbqWvhafgYDU3eytrw+uXjqm9qXfPS8Xn764zeuMaT+7K9/y0dPc+py8oFPrp36xOCm8t8Vl0jdEg7Vfe5LflQTUpfAFPkp5qkb2LW8/Tx1A6fIH9rM1LXwtfwMBqbuZCPyHuWyqQ9qF/K586r59IP3Hj16dNkh9Y3f/DafO82pa8k3Prlq6vuCTP6L4hKpW9q1vP3hqfvh8vKjmpC6BKbITzFP3cCu5e3nqRs4Rf7QxqZuZu/yAxiYupMNyjuVC6a+pi3Lt84b5C8/ffd7P/jhpYbUVx+/v70/k2pOvZ585pPrpT4u6OW/Iq6SuqidynsfnrofriK/qwmpS2CK/BTz1A3sWt5+nrqBU+QPbWzqZnYtb39m6lq2LC9XLpX6lDYoXzlvlj88fvsiQ+orr73+m8//K185zamryMc+uUbqs4JZ8t8PV0ld1O7kjc9PXRFXkd/VhNQlMEV+innqBvYuPwDnd4L8uY1N3cx+5dXPTF3L9uUVywVTX9NG5PvmjfPrd988f0v95X/8Z75vmlOXkO99cvHUNwVD5b8WLpS6qx3Ju56fuiKuJT+tCalLYIr8FPPUDexdfgB56gZOkT+0yanL2aO89Jmpa9mXvG65VOpTWlu+bCb56Y/fOGdIffznv+TLpjl1vnzyk4unvimYLv+dcKHUXe1C3vISqVviWvLTmpC6BKbITzFP3cDe5QeQp27gFPlDm5y6nN3JGx+bupmdynuXi6S+oyXlm2aVTz9479GjR6cNqW/85rf5pmlOHS6f/OSyqQ8KlpH/NrhW6ro2Lu93idQtcUX5dU1IXQJT5KeYp25g7/IDyFM3cKL8uU1OXc6O5F1PTl3O3uUHIOenPqKV5INmm7/89N3v/eCHxw6prz5+/+MvvswHTXPqWPnqJxdMfU2wpPxXwbVS17VZebOrpC6KK8qva0LqEpgiP8U8dQN7lx9AnrqBE+XPbXjqfnYhb3ly6nJ4Kr8EOT/1ES0gnzIn5E/vv3PUkPrKa6//5vP/yqfMCanvd6J8+JNLpT4lWF7+e+BaqevaoLzTVVIXxXXlBzYhdQlMkZ9inrqBvcsPIE/dwIny5zY/dUXbl1c8OXU5vCg/CTkz9QXNlY+Yc/Lxe28dvqV+9Nnn+Yg5J/UVD5Jvf3Kp1KcEG5H/Brhc6sY2JW9zodRdcV35gU1IXQJT5KeYp25g7/IDyFM3cKL8uS2RuqUty8sdnrof7pYfhpyZ+oLGyefLafnFmz86ZEj92V//ls+X01Lfci/f/uQiqe8INij/9W+51I1tRN7jQqm74uryG5uQugSmyE8xT93A3uUHkKdu4HT5o1sidUsblHc6P3VFPCw/Ejkn9flMkQ+XM/Pm66/dP6S+8Zvf5sPlzNQXncnnP7lI6juCzcp/8VsxdWnLyxtcKHVX3EJ+ZhNSl8AU+SnmqRvYu/wA8tQNnC5/dKukLmpT8jaXSN0SR8ivRU5OfTuxfLIcm08/eO/Ro0cvG1K///MP88lycuq7vrV8/pPzUx8R7EL+W9+KqUtbWN7dWqnr4hbyM5uQugSmyE8xT90AjnDVI8yf20Kpu9qIvMclUrfEKfKzkZNT304j3yuH50/vv/O9H/zwu0Pqq4/f//iLL/O9cnjq676dfASUM1NfEOxL/ivfoql7W0ze13KpG+NG8kubkLoEpshPMU/dAI5w4SPMH91CqbtaXt7gKqmL4iz5/chpqQ/npvKlcon84fHbLwypr7z2+keffZ4vlUukvvGry0dAOSf1+cBO5b/srZu6umXkTa2YujRuJL+0CalLYIr8FPPUDeAIFz7C/NGtlbquVeXFLZS6Ky4jPyQ5LfXh3EK+US6Uj99769tb6i//4z/zjXKh1Jd+LfkOKOekPh/Yu/w3vXVTV7eAvKMVU5fG7eTHNiF1CUyRn2KeugEc4cJHmD+65VI3tp68srVS18Ul5eckp6U+nCvK18nl8os3f/RkSP3ZX/+Wr5PLpb73C8t3QDk59e0AT+W/462eusCh8l4WTd0bN5Xf24TUJTBFfop56gZwhGsfYf70lkvd2DLyppZL3RjXkp+WHJv6ZK4i3yUXzU/eeP2N3/w23yUXTX31l/H/sXd/PXZeZdrgP8greRQUKOxK2VXlTjImJE78J+aNIcE4AWsCTJuGFqTVLwpEr0RHnASp1RoF0QcztBT1AYg+IpocIIE0RyPO5zt5HBVyHLuqvP88z7rutZ7fT9dx73vfaz1F7Vzt2vEqUDZO+u4Aj4r/jtd70gdYTvxE+k366Ggqft8qJH0IVBG/ivGkTwCXsO9LGN9ep0mfW3XxA+ox6UNjXvELJusmfWWmFG8ku068kew96eu/lXgbKBskfWuA08R/wRsg6TMsIX4KXSd9erQWv3IVkj4EqohfxXjSJ4BL2PcljG+v36SPrqj4uXSa9LnRTvyyyVpJ35cJxLvI3hPvIgdI+iHYRLwQlA2SvjXAk8V/tRsm6ZOMiW++96QPkID4rauQ9CFQRfwqxpM+AVzC7u9hfHtdJ316hcTPouukT4/W4ldO1kr6vmwuXkT2nqM1xrvIAZJ9ENYSLwRlg6RvDbCG+O91IyV9mE3Ftz1G0sdIQPzWVUj6EKgifhXjSZ8An4pfg3jSJ7CV+PZ6T/oA8+JH0HvSB0hM/O7JWknfl7XFi8je8/Ay413kAEk9CKuLF4KybtJXBthQ/Je6wZI+z9nFNzxM0idJRvziVUj6EKgifhXjSZ8An4pfg3jSJ7Ct+AIHSPoMA+I7HybpkyQsfgNlraTvy6riRWTveXyl8S5ygLR/EFYXrwVlraTvC7CV+K9zQyZ9qrOIb3WkpA+TmPjdq5D0IVBF/CrGkz4BPhW/BvGkT2Bb8QUOk/RJNhLf80hJHyaFxG+jrJj0TXmyeBHZe05abLyLHCAtH4QVxWtBWSvp+wJMI/7r3KhJH+xk4pscL+kjJSZ+9yokfQhUEb+K8aRPgE/Fr0E86ROYQHyHIyV9mHOJL3bIpE+VcuJ3UlZM+qYcL95CDpDTNxzvIgdIm2dhFfFaUNZK+r4AE4v/Ljd20se7ofjeRk36YEmKX78KSR8CVcSvYjzpE+BT8WsQT/oEJhDf4ZBJn+o04mscOOmzpa745ZQVk74pnxNvIQfIKnuOd5EDZO5nYRXxZlBWTPqmADOK/yK3hKQPeSXxLY2d9PESFr+BFZI+BKqIX8V40ifAp+LXIJ70CUwgvsOxkz7etcU3tpCkz5nq4ldUVkz6pnwq3kKOkVVWHS8ix8jcT8Qp4uWgrJjgJQHaiP8Kt6ikT/tR8YUsJOlzJi9+CSskfQhUEb+K8aRPgE/Fr0GFpA9hAvEdLiHpQz5NfDlLS/rA6Un8usoqCd6QeAU5RlZfeLyIHCPzPREniZeDsmLa3w0gJf772zLjuJeT1FlTR/wSVkj6EKgifhXjSZ8An4pfgwpJH8IE4jtcWhz3kpM9fToVv7fyxEQuRryCHCPrrj1eRI6ROZ6Ik8T7QVklLa8EUET89zc5N88vsfE3JXMcK92J38MKSR8CVcSvYjzpE+Bv4jchnvQJTCO+xiXHsS4q8x03w4vfXnliWt6HeAU5RjZbfryIHCbTPhSPi/eDskrmvgZAZfFf3kTGS/qxpor4VayQ9CFQRfwqxpM+Af4mfhPiSZ/ANOJrFFlC0g86I4hfY3liGlyDeAU5RrY5gngLOUymeigeEe8HZZXMdPpAR+K/tokMlvQzTSHx21gh6UOgivhVjCd9AvxN/CbEkz6BycQ3KTJ20o84Q4nfZzk9s55+vIIcI9sfRLyFHCbbn8Uj4hWhPDGTHzrQr/ivbSIjJf1AU0j8NlZI+hCoIn4V40mfAH8TvwnxpE9gSvFligyc9PPNgOK3Wk7PHIceryDHyFTHEW8hh8lUJxKvCOWJmeqsgZHEf2cTGSPpR5la4heyQtKHQBXxqxhP+gT4m/hNqJD0IUwmvkmRUZN+uBlZ/HrL6ZnwrOMV5BiZ8ETuqVMr1anxllBOz/ZHDAws/gubSO9JP8SUE7+TFZI+BKqIX8V40ifA38RvQoWkD2FK8WWKjJf0Y80ixO+5nJLtzzfePw6T7c/icfEWcphsfATxllBOz4SPGzCw+C9sIv0m/fhSUfxaVkj6EKgifhXjSZ8AfxO/CRWSPoQpxZcpMl7SjzULEr/tcko2PtZ4/zhSJnzcHohXkCNl3eXHW0I5PXM8ccDA4r+tifSY9INLUfGbWSHpQ6CK+FWMJ30C/E38JlRI+hAmFt+nyEhJP9AsUfzayylZ9zTj5eNImeNxOxKvIAfLimuPF4VySuZ73ICBxX9PE+ku6aeWuuKXs0LSh0AV8asYT/oE+Ez8MsSTPoGJxfcpMkzSTzOLFr//clJWP8R4+ThS5nvWjsT7x8Fy+rbjRaGckrmfNWBs8d/TRDpK+nmltPj9rJD0IVBF/CrGkz4BPhO/DPGkT2B68ZWKDJD0cwyfij8IclKeeHbx8nGkNHjW7qlTW9Wp8a5QTkqbBw0YXvyXNJFekn5YKS1+PyskfQhUEb+K8aRPgM/EL0OFpA9hevGVinSd9BMMnxN/IuSknHRk8fJxpLR81uL942B5ZL3xrlBOSsunDFiC+G9oIvWTfkypLn5FKyR9CFQRv4rxpE+Az8QvQ4WkD2F68ZWKdJ30EwzHiD8XcmweP6l4+ThS2j9o8f5xsDxYbLwulGPT/hEDFiL+G5pI5aQfUDoQv6UVkj4EqohfxXjSJ8Bn4pehQtKHMIv4VkU6TfrZhdPEHxA5NkenE28eB0vqKYv3j4MlXhfKsUk9X8ByxH89E6mZ9KNJH+IXtULSh0AV8asYT/oE+Ez8MlRI+hDmEl+sSHdJP7WwkviTIo8n3jwOluwjFu8fh8mPf/GrX3zlv8d7Q3k42YcLWJT4r2ci1ZJ+KOlG/K5WSPoQqCJ+FeNJnwCfiV+GCkkfwoziuxXpKOnnFdYTf2TkQXZv3nnh2effv/16vIIcI+ln61PxFrL3/Ozjv7x98843n3nxfn68/8qfDvIdoqSfKmCJ4r+kidRJ+nGkJ/HrWiHpQ6CK+FWMJ30CfE78PlRI+hDmEl+sSC9JP6ywofizI7vXbz21s/u/PL1zP6+/+OKHb78Z7yK7TvqR+ky8juw3P/7Fr25fvHZUpB7lBxde/uNhvkxcbNIPE7Bo8V/VRCok/SDSmfiNrZD0IVBF/CrGkz4BPid+HyokfQgziu9WpH7SjylsK/4QLTa7V75+1KI+yDO7ez9/42a8kew06SfpUfFSsrs8/M9RH8lbey/9QZ2qRQUWKf4Lm0g26UeQ/sQvbYWkD4Eq4lcxnvQJ8Dnx+1Ah6UOYV3y9IpWTfkBhMvGnaWn58nMvPlKkPsiNS1/xD1R7L1KPxNvJjvL4P0d9PL+5eD1eLy4n6acH4DPxX9tEUkk/fHQpfm8rJH0IVBG/ivGkT4DPid+HCkkfwuziGxapmfSjCROLP1MLye637u5cvHRSkXqUL+6c+6ebX4sXlL0k/eicJt5R1s8p/xz18XxweC1eMg6f9EMDcIz4728i7ZN+7OhV/OpWSPoQqCJ+FeNJnwCfE78PRZI+h3nF1ytSMOnnEuYSf7jGzjNvfO/pvcPTi9QHefnZ5/0D1a6L1CPxsrJy/vnD/3jiP0d9JO8dXP3TQb5wHDLpZwXgNPHf4kRaJv3A0bH47a2Q9CFQRfwqxpM+AT4nfh+KJH0Os4tvWKRU0k8kzC7+lA2Z3Zt3ntrZXbFI9Q9UxyhSj8Qry4J5789//f6bf79Wi/ogP7jwsjpViwosUPx3OZEGST9ndC9+hyskfQhUEb+K8aRPgM+J34ciSZ9DC/ElixRJ+lmEduKP20jZvfL1dYtU/0B1jCL1SLy7LJUN/jnqI3lr76U/HOYryAGSfjIA1hP/jU5k1qSfMEYQv8YVkj4EqohfxXjSJ8Cj4leiQtKH0Eh8zyLxpJ9CCIg/dwPk7Fevbdai+geqYxSpR+INZoW89+e//sM/vrtNi/pwnfqbi9fjXWTXST8TABuK/2onMkfSDxaDiN/kCkkfAlXEr2I86RPgUfErUSTpc2gkvmeRYNLPH8TEn75+s/utu19+7sUti1T/QHWAIvVIvMrM5t3ff/ztF16bpEh9kA8Or8UbyR6TfhQAthX/HU9k2qQfKcYRv8wVkj4EqohfxXjSJ8Cj4leiSNLn0E581SKRpJ88yIs/ht1l91t3n947nKpI9Q9Uey9Sj8QLzVR+9NN/mbZFfZD3Dq76+lQtKrBA8d/0RKZK+mFiKPH7XCHpQ6CK+FWMJ30CPCp+JYokfQ5Nxbct0jLpBw5qiT+SvWT35p2NvyDVP1AdtUg9Eq81G+dnH//l7Zt3ZipSj/KDCy//0denKlKB5Yn/vieyfdKPEaOJX+kKSR8CVcSvYjzpE+BR8StRJOlzaC2+cJE2ST9qUFT82Sye3Stfn69IXfI/UE1f/MnE+81m+ecP/+P2xWuzFqkPvj71Pw99faoWFVic+G99Ihsn/fQwpvjFrpD0IVBF/CrGkz4BHhW/EnWSPorW4gsXmTvphwxKiz+hZfPlS6/M2qI+nBuXvrKcf6CavvITi7ecc+e9P//17vd+0qBFfTi/uahO1aICSxT/9U9k3aQfGoYVv9sVkj4EqohfxXjSJ8Ax4reiSNLnEBDfuch8ST9e0If4o1oqu9+6u3PxUrMi9SjP7O79/I2b8aJTkbqBeN05X979/cfffuG1xkXqUd47uBqvL+skfccB2on/HiiyetKPCyOLX+8KSR8CVcSvYjzpE+AY8VtRJOlzyIivXWTypJ8q6E/8sa2Q3Zt3nt47bFykPshbL1+O151a1A3ES8858uNf/CrSoj7IDy68/KeDfI+pRQVoLP7boMgTk35KGF/8kldI+hCoIn4V40mfAMeI34oiSZ9DTHzzIhMm/TxBr+IPbza712/N/QWpT8zh+f33b78erz4VqeuKV58T5r0///Xtm3eyRepR3tp76Q+H+UJTiwrQXvzXQpGTkn44WIT4Pa+Q9CFQRfwqxpM+AY4RvxV1kj6KmPjmRSZJ+kmC7sWf4kh2L38t26I+yBd3zn332tV4AapIXVe8A50kP/3t725fvBZvUR/OAr8+NX2XAUqI/3Io8njSjwVLEb/qFZI+BKqIX8V40ifAMeK3ok7SRxEW37/Ixkk/PTCU+BPdLLvfuvvl516MV6iP5OVnn//w7TfjTagidS3xJnTL/Oin/xJvTo/Ncr4+NX2FAWqJ/5Yo8iDpp4FliV/4CkkfAlXEr2I86RPgGPFbUSfpo8iLH4HIBkk/NzCg+HPdIM+88b3gF6Q+8R+o/vyNm/E+VJG6lngfull+9vFf7ly9Fe9MT8nwX5+avrkAdcV/XRRJPwQsTvzOV0j6EKgifhXjSZ8Ax4tfjDpJH0Ve/AhEVk/6cYHBxZ/x+VLhC1KfmNdffDHeiipS1xIvRtfNP3/4H9X+ru+xGfjrU9N3FqC6+C+Nstik7z4LFb/5FZI+BKqIX8V40ifA8eIXo07SR1FC/BREVkn6QYGliD/sk+fsV6/Fe9IVc3h+/1ffuRWvRxWpq4vXo6vnH/7x3XhJulb+7fBavPrUogJExH97lKUlfeVZrvjlr5D0IVBF/CrGkz4Bjhe/GHWSPopC4mchclLSDwcsTvypnyq737q7c/FSvCFdK1/cOfdPN78WL0kVqauLl6RPzHt//mvxv+t7Ut47uDrA3/tN31CAXsV/k5QlJH3NWbr4I1Ah6UOgivhVjCd9AhwvfjFKJX0ahcTPQuSRpJ8JWLT4T4Ats3vzTtkvSH1iblz6yodvvxlvSxWpK4q3pafkp7/9XRd/1/ek/ODCy13/vd/03QToW/z3SRk76QsOfsp5EvlM/CrGkz4Bjhe/GKWSPo1y4icicpT0owB8Kv6jYLPsXvl6/S9IPT2H5/ffv/16vDNVpK4o3pkemx/99F/iZej2eWvvpd8eXo+3olpUgJT4L5YyXtKXGv4m/ixUSPoQqCJ+FeNJnwDHi1+MakkfSDnxE5GFJ/0EAJ8T/5mwbr586ZV4EzpJvrhz7oc3rsebU0XqiuLN6cN5789/ffvmnXgNOmHeP7war0cVqQBB8d8wZYykLzJ8TvyJqJD0IVBF/CrGkz4BThS/G6WSPo2i4uciC0z61gMniv98WCW737rb79/1PSml/t5v+hpWF69Qj/Lu7z/+9guvxdvPyfPj/Vfqf31q+g4CjCz+q6Z0nfT9hWPEn4sKSR8CVcSvYjzpE+BE8btRKunTqCt+NLKcpC878GTxHxSnZ/drb/b+d31PSpG/95u+gH2IF6nvfPDreOk5X97ae+k/C/+93/TtA1iE+O+c0mPS1xaOF380KiR9CFQRv4rxpE+AE8XvRrWkD6S0+OnI2ElfcGA98R8ax2b38tfijeesif+93/S960nw7/re/d5P4nVng3xweC1em2pRAbLiv3xKL0lfVThN/AGpkPQhUEX8KsaTPgFOFL8b1ZI+kA7Ez0jGS/pSAxuK//R4OLvfurtz8VK862yT1198UZHai8ZF6s8+/sudq7fiLWezlPp7v+m7BrBc8V9EpXLS1xOeLP6YVEj6EKgifhXjSZ8AJ4rfjYJJn0kH4mckwyR9l4EJxH+S3M/uzTtfOHc+XnG2zOH5/V9955YitQvNitSf/vZ3ty9ei/ebjfP2+Zf/cKhFBaDEL6VSKukrCauKPywVkj4EqohfxXjSJ8CJ4nejYNJn0o34SUnXSd9fYErZnyfD/13fk/LFnXM/f+OmIrULDYrUH/30X+K1ZjD/lvt7v+nLBcDnxD/qSoWkryGsJ/7IVEj6EKgifhXjSZ8Ap4lfj4JJn0lP4ocl3SV9Z4G5tP95sqi/63tS3nr5siK1C/O1qO/9+a/ff/Pv421mPP/j4Erjv/ebvlMAnCj+sVdSSV892ET8wamQ9CFQRfwqxpM+AU4Tvx4Fkz6T/sSPTOonfUmBRpr9VFng3/U9KS8/+/yHb7+pSK1vjiL13d9/vKgvSD09b59/+T8Pr2tRATgS/xQszZK+a7CV+BNUIelDoIr4VYwnfQKcJn49aiZ9LL2KH5wUTPpWAq01+MGy2L/re1IOz++/f/t1LWp9viC1QT6Y+e/9pi8RAGuLfyiW+ZK+XDCB+HNUIelDoIr4VYwnfQKcJn49aiZ9LH2LH59USPoaAmEz/Wzxd31Pyhd3zv3Tza8pUuubqkj98S9+FW8ty+bH+6/M9Pd+09cHgM3FPyPLtElfKJhM/GmqkPQhUEX8KsaTPgFOE78eZZM+me7FT1BSSV89oIrJf7z4u75PzCRfn5q+OOPb/gtS737vJ/G+snje2ntp2r/3m741AEwm/pFZtkn6+sD04o9VhaQPgSriVzGe9AnwBPEbUjPpYxlH/CilTdIXDShqqh8y/q7vitny61PT92UptilSfUHq6nn/8KoiFYCTxD9Ey+pJXxaYUfz5qpD0IVBF/CrGkz4BniB+Q8omfTJDiZ+mzJT0zQI6sOXPGX/Xd91s/PWp6ZuyOOsWqe/+/mNfkLpufnDh5T8ealEBOFH8M7WckvTtgBbiD1qFpA+BKuJXMZ70CfAE8RtSOenDGVD8TGWSpO8R0J/Nftrsfu3Np3Z24+1kd9ng61PTF2ShVi9S3/ng14rUzfLW3ku/ubjJ3/tN3w4Amop/ypYHSd8FaCr+xFVI+hCoIn4V40mfAE8QvyGVkz6ckcUPV9ZN+soA3Vv3x87Zr16Ll5Jd57vXripS61ulSP2Hf3w33kj2nvcOrv7pQIsKwErin76XmfSxQ0b80auQ9CFQRfwqxpM+AZ4gfkMqJ304SxE/aDkl6dsBDGXFnzzPvPG9p/cO413kALlx6StP/PrU9KXgtDr1vT//9e73fhIvIsfI2+df/sMKf+83fR0AKCT+eXwJSR8yAAB0Jv47vBwlfRGAwZ3+I2j3ytf9Xd8Jc3h+/6Q6NX0R+MxJReqdq7fiFeRg+eDwmhYVgA3EP6ePlPRhAgDAIOK/2y8t6QMHluXYH0S737r75edejJeP4+WLO+fev/26IrW4R4rUd3//sS9InSk/3n/lj4/9A9X0+QPQk/jn9x6TPjQAABhc/Hf+IZM+VYDP/XjfvXnnC+fOx2vHUfPFnXM/vHFdkVrfUZH6zge/VqTOmrf2XvrNxetaVAC2F/9oXzbpkwEAgEWLfyLoNOlzAzjG0Q+os1+9Fm8bl5DvXL2qSK3v/3rvf8arxiXk2y+89sF//Of//H//v/SBAzCa+Gd//80BAAB4XPwjQ82kjwXgyY7+meRbL1+O94zD5+m9w91v3fW/DsUd/UvJ3x5ef2vvpXjbOHC+/+bfv/fnvz74i8rpYwdgcPH/OOA/OAAAAI+Lf6zwKQbgiR7++s73b79+eH4/XjiOmi8/9+JRkep/OMp65Os7/3D46tvnX453juPl9sVr73zw60e+nVajCkB78f+M4D84AAAAx4p/BvH5BeDe51vUB/nw7Tdff/HFeO04Xr586RX/s1LcI0XqUf508OoPLqhTp8ydq7d+9vFfji1S1akAVOM/NQAAAGXpSQFmdWyR+iD/dPNrX9w5F+8fh8nula/7X5/iji1SH+S9g6vxCnKM/Oin/3JKi6pOBQAAAAAAsk5vUR/+B6qXDv8u3kL2nqd2dndv3vH/zFPc6UXqUf7t8Fq8iOw6ty9e++lvf7dKkapRBQAAAAAAIlYsUh/ku9euxuvIfvP03uEzb3zP30YobpUi9Si/Pbz+1t5L8VKyx3z/zb9/789/XatIVacCAAAAAAAtrVukHuX9268/s7sX7yW7y5efe3H3W3f9qfniVi9Sj/KHQ1+funZ+/ItfbdCialQBAAAAAIA2NmtRH/57vzcufSXeTnaUs1+95su761u3SD3Knw5e/fH+K/GCsot8+4XX3v39x1sWqepUAAAAAABgPlsWqQ/ywxvXv7hzLl5TFs+nX5B65esbF6nq1DY2a1EfzvuHV+NNZfHc/d5PNvu7vhpVAAAAAACggala1Af51XduHZ7fj/eVZfOFc+d3b97ZskhVp85t+yL1KL+56OtTj8/ti9fe+eDX07ao6lQAAAAAAGBCkxepD/L6iy/GW8uC+eL+s+t+Qao6tb2pitQHX5/69nlfn/q53Ll6a6q/66tRBQAAAAAAJjdfi/og/3Tza/7e78P58qVXJmxR1akzmbZI9fWpj2eOv+urTgUAAAAAAKbSoEj1934fziRfkKpObWCOIvVBPji8Fu8xs5n17/pqVAEAAAAAgC01a1H9vd8HmfALUtWps5q1SD3Kbw+X+/Wpbf6urzoVAAAAAADYTKRIXfjf+538C1LVqTNpUKQe5Y+Hr/7gwuK+PrXl3/XVqAIAAAAAAGsJtqhL/nu/Z796rU2LqlHdUrMi9Sh/Onj1vYOr8X6zWX78i1/FW1R1KgAAAAAAcKx4i/pwFvL3fj/9gtTrt9oXqerUDTQuUh/kNxevx1vOufPtF14L/l1fjSoAAAAAAHCKeHN6bIb/e79P7x02+IJUdeokUkXqUf5w+Orb54f9e79v37xT4e/6alQBAAAAAIBHxAvT0zPw3/v98nMvNvuCVHXqlrJF6oO/9/s/Dq7Ee8/J86Of/ku8KlWnAgAAAAAAj4tXpSvmxqWvxKvPabN75evxClWduop4hfpI/u3wWrz9nCq3L1776W9/Fy9JNaoAAAAAAMAj4vXouvnhjetj/L3fL5w7H/+7vurUFcWb02Mzxt/7vXP11s8+/ku8G1WnAgAAAAAAj4gXo5vl/duvP7O7Fy9Dt8nOxUtF/q6vOvWJ4p3pKen97/3e/d5Pin9BqkYVAAAAAAAWKN6HbpkP337z5Wefj1eim2X38tfibak6dUXxtnSVdPr3ft/54NfxJlSdCgAAAAAAPCLehE6Vt16+HC9G10rZv+urTj1WvCRdPX39vd/bF6+9+/uP4x2oRhUAAAAAAHhYvP2cPD9/42YvX59a/O/6qlMfEa9H182fDl597+BqvCd9Yu5cvdX73/XVqAIAAAAAwGDiped8+dV3bh2e349Xpaeni7/rq059IF6MbpzfXLz+1t5L8cL0pNz93k/idac6FQAAAAAAeFi87pw7H7795o1LX4kXpsemr7/rq06913ORepQ/Hr76gwsV/97vMF+QqlEFAAAAAIAxxFvOlvnutavx5vSR9Ph3fRdep8ab0KnyweG1eHn6IEN+QapGFQAAAAAA+hVvNiN5//brRb4+9amd3X7/ru9i69R4ATpt/vPw+tvn8/9AdewvSFWnAgAAAABAd+KdZjAfvv1m/OtTn9477P3v+i6wTo1Xn3PkTwev/o+DK8EidQlfkKpRBQAAAACAXsSrzArJfn3qly+9Msbf9V1UnRovPWfNbw+vv7X3UvsidVFfkKpRBQAAAACAyuINZrW0//rUT/+u7/Vb8bpTnbqueNfZIH88fPXH+680a1FvX7z209/+Lt5dFkz6sgMAAAAAwBLFi8ua+fkbN5t9feoX958d+J+jDlynxlvOlvm3w2sNitQ7V2/97OO/xFvLyknfegAAAAAAWIp4X1k8v/rOrQZfn7p7+WvxflOduoF4udk+fzh89QcXXp6vSP3+m3//3p//Gi8ru0j6+gMAAAAAwMjiNWUv+fDtN19+9vmZWtSn9w53b96JN5vq1A3Ea81gPpjnH6j+wz++Gy8ou0v6OQAAAAAAgAHFC8ru8tbLlycvUr986ZXl/F3fwerUeJsZz+T/QPWdD34d7yU7TfppAAAAAACAccRLyX7zwxvXp/r61Kd2dne/9ma8yqyQ9AOxiXiPWSeT/APV2xevvfv7j+ONZO9JPxYAAAAAANC3eBc5QN6//fr2derOxUsL/+eoXdep8fqyWrb8B6p3rt762cd/iReRwyT9fAAAAAAAQH/iFeRI+fDtNw/P72/+z1Gv34p3lwWTfkRWFS8uy2azf6D6/Tf//r0//zXeP46X9IMCAAAAAAB9iDePQ+bDt9+8cekr6xapX9x/9pk3vhdvLcsm/aw8WbyvLJ51/4Hq3e/9JN45Dpz04wIAAAAAANXFO8ex89bLl9f456iXvxYvK+sn/cScJt5U9pIV/4HqOx/8Ot42LiHp5wYAAAAAACqK94wLyQ9vXH/i16f656gD1KnxgrKvnP4PVG9fvPbT3/4uXjIuKukHCAAAAAAAqojXi0vL+7dfP6lO9c9Rx6hT49Vkp/m3w2tv7b30SJH67Rdee/f3H8e7xWUm/SQBAAAAAEBSvFVcbH71nVuH5/cfKVKf3jv0z1HHqFPjpWS/+ePhqz/ef+VBkXrn6q33/vzXeKW48KSfJwAAAAAAaC1eJsqHb7956fDvHhSpZ796LV5H9p70U/U38TpygPzm4vW39l66+72fKFLrJP1gAQAAAABAC/EOUR7OjUtf8e2oI9Wp8RZymPzfB6/G20N5POknDAAAAAAAZhSvDuXxxPvHwRJ8vuL940g5Wmm8OpRjE3zKAAAAAABgDvHGUI7N0enE+8fBEnnE4uXjSHl4sfHeUI5N5CkDAAAAAIDJxetCOTaPHFO8fxwsjZ+yePk4Uo7dcLw6lGPT+EEDAAAAAIAJxetCOSnHnle8fxwszR60ePk4Uk5fdbw6lGPT5kEDAAAAAICpxLtCOSmnH1y8fxwsDZ61ePk4UlZZeLw3lJMy97MGAAAAAADbi3eFckpWPMR4BTlSZn3c4uXjSFlr8/HeUE7KTM8aAAAAAABsKV4UyilZ9zTjFeRImeNxu6dIDbWoD4v3hnJSJnzQAAAAAABgS/GiUE7PZscaryBHyrRP3D1FaoEi9Ui8NJRTMsmzBgAAAAAAG4u3hHJ6tjzfeAU5UiZ54o7E+8dhMtWJxEtDOT1THTQAAAAAAKwo3hLK6ZnqoOMV5DCZ6kTi/eMwmepEHog3hnJ6Jj9xAAAAAAB4XLwllCdm2hOPt5DDZJLjiFeQY2SSs3hcvC6UJ2amowcAAAAAgHhFKE/MTEcfbyGHyZYHEa8gx8gkD8Up4nWhPDFz3wEAAAAAAJYj3g/KKpn7GsRbyGGy8RHEK8gxMuFDcbp4XShPTLPLAAAAAADAkOL9oKyYZlciXkSOkQ02H68gx8jkT8Tp4l2hrJLGtwIAAAAAgAHEy0FZMe3vRryIHCNr7TxeQQ6QmR6HVcS7QlklwRsCAAAAAEBH4uWgrJ7UJYkXkWNkxW3HW8gBMuvjsKJ4VyirJH1NAAAAAACoK94MyupJXxZ1aqM6Nd5CDpAGj8Pq4l2hrJj0TQEAAAAAoIp4LShrJX1fPhMvIsfIKRuOt5ADpNnjsLp4SyirJ31ZAAAAAABIiteCslbS9+UY8SJygJyy3ngR2XuaPQgbiLeEsnrSlwUAAAAAgNbitaCsm/SVOVG8ixwgxy42XkT2nsYPwmbiLaGsnvRlAQAAAACghXgnKOsmfWWeLN5FDpBHVhovIntP5EHYWLwllLWSvi8AAAAAAEwvXgjKBknfmjXEu8gB8mCZ8SKy9wQfhG3EK0JZK+n7AgAAAADANOKFoGyW9MVZW7yLHCD3FKlLLVKPxPtBWTfpKwMAAAAAwObibaBslvTF2Uq8juw6/9u3vh/vIrtO+vpPI94PygZJ3xoAAAAAAFYVrwJl46TvzjTijWSn2bt19/r5//WTg+vxRrLTpC/+xOLloGyQ9K0BAAAAAOA08SpQNk767kws3kv2mAt7z+/8t6cvP72nTlWkPhAvB2WzpC8OAAAAAACfifeAsk3S12cu8Wqyrxz83eWd//b0Ue7sPhuvJvtK+rLPLt4MymZJXxwAAAAAgKWL94CyZdI3aF7xgrKXHFy++aBIPco75y/FC8pekr7m7cSbQdk46bsDAAAAALAs8QZQtk/6EjUSrynrZ/+1O48UqUf55f6L8ZqyftIXPCBeC8rGSd8dAAAAAIDxxRtA2T7pS9RavKysnL1bd8+e2Tm2S71wZuejwyvxsrJs0vc6LF4LyjZJXx8AAAAAgNHE6z+ZJOl7FBOvLGtm79bdZ7504dgi9UGd+snB9XhrWTDpG11FvBOUbZK+PgAAAAAAI4jXfzJJ0vcoL15cFsz+/gunFKlHufz0njpVkXq6eCcoWyZ9gwAAAAAA+hPv/mSqpK9SIfHuslQOXrjxxCL1KHd2n43Xl3WSvsV1xQtB2TLpGwQAAAAA0IF48SfTJn2hyok3mEVycOWNFYvUo7xz/lK8xKyQ9P3tQLwQlO2TvkQAAAAAABXFWz+ZNukLVVe8x4xn/7U7Z8/srNWl3s+/HlyOV5mK1F7E20CZJOl7BAAAAACQF6/8ZPKk71QH4m1mMHu37j7zpQvrFqn3c+HMzkeHV+KFpiK1I/EqUCZJ+h4BAAAAAATE+z6ZI+lr1ZN4p5nKhb3nNyhSj/LcU+c+ObgerzUVqX2JV4EyVdJXCQAAAABgdvGyT2ZK+mZ1KV5rts/B81c3LlKPcmNnP95sKlJ7FO8BZcKkbxMAAAAAwMTiTZ/Ml/Tl6lu83GyZ/Vdvb1mkHuXu3vPxflOR2ql4CSjTJn2hAAAAAAC2FW/6ZL6kL9cg4hVnm1z4xnfPntmZpEu9n1/uvxhvORWp/Yo3gDJ50ncKAAAAAGA98ZpPZk36fo0mXnTOnb1bd5/50oWpitT7uXBm56PDK/GuU5HatXj9J3Mkfa0AAAAAAE4T7/hk7qSv2LDidees2d9/YcIi9SjPPXXuk4Pr8cZTkTqAeP0ncyR9rQAAAAAAPhMv+KRB0rdsfPHGc6YcXL45eZF6lBs7+/HSU5E6jHj3JzMlfbMAAAAAgOWKt3vSJumLtiDx3nPy7L92Z6Yi9SjvnL8Urz4VqSOJF38yX9KXCwAAAABYhHivJy2Tvm5LFG8/J8zerbvnvrA7a5d6P/96cDlegCpSBxNv/WTWpO8XAAAAADCgeKknjZO+cYsW70CnyoW95+cuUu/nwpmdjw6vxGtQReqQ4q2fzJr0/QIAAAAAuhdv9KR90peOT8Vr0O1z8PzVBkXqUS4/vffJwfV4GapIHVW88pO5k75iAAAAAEBn4nWeRJK+d3xOvAzdJvuv3m5WpB7lzu6z8T5UkTq2eN8nDZK+ZQAAAABAafEuT1JJXz2OF69EN8verbtnz+w07lLv5+cXXoi3oorU4cXLPmmT9EUDAAAAAKqIt3gSTPr28WTxYnSTLvXsxfZF6lF6/OLU9BVjQ/GyT5olfdcAAAAAgIB4iyfZpC8ga4h3o2ul5dekPp7nnjrX1xenpi8X24rXfNIy6esGAAAAAMwr3t9JhaSvIZuIN6Qrpv3XpD6eb549jDekitQFitd80jLp6wYAAAAATCle3kmRpG8iW4n3pE9M6mtSH8875y/Fe1JF6jLFOz5pn/SlAwAAAAA2Ea/tpFTS95FpxNvSJ3Spua9JfTz/fvBKvC1VpC5WvN2TSNL3DgI8KQAAAEBf4oWdVEv6SjK9eGF6Ug5euBHvTx/OhTM7Zb84NX2JaCfe7kkq6asHs/C8AAAAAJ2KF3ZSMOlbyYzitenj2X/tTrw8fTw3dvbjtakilXsa1WUnfftgWx4ZAAAAoFPxqk7KJn03aSFenj6cvVt3z31hN96cHptqX5yavjiExXs9ySZ9AWENnheAk8R/QvaV9HHRExcPivAwAmOIV3VSM+mLSWvxCvWzf5S6/0K8Mz0lHx1eiVeoilQeFv8vWpJN+gLCaeIPiEcGqC/+g7GvpI+Lnrh4UISHERhDvLOTaklfSWLiLer9HFy+GW9LT89zT52r8MWp6ctCRfH/tCWRpO8dHC/+aHhwgF7EfyT2lfRx0RMXD4rwMAJjiDd3Uifpy0hetki98I3vnj2zE29Ln5hvnj1UpFJZ/L9xScukrxs8Kv5QeHyAvsR/GPaV9HHRExcPivAwAmOI93cST/oOUkuwS907ezHek66Yn194QZFKcfH/0iUNkr5l8DnxJ8JzBPQo/mOwr6SPi564eFCEhxEYQ7zIk2DSt4+iMn/d9/mr8YZ0rUS+ODV9NehS/D95yXxJXy74m/iz4GkC+hX/AdhX0sdFT1w8KMLDCAwj3uhJ46RvHB1oXKTuv3Yn3o2um8tP7zX+4tT0paB78f/2JZMnfadgqB8s6V0CCxX/6ddX0sdFT1w8KMLDCAwjXu1Js6TvGj1p96d9b90994XdeDe6Qe7sPqtIpTvx/wImEyZ9m1i6+CPgsQIGEP+511fSx0VPXDwowsMIDCNe8MncSV8xetXor/v+3eV4K7px/vXgsiKVTsX/U5hsmfQNYunij4CHCxhD/IdeX0kfFz1x8aAIDyMwjHjTJ/MlfbnoW4si9cob8T50m1w4s/NfB9cUqXQt/t/EZLOkLw7LFb/8ni9gJPGfeH0lfVz0xMWDIjyMwEjilZ9Mm/SFYhxz/3Xfs2d24n3olrmxs69LZQzx/zgmayV9X1io+M33iAGDif+46yvp46InLh4U4WEERhLv/mSSpO8RY5qvS72w93y8CZ0k75y/pEhlJPH/SiarJH1NWKL4tfegAeOJ/6DrK+njoicuHhThYQRGEi8BZcukbxCD89d9n5iPDq8oUhlM/L+VySlJ3w6WKH7tPW7AkOI/5fpK+rjoiYsHRXgYgZHEq0DZLOmLw4JM/C9Sv/HdAf6678N57qlznxxcV6QypPh/NJPHk74ULE78znvigFHFf8T1lfRx0RMXD4rwMAKDideCsnrSl4WFmvKbUs9ejLefk+fu3vOKVMYW/69n8iDpu8CyxC98haQPARhW/OdbX0kfFz1x8aAIDyMwmHg/KE9M+o7ANHXqwQs34r3nTPnXg8uKVJYg/p/RJH0FWJD4ba+T9FEAY4r/cOsr6eOiJy4eFOFhBAYTLwrllKRvB3zGX/c9JRfO7Gz5l37Txwvrif/3tGUmfewsSPy2l0r6NIAxxX+49ZX0cdETFw+K8DAC44k3hvJI0jcCjuev+56Sb549VKSyQPH/sLaopE+bpYhf9YJJnwkwoPhPtr6SPi564uJBER5GYDzx6lCOkr4I8GT+uu8p+fmFFxSpLFn8P7INn/QJswjxe1426ZMBRhP/sdZX0sdFT1w8KMLDCIwn3iEuPOnzh/X4674n5cKZnf86uKZIhfh/bRsy6VNlKeJXvXLShwMMJf4zra+kj4ueuHhQhIcRGE+8TFxm0scOG/LXfU/JjZ19XSo8EP/PbiMlfZgsQvye10/6iIBxxH+g9ZX0cdETFw+K8DACQ4oXi8tJ+qhhAv667ylZ/S/9po8R2on/97cBkj5DxtfR9e5oVICTxH+16Cvp46InLh4U4WEEhhRvGIdP+oRhYv6670m5cGbno8MrilQ4Sfy/xfWY9KGxCJ1e7E7HBoj/dtFX0sdFT1w8KMLDCAwpXjUOmfSpwrye3KXuPR9vNiO5/PSeIhWeKP4f5TpK+qwYX+9Xuvf5gQWK/3bRV9LHRU9cPCjCwwiMKt48DpP0SUI7p/113ytvxDvNYN45f0mRCiuK/9e5+kkfEYMb5jKP8S4AJucnIYvinkMRHkZgVPEKsvekDxAyji1S927dXeBf930kx/6l3/RxQXXNqpC+kj4WBjfSNfZUAjzOj0EWxT2HIjyMwKjiXWSnSZ8b5Pnrvsfm8b/0mz4o6EmzQqR+0kfB4Ia8xuO9I4Bt+DHIorjnUISHERhYvJfsJemDgnIeLlL3X70d7zGL5OG/9Js+IuhYg1qkctLrZ3CjXmDPJsADfgayKO45FOFhBAYW7yiLJ30+UNqDv+577gu78RKzTh78pd/0+cAIGpQjBZPeOiMb+/aO/e4AVudnIIvinkMRHkZgYPGysmDSZwLdOOpSD/7ucry+LJX/fu6iIhXmMHdLUiTpNTO44W+vJxTgni6VhXHPoQgPIzC2eHdZIelDgF79H//99oUzO/H6slT2X7tz7q0fpU8GRjZ3V5JNeruMbCFXdyFvE+AUfgCyKO45FOFhBMYW7zH1p9Cv/2f/1Y8Or6hTH+Tg8s0HXyObPhxYhFlLk0jSG2Vky7m6y3mn6xr+DW7DcrZnh3X46feIJbzH7fW7pTr3vNMFpljXA/0+fY+o8zDObYx3MR/LYVTxTlOFCp06+lbQ+/nl/ovxErNCDp6/+qBI1aVCexN+cEslvUJGtrSru6g3e4qlvd/VLfM+zMEOa1r4T78FvuUNjHQ3su+l9+21NMBlm8RIT98jRn1ro76vCdkMyxHvN/Wn0J0HRepRfn7hhXiVmc3+/gsPF6nqVAia8JNO46Q3x8iWdm8X/qgu810/0cJvxbTssLhlHpBnfBWzbim1qMj8Y6yujWFu2jbmfvSK7GSkt7OQI9uStbBA8a5TfwrdeaRLvZ87u8/GC81UnvnShb1bdx/vUtWpENfgE5BPDXRhgfe22ltu8+p+Uh2rwVqC+2k5+ZALHNKijmbsB3wqLbfUfleNx+59dSPtqvFN20yDJdTZyQDvov15dXGNH5fdydyvMsAp9z5/ZfHeU3kKfXm8SD3KjZ39eK3ZPue+sHtSkapLhVLm/m3fr6aUtdh7W+pdz/3qfmQ9rvFOUvtpM/PACxzSQg4l8nTXXMUpUltqua5m046xt/F21eaaravxBorspOv5l3lkG6iwkwY77/18ux6+vngTqj+FXpxUpN7PJwfXLz+9Fy83W+bsmZ391+6cVKSqU6Gslr//++2UuMVe2lIP7Kwv7afW4yI7iayowbRjL3BIwx9H6k6WXcix4itqtq4Gc460tCF3NfcdW0tqAxXW0unk8WOqeZMfV2chDbbd+8l2PXx98VZUfwq9OKVLvZ+PDq9cOLMTrzib5eDKG6cXqepUqC/yicBvp7S05Etb573P9NJ+dj0uvpPG+5l11CUscEgDn0X8TtZcyyPia2m8q7mHHGxpo+5qvo2tLv7242vpbub40cSPbHWlttFmz/2e6RIuZFa8IVWeQhdOL1If1KnxirNRkfrCjVWKVF0qdKTOpwOYysIvbZ23P8dLp35klb0M8VVEVjTfkPG9VbtgHRn1IOK3sexmHohvI7KuWceLb2zypY29q8nXtbr4G6+wmY6mjR9HhSWsKL6Hx1fRZsP9HminY/cl3pkqT6G+VbrU+/nl/ovxonPu7O+/sGKRqk6FTgU/GsCEXNoiG5j8dVv+jOriSsQ3kNrPTBPGN1bqdnVnvFOIX8Li+zkSX0JqV/PNFt/VHEubY6T4fuZbV8uVDrCZXkaNH0SRPfS1qzmmavze5zyoGSdvNnZflKfA6VYsUo9yd+/5eN05X5750oW1ilR1KvSu5ecCmJYbW+SxnfZ15/6h1NfFiL/x7H7mGC++q2bbG9VgRxC/fvVX1NGW5ljXTFPFVzTTxiafJ76ZWdfVbJ9jLGdpQ/Z+Xt3tavLBGm9gzrMaYey+KE+BU6xVpB7lm2cP46XnHDn3hd29W3d1qbBY830igMlNfl17vLRFljDh6870jjq9G/G3HF/R5IPFV9RsdQMbaf/xi1d/S/F3HV/XHCPFl1N/XZV3NeG62ixzmP0UnzC+9moL6XFd087WfgkzH9r0MzcYuF/KU+AkG3Spnxxcv/z0Xrz6nDZnz+zsv3ZngyJVnQpD8tspxc3xAbbHS1thCTOdRcHMcYKDbbXmErpY6bSrG9gYy4/fty4WFX+/FdY1+TzxtXSxruK7mmpdDTY50n4qjxdfeMGddLquCcdrv4f5j06X2o7mFDjWBkXqUf7r4NqFMzvxAnTCHFy+uXGRqkuF4fnVlGpm+vTanTn2sO4qZpqhZmY6x5FWWnAPXWx1wr2NbYDlxy9bF7uKv9Mi65p2mPhCellX/V1Nsq651zjYfsrOFl91zbUMv65J9tndCfY1bdc0p8CxNu5S7+ejwyvxAnSyIvX5q9sUqepUWBS/nVJB6iNnNcFP33PPUDYzHeVI+6y2il62OtXextb75uPXrIt1xd9jnXXF5+9oV9Y1ifj7KruimoPFl1z5yIZf1/bL7OsEOxp1DGpT4BHbFKlH+eX+i/EadPtc2Ht++yJVnQqL5bdT2gt+5CwovoqZjqNsZjrHkZZpG9m9ja3rzcfvWBcbi7+7UuuKD9/Rrqxre/F3VHlFBaeKr7f4kS1kY1tucrHHN+uoY9CcAg/bvkg9yp3dZ+Nl6DZ55ksX9m7d1aUCk/CrKW1kP3JWE1/FTMdROR0dZdcrir+LTvc2tq7XHr9gXSwt/tZK7So+fEe7si7bm3VLY49UJ1MtZyHr2n6TvRzftKPOOifAkKbqUu/nxs5+vBLdLGfP7Fz4xnenKlLVqQC0Efy8WVB8G3MMUD9dnGPvK4q/hR6XNrx+1x6/XV0sLf6+qq0rPnlHu7Iuq5t1SwPPUy2T7Gc569pyjV0c3+RzzjQkwKgmLFLv55OD6889dS5ejG6Q/VdvT1ukqlMBaCD4ebOg7Afw+Qaony7OsesVxefvcWnD63Tn8XvVxd7i76jguuJj97Io67K3jrZUapia2X5FS9vYNjssfnYdDQkwqmm71Pv56PDKhTM78W50rRy8cGOOIlWXCsDcsp83CxrpA3hHKX6CFWIt7Zc2vB53Hr9UXVzX+Hupuav42L0syrrsbe5F1RkmvsxejmxpG9t4gWUPbqYhZ5oQYFSTF6lH+eX+i/F6dI1/kbr/wkxFqjoVgLllP28WNNIH8G1GDb50teOrs6teNlMnW1+owfW48/aXp8fr2mzmhyePvGjltRRJL7eoSDZeV2RpwcOqs6g6k1Q+si23lBr7f4b+92WbBZY9u5kmnHw8gIHNVKQe5Z3zl+Il6Sp55ksX9m7d1aUC0KP4582CBvsAPtVsdSZJDVlhjLLLWXfs4EvzsO52XuG2VJghOOHqcxYZo/FIK86ZfXXrmmNdbebsbpIGExYZY/gjqzZng0k23l7Bg+toPICBzdql3s83zx7Gq9LTc/bMzoVvfHfWIlWdCsB84h82C8ruZI5Xn/CkCo7UYLwBhplvni3nrDPJMvW18Go3pNQwDRa18Xh15plvkm1mqzOJdW2zrrlnG2akyQerMEMX57XlkdUcb+6RNpstvpZm400+G8DA5i5S7+eTg+uXn96LF6anZP/V2w2KVHUqADOJf9gsKLuTOV598jOqOVi1eapNVflqFRxpIfpaeMFpFzLS9oMVGWm+5Wy/qGrzWNcAI1UerMIYNTdjsFKDbTxhqf10MRjA8Bp0qffz0eGVC2d24p3psTl44UazIlWXCsAcKnzYrCa7kzlefY4DKjhenUlqDlb/atWcamwdLbzynKVmq/wcxQebaTlTbanaVMtc18aDlRqm/njxGaotpIsJC44092wbD1lwRZMPNuFUAMNrU6Qe5V8PLsdr08dzYe/5lkWqOhWAOVT4sFlNdidzvHr9D+PbT1hkjMrjdXG1yg42qo4WXnzIIuPNcaDTris720z7mXBLpWazrh4naTxkhWHiA8x0XtWGnGOYaZc204SbzbmELU04FcDwWnap9/PO+Uvx8vThPPOlC3u37upSAehdhQ+bBQV3MseJzHc0dYasMEPxCbu4WpVnG1IvCzdhZIyZ1hUcb479TL6lOuNZV3djdDSn8+pu1DqTNB6yyDUruJ9JRgJYgsZF6lFu7OzHK9SjnD2zs//anfZFqjoVgMkV+bBZTXAnc5zIrOdSYdQuFjXtnNlXn3Vj9SccSS/bLj7e5ENuNucCT3PdIedY0eRbqjOhdXU0Q3Da+Bj9LqGjaSefYb6lzTFqhaVVW84k8wAsQaRIvZ9PDq4/99S5eJF6PwdX3kgVqepUAKZV5MNmNcG1zPHScx9KfNplLir76rNurIshx9DFlag8W6lR6x/lTKMGVzTToopMaF29DNDjwMO8eoMjqzBthRmC01ZYWrXNTDIPwBKkutT7+ejwyoUzO+Ei9e8uZ4tUXSoAEyryYbOa4Fp6PJH4wL0sasJRg1tqsLQuhhxDF1ei8mzzjbrutPXPcb5pU68736KKDGldkQHmWNGsA2828zDntZAjiw+QnXbjgSvMUHMYgIUIFqlH+eX+i8Eide/sxXiRqk4FYEJ1PmyWElxLpycSnHmxiwq+9Nwb62XOAXRxK8oONuu06w5c/xznGzjyonMvqsKQ1hXZ0kwrmnXs7ADdvffNZMfubmnTDrzxzBVmmGOYLScBWI54l3o/d3afjRSpZ8/s7N26G29RdakATGjyT5pjfLwKrqXT4wiO3deiJhx43ZknP6NZl9bLnL2rfyvKDlZt4MqHOPfAkRede1EV5rSu4i+9jfjhjvHS/R5Z8KXbLK3OzBVmqDYJwELEW9QHufz0Xvsudf/V2/EKVZ0KwLQm/6Q5xser4Fr6PY7U2EteVOp1G2yso1G7NvmtmHzbNadqM/NaY1c+xDoDF7/t8f3MOsOo6+plRdUmd14bSA3f6dKKjF1kjAkn2WYGgEWJV6gP8l8H1xp/cerBCzfi5akuFYDJTfv5bphPWMG19HsWkY0tfFeRF22zsY5G7drkt2Lybdecqs3Mq49d+QTbjN3+FRvsKj7nYteVulGz7qfa8KmXdmQbDN/p0oqMPd4YG88AsCjx/vSR/PvBK82K1At7z8ebU3UqAHOY9vPdMJ+wgmvp+izaD29RkRdtsLSORu3a5Ldi2m3XnKrg2GVPsNnY7V+xwaLi08YHqD9tXyuadf5eXrrrI0sN3+nG6px1hTEqzACwHPHm9Ni8c/5SgyL13Bd263xNqjoVgGlN+zFzmE9YwZ10fRbth7eoyIs2WFpHo3Zt8lsx7bZrTtVy8sYv13hX7Wfua1HxaeMD1J+2rxWVmn9przsVl3wtRSavsMMKewBYjnhtelJu7OzP3aXuv3YnXpjqUgGYybQf7ob5kBXcSdcH0X5pne6q96vVZmN9TdupaW/F5NsuOFLjyVccvubxFVT2qtecNj5A/Wk72s/c86/7FiKv29eVLvIWul5akcnjOyyyB4CFiBemp+STg+uzfnFqwa9JVacCMKFpP9wN8yEruJPeD6Ll/F3vquur1WZjfU3bqWlvxeTbLjhS48lXGb7s8RXU167i08YHqD9tR/uZe/5130Lkdfu60kXeQtdLqzN5dpI6ewBYgnhheno+OryytK9J1aUCMJVpPyCP8SEru5PeD6Ll/HOcVHeJHM1ar7uxvqbtVPZORsbrLo23NOHxFdTXruLTxgcoPm1f+2nwLuq/7gBH1vU9n3s5lYfP3r0iSwBYgnhVukp+fuGFpX1NqjoVgElM+8lujM9Z2Z30fhAt9zbHSfWYgkczib6m7VTwQkZm6zGNFzXV8dXU16LiJxsfoPi0fe2nwbuo/7oDnFf7d9H10uoMP+Ek6w5TZwkASxDvSVfMN88eLuprUnWpAExi2k92Y3zOyu6k94Noubc5TqrHFDyaSfQ1baeCFzIyW49puaipzq6svnbV+CLNOsDky5l12hUHjh/QJFJvIfK6A5xX+3fR+9LqDJ/aZJ0NAAwv3pCunk8Orj/31LlFfU2qOhWA7U34sW6Yj1rZnfR+Ci33NsdJ9ZiCRzOJvqbtVPBCRmbrMS0XNdXZldXXrhpfpFkHmHw5s0674sB97afBu1jrjSznRSfnnq+lzvATbjJy7bffAMDw4g3pWpnqi1N7+ZpUdSoAk5j2k90An7ayCxngCJrtbY6T6jHtz2X1F91GX9N2KnghI7P1mJaLmursyuprV40v0qwDTL6cWaddceC+9tPgXaz1RpbzopNzz9dSavj2y+z9+AA6Eu9GN8j2X5za19ek6lIB2N6EH7LG+LSVXcgAR9Bsb3OcVI9pfy6rv+g2+pq2U8ELGZmt0zRb1FRnV1Zfu2p5i+YeYPLlzDrtigP3tZ8G72KtN7KcF52ce76WUsO3X2aptw8wtngxulm2/OLUvr4mVZ0KwPYm/Fg3wAeuObax1kIGOII2e5vppHpM+3NZ/UW30de0nQpeyMhsnabZlqY6u7L62lX8cK2r2SvOvZyCb6T9i7a/ITNxz9dSavj2l7DU2wcYWLwS3TjbfHFqj1+TqksFYEvTfqzr/QNXfBsDHEGb1c1xUp2m/bms/qLb6GvaTgUvZGS2TtNsS1OdXVl97Sp+uNbV7BXnXk7BN9L+RdvfkJk0fiO9L63a8M4OYEjxSnSb/PvBK4v6mlR1KgDbmPYjee+fueKrGGD/bVY3073tMe3PZfUX3UZf03YqeCEjs3WaZlua6uzK6mtX8cO1rmavOPdyCr6R9i/a/obMpPEb6X1p1Ybv8eymeu8Ao4qXodvnnfOX1ipSz57Z6fdrUnWpAGxj2o/kvX/siq9igP23Wd1M97bHtD+X1V90G31N26nghYzM1mmabWmqsyurr13FD9e6mr3i3Msp+Ebav2j7GzKTxm+k96VVG77l8VV77wCjijehk+TGzv4aX5P66u14B6pOBSBl2o91/X7smmMP665igP23Wd1Mh9Vj2p/L6i+6jb6m7VTwQkZm6zTNtjTV2ZXV167ih2tdzV5x7uUUfCPtX7T9DZlJ4zfS+9IKDt9mpQXfOMCQ4h3oVPnk4PqFMzsrfU3q81fj7acuFYCgaT+V9/vJa449rLuKAfbfZnUzHVaPaX8uq7/oNvqatlPBCxmZrdM029JUZ1dWX7uKH651NXvFuZdT8I20f9H2N2Qmjd9I70srOHyblRZ84wDjiReg0+ZfDy4/sUh95ksX4tWnOhWArGk/lff74avCEgZYfpvtzXRpe0z7c1n9RbfR17SdCl7IyGydptmWpjq7svraVfxwravZK869nIJvpP2Ltr8hM2n8RnpfWs3hG2y15hsHGEy8/Zw8d/eeP/1rUi9847vx3lOXCkDWtJ/KO/3wVWQJAyy/zfZmOq8e0/5cVn/RbfQ1baeCFzIyW6dptqWpzq6svnYVP1zravaKcy+n4Btp/6Ltb8hMGr+R3pdWc/i5t1rzXQMMJt57zpTLT++d+Nd9L9+Ml57qVAAqmPaDeY8fwYpsYIDNN9veTEfWXdqfy+ovuo2+pu1U8EJGZus0zbY01dmV1deu4odrXc1ece7ltHkXa72R5bzo5Pq955G91Zx87pXWfNcAg4mXnjPlo8Mrx35x6oW95+N1pzoVgCKm/aTc40ewIhsYYPPNtjfTkXWX9uey+otuo69pOxW8kJHZOk2zLU11dmX1tav44VpXs1ecezlt3sVab2Q5Lzq5fu95+71VnnzW2cq+a4BhxBvPWfPzCy88UqSe+8Lu3q278a5TlwpAEdN+Uu7uI1idtz/A5pstcKZT6y7tz2X1F91GX9N2KnghI7N1mmaLmursyuprVy1v0dwDTL6cWaddceC+9tPgXaz1RpbzopPr956331vlyWedreZbBhhJvO6cO988e/hwl7r/6u140alOBaCOaT8pd/dBrM57733tLRe4tFu6pfjdDg7cYNpOTXsrpt12wZFqsqjV9bWr+INpXc1ece7ltHkXa72R5bzo5Pq95+33Vnny+WYr+5YBhhEvOhvkk4Przz117m9fk/r81XjFqUsFoJppPyx39EFspje+2XvvffMtF9j7rhqL3+3gwA2m7dS0t2LabRccqSaLWl1fu4o/mNZV7RXnkHoLkdcd4Lzav4uu73nxyWcar+z7BRhGvOhsk38/eGXnvz39zJcuxPtNdSoABU37YbmXj2PV3nV8gC213GHvu2qswvVODdxg2k5Neyum3XbBkWqqeXw19bWo+MlaV7VXnEPqLURed4Aji7yFTvdWf+yZxiv7fgHGEK84W+aH+1+58I3vxstNXSoANU37qbOLT2TV3nJ8gC213GHvu2qswvVODdxg2k5Neysm33bNqaope3wth2/8cm0WFT9Z66r2inNIvYXI6w5wZJG30Oneuhh78vGKv1+AAcT7zcaJN5vqVADKmvZTZ/1PZPO9343fcnyALbWcv/ddNVbheqcGbjBtp6a9FZNvu+ZU1ZQ9vpbDN365NouKn6x1tXzRWZfTYP5130LkdYPvdyq93/Nmq+tl5sknrPxmAQYQbzYb5/5bjteaulQAypr8g2flz2U132yRMXoZvtNFRXR3tfqatlPT3orJt11zqmrKHl/Lycu+4jbiJ2tdNV90QsH5l/a6U4nMP+09abO6XmaefMLKbxZgAPFys32Xek+dCgAnm/yzZ9mPZjXfaZExehm+3121193V6mvaTk17Kybfds2pCip7gs3GLvuK24gfq3XVfNEJBecf4HXbH1lq+Glft8Hq+hp4wgnrv1mArsWbzUiReiTebOpSAahpjo+fBT+dlX2PdSbpYvh+d9Ved1err2k7Ne2tmHzbNacqqOwJNhu77CtuI36s1lXzRaeSHT710o6swt7mXt3k08468BzT1nynAL2Ll5upIvXeIrtUdSoAKxr+M1rlN1hqmPqT97iolO7uVV/Tdmryx3bybZcdrJTKJ9hg7Pav2GZL8WO1rsqvu73s5KmX7ve8ssNP+9Kzbm+OUWc965kGLvhOAboWLzezXeq9Rdap7a8ZAD0a+2Na8bdWbZ7U5JHXnW85803e+OVa7qqvaTs17a2YY9tlB2szfLMXWsgDvtgVbTawdVV+3e1lJx/jpVse2TDnNev2Zppz7oOeb+xq7xSgX/FyM1ukHomXm+pUAGoa9ZNa/fdVcKTI2JGXnm8/803e+OU6vVQNpu3U5E/u5NuuPFuDyRu/3PAP+GJXtNnA1tX+ddvsavKxswN09943Ex972gHm2N4cE7Y56Fknr/M2AboW7zfjReo9XSoAnGC8z2u9vKOaU7UfO/XS861ojrHbv2Knl6rBtJ2a/MmdY9uVZ5t77MYv12xXqVF72c/k0242sHW1f902u5p87OwA2ffe5sgqzDz5DNNub6bxmp3y3PMXeZsAnYr3mxWK1CPxclOdCkBNI31q6+i9lB2s8cypAWZa0Uwzt3/Flovqa9pOxR/e9kNOPt58M7d/xWaLSs3Zy34mn3azga0r8tIN1lVh4GFevcF5FRl48msz4Q5nna3NKTd4C/H3CNCveMVZp0u9t7w6de7bBcAYxvjs1t27qDxbs5mzA8yxopkGjrxod1tqM22nJn9459h28fHmmznyog12FRyy/nJmmnazga0r8tJzr6vItNkBiiyhu2knn6TURQoeccs3EnyPAJ2K95ulitR7y+tS1akArKjrT3CdfgItPl6bgeMzzLGoyadNvW6DFU0+cINpOzX5szPTtutPOMe0qdeddVfZCStvZtZpNxvYulKvPt/GJp9z41GzA9TZQ1+jzjHMxrM1GKbB+QbfUeQ9AvQoXnGWKlKPxMtNXSoANfX4Ua7HmdsMP9WQs05bYZJptzTTnMGXnnVFcwzcYNpOTXsr5tt2F0NOO2r21efbVXa2smuZe9rNBrau1KvPtLQ5htx4zpEG6OvICo601pzNBpj7cOu8tWZvEKBH8YqzZpd6T50KAMfJfqxb/ZNdF0NWeCP1R60zzIS7mnzI+IomX86sAzeYtlNdPDgzjVp8wgozTL6r+GAFd9Jm2s0Gtq7gAJPvbY7xtpkwPkO1hfQy4UxT1c8kZ1p5tw3eIECP4hVnzSL1SLzf1KUCUFD802v9dLftykOWmmrLRc03W3yGqTbTZuAG03aq8lPT16h1BptjUdvvqshUdRbSeNrNBrau4ADTrm6m2bYZb7AZejmyyrMVzySrq7zbNm8QoC/xirNykXpvYV2qOhWA1cU/wFZOp6uuOWHN1W0z1RyDVRhjy500HrjBtJ0q+Lw0nnb7gauNNNOWtpmqzjwVthGZ1rraDDztDFMtcPipKsww/FTNJiybSVZXdrdt3h1Ad+ItZ/Eu9d7C6tSp7hUAw4t/gC2b3lddbbbK26szTIXlbDZDauAG03aqzv1MTbvN5EXGaLyoTieZfJ4NXj04rXW1GXjaGbacqtQws45XZIzhj6zlqAUz4fYK7rbZuwPoSLzirF+kHolXnOpUAAqKf4YtmMH2HJ+no+0FZyiynI3HiAzcYNpOlbqiqYHXehfBl+5lS9kDaraZLc4nMO1mA1tXfIwNJowP0H5RRcYofl7bH1lq7CKZcHvVdtvsrQH0Jd5ydlGk3tOlAsAJ4h9jS8WSa640/i7KbqnIGJGBG0zbqVJXNDVwqVjUrIuKD5CadrOBrSs+RtmUOq86k1TO9ke2zL3Nt8A6i2321gA6Em85O+pS76lTAeAE8U+yRWLDlVcafy81t1RnkvYDN5i2U9VuaWrmOrGoWbdUYYbItJsNbF0VJqmZUudVapia2X5Fy9xbgx1WWGzLtwbQi3jL2VGReiRecepSAagp/mG2Qqy38j7jb6fmoupM0n7gBtN2qtotDY5dIbY095aKjNF+2s0Gtq4iw1RLtfMqNUzNbL+ixa6uwQ6zW235vgB6EW85uytS7y2pS1WnArCu+OfZgT9Nx9/dGCuNv6OCWyo1TOOBG0zbqYIXNTh5NrbUYFFFxmg/7WYDW1edeepk+81Mvp9q81TLJPvpdHUTjjf3GlMrbfm+AHoRLzp77FLvLalOnWN7AIwt/uk4EovtaKvx91VtS9XmaTlwg2k7VfOupibPxqIabKnOJI2n3Wxg66ozT5Fsv5Y59lNwpDqZajk9rm7a2dpssv1KG78vgC7Ei84ei9Qj8ZZTnQpAWfHPyI1jq91tNf7uSm2p4EjNBm4wbafKXtfU8KlYVJstlRqm5bSbDWxdpUaKZ5KdzLGcmlNVyISb6W51kw/WcpnN9tn4TQF0IV509luk3tOlAsCp4p+Um8VKO91q/D3W2VLNqdoM3GDaTlW+san528eimm2p2jzNpt1sYOuqNlUwUy1kjs2UHWywI+todXNMNeQ+278pgPriXWfXXeo9dSoAPEn8I/NInzTjb3a8xcbfZpEt1ZyqzcANpu1U5RsbfAstY1Ett1RwpDbTbjawdRUcLJIJtzHHWirPNtKR9bK6mUYab5nt3xFAffGis/ci9Z4uFQBWEP/gPMwnzWknj2+vyGLjb7bClsoO1mDgBtN2qvilDb6LNrGoxluqOVWDaTcb2LpqztY4065ijp0UH2+YI+tidfPNM94m278jgPriXecAXeo9dSoArCD72XmYz5iTzx9fY5Hdxt9yfEXFx5t14AbTdqqLqxt8L7PGltpvqexgc0+72cDWVXnCNpljD5Nvo/6EYxzZWuq88a4Xu4SrAlBHvOgco0g9Em85dakAdKH9Z+fBPmDO8Rbiy6yw2Gp7aL+l+hPON3CDaTvVy+0Nvp2ZYkuRLVWebdZpNxvYuooPOXdmWsLkq+hlzq7PazMV3njX613UbQGIi3edwxSp93SpALCy1H9DGOPT5UxvJL7VCrs9El9CaktdDDnTwA2m7VRHFzj4jkbazwPxPUS2VH/CmabdbGDrqj/nTJnv7c+xh45G7frINpZ9111veJkXBiAi3nUO1qXeU6cCwDri/1Wh08+V870d630gvorIijoadfKBG0zbqe6u8Yriz3Ll5TwQ30b7LXUx5BzTbjawdfUybV/vffINdDdwj+c1ichb7n3Prg1AG/Guc7Ai9Ui86NSlAtCX+H9h6O4T5dxvauHrfVj81jXeUl/TTjtwg2k71eNNXl38oa65lkfEN9NySx2NOu20mw1sXX3N3Mu7nvy99zhzd+99cs3eae+rdm0A2ojXneMVqfeW0aWqUwGYXPw/NXT0cbLBW1v4hh8Rv4HNVtTdzH1N26l+7/PqFvKAb2khW+pr4PiGrauNaSev/34nf9f9Tt7Ru+5X7wt3eQAaiNedo3ap95ZRp2Y3DMDA4v/lof4HyWZvcLEbPtYSbmB3w/c1bacGuNgrWsIzvr3ht9TX2PE9W1dL085f+Z1O/n4HeAv132y/et+8KwTQQLzuHLVIPRLvOtWpAPQu8t8fuvgI2fidLnPJpxj4Enb3FvqatlPDXO/VjfqAT2vULfU1f3zh1hUx7Rsp+AYnf5vDvJGy77FrvR+BuwQwt3jdOXaRek+XCgDT8Z8gHpF610vb8yoWewlhCZb8PzRrsSWI8DOqO46soN7PwqUCmFu88Ry+S72nTgWAefioWGQDYy95Mwu5gbBYHvBV2BKk+D2kO84rq8inqiJvwR0DeFy87lxCkXpPlwoAzMPnZQAAgG0M8JFKlwowq3jjuZAu9Z46FQCYgc/LAAAA2+j9I9W0RarPhgCPizeeCylSj8S7Tl0qAAzG52UAAKCO7j6hdDfwrG/BB0OAx8Ubz0UVqfd0qQDA1HxkBgAA6ujuE0p3A883vw+GAMeKl55L61LvqVMBgEn5yAwAANTRXa/X17Szzu+DIcDj4o3nAovUI/G6U5cKAMPwkRkAAKijr16vo1Hnnt+nQoBjxUtPXeqoSS8YABbEp2YAAKCOjtq9XuZsMLxPhQDHijeeiy1Sj8TrTl0qAIzBp2YAAKCOjtq9InOu9X9wpgrVR0KAY8VLzyUXqfdG71LVqQDQjA/OAABAKV10fHUmnLUeje8ZoGvx3nPhXeq90evU9HYBYCl8cAYAAEqpX/OVGi9eofpICHCseOmpSD0Sbzx1qQDQOx+cAQCAUoo3fdVmi1eoPg8CHCvee+pSj8QbT3UqAPTOZ2cAAKCampVfwZFm3ZXPgwAbi5eeitSHxRtPXSoAdM1nZwAAoJpqxV+dSdrvyodBgA3Ee09F6sPijac6FQC65uMzAABQULwK7KWFbLkoHwYBVhSvPnWpj4g3nrpUAOiXj88AAEBB8X6wlwpyjHcBMJJ476lIPVa89FSnAkCnfIIGAABqireEXbSQY7wLgJHEq09d6rHijacuFQA65RM0AABQU7wl7KKCHONdAAwj3nsqUk8RLz11qQDQIx+iAQCAsuKNZ/0Kcpg3AjCGePWpSD1FvPRUpwJAj3yIBgAAKov3nsX7x2HeCMAY4u2nLvV08dJTlwoA3fE5GgAAKC7eflb+3DTMGwEYQLz6VKSuIt57qlMBoC8+SgMAAPXFO9CyH5qGeSMAA4i3n7rUVcRLT10qAPTFp2kAAKAL8Sa05iemYd4IQO/i1acidXXx3lOXCgAd8YEaAADoRbwPLfhZaaT3AtC1ePupS11dvPdUpwJAR3ymBgAA+hLvRkt9UBrpvQB0Ld5+KlLXEu89dakA0AsfqwEAgO7EG9I6H5FGei8A/Yq3n4rUdcV7T3UqAPTCh2sAAKBT8ba0woejkd4LQL/iBagudQPx3lOXCgBd8BEbAADoWrw5zX4sGum9APQrXoAqUjcTrz51qQBQnw/aAADAABbYos7xxlPvAqBr8QJUl7qxePWpTgWA+nzoBgAARrKQCnV1/U4O0It4AapI3Ua8+tSlAgAAAAARi+1PAWgmXoDqUrcUrz7VqQAAAABABZpTACYXL0AVqduLV5+6VAAAAAAAAMYT70B1qduLV5+6VAAAAAAAAAYTL0AVqVOJt5/qVAAAAAAAAEYS70B1qVOJV5+6VAAAAAAAAEYS70AVqROKt5+6VAAAAAAAAMYQ70AVqdOKt5/qVAAAAAAAAMYQr0F1qZOLt5+6VAAAAAAAAHoX70AVqTOJF6DqVAAAAAAAALoWr0F1qTOJt5+6VAAAAAAAALoWr0EVqfOJF6C6VAAAAAAAADoVr0F1qbOKF6DqVAAAAAAAADoVr0EVqXOLF6C6VAAAAAAAAHoUb0J1qXOLF6C6VAAAAAAAALoTr0EVqW3EO1B1KgAAAAAAAH2JN6G61DbiBaguFQAAAAAAgL7Em1BFajPxDlSXCgAAAAAAQC/iTagutaV4B6pOBQAAAAAAoBfxJlSR2li8A9WlAgAAAAAA0IV4GapLbSzegepSAQAAAAAAqC/ehCpSI+I1qDoVAAAAAACA4uJlqC41It6B6lIBAOB0/+f//p21kp4X/v/27CjHjtxKAuj+V+2B4UFbVqulqpckIy7zHPBTwLsMMksAAwAA4ELxMlSRmhKvQdWpAADwl+82pwpWAAAA2C1ehupSg+IdqC4VAICX29Sf6lUBAABgiXgZqkjNitegulSA1zpcH2gr4DO+i03if6acCKT4igEAYJZ4H6pLzYrXoOpUgNeKlwjaCvgK38Ja8b9IzgXifL8AADBIvAxVpDaI16C6VIB3itcHCgv4Cp/AKvE/QQ4ISvhsAQBgkHgfqkttEK9BdakA7xRvDRQW8BVu/nPxvzmOCar4YAEAYJB4H6pILRFvQtWpAC8U7wviK30C8CXu/BPxvzNOCgr5WgEAYIp4H6pL7RGvQXWpAC8ULwsaVvoQ4M9c+I/F/8I4L+jkOwUAgCnifagitUq8CdWlArxNvCboWemjgN9x1T8Q/6viyKCZjxQAAKaIV6K61CrxJlSdCvA28Y6gaqVPA/6Re/5d8b8n/kBBOZ8nAACMEO9DFamF4k2oLhXgVeLtQNtKHwj8mkv+LfG/JP5AQT/fJgAAjBCvRHWpheJNqC4V4FXi1UDhSp8J/IIb/nXxvyH+QMEIPkwAABghXokqUjvFy1B1KsB7xHuBzpU+FviZ6/1F8b8e/kDBFL5KAADoF69Edam14k2oLhXgPeKlQO1Knwz8D3f7K+J/N/yBgkF8kgAA0C9eiSpSm8XLUF0qwEvEG4HmlT4c+C8X+4/ifzH8gYJZfI8AANAv3orqUpvFy1BdKsBLxOuA8pU+H/h/bvXvxf9W+AMF4/gYAQCgXLwSVaSWi5eh6lSAl4h3Af0rfUTwb670b8T/SvjrBBP5GAEAoFy8FdWl9ouXobpUgDeIdwH9K31E8G+u9G/E/0r4AwUT+RIBAKBcvBXVpfaLl6G6VIA3iBcBI1b6lMCb/z+K/32Ir/QJwFQ+QwAAaBavRBWpU8T7UHUqwPXiLcCUlT4o3s5l/qX4X4aGlT4EmMpnCAAAzeKtqC51ingZqksFuF68BZiy0gfF27nMvxT/y1Cy0ucAI/kGAQCgWbwVVaQOEu9DdakAd4tXAINW+qx4NTf57wr/AvjrBIP4BgEAoFa8FdWlzhLvQ9WpAHdLvfxPXOmz4tXc5L/r/+r9gYJmPkAAAKgVb0UVqePE+1BdKsDFTj71T1/ps+LV3OS/m/K9+wMFAAAA3xIvRnWp48T7UF0qwMVGP+mfaSi0FTRwjX8y7kv31wkAAAC+It6KKlKHilei6lSAW93xpL+7pNBWEOca/2TiN+4PFAAAAPxRvBjVpQ4V70N1qQC3uuk9f3dPoaogyDX+ydwP3B8oAAAA+I14MapIHSreh+pSAW5133v+vp6iYXe8ljv8o+lf9/T5AQAAYJ94N6pLnSteiepSAa505Xv+pp6iZHe8kzv8o+mftj9QAAAA8EvxYlSXOlq8ElWnAlzp1sd8VQWXcYd/dMF37Q8UAAAA/F28GFWkThevRHWpAPe59TF/U09RsjteyB3+0R3ftT9QAAAA8JN4N6pLnS5eiepSAe5z8WP+jq317I63cYd/dMd37Q8UAAAA/ChejCpS7xBvRdWpAJe5+DF/x9Z6dsfbuMM/uuOj9gcKAAAAfhTvRnWpd4hXorpUgMvc/Zh/9+7+MnfyY6Yf8b90qT+46aO+aS9/dMEW4uTGB3x6fySfn9zxnw4AMFS8G1Wk3iFeiepSAS6z/CW/6l3l1t3dtJfldhx6Q1zXbOS5m072pr385L4dpYiLb7ny78la8vnR8v+GrkkGAIiId6O61JvEW1FdKsBN7n5CuWl3O/YS39QqW8MpCW3u5MtNP8qte4mf700fXZaI+Lqt390dV0s4PzpwYeaGAwBkxbtRXepN4q2oOhXgJnc/m1ywu5PvXVVn90eHk4mHNm7gfeYe4sV7ue+LW761M7+4Y/JI8mfGHhrOpi2U7/RjwvnL+dsyKBwAoES8G1WkXibeiupSAa5x/WvJ3N157/onwWSCoQ0adbeJx3dyO9Pnb9vmyYGX/8rQzNdOHv+VHdaebP9+PyCcv8RvS3k+AECVeD2qS71MvBXVpQJc4/pHkom7iz9ztR3iX+KxBHMbMeQZsw7u/HbmTt652WOj7viViYEvH/vMD51JZnk4U3b9XfFkSsKJh1CeDwDQJt6NKlKvFC9G1akAd7j+eWTc7uKvW51HGY8inlv5eCcNOrVbxT+xk2d3YMh9UcyK+kAgqR8qTGbc3r8onkZPMvHtl+cDABSK16O61CvFW1FdKsAdrn8bGbS7+KNW54HGt18SWvNs5404sivFv6zzx7d7wt05TMl508wlP1SVyaa1O4G5EYmiLR8AoFa8HlWkXineiupSAe5w/avIiN3FH7JqzzS+8Z7QageLGHFk94l/U5ET3DrbgQRGhLxv4GO/NSiTfWtrCKMjEkVPPgBArXg9qku9WLwY1aUCXOD6J5H+3cWfsGqPNb7lqtA6p0qZcmo3iX9NqePbN9iZ7fcnvG/gqt+Kp3Fmbcrhgoik0ZAPANAsXo/qUi8WL0bVqQAXuPs9pH938cer2pONb7YttMKRggYd3AXiH1H27DZNdXLvzfFunbbqt7JRHF470rgjImk0XBsAoFO8HlWk3i1ejOpSAaa7+zGkfHfxZ6vaw41vszC0tnmyZp3daPHPJ35wO0Y6vPHabOOjNsey75KcWcsDuSYiaWSvDQBQK96Q6lLvFi9GdakA0939EtK8u/iDVTyB+5LZGlrVMHETT3Ci+IfTcGTL5zm/69pst45a+HORHIJrbSY3RSSNk+EAACPE61FF6vXixaguFWC6u59BarcWf6oqyeG+ZPYlVjVMg7lHOUX8qyk5rLXDpLZcGOzuOQt/7nwI8bUwlssiksaZcACAKeINqS71DeLdqDoVYLS730A6txZ/pOqJ4spkNiXWM0mJ+IFek+QvxbPtOaO1k6T225bqgTkLf+7wSA1rVSz3RSSQM+EAAFPEG1Jd6hvEi1FdKsBoF7+BdG4t/kJVlcbF4SxPrGSMHvHTvC/Sv8TzrDqdhWMEN9uW6u4ha3/x2Dw9a0kyV0YkkN3hAABTxOtRRep7xLtRXSrAXBc/gBTuK/42VZjJxeGsjatkjCrxA7013niGVSeycIzsZqtS3T1h7S8em6dqLQnnynxksi8ZAGCQeEOqS32PeDeqSwWY69YHkMJ9xR+mCjOJhNPz06mInoxR5eTZvSfqeGhtBxEfftVOeyI9MGHtL54ZpnA9z+fWiPoDSZ3Ck2QAgFniDaki9T3i3ag6FWCuK18/Ol91jr0+HV7NR/bBhLVxNcxQKHXtb409nlJh/vHJV22zJ9Ld45X/6O5JOtfDfC6OqDCThhkeJgMAzBIvSXWprxLvRnWpAENd+fpRuKl9b03/NOexX2wOx0g7zqvKyXt+/RFEEujPPH5bFm6zJNLds5X/6O5Jvj7qyR99GNHd+fTE0nZGT+YBAKaIN6S61LeJd6O6VIChLnv6KHzp2jrVtwZrmOHYYA9HKhysYYZO+y72mZXO778attkww8mRDu+xIc8Ds5X/6NYxnsxWMsbhwRrGKInlszHKRwIA+sUbUkXqC8XrUV0qwEQ9j0Kde1myo6qpqobZNNKTYWpna5ih1qZbfX7dl2HVPD2TpK5QSaRbBxvxu5tmWDXVS+aZPkx8gAODLZwKAKgVL0l1qS8Ur0fVqQATlbwIFe5i1Y7a5tk01QWTlI/XMEOt5ccUX3dkeMdI8cuwdoPxPHdPNeJ3N82w8HR6RioZo3CqqkD2hbN2NgCgTbwhVaS+U7wb1aUCTNTwHNQz+Y7ttM3TNljJGMcmbBhjYTg9ll+khjU3vdrZ4gPE70w8z91TjfjdHQMsP5eS2eID1A5WmMmI2QCAKvGSVJf6WvF6VJcKMM7yt6DLVlW8S068bbyGGUZM2DBDubUn1bPGRXfZeINO/yv/vvCs7zjc+N7XHkrJeM3hxMerjWXteDtmAwB6xEtSXeprxetRXSrAOMsfgi5bPfEuOe6tE342ZHyAw0OOnqHf2utUtaaEdt+Elx338h1VzTPop9f++r6bk52wPJzshC9JZsdsAECPeEmqSH2zeEOqTgWYZfkr2U2rKtslx104ZH9EJUM2zDDC2ivdtsoT2zHe8iG/O+cFR7x1Rz3zZKPI/vrWy5MackQ4a+e8KZzm2QCAEvGSVJf6cvF6VJcKMMva15ibVlW2z4c5M+d3R207sgNzjp5hirX3qm3VZrV2sJ5Rh57ssU31DDMuh0FXKDLniGQuCGdTPuXjAQAN4iWpIvXl4vWoLhVglrWvMdesqmCfD1M7bdupHZhz9AyzrL1dbaswpVUjtY0660AjmyqZZNavz7pCkVFHJLN21PPhbE2peTYAoEG8J9WlEm9IdakAgyx/jZm+CoNdNVLhtJ1nt3XO0TOMs/aCta2qiJYMc2zabw085Si/pWf+7AzBEHqOoHPaQeFEpl17IseCAgD4Ubwn1aUSb0jVqQCD7HiNmbsKg1040pmBvzVz59l1ztkww1ALo2tbPcksOanOgcsP8WMlW8jOEAxh3C06PO2gZNYOfDifVFwAAPGSVJHKv3SpAHzHpteYcas21bWDXTbzMQ3hNMww144/GiWrIZZVx9Q5c+3xPdSwkdcO0BD+dx0eeFY4Cwc+nE8wMQDg5eI9qS6V/4g3pLpUgCn2vcYMWrWpLh/swMyHxz6g5LI1zDDdjr8eDSseyMIzOjbz18cuPLglGvYSTzKVQEP433Vy4HHhrB378M/FcwMA3inekypS+Y94Q6pLBZhi61NM/ypPddN4l429Vc+Va5jhDjv+ksRXNoflZ1Q1ds+RLRffTjzMVAJD79Kxmccls3bsL06+9haVZAgAvES8J9Wl8qN4SapOBRjhzFNM82pOdcdsB8Y+P/kmVfetYYbL7Djf4Apuf8fp9Ixdcl47uIGpGRr2/oFjY08MZ+HYX5x84c915gkAXCzek+pS+VG8IdWlAoxw/immc3VGunCquyffoe2mNcxwq01nfX5Fdr3pUHomj5/UPtlNNYQZ2f6Vd2mtoeEcPta1F6k8WwDgMvGeVJHKj+INqS4VYITsU0zbaot0yTxvmHyh2jvWMMP1dp9+1e2ae50OJxY/qa2Cm2oIM7L9W+/SKqPDOTn52os0LmoAYLR4VapL5SfxklSXCtAv/vzStkRaEuNJI5JpmOE94l/QgcONj9qwUkF9ejHXS22qJMzIGCV7r7Xjixu3Rme19XoAABeI96S6VP4uXpLqUgH6xZ9cCpdI4xluNTSZhhneKf417Tjf+JAlK5LVs/u4WGprJWGO3nvbXVpl+Rc3dN2R1e7bAgBMFO9JFan8XbwkVacC9Is/s3QukWYzfC6+/eWxNMzwcvHLs/B840OWrEhWz67hepGtlYQ5eu+Fd2mJ5V/c0HVfXFuvDQAwSLwq1aXyS/GSVJcKUC7+tFK7RJoK8O7MG/a4MPnXil+kh0ccn7BkRc768e1bLLK1kjBH773wLi2x/Isbui5ObN/lAQBGiFelulR+KV6S6lIBysVfVJqXPA+n94acG7a88CD4V+VtnDhzZ1DLs3p83dabG2nV3s//Yud1em5tRHPXGxLbd4sAgFrxnlSRyj+Jl6S6VIBy8YeU8iXPY9G9JN6GvS88EX4Sv2BfPOX4eCXr/JmuuGXrDY103MbX/mLtdXpobURz13tC23SRAIBO8apUl8pvxHtSXSpAs/gTSvmS57HoXpJqQwgLj4bfaL5p8Q+hZx0+x0WXa7HDG+wJ8/zJvuE6PbE2n9HrbdHtuE4AQKF4VapI5TfiPak6FaDZuPeQ8ued+GNUz5p41s2xNMzAZwpvWvxD6FmHj2/RnVrs5B6rkjx/stffpYfWXsXR64XpLb9OAECheFuqS+X34j2pLhWg1ujHkMK3nfhLVM8acbiDYmmYgSeqLlv8Q+hZhw9u3YVa7Ngeq5I8f7JvuEtPrP3cRq/XBrj2RgEAVeJVqS6VP4r3pLpUgFoXPINUPezE36B6VvOBvjyWj2dgiYbLFv8Qetbh81p3jxY7tseqJM+f7Bvu0hNrP7fR680xrrpOAECbeFWqSOWP4j2pLhWg1jVvICWvOvEHqJ5VeI4N67NY1ibz8QysEr9s8Q+hZ508rHU3aL0zqbYlef5wX3KdPrb2Ho5eLw/z+fYBgELxtlSXylfEq1J1KkCnmx5AGp504q9PPavqBHvWB7EsD+fjGVgreNniH0LPOnlM6+7OFgd22pbk+cN9z3X6zMJ8pi+RrkoAAOgRb0t1qXxFvCfVpQJ0uuz1I/6kE3966lk9Z1e1vhvLjnw+noHlUpct/iH0rJNntO7ibHFgp21Jnj/c91ynzyzMZ/oS7PIQAICseFWqSOWL4j2pLhWg031PH9n3nPi7U89qOLVVu0jFsimij2cIyt7P3XZf4JO/OG6dPJ2lt2a93cEWxnj+cN9znT6z9hKOXhLemgMAcF68LdWl8nXxqlSXClDovneP7GNO/NGpZ8WPbOHwkVgKZwgK3s8Djt3kA784bp08naW3Zoutmy2M8fzhHr69E62NaO6S85kcAIBj4m2pLpWvi1elulSAQle+ewTfc+KPTj0re1hrRz0fS+cMQan7eczhu73p5yauk0ez9MpssXWzhTGeP9zDt3eitRHNXTKPRAEA7BNvSxWpfF28KlWnAhS69dEjta/4i1PPCp7U86n2DfnZACUzBJXchK1OXvgdvzV0nTyXpfdli32b7czw/OEevr0TrY1o7nIEDVEAAKvE21JdKt8Vr0p1qQBtbn30CO7rphh3m/IK1zBMwwxBhbdiuZOX/+4k13pbVpv225nh+cNd+ItTbtR3yafK2hvrKAHgteJtqS6V74pXpbpUgDa3vngE93VZkltNeXZrGKxhhqD+S/LcyT1eHONyb8tq0347Mzx/uAt/ccqN+i751Fp7ex0lALxKvC1VpPJd8apUlwrQ5uIXj9S+7ktyk0EPbg3jNcwQNOWqPHRsj3fHuNbbstq0384AI4f7thv1XfIZYeExOUoAeIN4YapL5QPxtlSXClDl4heP1L7uS3KTQXevYcKGGbKm3JYnTu7x4hjXuvvK/dLyLdcGGDnchT96/lIdGHtuOO+09j47TQC4Urwt1aXymXhbqksFqHLxc0dqa/clucOsi9cwZMMMWYMuzMdO7vHuJBd6YVDLt1wbYORwF/7o4Ut1Zuyh4bD2YjtNALhJvC1VpPKZeFuqTgWocvFzR2pr9yW5w6xb1zBnwwxZy+9MYRQnN3hxjGu9MKjlW65NL3K4C3/08KU6NvbEcPiPtdfbaQLAHeKFqS6Vj8XbUl0qQI+7nztSW7svyeVmXbmGURtmyFr+ORdGcXJ3F8e41juD2vG5FaYXGa8/lgOTl/wQOyz/9h0lAEwXL0x1qXws3pbqUgF63P3ckdralWGuNevKNYzaMEPW8s+5LY3DW7sywx3eGdSmz60tvdR4/clsHfvYD50Mh5+M+AsAABwQb0sVqTwRb0t1qQA9lr91VD13pLZ2ZZhrzYqoYdqGGbKWf85taZzf2pUxLvfOlDZ9bm3RpSYcEc6+mat+a5wpyay95FceJQC8RLww1aXyULww1aUClFj+1lH13JHa2ugwz8w8KKKSr6Nhhri1Z9EWyPl9jc7w2MyjU3pi0+dWFV1qwin5bJq58OcW2j3zoFjGXXIAYId4YapL5aF4YapOBSix9qGj7bkjuLW5eZ4ZeFA+JV9Hwwxxa8+iKpPIpuYGeHLmuSk9tONOtkWXmnBKPptmLvy5hXbPPCiZcZccANghXpgqUnko3pbqUgFKrH3oaHvuCG5taJ7HBh6UT8nX0TBD3Nqz6IkluJ2hAYrojB03syq34JCDUlo7bSSfreEsH/vMr5yJZeIhAgALxQtTXSrPxdtSXSpAibWvVYXPHamtDY30zLSzwimZtmGGBmuPoyGZ7F4mpnd42okRrbLpcvbkFhzynSl9a84R4eyY+cyvnIll4iECAAvFC1NdKkvEC1NdKkCDtU9khc8dwa2NS/XYnIOS6fk6GmZosPxEsuHENzIuvfOjzspnrX33syS37JBTgkoNOSKcHQP3/FBPJmemBQCWixemilSWiBemulSABmufqgqfO4Jbm5Xq4TmnJNPzdTTM0GD5iQQjKtnCoOim57MvmX223tJ4aNk5R8QVnLA/nB3THk5mRCYHRgUANol3prpUlogXprpUgAbLn6ranjuyW5sS7Pkh3xbL82kbZiix41wOp1Q1/JToLshnUzJb7b6r2dCyc/bHFR+vOZxNcxb+XEMsu0cFAHaIF6a6VBaKd6bqVIC4tQ8dhc8d2a2NyDYy3qtiWTJqwwwlNh3Nmbg6Z44PcHjC1E8vj+WAMzc2FVp8zubQGgZrmOHkkJFYlgcSTAYAqBIvTBWpLBQvTHWpAHEj3qmeiG+tOeHgYJ2B7Evm+agNM/TYd0Cbciufs2SMM+MFf31hJiedvL2HE4uPWhtdz0g9kxyYLfXTqwKZNSEAsFu8M9WlslC8MNWlAsQ1P1ItEd/ajoSfhxwfqS2Q3eE8n7Nhhh5bz2hJjLWDHR74s2G2ThWc4WEaKeMuc2RrDTOUj1Q1zPPblZ2nLY1Z4wEAZ8Q7U10qa8U7U10qQFbh89RaDbvbEfLH85RMEh/gfD4Ph2yYocrukxq6OvPsmSc7yQe/3mDifT6/tYYZng9WMsbJiHqGiY/x3SgmzgYAnBTvTBWprBXvTHWpAFnXv3g07G5HyN+aLfjTh0f64HTKg9ox28OUehw4r3FrRJ7BAbKxPDicsGN343BcJdNm8+w/zYYrV5hPzyTNIwEAKfHOVJfKcvHOVJcKkHX9o0fJ7ja9L/WsqkCaD+iD2ZZP+PEMbQ5f8v4lzx35xAdoMOi8UvvqmaRwVZ1U52rLZPQwAECDeGeqS2WHeG2qTgUIuv7Ro2R3W1+Z4qs2k/gAq7JaO+3HMxSKHGLnkuemiOIDNBh0Xql99UxSuNoOq22VZ9L56wBAuXhnqkhlh3hnqksFCHrDu0fJ7s48Op1fAjmTWHyAWvEDLVny3JRPwwwNppxXalNVw1St58ncnc+TiOKTN4cDAGTFa1NdKjvEO1NdKkDQG949enYXf5KqOu745LMSiw/QLH6m8SXPffmUjBE36Mgim2qbp2QtieXifJ5HFJ+/ORwAICXemepS2STemepSAYLe8PRRtbv4w5Q04iue1cNT6xQ/1nE36j1h9qSx5HRSZp3a+U0VjtSwVsUin5cEsjwfACAi3pnqUtknXpvqUgFS3vD00ba7+NuUKCbmFh+gX/xkB12nV4XZE8WSowmacmSRHXVOlV0LM5HPGwLZlA8AcF68M1Wksk+8NtWlAqS84fWjcIPxF6qGEK6J4kx08QFGiB/uiLv0qjCrcng+TNagUzu/o9rBUmttIPK5PpCt+QAAh8VrU10q+8RrU3UqQMobHkA6Nxh/p4oncEEOJ9OLDzBF/HzLL9KrwmwLYck8QbMO7vCOmmc7v5ancVk+LszhcACAw+K1qS6VreK1qS4VIOINbyC1G4y/VpWcb3xHIwKMDzBI/Ihrb9GrwixMYNVIQYMO7vB2ysc7uXZEcVM++yKK76s5HADgmHhnqkhlt3htqksFiHjDM0jzBuNvViWHG99Xf4bxAWaJn3Lb/XlbmJ3bXzhVyqyzO7md/gnPrE05yOfWQLL3BwDYIV6b6lLZLV6b6lIBIt7wElK+wfjLVcnJxnf3+43HY4wPMFH85uy4isI8nFLtYBHjju/YdkYMec3BTcznWETxbZbnAwDsFq9NdakcEG9OdakA573kMaR/j/EnrIZjje/x97vOhjnrKHvEr9BNBxdPIBJR+XjnjTvBM3sZNOoFBzcun/MRxfdbng8AsE+8NlWkckC8OdWlApz3kveQEXuMP2Q1HGh8s7/ZeDbSoQdaIn6XbjqyeBqHU+qf8LCJh3hgL7OmHX1q/ySeQ1s+8Y2X5wMA7BCvTXWpnBFvTnWpAOe95FVk0Dbjj1rxo4zv+p82ng12+rE2iN+raw4rHsvJlKbMeczco9y6l4kzD9r118UzaYsonkB5PgDAWvHaVJfKGfHmVJ0KcN5LHkbGbdPrVuHeswnfdLhZwat12THFIzqT0qxpz5h7mvs2MnfyEfv9rng+bRHF0yjPBwBYJV6b6lI5Jt6c6lIBDnvP88jEnXrdqtp4Nudbjzgo8n1deTp3BzVx5t2mn+mOjZwffu385Tv9jHx+EglkUD4AwHPx2lSRyjHx5lSXCnDYe95JRu/05Q9cPRsPpv2Gg045831dfyi3BjV6+E3uONm1G4nMv2MjnRt86EA+syI6E8jQcACA5+L9qS6VA+LNqRYVAH7j5a9br904x3hbXkJWEOG7+yMR/cT/cQDAPvEiVZfKPvH+VIUKAN/y5net126cYzwsLyEoSPHp/Z6/Tr/kPzgAYC1FKldSoQIAAAAAALCKLpWbqFABAAAAAABYTpfKBVSoAAAAAAAA7KNIZTQVKgAAAAAAALvpUplIhQoAAAAAAMAxulQGUaECAAAAAABwni6VfvpTAAAAAAAAshSp1FKhAgAAAAAA0ECXShv9KQAAAAAAAG10qTRQoQIAAAAAAFBLl0qQ/hQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAg5f8AjaMVNQplbmRzdHJlYW0KZW5kb2JqCjEwIDAgb2JqCjUzMDM2CmVuZG9iagoxMSAwIG9iago8PCAvTGVuZ3RoIDEyIDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzNVMtO7DAM3fcr/AME27HzkBAS8wDdu0NUYoFYgYAFA2LF7+O07kxnBiGxo5WbxPY5PnGifnQEaO9JG3JleNh0H+4jyAwxNdf1vjN7XkR0NKZA1Z4MRYA0B0ZFHNJO/20YVu/GgfDcLfru9JISsIRS2BDQP+00EKeQtSBGjsCFgjEiVi7Qb+DuDC1gJmbGjsnMwmj5WM0uzBY+Lj2vnt9D/39WoWiQVpdTgagUimotWXVbYeXMa7PLkZ1wZBmUE+9JzqZYLJ+tV6V1oVVlmeiIsOG3goldoMzEr8ecIXZU2vETxoysCSSO0XNQgbMd08Cy3b5npRFB2cfGPMWMmRaO+bF1NYXIqQUjiGDQGmsV2u116fqXrnHh2uPsYFrl1RGzhtSAMSWQJHbssZaCO+a1a2/o1hn29TQf4iPruj+8rkk4JNL9u41Qi13BIy8Gbr5h3b4ng+MV2K6mDGf7nQsPlmMCTpMXuO3e7P5fdXf35n00v8JnN9Y4oLkx+fMNjOFfqiUNWNPhEmfT3yicwY/UCQW1n8SfbmZ7vwBguPm5CmVuZHN0cmVhbQplbmRvYmoKMTIgMCBvYmoKNDE3CmVuZG9iagoxMyAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyAxMSAwIFIKPj4KZW5kb2JqCjE2IDAgb2JqCjw8CiAgL05hbWUgL0ltMwogIC9UeXBlIC9YT2JqZWN0CiAgL0xlbmd0aCAxNyAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA0NTAKICAvSGVpZ2h0IDQ1MAogIC9CaXRzUGVyQ29tcG9uZW50IDgKICAvQ29sb3JTcGFjZSAvRGV2aWNlR3JheQo+PgpzdHJlYW0KeJztnemq4zAMhYdCKJRSKKVQSqEUQt7/EafLXbrEkiwfOcs93/+56ViRLB3Jzr9/hBBCCCGEEEIIIYR80myO7bbe487tcdvUe9zsWR8u3ZVjtQcubo/rLof1otoj50uzPXZftNUeuvl+ZEdXLGO5PXdPLGs99/D81DON6GS5v3SvVNsI3x982Vd7eWbDp/munGo9/PPR3YWemEGz7THfjUrP3/Y/neHUTP8CXlnXef4p9fx62fDEOadWcF/l8YvkG7Sr8vwZkPSBS5XHr5MWXFV5/gzYJZewykZ0SD6+xtNnwSa5hFXqiTb19HONp8+CVdKCNVKJvlriQZ1teA6kU4kacWyffPimwtNnQjKO1agnkplwnV14HiST0e4Q/uwm+ex6yvr0SQey+HoiIch0rOdzSK9ifH/imHx0xQ7z5Ekno+GyiJBFsT9hR1jG6JosXYuyns8hnYxGJ4TpIFqrtzUP0slo8G4keD9l7RzSymhwGBWCKGXtHISF7ELnx9JBlNtgFmltMlbbEoIot8E8BAtGFtaC73MbzENIZSLDqBBEuQ3mke6yRoZRIYhyG8xE0NUCw6gQRLkNZiKlMnFhVAii3AZzkSwYFUalIMptMBcplYkq6qUqNOiRMybdIuzCtNF0d57bYD6SPwRpo+nuPLdBB9JyBoVRKf/lNpiP0GAKarYmjtvc4IiMAyGzj5nclAoYjsg4kGJayMCTJANxRMaBMCvThcyNSmGbIzIeRAvi50al5LfOmanZIdX0AcqatO/GzxnPEmHSosMra2L1wgMTLuSNEF0Siu8LLwbyIVoQrawJxSDPDXqRN0JsSZg+ed1RUnMjb4RYmUTUD1hLOJE3Qmh6IeYxlNTcyBZENnxEd2ct4UYMbdBcRspjWEv4EaVRZC4j5jGsJfyI407I/UnMellLFCAGN1x4E/MY1hIlSA0foHeIMzmsJUoQh2U61OzDQhwHYF+iBGmA8wYmz5ffE9YSRQjzf3cgBYW821a603SuKPUEJMuQSwmO+pah1BOQgkIW0DnjVIhSTwAKCrmUoCBTipzoIzJFpWKhIFOIskmVFxSKC1KQKUas1bryDoXchOSgaDlKkCuVTORqnleKAtBkmcKKW3FBBtFyNFmm0E2UXJeqNgClzVvmhJqHU9UGoIbREidUXJCqNgI9jPpDnfZ28PMEENQw2rqrbk3xYRCFoIdRrxNqf5lBFIMeRr1OqLkggygINYw6nVCZKGYQhaGHUZ8Tym0lBlEgmjbqc0L1xaAmCkPVRl1OqO2C1ERxqC0mjxOqLkhNFIjqLg4nVP8mgygQrVPf5aujenrE7jwQpZF+J3PXUl2QI05QtLnRbCfUxhg54gRGj3l59bfWmufBXTS6spY3MaO05jsO28PRS8KcsbVG1wioqIFRNcwup4DT3wcqanD0ktCefBhSWxaDcPTk8eo4xhJOk7Q7KmoBWHIZo7ZmiMgsBgOw5DKtyXUMAZmHBgOw5DIm3zHEY+YxIVhyGUNFoRfzHK8IwqLLGCoKSzRmHhOCxXn0MkA7FXyDn+gJwuI9aqPQUEkwj4nC0mPSBE1LKGYeE4bFf+RkxhSJeWApDFNBISYzhmY/85hITAWF4EOWNIZ9pUhMBYWgzBha/fxQXSymgiKpzFjUcQ4ZxqL31u/0lwOGvm7H+ZhgbFV9oijUT9B0nI8Jx1TV9wubhsnvjqVEOLaqvi8dMbovS4lojE742a43lYIsJeKxOuF7NLSpARxRq4BNWnu3xcImBrArUQGjM73VdbYYymq+ClYnfI6jRrOzK1EFqxM+xVFjDGU1XwmrE/7GUWMMpQtWwuyE+8x/wEHtWlid8CsxscZQ/+1eJBOzEz7qemMMpaBWEbMT3uKo1d50wYqYnbBbW/VQumBdzE7YLkw9pY4uWBnTwMsd02DFDbpgXYwtCjt0wcpYWxRm6IK1ATshXbA6trElM3TB+hjH1mzQBQfAXOdZoAsOgWl+1wZdcBiMgrUBuuAw2AZADbAvOBRmbU2BrfmhsGtrIjzrMhyYsp4DasMBqSg4IzokiLKeY9qDUl5R8KTEsNi79QlYzA+NtQWfgsX80BT2KFjMD09ZMsMLuEZASTLDSmIMlCQzczxzvThup6ZR+JOZiaUxi9V2p0eN+7VJp/16Qkm2W5mx3o0/PMv17vCl46sy/M985eWwmYpa4e31TiGNWax+bPdAc8LXKb72uJ2EFX1tprGnMc16d+oJL8re/XnOpz3tRr8x+tpMI05jrp7XZ7w7yuadSM1Pu3H7oqcoHGsas9wexAJJFiGEl3ncETW/KBylGiO43i+iGZTDku1hM9LQk18Ujm5ruFrP9svFr2EYXuXLOCsN60Hdb8bVVFpuM5IxKXpYM4LT+AJq7sBFO5r/QbM5ZBa0wk/PeJEvh1G5Yn5JOI5yfrk3H3D8RcjBMvOB03Ysu6LtAu5XzkObcLHOdb7vX578k45DeZf9GDKCpWslBv3IYLMp6E0nHcenTl0T1IHfZp8BB8xmmq0jdj6R1Eb9M9DHIeOp9cafTwYp6kvN16Wjh+lDqUnOQxlxUbAg1eftAebr0te5e9KBF4YxYtHpiaomXGxQJz0SyQdihr2+Ect+dcWycF06VvdEQpYBncera8TS166SCZd76Ln//noCdBLoxrFadlp+kLeCCReQze+F3vUFnmq+cqjSAC/eurt4cWYFv72oS4wXAMP0ncs+PJoiDBgrziy2uLPiz/RuhNgLWu6cY6Np8aGJ758Z9SuXEe73+Ml9j/NorDqHONXNK8V8EmPCTciC3rgcElVQszkGOOJlG/OK4wwYMfTU7AKW8kar6V+rCFeMcESkAeESaVT4PNumzpotOqm5OiJ6R8QaEGvCNUp6eaHNqtHcrSvhBxyQqalfzU4BM+EmIvt0dfHW8tCbgxOsRixRs1NATLjYBdjv7B9qWe7BvwcUTCMMiDDhIiB9KW7coY3Y7sqDaYwBi00YYD+QPIk2YumGGGXAMhM28MwBqi6DE5tTSXURZ8ACEzbo8uGMr6JLJnM+Oblbq5EG9JoQHT8vQQ06bJPk4rNhrAFdJgTbr91H9rsa5JbosWG0AfNNCLbfMb4rhxwWyLZhvAFzTbhB2i9KQn6nAfa88mxYw4DXPdq+jEj9pT3UPMoB7Dtn2BCthaawNptWQP0zuJXaQ4OTj6w2rGVAowkboP2qut8vOAn+YqkP6xnQYsJF7oHFNLV2vz5wOoRe4zsN6GyUnxWn2MJeJ5zc7wM3yXOUi9i1b8m23uxHHEJcwXYQaMvNC2yUfC8EE+dU2q0ycN5fmTYhbANsd0MfYfwGlZm2ybNETgM+zvg442/bn2AtUJ/scopSQaA2xEv/puBctO98xPtxmL4lXoMC6NDb3ycocenUE7ycLv47jO2dDN6+/xJUAC1qzoSBGjD42A6dBnzeyLyR701hAwXQwBnaUjAi0+sG5FXSXjMR7059eHqdQBnoKNLPNBgbPlVjbin0bZ/xmvCntl9g0rWR2+8GxobfodQtxHxkId4d7Ottctajb0zAfjcgNnyE0hXMgH5nvoXjBtJSO03DfjcgTbPr/9d9uqzvcJbfhBuIhjbO/DMFpLZo3TtPf5O2TncxwXlS9rsRMfxqJdVlx4/qWxmX/mIFPoBnJT0mUbNB9URaLRw7yB6oHWnOZRATSor96FnV33rk++7qm3BCCWg/0FkuA1p3vbIJTdMHIwfWjTGhj0fUNGH7IY1PE0w5bMIyolTPhIcpb4Cv4KYSZGxjgpVMOL0KUKRKdWid81xWeKHmEkB/qRBK7UErXp05zieA/oKaT0iRc94h2IRzyED7iM1K8w6shJpwNCNoeJZx65Z9aCzsp2jDwhMHN+v8Sv7BTVDP/Z35ZTDvxGilLuk/woST19AsYOYVXnD2buAmnL8DPliAC4vEcLUBzA2zP/wJB3wAdcOSi7KRJvwrDvgA6IZlN53jFLY/5IAPUG5Yej0vyIR/ywEfYNww49aC1O9AFIYzrwFTAGpDxI2SgFdpsnMwpRTXhqCVK6wq5qqCWij83EALWrrSuvAP7oEPANdBIMYwAVH0z+WhDyAyt/htdhOQTMYvKkwY1GnKwp+B6tfPsqUrgeszlRWEuIq+Hd3B+FCQvd5zwSYElff+kBuCG71+XQ2sbP8ZN4QPW3hNCDZg90fcMGTSYjQd3j+gjwZNOzlMGHQ4bua1YdzwdrYJw043Tve0oA7wTs5PMgvDyOOpM5u3/yVgQOaZEU38TvvQZ4r4A712E8ZP3c9QZqtxitBqwiqXWvRd8TdhKh0/s5mw1q0kMwql9Y6AWkxY71qZuYTSqsewdRNWvRdoFllpyGdp02iHCGtf7KRcAD9+kJ9FsSF74QA3c036LNog1zqJJhziarXpbodDXa0mmHCgi8ISF8CPnaijgjpJEw5109vUrqa8UzmBeSVhQrcBEf+XidkQcutBu8FeMOr9a9d9DLIfTOSK5huYBPQmabibGT1TiFvnn7pPAGBU3YnYEGO/r1F29yDER/7n/Uvfh1owl6lMwIagAvCniHK3pN5M6DbgTzUH0pZGbkOQ/Z51fcz3CpbOP/IyurTE/O9GbEPQd+zepoUawEdfvK/Be0YEupfqOM68FFU/fCib5d/tWTgN+JkPoWT68dUWsG+B9qn53tNF7de74H0FetUwVKtsXNffNyj9LDVu6SzlvtIQZ3BPLTFKrR/yC8qvLGFiVbo15HzEyf9vpRF61IbR7seQ1MA+wyvvDf4P8fp2LnmSHyfaD53UoL4a2en7gtOEO9+/U49i4GZfL5vhgikufFo+C+00octZLGdpcM3PgYLpYgPslpouWK53Sb3xehhgA/tUPTNdgj5+/fj5xlewlgntx4KBQyRVHRHqfjnFbR0TZp3rRg4C1XLEFbTTnVfY1jBh7sF8pA3bffikd7OH9t6zhYl4EzpuVoAO5J0j6/zFFnwA3nHSLnpc0Hc1BjArv3KMiaaLDfpqXt8gZawJ3XebYAcr2wN8um2NHvNy2u9frAlLLqeBicMPLsgtcY0sHe747fcv9FMRZVsQrEHzBcaIC7z5yuz3L86EpfcFX4HWWV25EeF73/1HlSdbMSYEGPDKCr1kfiM224hTK5jGZoQJMQb8d6u44JuOI7FZYeu+b2CqA96EMAP+Q4tWD44ZLYxmc4ypm5G9MLQJL+A6GqtcPTjvLPF0tQ9KE1rwkB1WnSn7akUvwN7pL5fDWnrVltuwA+8X/DlIpAkDDHhjHbKe510ilgWFzhsxojvwdtcwPRldIn7/4GPfw6IMiA6fv6BMGGfAGyt8QX31w74nxUTQc+QUCMiE0W25BW4a7JveG+K9p7ME2kNwuwtyx2uNvmoDTmt660Pv4ZAkoe73BcCEtSZUlshCv39lwdJ6nbGPYhOWf7HCDkxjPvX/fWANim9vJSk8ioL49lYOGCMmWuOoi8Nz9B8ARS9eb1YeDMCIifRiUfp3b5y31adXC0yIFENzKDRim/q7xXraAOb7VyKRDmXAG+uDPztNhv6yemIY890oPyI6DEuvBp1MnwvqieNmyHNUvjO6QxvwRuOSotOhw+fX7WHA0zcPXOLMSC47y59jSdQSNxwnqs7xU8YWHF8THdMp6OUuJ54K35XJDKPtsLHzhexSqHYhqLHYmF1RWvSMMHoyNYzrkbufjCSGvrA0jSb19iW+MYbRU6rHOBzZYbQdeu9OsFYTVPHjXIYwOkLr3cjPy4eQY2xcA6oUDOWdSwyjl+N2XJHzF486OsY4+kOTtKIYRIUwetqtR5O1fNJ4qgn0eBqcfisqXzjsCaPtab8Zq+t94+uB12wsefm0ovbevewn5+OoPe+HtcuAXTfKHf2TxXN2o27f2x/bbSby/7v+D70asbKljIrV7jFMqO7ezWm/W409aL7hb/JO7HOdy81+vBl0AY3bgF07hT1i/pSM8s3ylZ4aDlH7icls9jOmbBBz9EXh/CkdVJ5YMjM/vFdo/8BkZmDKr/lkMjMoBZXED0xmhgRxKOgy9H/iL1NWSXyjqP0kENBHZlhRDAXqpMcU2kzzBHaqkhXFMKBckBXFQBQX80+wohgC0GfI7giD7CQKpAuOawb/r4B0QZb1A4B1QTphfbAuyLK+OmgXZKOwNmYXNFuaTlgVswse7eI3nbAmVhe8Opa5B0wnrIjZBVc5N13QCethdcF708F8tpxOWA2rC36NEpqzHnaZamGdMPzWq81xlF2mShj7gj8uZb5uhjthHYx9wadxbKvTciesg9EFn3t+1oEaOmENjCd2X9IS60F7OmENbP70dqTFGkfphPEYZbL3uQljHKUTxmO70vejtLPW9XTCaGwnJXqOBRrrejbro7EJ1X03PhjrejbrY7EJar3zn8YNlE4Yi6maT5zqNPaZRn3f2vQxVfOJw0jGm4M4OxqJKRImr2oyagETuxBpWphu8k1bwHYR8NgucJ4TplJC6PIZxTU2mcKw5CKiqmIrClnVh2FxIbmeMyUzye8akUIspYSSSdqKQlb1QVhUFS2RNMmqU7p4dEpYxGl1WMmWzLCgCMHgPobmkCmZYUERgUUStVwNY0pm2CYMwJDHmPYvUzLDW4ICMHTZbRcaWNr17FDgMegxRk3apOzwdgs4Bj3GqoZZpB3mMnD0PMa86KY2MXMZMHpnKGPMzFJRMJcBozeGcvRoQ0VBXQbLAumCNoWVugwUfeY6T402SKzMZaCoK55ZwBnKevaYkOglXG5DyFDWc2gNiFrBZecdBifkraNA1NwxX0IxOCFLQhhqZ9Ax42noNrJVD0MNoh4VU283siSEoalgrjFrg8DNsUMQqqLmayToTkhlDYS21M6TDroTMoyC0IKot5enOyHDKAQtiLoPG+lOyDAKQXMVfztdbXgwjEJQgmjBeT9dmGEYBaAF0ZK6WxVmGEYBKEG0aKpMdUKGUQBKEC2TvlQnZBgtRtEvCwc7VbGAYbQYRRMtXWGt68F7EYqRl7j4HjR1YoYtpkKUIFp+YFoTfNhiKkQZcSpPNLTZUQ48FSKPOAGWV5tj5MBTGYp0iZjpjBPtyD8t0YAkipq+za9QFCFrz5h5QKWqpyxThLi2oGOaWlVPWaYAeXFReolS1bOeKEDMMmC3misVCyd/CxC9A1apKQUF6wk/siCD25+UgoLn0NyI4Q2oOYdLd38WMc9HJhiy8sP+hBdxf4LuTkqHAvmoP4VYS0ClEuV2CwprTsQEA1tny7kMhTUnUi0B3pvkXIbCmg9xVdFCiZzLgB/2V5BqCXiVLesy3AhdSH0J+M4k6zKsCF1IS4rvF4i5DCtCD9I8dUBqIbdB8M/7A0iDohENH1FF50boQMoOI4Y4xdFijm7nI6UWIROAYvHCHmE+0r4Uc1+W5PS8dzsfIagFLadYEnJYJhshsQiSKcWxQ16Tl4u0nFE9c6kdSXE7F6FjF7YnSV1C1vS5CBJJWGYvKmtRD50twjYYl1RISizHnfIQtsHAZp0URjn3m4ewloHyiBRGmcrkIWyDkZWZEEaZyuSR3gZDV1IKo5HPnR/CNhi6H0lhlKpMDoIvxN4tIYRRqjI5pLfB4CaB8Opw0iKHdJsgOKkXwigbTBkI6xi9G6XfHTaYMkj3BsNnb4UWU/Sj50S6Nxg+7SBkwZyVsZNu88Sn9OlKlLqaneQiVjjAkPZ/JqNm0pOiFRYxPfBEXc1M+rK6Gi2e5FFCnmAykxRGqiT0aTWhxtPnQdILqnR40rIMm7xG0gl9FWkyLSewnDCSdIJKV/MkZRkmo0aS+XwlZTKZSLFNbyRZz1cqqZP1BMsJI8t9Qhep1WPtz6Que/Z47awOPatYrR7rqSfaA9OYXNYfRqy2Db2nUu2B/Xkfq9dwWs0LXsqZy57mK2G5+8ntK17z+fPM85ZVfDnN5niPpxWnHO71zOWw4Rd7YCx3p5rtuXV7pPMRQgghhBBCCCGEEIn/xHJ1ZgplbmRzdHJlYW0KZW5kb2JqCjE3IDAgb2JqCjU5NjgKZW5kb2JqCjE4IDAgb2JqCjw8CiAgL05hbWUgL0ltNAogIC9UeXBlIC9YT2JqZWN0CiAgL0xlbmd0aCAxOSAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCA0NTAKICAvSGVpZ2h0IDQ1MAogIC9CaXRzUGVyQ29tcG9uZW50IDgKICAvQ29sb3JTcGFjZSBbL0lDQ0Jhc2VkIDIgMCBSXQogIC9TTWFzayAxNiAwIFIKPj4Kc3RyZWFtCnic7d1rb13VncfxFzJSRqCAycXx8QkhMmnI1XGIc8GxA87kUkyhEEaEEpgKhjLqkIqBUVqqEWqlDpVaQaWRkPIAqah5NILH857OnLDQ7tG57LP3Xpffunw/+j/HXtv6svY1gwEAAAAAAAAAAAAAAAAAAAAAAAAAAN39/H//b3TUP07aPvvxC6Oj/nEAeDQWTypqbyyhFBXIz6xyUlEn6itKToF0NYknIbXXsKLkFEhF23hSUUttK0pOgTh1jicVtdE5oeQUiIR9PKmoDScVJaeAkMOKEtIOqCiQOioq5DahVBSQoKJCVBTIgNuKEtJWSCiQASoqREWBDFBRFU7ngTxQURUqCmSDkEpQUSAbVDQ8EgrkhIqGR0WBnDivKCGdi4oCOaGigTlPKBUFtKhoYCQUyA8hDYmKAvmhosFwOg9kiYoGQ0WBLPmoKCGdioQCWaKiYbARBTJGRQOgokDG2I4GQEWBjFFR30gokDcq6hsVBfLmqaKEtEJFgexRUX98JJSKArGhov6QUKAEnNT7Q0WBElBRTzidBwpBRT2hokA5CKkPJBQoBxV1jo0oUBQq6hwVBYrir6LFhpSKAqWhog6RUKBAbEcdoqJAgaioK54SSkWByFFRV6goUCxC6gQJBYpFRe2xEQVKRkXtUVGgZF4rWkJISSgAKmqDigJgO2qDigKgop35SygVBRJCRTsjoQAMQtoBG1EAFSraARUFUPFd0fxCSkIBjKKibVFRAGMIaStUFMAYKtocCQUwiYo2R0UBTEVIm/CaUCoKJI2KNkFFAcwSoKKph5SEAqhHRetRUQD12I7W8J1QKgpkgIrWIKEA5gpT0URDSkUBNEFFp+J0HkBDbEenIqEAGqKik9iIAmiFkI6hogBaoaKjSCiAtoJVNImQUlEAHVBRI0BCqSiQJbajBgkF0BkVZSMKwAbbUSoKwEbhFSWhAOyVHFIqCsBesRUNk1AqCmQvZEWjCikJBeBKgRVlIwrAodK2oyQUgFtUlIoCsFROSIMllIoCRaGiJBSApRJCykYUgD+BKyoJKRUF4E/2FSWhAHzLO6RUFIBvGVeUhAIII8uQhkwoFQUKR0WpKAAb4SvqO6QkFEBgmYWUigIILKeKklAAEnmENHBCqSiAChWlogAspR5SEgpAS1JRhyGlogDk0q0oCQUQg0S3o+ETSkUBTKWqqGVISSiAeCRXUTaiAKKS1nZUklAqCqBeQiEloQAilEpF2YgCiFb8ISWhAGJGRakoAEsxh5SEAoifsKL1IVUllIoCaIuKklAANiLcjrIRBZCWqEIqTCgVBdCNtqJjISWhAFIUSUXZiAJIVAzbURIKIGnykFJRAEnTJvT1j/+ThAJInSqht+//7ZnzF964skFFASRNVdG1F3eePrN2/Oyzd69tkVAASQuf0Cu/+OUwoWbW19d/c/N5KgogXYET+sofv6wSaualjUskFEDSgiX0zjffndjcGqvocN7d3qSiANIVrKLrr96aTKi5QPrJ9SskFEC6AiT06q8+mZrQ6gIpFQWQNK8JvfWX+8+cv1BT0eG8uun3Aql6gQFkzl9C73zz3emr1+oTauaDq74ukKpXF0ARPFX04u2fNUmo1wuk6qUFUAQfCb1x778aJtTfBVL1ugIoSPjLoZPj/AlS9aICKIjby6FTnw5tMg6fIFWvKIDiuKrorKdDG14gdfWKvXo5AZTIPqH1T4c2vEBq/4q9eiEBFMoyoZMvy3eb689dpKIAEtU5oebboU4qOhybb5CqlxBA0TpXtOED9s2n26P46vUDgC4hbf6Afas7TR0exVcvHgA81CqhbR+wbz5t7zSplw0AfhD+jtKsaXWnSb1sKNTeK69Uo/5ZEJHwd5RmTcOPPqkXDLF40DszOgH+i6MVHZsA/3VEa25Cm3+yyX6avNOkXjBojDVz6vj+GWoqSlELF/6O0qyZ+06TeqkQSJNmBq5ow4RS1GLNSujoP+gZZlbPPTvrTpN6keBRt2yGDGm3ilLUcgS+KV8/s27ZqxcJLrnKZkIVpajZG0tot6/euZrJW/bq5YEDnsoZoKJuE0pRMxb4pnz9jN6yVy8MugtQzgAh9VpRipqT8Dfl6+fO85epaIrClzObilLUDPzc7sOhzuffX76pXhI0oi2n14pKEkpO0zXc+K2ee1YeTzPPnL9w55tvh2FXrwqmkwczTEjlFaWoCTGnzx9c3ZT308zOZ/9dXapVrw3+Th7JkitKTmM2ekP8pY1L8oSuv3pr7LEB9QoVTR5GVUXltSSnqRh7rOg3N5/Xntd/fy7/HRWVk/dQHlJ5JClqEqa+KKQ9r7/6q0+mvgigXqpSyBtIRclpQmpeWn91U3Nev/biTs17/eoFy5k8fbFVVB5Dchq/uR9QWl9fD38uf/v+3+o/kKJettzIi0dFyWm65lb07rWtSM7lCalz8tDFH1J5+shp5Bp+WP6NKxvBEjp5X56Q+iDvGxWNYezXp3ANE2pm48L5MOfyk/flCalD8qylVVF55chpzFol1Dz4dPys9wefRp+xJ6QOyWuWaEjlcaOl0WqbUDPvbvt98Oni7Z91SCghrSePmHxsVk+eNXIap24J9f1C04nNrbbn8oS0hrxd8YzNMsprJh9Xf5A5sUmo1wefbv3lvk1CCWlFXq3YxmYx5RGLZFz9cWbAPqHmwSfnF0iv/OKX9gklpPJexTn2CyuPWDxjv5hJc5JQM3eev+wwofWvKVHRueSZinM8rba8YzGMp7WNnMOEmrn+3EUnCe3waBMhrchLFduEXHx5ymKYkAuu5Tyhn33/4JOTC6Sv/PFLtwktJKTyXkU12mMhT5l8tOsfgI+EurpAevlf3vWR0LxDKk9WJKM+DtPJg0ZLnfOXUPsLpG4vh2YfUnm1Ihn1cWhK3jRy6oTvhJrp9gSpj8uhuYZUHq4YRn0QupM3jZZ2FiahZjpcIPV0OTSzkMrbJR/1EXBJnjVa2krIhH7W/hX7hh++Kzmk8nwRT3/kZaOlcwVOqJnm3yBt9eG7AkMqLxjxDEYeN1o6lSShZprcaTp99VqYy6EphlQeMeIpIY8bLR0lTKiZ+kfxnzl/wcnL8vmFVN4x4hkDed9oqTyhZmruNHX7dmjeIZWnjHhGSJ64Mlsqj2c1s/4Ve4ffG8kmpPKg0c+YyRNXVEvl5RybyXeabD6/nGVL5UEjngmRVy77lsqbOXVGv4qvvaMUW0jlTaOfiZJXLteWymtZM+afDQ32jlL8IZU3jXjmQR66nFoq7+TcefGFLflN+RhCKs8a/cyPPHQZtFReyIYjL6Q8pPKyEc+MyUOXbkvlbWw4wx9VnkdhSOVxo5/lkLcurZbK29g8oYY8j+FDKo8b/SyTvHVJhFTexrYJNeR5DBZSedyIJ+S5i7ml8jZ2ruigjJDKE0c/UZHnLsKWysNok1BDnkd/IZUnjn5iKnnu4mmpPIz2CTXkefQRUnnl6CfmkhdPGFJ5FR0m1JDn0WFL5ZWjn2hFHr3wLZVX0XlCDXkb7UMqrxz9RGfy6AVrqbyKnhJqyNtoE1J56Ogn7Mmj5zuk8ip6TeggtYpWIZWHjn7CLXn3PLVUXkXfCTXkYWw78tbRT/ggj57zeXrlqDyMARJqyMPYcO589c219e2P+6fl0aOf8ESePlfzxFNH/3H3Qv9A7/3Ni/JC+k6oIS/k3HntvbubB08/t//ocN5ZPiWvH/2EP/IG2sy+yzu7F/vDhFZz8ejRe9e25Kn0mlBD3sn6LajpZzWv9U58vawvIf2EP/Iedkno+vZYQs3s37f49qV1eTC9JtSQB3Ny3rj3+2oLOjYvLR3/oq9PIgmFV/Iwtkjo2a1HFvZNJjTaTamnQybPZjXv/PXbm1svTu1nNVcWn/m8vyoPI/2Eb/JCzk/oyfM1/YxzU+rveMn7OZw3f/enWVvQyfn0YOwh9XewUA55J2vG3EtqPjFsSn0fL21Cf/LTtxr2s5po7zf5PlIojTyY41vQyzuP9Q61Smi1KRXevg9zsCT9fOvPX22f2mib0OoyaWz3m8IcKRRIHs8fErq+/ejeAx0SWs2V48dyTagROKGvf/jr5mfxsy6TRnK/KeRhQrHECT15vv5eUsPpH+jdfWEjy4QaYfrZ5EZS89FeJg1/jFAyVUKfWDlh389qHlvY+/LaapYJNQKcxT9/5JyrhGovk6qOEQoXdAva9ULo3FlbedrfLSf1IfIY0tfeu+u2n6rLpOpDhNIFSqj1hVDJLSf1wflB5Gfxsy6ThnmaVH1wgB/4TaijC6Fz5/rpU/kl1Ij8LH7WeP16ifqYAFP4SGjbJ0It5/ihw07O7tWHYgonCbW/F992bi+fdH52rz4UQB2H/dx/6cbUV+N9j/33oNQHoY5NQndu3ArZz2quHXD50r36CACNODiLX90IcxY/dWzu3avXfr5uF0I7P1Efz9m9euGBdqzO4p0+ztR51laezi+hRtsLoYHP4n2c3auXHOgolbP4WTM8u29+mVS92O00vxAqj+fodDi7V680YCuVs/hZMzy7b3KZVL3MXUR7IXTuND+7V68x4Mycfl7eieQsftbUXyZVr253NRdCJ79RH9XM/WC+emkB92YmdMZn6mObWZdJ1etqS/tEqM3UPJmvXlTAo/GEHjsb4Vn8rFnpPzl6mVS9ls6MJrTVN5ZjmPf7p+gnSlOdxS8cXJGHse1UT5OqV9G9CO8lNZyXlo7/zzIJRVmGFXrh1Cl5ErvNwdWLw/8LqJfQvWGFPj24Kk9ih9m5ceudv347/L+AegmBEEavKA43dfv3Lcqr2HweWdi3b327uhyhXktnRs+IP++vXll8Rh7GhrN58PQb934/dl1XvZyAR5O3Zu5d21pbeVqexyaze7G//9KNseu66hV1YPLWzBf9M8NzZHkh5872qY07X30z9RkD9aICXtQ8KfTP62cfW9gr72TNLBxc2Xd5Z+ozBup1tTLrMaGvl8+81jsh72TNvPLmv8593lW9uoAzTV78ufvCRv9AT17LqbPnR6fnvjKgXuMu5j6y/n7/lLyWkzM8i3/zd39q+O6Veo0BB1q9h37l+DF5M0fn4YXQk+cbvnulXul2Gr778+nBuC6TXlvfNjeSWo16sYGOun0T6e1L65Gc3T+698DovaScQtrqPfQv+meuHYjiMmmTs3hCimx0S2h1y2ml/6Q2oY/1Ds26EJp6SDt8EOnr5TO3l08K+9nqLJ6WInU2/Yzk7L7JhdBEQ9ohodV82Ne809TtLJ6QIlGuEqo6u394IXR1wyahMYfUJqGqp0l/8tO3XPWTliJybvs5enYf7N791CdCswmpfUIDPwQ19Yl6Qooseern6Fw86v3fsHviqaOu+hlhSF0lNNjZ/fapjbf+/JW/hNJSxCNAQs28vLbq6ey+1eNMyYXUeT8DnN1X78UHG/VRQqGC9bMaH+/dD8/i2z7OlFBI/SW0Ort3fu/+tffuhuwnIYVK+ISauXdt6/ihw87O4ldOeO2nNqS+E1rNx/3TTjalrh5noqWInKqfo2P/EJSre/HRhjRYQs3Yf8Ak2IVQWgoheTxHx+Yy6WO9Qw7vxUcY0sAJrabze/c3t14MfCGUkCIweTOnTrfLpJZP1McfUlVCzXzeX237uqinJ0JpKeIhr2XNtHpXNMCNJHlLtQk18/Vyi03p6x/+Wp5KWgp/5JFsOE2+8/zEyolu78UnVFF5P1ttSjcPno7nQigthXPyMLadl9dWZ/Xz4aeZzm7JyxkgpPJyNt+U1nymPubxcdSQH3kPO8/Ul+5rvlEvH7cHTt7M5pvSCO8l0VK4Ii+h5Yzebwr/LJMwpPJUNt+U7ty4Jc8gLYUP8gC6GvP1kpi3oM5DKo9kw/mif+bOv/2HvH60FM7Ju+d8Prr5T/I2BgupvI2tZvgDy7tHS+GQPHeexvx28jYGCKm8im0TasijR0thTx46r/2syNvoNaTyKnZLaEUePVqKbuShC5ZQQ95GTyGVV9EyoYa8eLQUrcgrF7ifFXkbnYdUXkUnCa3Ii0dLMZe8cqp+VuRtdBhSeRUd9nOUvHi0FFPJKxdDQg15G52EVB5GTwk15LmjpajI+xZVPyvyNlqGVB5GrwmtyHNHSwsn71uc/Rwlz2PnkMrbGCChFXnuyGmB5H1LIqGGPI8dKipvY8iEVuSto6WFkMctoX5W5IVsFVJ5GyUJNeSho6UZk5ct0X5W5IVsOPI2ChNakYeOnGZGXrYMEmrICzl3eue23+v9SF5IbUIr8srR0tTJm5ZTPyvyTtbM0oXre3YtLPzD7j/0T8o7KU9oRV45WpoiedOy7GdFXsups7ixs//xpWFCh7O0a+HL5dPyWsaQ0Iq8cuQ0CfKgZd/PiryZk9PrHTEJNXNs9+L95VV5MyNJaEWeOFoaLXnQyulnRZ7N0Vk+fGo0oWae29OXZzOqhFbkiSOn8ZDXrMx+VuTx/CGhJy9NJtTMzuJheTxjS2hF3jdyKiRPGf2syBPaO7dt7ijNmg96R0loDXncaGlI8o6R0KmECR29ozRrlnYtaG/Zq49PI/K4kVPf5BGjn/VUFV1aPFyfUDNPPbJXdadJfWTakZeNnDonLxj9bC58QqfeUZo1aws9EtqQPGvk1JK8XTGM+iB0FDKhvTObzRMqudOkPhoOyLNGTluRhyuSUR8HW2ESurixU39HadZ8tHyMhLYlbxo5rSevViSjPg4uhajonoMdEhrsTpP6CHghDxo5HSOvVjyjPhReeE1oq8uhk+P7nSb12vslr1kMI1x/ea9iG+GxCCCey6GTs73vEAm1JE9ZDBNsteWxinCCLb5WPJdDJ8fHo/jq9RaQdyyecb628kxFO86XOnKRXA4NcIFUvdJi8ojFM/aLKc9UnGO/sOmK5HKo1wuk6jWOhbxg8YzNMsp7Fdu4+vtMmoPLoee23SbU4QVS9erGSB4x+disnrxa8YyrP8g8WF4O3fvoPh8VXbB+glS9rlGTp4yKJjqu/gLz0/1c/sljnhK6YPdVfPWKJkPeNCqayrj6k8tYl4TO/naowwukJDQMedySqOigvJA6+esqR9tzeVePNtXP6wdWSGhI8srFnNBBMRW1X6hiNa9oww/fOZnfLp8goeHJi0dF6WeiIjmXH52G3yBVr1y25OmjosQzOZGcy49Okwef1MuWP3kD5Qk15MUjnvGL51x+dOoffFKvWVnkPaSixDN+kZzLj87SroVZ5/Xq1SqXPIxUlHjGLJJz+dGZ+q/Yq9cJD8kLGbKig9RC6vAXR1uRnMvXnNerVwjj5KkMkNBBChV1+/vCRgzn8rPO69Vrgznk5Sywom5/Tbji+335tmPO69WrghbkCXVe0UFMIXX+q8GHjeUj8nj+fTu6eHgYdvWSoKM8EjpQV9THbwR/zOnz9r5D8n4OZ//jSw83xt9fZFAvDGxRUcpZiOpWzrHdi9qE7tm1UCWUiuYkxYoOgoTU00+OkEZviN9fXhWGdJjQ3rntsccG1MsD91JJ6MBbRf39wAhv8uHMP/RPLokeGV0+tj71RQD1IsGjQirq7yeE3NQXhX67fEKQ0MOnZr1OpV4kBBJhRQddQ+r1R0I8al5a/6B3NGRCe70j9a/2q5cKoUWS0EGzivr+GRCnuR9QCnbLfvSmPBXFVFFV1Pd/Ealo8knktYWe74Tu2bWwdOF6k0+eqhcMsQiZUGCWhh+Wv7+8+tQje/2ey0/clCekAOLXsKK+b9nPuilPRQHErHlCvd5pmntHiZACiFPbig5nx/UX8/Y/vtQhoYQUgFyHhDq/09T8jhIVBRCVzgl1e6epd2azc0IJKQAhm4q6utO0fGTNMqFUFICEZUKd3GkyHw51MurlBFAcJxV9YPFO095H9819R4mKAoiTq4Sa6fD1vKlfvSOkAFLhtqJfLp9ue4G07QP2hBRAPNwm1MxHy8da3JTv9IA9FQUQCR8VfdD4Ufwmn2wipACi5SmhDS+Q+rgcSkUBBOM1oU0ukDp5OpSQAlDxXdH6C6QOnw6logDCC5DQB7MvkLp9OpSQAggvWEUfTLtAav+yPBUFIBQyoQ8mXrGv+Qc9CSmAJASu6HDeXjpiErq452D4hBJSAA6FT6iZ5/b0Lb8dSkUBxEBV0fvLqz86fl6VUEIKwAlVQs1oE0pFAdjTVnT4AxBSAOmSJ3RARQGkTJ5Qg5ACSFEMG9EKFQWQnHgSahBSAGmJKqEDKgogKbFtRA1CCiAVESbUoKIA4hdtQgdsRwGkIOaKDtiOAohb5Ak1CCmAaMWf0AEVBRCrJDaiBhUFEKFUEmoQUgBRSSuhAyoKIDLJVXRASAHEJLmEDqgogGikmFCDkAKIQboVHYhC6vDnB5C6pBM6YDsKQC31ig7YjgKQSj2hBhUFIJFHQgdsRwGIZFPRAdtRAMHllNAB21EAwWVW0QHbUQAB5ZdQg5ACCCPLhA6oKIBQcq3oIHhIA/92AGKQcUIHbEcB+Jd3RQdsRwF4lndCB2xHAfiU/UbUoKIAPCkhoQYVBeBcIRtRg+0oAOfKSahBRQG4VVRCB1QUgFOlbUQNQgrAlQITOqCiANwps6IDQgrAhWITOqCiAFwouaKDgCFV/6IAfCk5oQO2owDsFL4RNagogM5I6ICKArBARQ1CCqADElqhogA6oKKjqCiAtkjoKLajAFphIzqJigJojoROoqIAmqOiUxFSAE2Q0FmoKIAmqGgNKgpgLipag+0ogHokdC4qCqAGFZ2LigKoQULnoqIAZmEj2hAhBTAVCW2IigKYioo2R0UBTCKhzbEdBTCGjWhbVBTAKCraFhUFMIqEtkVFAVTYiHZDSAEYJLQbKgrAoKKdUVEAJNQGFQVARW1wUg+AilqiokDhSKglKgqUjI2oE1QUKBYJdYLtKFAsKuoEFQWKRUVdoaJAgUioQ1QUKBAVdYuQAqWhom5RUaAoJNQ5KgoUhYr6QEWBcpBQH9iOAuWgoj5QUaAQnM77Q0WBEpBQf6goUAIq6g8VBUpARb0ipEDeSKhvVBTIGxX1jYoCeaOiAVBRIGMkNAAqCuSKjWgYnNQDuaKiwVBRIEskNBgqCmSJigZDRYH8cDofGBUFMkNCA6OiQGaoaGCc1AOZoaLhUVEgJyQ0PCoKZIONqAQVBbJBRVWoKJAHEqpCRYE8UFEVTuqBDHA6L0RFgQyQUC0qCqSOimpRUSB1VFSLigKpo6JyVBTIAwlVIZ5AZqhoYMQTyBUVDYN4Atkjob4RT6AQVNQT4gkUiIo6RDkBAAAAAAAAAAAAAAAAAAAAAAAAAF79P7/vp0cKZW5kc3RyZWFtCmVuZG9iagoxOSAwIG9iago2OTU1CmVuZG9iagoyMCAwIG9iago8PCAvVVJJIChodHRwczovL3BvcnRhbC5vdHJzLmNvbS9vdHJzL2N1c3RvbWVyLnBsI1NpZ251cCkKL1MgL1VSSSA+PgplbmRvYmoKMjEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMjU1LjgyIDU5OS44MDUgMzE4LjE1IDYwOS43OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjIgMCBvYmoKPDwgL0xlbmd0aCAyMyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVdLb9swDL77V+gP1CX1FlAESOpk2G7DAuxQ9LRh3aHZkF3290e9LMlyl+YWJKlkSiQ/Ps2eB2RAnzu/GMfZt9NwTjRkhjOhWxIqzQSMVmkApKPICXkhgl/83zsYuWKvgaPeQ14jCfLmJ/s6/BqAfRienon6neiK/R2iuMz4Zfi8AAM3h69GKJDfIMLzYGTUyfWITjnnmOWMm5FHSPcfT5xNv4Mx4Tr3uXBiSoLfvKaNlxeO5g2tHsN5kAqiBr+xyDT3ggcSLLPgJs9MSD1gL8PuONwfUDP6Hn/U6YliNAoJq6WTE3t6AOASAPb0s7TntO7op/zz5pkdP3lBiiE0giwTZjROkhw0syC9YfTkdyL+EEkMbogDRucPYEo61PJARxBoIxB/MTBvE80Qo4q0cCZXJPvLLdFzyg0jvz0kpSZe7QCgSF4gwTx5wCt524QsqVO4T1wJEaqkbk1agKxXpARjt4lDRXf2BkO8jLsNE2q2cVqDbTpXNDgg+tmbnn38ttrOz1NUUOOIyVNljHRdxuAhA0syXMdlsOcSMQLBPS7bSt/HJMlEyeFO8lDOn3APC+I5zxBaj2aZc3wSPQU0yM+BbXx1IZV6C53oK0mWrEA58hAhmdDsW3rOxayp4THpvmotzFWVsyTfbxMk+DOlTanrnCnhtOadiseXcgPftiqP5Dm0pYZmzNsUxZoG7/dHkKna7J0x6hKZphWt6AtydMaTPYBVD6k9KZYo6vwwpYwbr+QSf+xyAkH1aZ9B+cozqnh9LsdMnN0il7cvtKdWyqEKxlSXUC2x7oIXOV2iT1C6oWsLqxXkSjcKsWoO5X8sRSJyX4s61WN96MuLd540qQMub7/jJdJ4owtPbildkw6219fFgbJDtDFsgIc66rMF+5cx2srXuNYmismhaXUOq/0UvZ1x+22g0Qtfyrpd1K20SqoAOI4pf14KcrRitAEX2bxmRKnP9sVVV2Z5XtxSWW2lkUua1UiHE25VYW7P++NyttKSj5oGoWYMBebsaG1HDbPkyhDKaVSUHjFfI8Hi8ZrJdCFmOULH4yvRohrB6eUjVNvrZueZ3aMrU2o3XAqaoA3FyEmKETH5YPKmDfLdapi4xFHRP1s3HRT/+Qc/+coYCmVuZHN0cmVhbQplbmRvYmoKMjMgMCBvYmoKODUxCmVuZG9iagoyNCAwIG9iagpbCjIxIDAgUgpdCmVuZG9iagoyNSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMjQgMCBSCiAgL0NvbnRlbnRzIDIyIDAgUgo+PgplbmRvYmoKMjYgMCBvYmoKPDwgL0xlbmd0aCAyNyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVbNbtswDL77KfgCcUlZfwaKAEndDdttWIAdip42bDs0G3La64/Uny3Z6ZZbkdiiSerjR4qyfOkIkH87Gdyo4Ou5uyQdgVMw2FpFxsKAvTcWkdgUZ2IeWCGD3HfYKwMvYcZSxjxGFWbhJ3zpfnUI77unZ9Z+Y72BP12EyxM/d58aMvjm+C0ZDqTeIMNL53SMqWxPoxnHEbwC5XoVKd19OCuYfodkgruSXjiD0SjCSxIEL5iKwKNwuHTaYIwggiewKgPrDFz1mQuth/CjO566u3dkgf+n78v2pKF3hpirZ8sZnu4R1cCXQcQjj1xPPPDl+XrkZ8f1ZZl0lJXfA7O+Tx7H5G2jd9ARe408PrCoxL5/htNHoWOAsKLjYXC9GzWzIVfoCIAKOEjhtoedx96FqByNDpFz4Ce8TetkImlkwoOdnVZokpWgBe4VwpQMlVIg9R54EVIQCSCuKwYhukQcW0PijVLPY3LSkdqwYuHS4gwtiksoOakpleuQVmtVts183E0JrllcyWWVR6BjElLNIPbGoiH0uGqIa3ECFJneCpSssYTJDpUxlMO3ykPMlgKVkJ2JQSq3qnRlLs1dVupSZlQl3Fyr5WoXTDO3tvihzdxWyaLJpuGw2CjTnCk9tOivNN6/8y2tUhR+Ua4pOmxWuaaaeym4TRtFQHelqMI5VCXsqlXbWFq3Dc3USmkWZcKyUVLCNskUKyVvDkpdFXCqffBaW85pCFZ4B6RS5XjBnmMnu0pXa5e48j5E85/YC3/KTZfxM0/RpSo+ntpjxGrVW35bVycuwuh771facGxunLeKT0Ut5VBbKmwebzmEG5j2ayGab2TLbYajbR9xId72mVCmC7v5QF6dgLofrOwFHICIJ8laqtLCeNxcIqWpN/xN+aYXRH5/AeZOLZUKZW5kc3RyZWFtCmVuZG9iagoyNyAwIG9iago2ODUKZW5kb2JqCjI4IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDI2IDAgUgo+PgplbmRvYmoKMjkgMCBvYmoKPDwgL0xlbmd0aCAzMCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVZNb9swDL37V+gPVCWpbyAIkDTpsN2GBdih6GnDtkOzIaf9/ZGSbCu2lzVdD0XrSpZJ6pHvUdWpQwX8cyNDSKS+HLtTXUMVSBl/voTOKwM6Og+A/Kl4Qj/wggzy9wY0OfWUPdo59GNZgn7yQ33ufnag3nUPj7z6lded+t2VcL3jp+7jBAy8OXwtQoP0BhGeumDLnuQ1JpdSUpEUBU0F0u37I6ndr5xMNifRwlE5CzJ5qhOJlz8NEx4Fw6mzDsoOMomoPPWBbR/4TGchSw/U92576G7v0Sv+PXxr5YlGB4eMNfKXo3pYAZDhxwHAlkeuJ2z4ifzs+T1wfXlEW+aw4zkPSI2drPMi1XfiOCBx7kqMwUbGVPyQ1o/q8KGCpAlI47RDwyCT7UFiHEFQXCtv1KqG347hSba0Ffpu2MIphLMtonKRObO8g09DHSQHycuVfCQH3JTayCNzTDV/gXNX7KQ+4otib0bfDETq50rM7Lsp67itvjJg9bFrxQSvqnUoaciH8y+Zr1SSazKKMMvI4sQKF83ovhBjXBmFXNxdIgjB6CR0oB1k1MqEBLDPgLcV9K4KrAqiEcACO8gt5ZJUgei/6bkf9YHbtcKQcYVq4RoCwrTUr0AL2jhLZYmXJTtja1rSOe4iIYG0kZZxxre09oSILHNvx6ZpNrVHU6UF/9bfF6lKVicRlMMZVa26/03DNcUeog7VGd9z79VcXiSYTUXrxh4e6tLaYakv1r0yroptQQiEflaoJSEs2T1fCGRBB0Fl3eCdk+w7E+phXw/n/iCadOy+HtMwllJKQVUW+Zzt7eIleZA32nA2MfE/xQvy6MnqqS7yIDMRj61U2IaCTPkgqF3Jd7mXX3rcDq2xqfN9jePm6J8v+CWRRDcr16JIFuzORSJ9Xfz2h+k9wVvSntk6u1KBSlHHOFvN96KFCxXxGW2FB1pagsnrNbesSZjpdbB8vhItOg3JT1+hmV53DxzcBd1445p1gNXGCx9gFCI7CS8Uhs6kRYrIopaD/E0TIj9/AO5Vk0IKZW5kc3RyZWFtCmVuZG9iagozMCAwIG9iago3NzgKZW5kb2JqCjMxIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDI5IDAgUgo+PgplbmRvYmoKMzIgMCBvYmoKPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdHJzL2luZGV4LnBsP0FjdGlvbj1BZG1pblBhY2thZ2VNYW5hZ2VyKQovUyAvVVJJID4+CmVuZG9iagozMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDYwMy40MDUgMzgzLjI4IDYxMy4zOTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQgMCBvYmoKPDwgL0xlbmd0aCAzNSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczRjLbuQ27O6v0A+sV9TDloDFAON5FO2taIAeFntqu+kh0yJ76e+XpEhblmemmQJFs1nFEkXxTYrKawfG4s8H+ozZmV8u3avAwIzO+GENgjgYb/sUB2sBt8pJqx8E0Id+f7C9i+aFT9Rzq98Csjr53fzc/dFZ8133+QtCf0V4NH91hZwe/Kn7sRHGvjv5agk9uHco4Ws3hsLTDT3kmHM2yRk39q6I9PH7izPHP1kZRncUCxcTg6XJi0yIHm/NE/ySDK9diLZwoEkCMzglHJTwKs5GDj1rnrvpqft4hsHg/6evdXiC78cIKGvCnYv5/Mla53FEa+2EX7Sn3eNIOE64HnGc0cahzD0gPOPaCR6eAV8GzRl2wBEIb/fFPP1AgkQDdiVIMn7sxxxQDhhnQZC4I8IkDDEi5+6LcDRoDrlsAQoIh4I3r2lyFOYnUeIo+/sKh0bcGeSMXD3tnMUE40LNijTK1Qp1Wl/lOi6SKm6tDfEgHJIKJuXOHA+CtRgMPecaz8Wxj+DRczmowZi9eIbEgElYHIqXiK16bOVVJ94ipumel5LF0EYv5SErU6vhovYC1XFnfOoTa3W6AV/ZpIK/ydMLvic/UKiet/SLfxbYfT/9s2xv8FujucYca0Lh6G5rcourG5QTpSfEOi4rrCCwo1AIxZYqb0s1+CrW7/iPJd0r3RIgVVRkt40K1WOUU1BCk6mcZK0SxaJVm1F+qLKlysI2k0IQLzaWYTiIjcPOYLX8tEhAeocqy0rV/PZcKwYQNpox56NISrbDuAxDGRqrbGuNK60ZInkYKluGAmeYSM2WWFUjLrDiJVJpiYVrFS2Md6PF70wIGrF3Yngv69TAg1rr+UZdAu/7zK4O85UCp6UwsX7iMR6TaDgVb5E954J1txjh7dvHTMo5p5xCWmJD48tpaQslql3sHUfCKh4XuHqPo76O/BqnqWgzvMlfhd/P3xnrjfk7c9NYajXLTfbdscKSGXUF0GjyjW1u2Qz0bEv9QTvdqvzWbaoODGnj/rYVsOI+NriKmJZy42pHVBc1n9kvlzcVSionvkrUa4lMQcu3b9VezHTiOpWZ/82woDTgVHhjwiq+htC16400CE1BnfHiUkS1JJ6esJ9EQyeHPe/FhEHnLzx3AD1hW4+AzVIxuX3us80JS4aC0XbGJez46J/59pv5uu5dEQURl749DMCNNp7DLcuEl5n06L0PWI22jTo18kKi9PTrB0+gOFrYgT4aqmeDyyoqCYErJ6t/I0hF7LY4ZMxUjHn7NfNfWmXcCMH8/wfTlLcLPqba8p9Tn0d8Z9ETu2pGucBFKZxaPKUWzJ3vJJfMUUoZnTsXNIbvBXYQGlH25RnCGUQXu5eSJ3S1zlAzCnqFZJnv5VrSMVV8jgVnlhmKjFw/tIgHkfsock0l+0F0oEuW6VN9seX5RDJzmT3Luy6UOZ1n2mFTVp3F+BupoUG3q1nhkTEXj+Y5OgTXD3iRr17u1qAbU9pAOQCuvNsdvq65sXPXQLZZPvKYb8i0f3Uo2w9KC7G3eWiXtpo+9ueG+ThJtzzsN81R6P0gmYs5bOmWxHtpviWPV13kAvTRD+/bIfTzNyfx1DwKZW5kc3RyZWFtCmVuZG9iagozNSAwIG9iagoxMjAxCmVuZG9iagozNiAwIG9iagpbCjMzIDAgUgpdCmVuZG9iagozNyAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMzYgMCBSCiAgL0NvbnRlbnRzIDM0IDAgUgo+PgplbmRvYmoKMzggMCBvYmoKPDwgL0xlbmd0aCAzOSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic5VpLbxw3DL7vr9AfiEJSb8BYYHdtF+2tqIEegpxatD3ELXzq3y+px0jzWLsOinjdhTMZjSRSFPl9lEY7TztUwH8f5BYSqV8ed0+1DlUgZfy8Cp1XBnR0HgC5qUhCu3GF3OT/D6DJqS9ZYixDu5cqaIU/1M+7P3egvtt9+sy1v3K9U3/virom+NPux4UxcHH2jRYapAu08GkXbBmTvMbkUkoqkqKgqZj08ftHUrd/5cnk7iRYeFTOghS+1ILoy01Tge9iw9POOigjSCGi8tQU26Z4hrOQoQfq993xYffxHr3ifw+/jfBEo4NDtjVyy6P6dANAhi8HAEe+sz/hwFfk646fA/s38WVLWfoCl4HriPh+4jv3A1/6i44sf2r99p/Vww9ijFMIM2OiMlGjIzEmTsZgVSwG4Z77aau4Hu/5ORTD8LhXGKRWavC07p3Nl7Y4rzd+uy8eal+BE1SdMh27V+zzmyKVJz9I0rH0znaNGm/PzMEURyJWx26NOvaH9QzO6SbffCJWotuWJlvrbqsGW0NXPZvr0kLmTESy1YcCHbnybFIfdzmbmZ+pwGLAgoMVFtbRqJbe1vqmDWv5ft2GWNqz3CyarVaimLEClQah4CSXZW4dwswnWvApgIboUwrM/mp2HrbyBUzlRGwmFAfjbblaIPJgGdp12mbgoBmmL7wDDjXFPA9BIMeGWI2hOlSqVL7rKtpw50RNv7JFjc331SpxTc0KVC3M9VTYnu/LkHLGstqKb5LDKaR1XtP8qla0z+UJhKBdTk1pAoexPXwTSDbAQamEmloEXKXH0C5Xs6hBvXm9wQBaRCcQTRoY5OjdlI+whvEw5KAxT9mJqXXocwrSiiRISccolvjUMyZLW5+lbfdFH67O3wxIc0MKwCUxMmXazG87hawZkkqs7RWfc9LXqBzmo2QLaoRKyuwOKql1ZUmoOGxWVWusg3Fl2aAlWnYUMikNTusc3l0bLzc4id5qKh6nyTFU1cfqhOOLhIy8y3GSKMN1E5IgaS/WO/taQmZAuw7/FYVGwoYC3b4L6TTNfjhWXfY1NHqeQsS5xtnI2TuFaWr3nUIU98qbPMZAgmnz2HBUEZ5ZYNdEGiGe90V3XR5aAtmAfYvJy1glR9pFTgXB2q/FKpz2srm+2UJbSxUtjhOIfI9569fa8qJ5WGMaeRdn7RS3U59rHuXc/mcDl8HqZD27Zprza+aQ8eW2bdzA17+1E2HaNc5YcA7F9YVjsggGPbN98JzQ04xGmWd3vM/yIFlec0Wy70xnr0Rvy4ND1XWqqHqWCwaDTmK8N+5quMAT1BSCuMy/YzK4vkyswP1NCcEvR7yFAH5Tc7OEepmEMA7W+6JTt0vqXiBNNHI0dC10seC0z94K+H7pYqnKHoo1b0cXS473UZgSYT8i8JdCFxFvz1PbqTzTqVn2PEGsjbzD4oRg/BXRJIBORrbHpp+k1mMjaoBrh5ZVLS7fveth4Ba4lwDF4W1zCXaRkyMr0wC5BeBvC/oEOgbiJSL2NeJiQJ/rpb2+Fb68Bjg0vHHCFIO5GoQzsHU5/3fm/S4Ek76mC9+SF86xT8GkkPp5gQmXwoucP2z3/QucCEmTZY5D8ldDCn6l5t0Rsqsxvl9SXM7uyBNqZ2wKBqeFAr/+lKmesbZdDG3+JPnfnDrNdIR6SX86J79XCV/eTXlrtQucIqzH/yetRq3tl7c84mEY/a4j5+5h+UO3tyTHrvNvAkClqGNc1eYf9je+CCDy2oqJtFUFi8fXfCawULP8nqE0v9JadFry7OIRhuLrPmSYxMW6/snACpBWGy/xAKMQWUgiT/1AGDZDRFZY7S87IPL3D/2uEQQKZW5kc3RyZWFtCmVuZG9iagozOSAwIG9iagoxMzg0CmVuZG9iago0MCAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyAzOCAwIFIKPj4KZW5kb2JqCjQxIDAgb2JqCjw8IC9MZW5ndGggNDIgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nO1aS4/jNgy++1foD6yWL72AQYAkkxTtrWiAHhZ72qLtYafFnPr3Sz2c2B53gEyRjDEJAkUSJVIU+VGWbD13aEB/n3IWEplvT91zo6EJZNiPSei8YbDReQDUpsoJfaaEnOX/T2DJme+FY1iGPq8k6At/ml+7vzowP3Rfvir1N6U7809XxfWMv3Q/T5SBxek31JCRFqjhcxekjkneYnIpJRPJULBUVfr84xOZx7/LZEp3ylh4Mk4gF763QpZXmo4FzbMOz504qCPkQkTjqRcsveARzkKBHpg/us2h+7xHZxDM4fcTPKOJ1iUHABTM4cl8edDiWlNQM2qGEUoBcxfX6rtG0wweG91VGsjKqE4PjbptUrD1lCo5lwt93SSm1Vdz+Clr6I36dqghGIoWSY2ZtLGpmJkwqyhZcU1xZTyXYXdtmNQmEmsZN5oea+LcpnXYa1IVadfq61rv+ZlPKU+h9IsD2XlKvo25r23HaW2arPVETmgp89B/yViZVIyIcjTMjOucIjHrip56w3CzMG2aKtt5i1Nq/tquMkgehp47eqX3be7Plack3+S6U7++LU838+f+eUrU48avjMi5uBhKHSFyPUFjw8/ANoE0BH1K0S8V1gltYEUA0RjWcamwzi7t68e2ba3T9nIwRxSLmZl0xbvjfIxzZGdDikkfN4tdwNE5y8y6giuYh1DfLRXqhb4+yUS6ILxDsAFCSuTcHd5TeKdkpTCkuFR4E0abWK0pXobwpv1S4c2xyWjzvRS0SdAyaNwH5+/QnkCbPNvMnCDQYqEdyTrWtUk4jlbuNIB2atI3FcT99uAIZqrtpS07hhuIWvtZO2tsgbK5HGgZxCbEFAN/cMzuV/rw6XUr8+MqKWtdTTWDW9bTrddeqIF9xO0rok4onpvC/0AuNjytT6MUo9FAcnhp1D5+hs4o/L6NExvt1chg0TN+RrV4N4wMlneKjCudOdlH6/IEgwv38JgLjwSWitzT+nF74SGQbBAdSjiNHhx+IeHhWr/cTvBiZ3XJDb8wWUSnuyL+6OfZt4WQOLYR9EwLEm84hAJb1vBJgqNjBb9TCL3X6x9JzgYMuh+Dj36IeFu4OAxWdAyEILcbLo69TeJS5Dh64vDwM8EVw+War5CcS7boHvijfwl4Y4hEtNWbcsNnFu1snQTdd0zeww5fVF3ziXKl11CeyCZC3XDB/cwyFx5exHoU3XDRTZxZdofph3IvpBZw4zsFYFK0Mb6glosBMzcKiLyVPCzNkWBSPeeawUTM9D5EbT5TW3QWkp9WYVA87yLEkT1r98qVA7Hssz+ADeqqPLl8QI+zLspvkvUJv2yH5N+/DdcjDAplbmRzdHJlYW0KZW5kb2JqCjQyIDAgb2JqCjEwMDcKZW5kb2JqCjQzIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDQxIDAgUgo+PgplbmRvYmoKNDQgMCBvYmoKPDwgL0xlbmd0aCA0NSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic5VrNjtw2DL7PU/gF4kjUPxAMMD87RXsrukAPQU4t2h6yLfbU1y9JibJkezyz2yBZtFh4bUsUSYkfRVKe550eFP69o1tIMPzytHsubXoIMBjfN2nnB6PG6LxSGrvySCU3bKAb/X+nRnDDZx7RPiu55yYlD38MP+/+3Knhu93HT9j6K7a74e9dZicDf9r9OFNGvTn9Wg2Nhjeo4fMu2CwT/KiTSykNEQYII2SV3n//BMP5L54MkwNh4WlwVtHD5/JA/LirPuCddHjeWaeyBHqIevAgjK0w7nAWGHpq+H13fNy9v2g/4Mo9/tbCU6vRaKtw1czw+DR8/IBPD3gFvLAZ8A4Ju4nkiG14qYgX0ZzzZSD3cx+tv8k00g82t4MufSe8HF7n3E681KWMwZsx08V6hKyTgmtj9kPSA2lu95+Gxx9oqg5n1k01DgbGyLqGOlVDqtEUj1m0PuV3EsPvB7xiWQJqOO1pUT/QhPcDZKGFhlVzhd7kMTzO7AcdeAwqbWghXGamYkN1yJxoJNERDXPz+8FaHu2yfqyXLvLsur4q5YVoZu/s6H1MKaL+ZfbqIprROF4HU0xj83y1W9eKhdUVeJFmuoDkMEkhGoCGcyiWcM3K6sKnWWlVgMVyYmlLFQIraA925MVWCTq0xwbttqArFqXi9K5SEUL02GcOpU8Q7kt7g+CrKFfTe+07FbmnMi4UrzP5Alpyz0uOrSBanYthbBmZbnlC8mNUAbHg/df0BF6emV2lz5wqF1Uo0h5BSy0rntRhj5fXLRAZJ1QwKpc+oXUcvbUpeW+rU5jqcGGCsRbgN9BjpnfAWV9mkC7jrGkgTXQpj6tbA1zhpyfUkbmYZ6tPWCxQGcXcD1kSSbXSdyiLeEUazz5klMENLYSftEl/a9a8W2+7qjZxBI9KeRs6X32Y+epKZIG4H7yRLZftUrZY8WKKVbfiV+vFL4th98Uj7dUYokH0ufg/DEg6wuiBUVl97wWz+YbhaXP9tNn2C6I3EqzWgtu1HWRFltLb8lZ2gnDL70DBCBZoe0qt38Fl8jvWmVboWHACkzepsquxxx2LxOItpCpZ3EgW6fJ4KJ7JEe2U+SmJrUUG8yiefE98ZQw3vLZ9EcCOgVJ26/RrfZFWJuOmXXHxJy26Cof1kATWjy4Rja5uAbJUNfjUvM01wGlCCxtgY0PvFGncooJY+Gw4mASFCu42skt2FhqtbwQNAXbVpVmgK1D1fgQdMKVVvgsRaQbVFXgIXHV1k0JXtj6G6tWCI8OKg0JJ39g9Qoa/Ou6xGJVchp1jG3wxjsEg+sC+ujK5A3yLdUcUWWgjcVssYWHoAmCOqNwCh34NdcjNjxWVpCulx9zlsnS+N3SSWOni6lOu3/CqqUnTtpkANfwF+WGFbxvA57zdui689oflHLp3KY71RF+TRzuTdbnSTknJbK3YA0Mzz9T3W9O/z8dXHUKe28Jm1HZYwgBgAYMt85oHVSPPvdniLFKHQulUvxWUDJn39oazkeRfpDTGszcLQmNh1IkUAdtuIeR+924hnFtJNCfNzmVMk2uy+ez0ztFsFtWYplSQSvIPKW0fivuVCpErwuM9m4vxGNmIzHl4M5tLxCBnE9oLzL2bixqh82nXN8cSqBostjAXsi61u8U0G61LRC+5tS2i2gGzEHZbsim4qqhuakK2ykTaghvM6uyli8P4zJazlaD9wvTTtWhlm3qZYgiBYWEqZs7uPulxXGG4tH6KC+tfE3Dbgy3W8HxCaGx/gum/vgfXMe15jpwXbXqptWr0EVOZCK+uBb+0l1qPez/YlKZCgI6XBA9SjNTNtymZKoz1Ou1qTjor7u4BtdBVXrEY544yTmR2BxR3nSJarFy1xXzNq65EMt8AcjSheuxxrseDMVOC2tMhl7gyHcDdxqJTdFTMAfDVx4NfGosOMGJgR/DO/xfB2BVfVD64WrGfGwqrpqRxE6IOy0hNAtK0nzBEm+86tyCq5DuOmQDF82vKHoEi5yLbqPJ01sqgcm8GVUmNNvgUU5iy2/58q+StUCwhUfQdgOQEErbbTL50twWIpArzLtc3NzirmdBJ5tXN2vQDN2qpRlkppUrToqpoqBe5du2aUu6ekWv86txomfrRtqgiJOkuTu1c+4Jh20Q1XeONdgEBr2ABAdnHVzcHkkR3OSjWJXUNRRs3iZNiiF3WTpCum8Ba0nPlULI9oreEOq7dXDW9LiHjMF3XTgZnCL9Sb0k+PreDPahul1TnRmHJWjf3Jo81pcKCEsD2xzbzE8at8PmiE36eT/sN73Bdwq3vcvOzx/bLmwRsXSq5fNqq7qjSvMWYi5iCEL/qx+l/+0nuKsYe1Au+AD08zn+54LEu97hQ3Y881ICVQ4yLVv6lxspPPACTBsu1/VqTmr2+5HcfMzbzH6jk7hdqqx16hZ+/qubxZb9MqcNJu+k3IAvw2dF4srwymCriILIY1E9ucFk1EVg9OuPftkHo7x8lNWjbCmVuZHN0cmVhbQplbmRvYmoKNDUgMCBvYmoKMTg2NQplbmRvYmoKNDYgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQ29udGVudHMgNDQgMCBSCj4+CmVuZG9iago0NyAwIG9iago8PCAvTGVuZ3RoIDQ4IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJztWs1u5DYMvs9T6AWipah/oBhgfpKivRUN0MNiTy3aHjYtcurrV5QoW7I99mSxQWebIHDGkiiSor6PlmQ/75SA9HdHPz6i+PVp98x1SngU2vVVyjqhQQbrAFRqKj2h/qQK+qH/dyDRis+5R3sP9bdUQb35U/yy+2sH4vvdx0+p9rdUb8U/u6Kudvx599PEGbg5/1oPtcIb9PB5502xiU6qaGOMIqBAL7G49OGHJxTnv/NgsjgSFp6ENUA3n/mG9OWm4Sb9kg/PO2OhWKCboITDqthUxR3OfIYeiD92x8fdhwdlhQLx+PsIzyCCtNECAHrx+CQ+fpfuQipSFYUy/Sguq1zYC6WkE0kOzkkWWbapJzmqV4d0Re7f9gulDanffbq3RWaqf7B9pU3SBSa1H9lfM5E5jG1Vjrpl2bgXUWULse+FdTSw4CGN8KF4lZsOc4+zt36hL0ehGx1HPV+2RIp0z2xeG5UHllc80s7P/Sfx+GMLBUzIjibBVquKhewheaOmVjbmMRbtCXNOJLa2mAOho/SB+KEHzJGnvswZeh614zl9YFtk9lwuDHvhdB47z3qetwPHjFB3bKQ1e3ksbXjfxHbBSq4/sDxHQKWR60NjL9Uh1yszjHaBYU5JG2hsoY5Wm4KJikB1KuUpjjBypE97ojKN1uwFqg4HZ0Zw4HFGvhzrtaNcbdOnQUuDf2syXllG6WVG6crsQ5nxOtNtSkHp83C8vjan3NnszWk6woyrh5lcHDlJc5ZRObRWxg1cH1qyU6OWh5oLEmN8rrEjzytnWr6xlvPIXK4JDc/DGPfG1kp+aiTOIw7yyNWYj3hsrvUXGEcTTTCNV7Zmm1zVyWs3rSEcDbnIF18yf86zuY5mNtc1ClmL4vIEicU/ttBj2o69yCZyeQsbzGhfZ2ttVtbmY20m1nKaUlqGSCYddlktvFZW02k8NDxiZGYtyfEYc+Qg4URjBajmpEbdsrpTSYQ5wNRVNyE7MlV1aVtPcEpb6WLywCr9RlJcWvfJQGkI0FyX42D2/LzMMm5n2Rq+XD6PvMkcqJh1k2yYQ1bzRH5uVa3dqqdnYqfx2uCoEXE1z8yYvs4c72QSidFY1THn/hthjmbG6PMmU6JPsEmOG2feCFNQBRk1Ta93X8qUrNoXHGeRZsX5lpiCOkiFKjEFumdMZsvrMAXHetKay6bIDA8Iooger7yO54toloHHccFNiqCNMhJ2TWr9H1KkyueIV1v3pZx3U6ynomSJUkFJMJgoNW7ayXy36a5g9QzmSo/Ak6fG8kXKte6xTFn4llDVe10fYNfqXll8mQXSTImYdaxtTBcWnJ1PDIG6jau+t+G+sHEFkEhoDD52j6p4cwQMDQEPLH8qdnRjC+r8HosuzVsOrHZWyaoRJWhLEHDvZF0kqzZaKmtiDD78V2TNmVfDeLbR2FrdCTU2a9/q640T1aHUJnUJ3RGTNjfH0/sVntbNAXmGbPs0+rJ99KSDkcrQykn5d34u8tOAlejS9jVgvCV+rvKSd4vDmnkyddXfb5e/Bo00Non60O8J3a0RuJ5cQ91LNOfGmbTcb6g/FV3b5DXGybQaJjbFd/Iuk9d5qX1Ie8uNZ+te3DkjdXcIXCvmbG4aRwq1KibvW0bpGdEnvYZz41o5p+GS8aWel524mDmmQs0hZzbVpBIIC6EbTqy4I7WjXRBcjFqfga6NwTwntSqH5LQYmDlefJzi5RVzWAzSlqPxbreuXy+Hwahl0MiHVnjqc9cw+bzwz9dqPrIIKXgQvXI38ybrUq6hZdU173pnCLFGSRNVmpxw5csr6F46rL9kZhl7IcFN99iqT2WX9tL1eKx9XbL5KL9i+T8kxporVuFuHUgXkmsumA7uL3itq+vqluQ3j4psQGnSss0r9cUPSPKqHOZVOILdgtdeKIMX8ONAy3QlvXqMgprMGYypdEjvMOJrSDcKZoeNW/Om6/LScno4ccpQl8lCx99DvwMTaEW26puOa+uFxoClDV/WceYQpY9J1GnbLQ1fcAiqI0eUd1R5FPX14BHmOy2+z8kWavrYeO1vTP6cwsMXb72+CjjvH6dfBTmD0iWXuw+oQKTHVQiz2vwV1MLnU4hOGhoPLlXBpPiSb6omaqYff5XmF3qrrITopkVobl/21dfQnbxb+b4qLUkcMRw0fZQDky+tNCxOEaZnkNXutieE/v4FK/8USwplbmRzdHJlYW0KZW5kb2JqCjQ4IDAgb2JqCjE2NTEKZW5kb2JqCjQ5IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDQ3IDAgUgo+PgplbmRvYmoKNTAgMCBvYmoKPDwgL0xlbmd0aCA1MSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic7VpLbxw3DL7vr9AfyESi3kBgwPaui/ZW1EAPQU4p2h7iFj7175d6UENpXmsDAfYQGOuZoSiKoj4+pJnXkxIS/z6ki48gvr6cXitNCQ9Cu56krBNaTsE6KRU2lZ6SLkhIl/T/g5zAim+5B7+XdC0kSTd/i99P/5yk+On0+QtS/0C6Ff+dijjq+Nvp10EZeXP6cQ21ghvU8PXkTRkT3KSijTGKAAL8BEWljz+/gDj/myeT2SFh4UVYI9PNt3qT5OWmdoPXpMPryVhZRkg3QQkHJNiQ4A5nPkNPir9OD8+nj0/KCiXF858zPIMIk41WSglePL+Iz5/wLuBjIqEppcffBWnp+Yw/JaVOJr5HmsarKTRZaZKekRegysFnFWr7uTRn/nQNdYxKTzyJNz9gX2VLe3oEO8vOslTtj/opRs99bNEl01WRQXonfpqLqnNVsT6r2o594aG2mTuhDAg0jYx3X8TzL8mUTiAIuSmlgDBBnnRqKbZMcpUvdoI6z2zXNMZT0T+reC4/HasNk56P1YaPdT4PMz3zIC/cVxvYyu9qeyjtiV/hs9K1P/LBuT4nOlQe0ya2ghErJ29pStoUcybzZNUf15cQqknTtAs07gTC9VNVIpZfVuTY4EwZD4hY31t5Vci8+nkVKoJgBZGE6oZWQl+Y2zvUDeiWgSHXMbNcFtPWB9j2hSfzdT0V10sdQTECQlFjBJI9FMP3g2KWV2GnHsg120ruI0wpgxBTMYZ4KzhT2iHQQmfDo9DIgZOXsIahHyGy4hLzJQITU2OqijgwL98ZmCgPkpcTMK28Iu4pHxCV6EY+3Aoqca4TzqUz4FWovJTV1cTLQ9sPZGLyBqz3wMfogubIhKfrkTmGQK3KvSY01r4p6yZloWZfMkSuqHSdPFT5uwgFA4hQ9CfnbwahziBCoTMkR2jWgVYuP9yJD34qI3fIY3RfkEEImBPzzNPkMlqS1VBjVsbzy/EJ2erhTmhL9hhHy1r69RkUfM+0ubRgfKH4RF6N6i+lONiXlfUw88oqCnzmOkuOGYqsluVwvvsK1x1rrfsbzvfS85lhXtouQePdAjQtFPiqYjO1nezaXPpGWSFjZ+PmpSU/rrWgMkPHzOAQ4b7Zu7Mvsa0sYMdgbHH+jpics1WdlpyQMVDVADRxM2KDT37F+LsWWq42t9Zo39yDYvo4vRyQF0ZZoI7kX0r+VamXXi5/COsxw8uWSUgTQpc3VfQT84iWxeb2LCPMvp2NtZq1mEyGfqKZ+22dumgZZhtAjZ7AslpOJC3WNgk4knJN4VztUy1T8Z+vzd0JoDT0hoC0QaTf5jYJ0W5M22jUCqLF5wRVWCyZzoXI4LGqDsIgZ2qybz5yZqYnKO5mZp0ycwZvjF3NGOX7MzPVkBv9aF8Nl7JE+lz21vvZWOdsjDWEdepW0rHO6dh21gOqRVixN0eAceyCOcKbpvW0LJYyyCcZxUXlXDheUextF3C1bWUPv7tn38dUMIgp3G8a11V7OT6/F1Oy3tdACxJtpsu6GHZU81BYcmxIkKIi0LBYde2+2Ug3+aRj9DdTABpIwdx1tt0vAGXbVhyhYEDmSqjaO/Pp8EJW4BhbFBSSFWHj6NnG7ATocCuzi0hjAiISWYPvo5x7PyKzn1fNaEec6AeY8hIxhb6hzc1EMRMBMRU76+R4vLEpUG6KYyInWl7ZWlpRzUNt+8Vfk3pQVnXSxn4bNVvjWWyaWRt5DqfFOX63OMzbWwzuafPG+W36XeuBgxV6z9mw5bh6fAPEaSXXLEBipVmARNXzg+aMh856J2JRlE4VeEXOTk76RU+7mu3AQ6EiG7yD3nbQ6U5g9hLjCJjdMGMhJT4s3CDaLvG9McwAVbNpD4rFgTWU59qBBr1yuC/Xg1cMJiUyjWlM3sybBuswkaHpua3yfGsxnmzWUJEgqqfQgo7paS1MqP2+4w6qydTzaUZer0fcmfg2Gm0n2YlcCz4kgZDfuyK5HueUS9qmXk+ynS1mhNcwtCqPh1M6qwzrNmhuz7Tn8x9tuzlrngBI/opl8jzsjPX5jHMJiyAXsHhDzVI5uwPayOpnOkBdecd0VD/zwyFeXXU1DDtNyYbk/f1xuFkNTWQ4ckheO0mm525oQotjaPIR61nfhaYr3p9m+v0ccPIJ60a4knWTTpt1Clj7AcoB7u2cjVHBu6simZwW+izajh/OsksDbV/vZNv1Ex+1pSAA7fCzZHQKxfthr9LPTF9WofJpG8ypCrpFOSrmFxB5HCecgfw09zB06B3ruRlzir6wke2tAzkKjPn5LHtwbuVNtW2Ay/P4JYXDrb1DXHQfnUgRwxTCgpq/HFn55ATATSYND2skOTy+5TuUQcz4wUxpfqO2yk4yuvFRstu3fSnTuiftdr5JMZN2aW2lFkphp7SW89cpWq0uERg1We1ue0HS3//aVIICCmVuZHN0cmVhbQplbmRvYmoKNTEgMCBvYmoKMTgyNgplbmRvYmoKNTIgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQ29udGVudHMgNTAgMCBSCj4+CmVuZG9iago1MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY3OS42MjkgMTE3LjE5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMxLjMyIDY3OS42MjkgNTQwLjAgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1MyAwIFIKL0ggL0kKCj4+CmVuZG9iago1NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY2Ny42MjkgMTUzLjg1OCA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjU4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjY3LjYyOSA1MzkuOTk4IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKNTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NTUuNjI5IDIwNC45NzYgNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA1OSAwIFIKL0ggL0kKCj4+CmVuZG9iago2MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY1NS42MjkgNTM5Ljk5OCA2NjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDU5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjYyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0My42MjkgMTczLjQwOCA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDYyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjY0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjQzLjYyOSA1MzkuOTk4IDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA2MjYuNCBudWxsXQo+PgplbmRvYmoKNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjMxLjYyOSAxNjQuOTEzIDY0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjgwNyA2MzEuNjI5IDU0MC4xNjcgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2NSAwIFIKL0ggL0kKCj4+CmVuZG9iago2OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMSAwIFIgL1hZWiA3Mi4wIDU1OC4wIG51bGxdCj4+CmVuZG9iago2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MTkuNjI5IDIwOS41NTIgNjI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYxOS42MjkgNTM5Ljk5OCA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNDg5LjYgbnVsbF0KPj4KZW5kb2JqCjcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYwNy42MjkgMjIxLjc5NCA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjA3LjYyOSA1MzkuOTk4IDYxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzcgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1OTUuNjI5IDE0OS4zOSA2MDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjc2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTk1LjYyOSA1MzkuOTk4IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzcgMCBSIC9YWVogNzIuMCA2NzguOCBudWxsXQo+PgplbmRvYmoKNzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTgzLjYyOSAxOTkuMDA2IDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1ODMuNjI5IDUzOS45OTggNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago4MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNyAwIFIgL1hZWiA3Mi4wIDYwMi40IG51bGxdCj4+CmVuZG9iago4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NzEuNjI5IDE5NC42NDEgNTgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MCAwIFIKL0ggL0kKCj4+CmVuZG9iago4MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU3MS42MjkgNTM5Ljk5OCA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTU5LjYyOSAxNjEuNzg0IDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NTkuNjI5IDUzOS45OTggNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4MyAwIFIKL0ggL0kKCj4+CmVuZG9iago4NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDY2Ni40NDIgbnVsbF0KPj4KZW5kb2JqCjg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU0Ny42MjkgNDc0LjIwNiA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjg4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTQ3LjYyOSA1MzkuOTk4IDU1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA1ODYuNzExIG51bGxdCj4+CmVuZG9iago5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MzUuNjI5IDQ2Ni41NTcgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDUzNS42MjkgNTM5Ljk5NyA1NDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNTA2Ljk4IG51bGxdCj4+CmVuZG9iago5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MjMuNjI5IDMxNi42MjEgNTMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDUyMy42MjkgNTM5Ljk5NyA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDkyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjk1IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNDQxLjY0OSBudWxsXQo+PgplbmRvYmoKOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTExLjYyOSAzMTYuNjExIDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA1MTEuNjI5IDUzOS45OTcgNTIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5NSAwIFIKL0ggL0kKCj4+CmVuZG9iago5OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDM3Ni4zMTggbnVsbF0KPj4KZW5kb2JqCjk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ5OS42MjkgMzY2LjI5NCA1MDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDQ5OS42MjkgNTM5Ljk5NyA1MDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDMxMC45ODcgbnVsbF0KPj4KZW5kb2JqCjEwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0ODcuNjI5IDM0My4yOTUgNDk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTAzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDg3LjYyOSA1MzkuOTk4IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDI0NS42NTYgbnVsbF0KPj4KZW5kb2JqCjEwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NzUuNjI5IDMyMi43NDcgNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDc1LjYyOSA1MzkuOTk3IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDE4MC4zMjUgbnVsbF0KPj4KZW5kb2JqCjEwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NjMuNjI5IDMyNi4wNDQgNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMDcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTA5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDYzLjYyOSA1MzkuOTk3IDQ3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDExNC45OTQgbnVsbF0KPj4KZW5kb2JqCjExMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NTEuNjI5IDQxNC45MDEgNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTEyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDUxLjYyOSA1MzkuOTk4IDQ2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDcwOC4wIG51bGxdCj4+CmVuZG9iagoxMTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDM5LjYyOSA0MjEuMjI2IDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDQzOS42MjkgNTM5Ljk5OCA0NDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA2NDQuMzk4IG51bGxdCj4+CmVuZG9iagoxMTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDI3LjYyOSA0NDguODE3IDQzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDQyNy42MjkgNTM5Ljk5NyA0MzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA1ODAuNzk2IG51bGxdCj4+CmVuZG9iagoxMjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDE1LjYyOSA0MjcuMzYyIDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDQxNS42MjkgNTM5Ljk5NyA0MjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA1MTcuMTk0IG51bGxdCj4+CmVuZG9iagoxMjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDAzLjYyOSA0MzAuNjU5IDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDQwMy42MjkgNTM5Ljk5NyA0MTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA0NTMuNTkyIG51bGxdCj4+CmVuZG9iagoxMjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzkxLjYyOSAzNzUuNDI4IDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDM5MS42MjkgNTM5Ljk5NyA0MDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCAzODkuOTkgbnVsbF0KPj4KZW5kb2JqCjEyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNzkuNjI5IDM3NS40MTggMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMzc5LjYyOSA1MzkuOTk3IDM4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDMyNi4zODggbnVsbF0KPj4KZW5kb2JqCjEzMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNjcuNjI5IDQyNS4xMDEgMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMzY3LjYyOSA1MzkuOTk3IDM3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDI2Mi43ODYgbnVsbF0KPj4KZW5kb2JqCjEzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNTUuNjI5IDQwMy4wMDkgMzY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMzU1LjYyOSA1MzkuOTk3IDM2NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDE5OS4xODQgbnVsbF0KPj4KZW5kb2JqCjEzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNDMuNjI5IDM4MS41NTQgMzUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMzQzLjYyOSA1MzkuOTk3IDM1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDEzNS41ODIgbnVsbF0KPj4KZW5kb2JqCjE0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzMzEuNjI5IDM4NC44NTEgMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMzMxLjYyOSA1MzkuOTk3IDM0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxNDQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzE5LjYyOSAzNTYuMTM0IDMyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDMxOS42MjkgNTM5Ljk5OCAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA2NjEuOTI2IG51bGxdCj4+CmVuZG9iagoxNDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzA3LjYyOSA0MTMuNDA4IDMxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuODQ3IDMwNy42MjkgNTQwLjIwNyAzMTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA1OTcuOTUgbnVsbF0KPj4KZW5kb2JqCjE1MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyOTUuNjI5IDMzMS42OTEgMzA1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMjk1LjYyOSA1MzkuOTk3IDMwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDUzMy45NzQgbnVsbF0KPj4KZW5kb2JqCjE1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyODMuNjI5IDM3My4xOTcgMjkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMjgzLjYyOSA1MzkuOTk3IDI5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDQ2OS45OTggbnVsbF0KPj4KZW5kb2JqCjE1NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyNzEuNjI5IDMxMi4wMDkgMjgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTU3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMjcxLjYyOSA1MzkuOTk4IDI4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDM5NC4wMjIgbnVsbF0KPj4KZW5kb2JqCjE1OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyNTkuNjI5IDM0OC4wMjYgMjY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMjU5LjYyOSA1MzkuOTk4IDI2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDMxOC4wNDYgbnVsbF0KPj4KZW5kb2JqCjE2MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAyNDcuNjI5IDMwOC4zMDQgMjU3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTYzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMjQ3LjYyOSA1MzkuOTk3IDI1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTYxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0NiAwIFIgL1hZWiA3Mi4wIDI1NC4wNyBudWxsXQo+PgplbmRvYmoKMTY1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDIzNS42MjkgMzI0LjE5MiAyNDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjk4OCAyMzUuNjI5IDU0MC4zNDggMjQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTY3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMTkwLjA5NCBudWxsXQo+PgplbmRvYmoKMTY4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDIyMy42MjkgMjMyLjEyNiAyMzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAyMjMuNjI5IDUzOS45OTcgMjMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTcwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgMTE0LjExOCBudWxsXQo+PgplbmRvYmoKMTcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDIxMS42MjkgNDI1LjA4MSAyMjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAyMTEuNjI5IDUzOS45OTcgMjIxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTczIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNjk2LjAgbnVsbF0KPj4KZW5kb2JqCjE3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxOTkuNjI5IDM1OC45MDMgMjA5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMTk5LjYyOSA1MzkuOTk4IDIwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDYyMS44ODggbnVsbF0KPj4KZW5kb2JqCjE3NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxODcuNjI5IDM1Ny41MzkgMTk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMTg3LjYyOSA1MzkuOTk3IDE5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDU1OS43NzYgbnVsbF0KPj4KZW5kb2JqCjE4MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNzUuNjI5IDM0MS43NDEgMTg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMTc1LjYyOSA1MzkuOTk4IDE4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDQ5Ny42NjQgbnVsbF0KPj4KZW5kb2JqCjE4MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNjMuNjI5IDM1My41NzQgMTczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMTYzLjYyOSA1MzkuOTk4IDE3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDQzNS41NTIgbnVsbF0KPj4KZW5kb2JqCjE4NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNTEuNjI5IDQwNy4yNDIgMTYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMTUxLjYyOSA1MzkuOTk3IDE2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4OCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDM3My40NCBudWxsXQo+PgplbmRvYmoKMTg5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEzOS42MjkgMzk5LjA1NCAxNDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAxMzkuNjI5IDUzOS45OTcgMTQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgMzExLjMyOCBudWxsXQo+PgplbmRvYmoKMTkyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEyNy42MjkgMzkwLjAgMTM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMTI3LjYyOSA1MzkuOTk3IDEzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDIzNy4yMTYgbnVsbF0KPj4KZW5kb2JqCjE5NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxMTUuNjI5IDMxOC41MDMgMTI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMTE1LjYyOSA1MzkuOTk4IDEyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDE3NS4xMDQgbnVsbF0KPj4KZW5kb2JqCjE5OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxMDMuNjI5IDE5My43OTggMTEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMTAzLjYyOSA1MzkuOTk3IDExMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTk3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDExMi45OTIgbnVsbF0KPj4KZW5kb2JqCjIwMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA5MS42MjkgMjQ5LjE2OCAxMDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA5MS42MjkgNTM5Ljk5OCAxMDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCA3MDgu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ODUgMCBSCjg3IDAgUgo4OCAwIFIKOTAgMCBSCjkxIDAgUgo5MyAwIFIKOTQgMCBSCjk2IDAgUgo5NyAwIFIKOTkgMCBSCjEwMCAwIFIKMTAyIDAgUgoxMDMgMCBSCjEwNSAwIFIKMTA2IDAgUgoxMDggMCBSCjEwOSAwIFIKMTExIDAgUgoxMTIgMCBSCjExNCAwIFIKMTE1IDAgUgoxMTcgMCBSCjExOCAwIFIKMTIwIDAgUgoxMjEgMCBSCjEyMyAwIFIKMTI0IDAgUgoxMjYgMCBSCjEyNyAwIFIKMTI5IDAgUgoxMzAgMCBSCjEzMiAwIFIKMTMzIDAgUgoxMzUgMCBSCjEzNiAwIFIKMTM4IDAgUgoxMzkgMCBSCjE0MSAwIFIKMTQyIDAgUgoxNDQgMCBSCjE0NSAwIFIKMTQ3IDAgUgoxNDggMCBSCjE1MCAwIFIKMTUxIDAgUgoxNTMgMCBSCjE1NCAwIFIKMTU2IDAgUgoxNTcgMCBSCjE1OSAwIFIKMTYwIDAgUgoxNjIgMCBSCjE2MyAwIFIKMTY1IDAgUgoxNjYgMCBSCjE2OCAwIFIKMTY5IDAgUgoxNzEgMCBSCjE3MiAwIFIKMTc0IDAgUgoxNzUgMCBSCjE3NyAwIFIKMTc4IDAgUgoxODAgMCBSCjE4MSAwIFIKMTgzIDAgUgoxODQgMCBSCjE4NiAwIFIKMTg3IDAgUgoxODkgMCBSCjE5MCAwIFIKMTkyIDAgUgoxOTMgMCBSCjE5NSAwIFIKMTk2IDAgUgoxOTggMCBSCjE5OSAwIFIKMjAxIDAgUgoyMDIgMCBSCjIwNCAwIFIKMjA1IDAgUgpdCmVuZG9iagoyMDkgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQW5ub3RzIDIwOCAwIFIKICAvQ29udGVudHMgMjA2IDAgUgo+PgplbmRvYmoKMjEwIDAgb2JqCjw8IC9MZW5ndGggMjExIDAgUiAvRmlsdGVyIC9G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MCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCA1NzkuOTk2IG51bGxdCj4+CmVuZG9iagoyNDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjk3LjAwNSAyNjIuNjU1IDcwNi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDY5Ny4wMDUgNTM5Ljk5NyA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCA1MTUuOTk0IG51bGxdCj4+CmVuZG9iagoyNTAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjg1LjAwNSAyODIuODQ1IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQ5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDY4NS4wMDUgNTM5Ljk5NyA2OTQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCA0MTUuOTkyIG51bGxdCj4+CmVuZG9iagoyNTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjczLjAwNSAyNzguOTkgNjgyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNjczLjAwNSA1MzkuOTk3IDY4Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI1NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDM1MS45OSBudWxsXQo+PgplbmRvYmoKMjU2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY2MS4wMDUgMjk1LjYwNCA2NzAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNTcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NjEuMDA1IDUzOS45OTggNjcwLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjU4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMjg3Ljk4OCBudWxsXQo+PgplbmRvYmoKMjU5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0OS4wMDUgMjI0LjQ3NiA2NTguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI1OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA2NDkuMDA1IDUzOS45OTggNjU4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNTggMCBSCi9IIC9JCgo+PgplbmRvYmoKMjYxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMjExLjk4NiBudWxsXQo+PgplbmRvYmoKMjYyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYzNy4wMDUgMjQxLjE1IDY0Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjYxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYzNy4wMDUgNTM5Ljk5OCA2NDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCAxMzUuOTg0IG51bGxdCj4+CmVuZG9iagoyNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjI1LjAwNSAyNTQuMDQ5IDYzNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDYyNS4wMDUgNTM5Ljk5NyA2MzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI2NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNjcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjEyIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjI2OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MTMuMDA1IDM5MS4xNjcgNjIyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNjcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjY5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODcgNjEzLjAwNSA1NDAuMzQ3IDYyMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTUgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjcxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNjAxLjAwNSAxMjUuMjc2IDYxMC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDYwMS4wMDUgNTM5Ljk5OCA2MTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjE1IDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjI3NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1ODkuMDA1IDIxNS4yMjYgNTk4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjc1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTg5LjAwNSA1MzkuOTk4IDU5OC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3NiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTUgMCBSIC9YWVogNzIuMCA0ODcuNjAxIG51bGxdCj4+CmVuZG9iagoyNzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTc3LjAwNSAxOTEuNjY0IDU4Ni45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU3Ny4wMDUgNTM5Ljk5OCA1ODYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNzkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjE1IDAgUiAvWFlaIDcyLjAgMTI1LjI3NCBudWxsXQo+PgplbmRvYmoKMjgwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU2NS4wMDUgMjcxLjg3NiA1NzQuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI3OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3NyA1NjUuMDA1IDUzOS45OTcgNTc0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNzkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjgyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIxOCAwIFIgL1hZWiA3Mi4wIDYxNS42NDIgbnVsbF0KPj4KZW5kb2JqCjI4MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NTMuMDA1IDIyNy45MTUgNTYyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyODIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjg0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTUzLjAwNSA1MzkuOTk4IDU2Mi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMTggMCBSIC9YWVogNzIuMCAzMjcuMjY5IG51bGxdCj4+CmVuZG9iagoyODYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTQxLjAwNSAyMDIuNjI3IDU1MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI4NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDU0MS4wMDUgNTM5Ljk5OCA1NTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyODggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjE4IDAgUiAvWFlaIDcyLjAgMTkwLjA0IG51bGxdCj4+CmVuZG9iagoyODkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTI5LjAwNSAyMDUuNjEzIDUzOC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDUyOS4wMDUgNTM5Ljk5OCA1MzguOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI4OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjI0IDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjI5MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDUxNy4wMDUgMjYxLjcwMyA1MjYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI5MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyOTMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA1MTcuMDA1IDUzOS45OTggNTI2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk0IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIyNyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoyOTUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1MDUuMDA1IDEzMC4xMjkgNTE0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNTA1LjAwNSA1MzkuOTk4IDUxNC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjI5NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzkgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNDkzLjAwNSAxMTkuMDYgNTAyLjk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyOTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjk5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNDkzLjAwNSA1MzkuOTk4IDUwMi45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjk3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwMCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzkgMCBSIC9YWVogNzIuMCA2NzguOCBudWxsXQo+PgplbmRvYmoKMzAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDQ4MS4wMDUgMTcxLjkyIDQ5MC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzAwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjMwMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MjcuMjc4IDQ4MS4wMDUgNTM5Ljk5OCA0OTAuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDMwMCAwIFIKL0ggL0kKCj4+CmVuZG9iagozMDMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMjM5IDAgUiAvWFlaIDcyLjAgNjI0LjQgbnVsbF0KPj4KZW5kb2JqCjMwNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NjkuMDA1IDE2Ny44MzMgNDc4Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAzMDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzA1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVj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ZSAvUGFnZXMKL0NvdW50IDI0Ci9LaWRzIFsxMyAwIFIgMjA5IDAgUiAzMTIgMCBSIDI1IDAgUiAyOCAwIFIgMzEgMCBSIDM3IDAgUiA0MCAwIFIgNDMgMCBSIDQ2IDAgUiA0OSAwIFIgNTIgMCBSIDIxMiAwIFIgMjE1IDAgUiAyMTggMCBSIDIyMSAwIFIgMjI0IDAgUiAyMjcgMCBSIDIzMCAwIFIgMjMzIDAgUiAyMzYgMCBSIDIzOSAwIFIgMjQyIDAgUiAzMTUgMCBSIF0gPj4KZW5kb2JqCjM0MyAwIG9iago8PAogIC9UeXBlIC9DYXRhbG9nCiAgL1BhZ2VzIDE1IDAgUgogIC9MYW5nIChlbikKICAvTWV0YWRhdGEgNSAwIFIKICAvUGFnZUxhYmVscyAzNDQgMCBSCj4+CmVuZG9iagoxNCAwIG9iago8PAogIC9Gb250IDw8CiAgL0YxNiAzMjEgMCBSCiAgL0YxNSAzMzAgMCBSCiAgL0YxOSAzMzkgMCBSCj4+CiAgL1Byb2NTZXQgWy9QREYgL0ltYWdlQiAvSW1hZ2VDIC9UZXh0XQogIC9YT2JqZWN0IDw8CiAgL0ltMSA3IDAgUgogIC9JbTIgOSAwIFIKICAvSW0zIDE2IDAgUgogIC9JbTQgMTggMCBSCj4+CiAgL0NvbG9yU3BhY2UgPDwgL0RlZmF1bHRSR0IgNCAwIFIgPj4KPj4KZW5kb2JqCjM0NCAwIG9iago8PCAvTnVtcyBbMCA8PCAvUyAvRCA+PiAxIDw8IC9TIC9yIC9TdCAyID4+IDIgPDwgL1MgL3IgL1N0IDMgPj4gMyA8PCAvUyAvciAvU3QgNCA+PiA0IDw8IC9TIC9EID4+IDEyIDw8IC9TIC9EIC9TdCA5ID4+IDIzIDw8IC9TIC9EIC9TdCAyMCA+Pl0gPj4KZW5kb2JqCnhyZWYKMCAzNDUKMDAwMDAwMDAwMCA2NTUzNSBmIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDAxMzkgMDAwMDAgbiAKMDAwMDAwMjY3NyAwMDAwMCBuIAowMDAwMDAyNjk3IDAwMDAwIG4gCjAwMDAwMDI3MzAgMDAwMDAgbiAKMDAwMDAwMzY2MiAwMDAwMCBuIAowMDAwMDAzNjgxIDAwMDAwIG4gCjAwMDAwNTIyMDYgMDAwMDAgbiAKMDAwMDA1MjIyNyAwMDAwMCBuIAowMDAwMTA1NDg3IDAwMDAwIG4gCjAwMDAxMDU1MDkgMDAwMDAgbiAKMDAwMDEwNjAwMiAwMDAwMCBuIAowMDAwMTA2MDIyIDAwMDAwIG4gCjAwMDAyNjc2MjkgMDAwMDAgbiAKMDAwMDI2NzI4NCAwMDAwMCBuIAowMDAwMTA2MjE2IDAwMDAwIG4gCjAwMDAxMTIzODcgMDAwMDAgbiAKMDAwMDExMjQwOCAwMDAwMCBuIAowMDAwMTE5NTg4IDAwMDAwIG4gCjAwMDAxMTk2MDkgMDAwMDAgbiAKMDAwMDExOTY5NCAwMDAwMCBuIAowMDAwMTE5ODMyIDAwMDAwIG4gCjAwMDAxMjA3NTkgMDAwMDAgbiAKMDAwMDEyMDc3OSAwMDAwMCBuIAowMDAwMTIwODA2IDAwMDAwIG4gCjAwMDAxMjEwMTcgMDAwMDAgbiAKMDAwMDEyMTc3OCAwMDAwMCBuIAowMDAwMTIxNzk4IDAwMDAwIG4gCjAwMDAxMjE5OTIgMDAwMDAgbiAKMDAwMDEyMjg0NiAwMDAwMCBuIAowMDAwMTIyODY2IDAwMDAwIG4gCjAwMDAxMjMwNjAgMDAwMDAgbiAKMDAwMDEyMzE1NSAwMDAwMCBuIAowMDAwMTIzMjkxIDAwMDAwIG4gCjAwMDAxMjQ1NjggMDAwMDAgbiAKMDAwMDEyNDU4OSAwMDAwMCBuIAowMDAwMTI0NjE2IDAwMDAwIG4gCjAwMDAxMjQ4MjcgMDAwMDAgbiAKMDAwMDEyNjI4NyAwMDAwMCBuIAowMDAwMTI2MzA4IDAwMDAwIG4gCjAwMDAxMjY1MDIgMDAwMDAgbiAKMDAwMDEyNzU4NSAwMDAwMCBuIAowMDAwMTI3NjA2IDAwMDAwIG4gCjAwMDAxMjc4MDAgMDAwMDAgbiAKMDAwMDEyOTc0MSAwMDAwMCBuIAowMDAwMTI5NzYyIDAwMDAwIG4gCjAwMDAxMjk5NTYgMDAwMDAgbiAKMDAwMDEzMTY4MyAwMDAwMCBuIAowMDAwMTMxNzA0IDAwMDAwIG4gCjAwMDAxMzE4OTggMDAwMDAgbiAKMDAwMDEzMzgwMCAwMDAwMCBuIAowMDAwMTMzODIxIDAwMDAwIG4gCjAwMDAxMzQwMTUgMDAwMDAgbiAKMDAwMDEzNDA5MyAwMDAwMCBuIAowMDAwMTM0MjI5IDAwMDAwIG4gCjAwMDAxMzQzNjYgMDAwMDAgbiAKMDAwMDEzNDQ0NCAwMDAwMCBuIAowMDAwMTM0NTgxIDAwMDAwIG4gCjAwMDAxMzQ3MjEgMDAwMDAgbiAKMDAwMDEzNDc5OSAwMDAwMCBuIAowMDAwMTM0OTM2IDAwMDAwIG4gCjAwMDAxMzUwNzYgMDAwMDAgbiAKMDAwMDEzNTE1NCAwMDAwMCBuIAowMDAwMTM1MjkyIDAwMDAwIG4gCjAwMDAxMzU0MzIgMDAwMDAgbiAKMDAwMDEzNTUxMCAwMDAwMCBuIAowMDAwMTM1NjQ4IDAwMDAwIG4gCjAwMDAxMzU3ODggMDAwMDAgbiAKMDAwMDEzNTg2NiAwMDAwMCBuIAowMDAwMTM2MDA0IDAwMDAwIG4gCjAwMDAxMzYxNDQgMDAwMDAgbiAKMDAwMDEzNjIyMiAwMDAwMCBuIAowMDAwMTM2MzYwIDAwMDAwIG4gCjAwMDAxMzY1MDAgMDAwMDAgbiAKMDAwMDEzNjU3OCAwMDAwMCBuIAowMDAwMTM2NzE0IDAwMDAwIG4gCjAwMDAxMzY4NTQgMDAwMDAgbiAKMDAwMDEzNjkzMiAwMDAwMCBuIAowMDAwMTM3MDcwIDAwMDAwIG4gCjAwMDAxMzcyMTAgMDAwMDAgbiAKMDAwMDEzNzI4OCAwMDAwMCBuIAowMDAwMTM3NDI2IDAwMDAwIG4gCjAwMDAxMzc1NjYgMDAwMDAgbiAKMDAwMDEzNzY0NCAwMDAwMCBuIAowMDAwMTM3NzgxIDAwMDAwIG4gCjAwMDAxMzc5MjEgMDAwMDAgbiAKMDAwMDEzODAwMSAwMDAwMCBuIAowMDAwMTM4MTM5IDAwMDAwIG4gCjAwMDAxMzgyNzkgMDAwMDAgbiAKMDAwMDEzODM1OSAwMDAwMCBuIAowMDAwMTM4NDk3IDAwMDAwIG4gCjAwMDAxMzg2MzcgMDAwMDAgbiAKMDAwMDEzODcxNiAwMDAwMCBuIAowMDAwMTM4ODU0IDAwMDAwIG4gCjAwMDAxMzg5OTQgMDAwMDAgbiAKMDAwMDEzOTA3NCAwMDAwMCBuIAowMDAwMTM5MjEyIDAwMDAwIG4gCjAwMDAxMzkzNTIgMDAwMDAgbiAKMDAwMDEzOTQzMiAwMDAwMCBuIAowMDAwMTM5NTcwIDAwMDAwIG4gCjAwMDAxMzk3MTEgMDAwMDAgbiAKMDAwMDEzOTc5MiAwMDAwMCBuIAowMDAwMTM5OTMyIDAwMDAwIG4gCjAwMDAxNDAwNzQgMDAwMDAgbiAKMDAwMDE0MDE1NSAwMDAwMCBuIAowMDAwMTQwMjk1IDAwMDAwIG4gCjAwMDAxNDA0MzcgMDAwMDAgbiAKMDAwMDE0MDUxOCAwMDAwMCBuIAowMDAwMTQwNjU4IDAwMDAwIG4gCjAwMDAxNDA4MDAgMDAwMDAgbiAKMDAwMDE0MDg4MSAwMDAwMCBuIAowMDAwMTQxMDIxIDAwMDAwIG4gCjAwMDAxNDExNjMgMDAwMDAgbiAKMDAwMDE0MTI0MiAwMDAwMCBuIAowMDAwMTQxMzgyIDAwMDAwIG4gCjAwMDAxNDE1MjQgMDAwMDAgbiAKMDAwMDE0MTYwNSAwMDAwMCBuIAowMDAwMTQxNzQ1IDAwMDAwIG4gCjAwMDAxNDE4ODcgMDAwMDAgbiAKMDAwMDE0MTk2OCAwMDAwMCBuIAowMDAwMTQyMTA4IDAwMDAwIG4gCjAwMDAxNDIyNTAgMDAwMDAgbiAKMDAwMDE0MjMzMSAwMDAwMCBuIAowMDAwMTQyNDcxIDAwMDAwIG4gCjAwMDAxNDI2MTMgMDAwMDAgbiAKMDAwMDE0MjY5NCAwMDAwMCBuIAowMDAwMTQyODM0IDAwMDAwIG4gCjAwMDAxNDI5NzYgMDAwMDAgbiAKMDAwMDE0MzA1NiAwMDAwMCBuIAowMDAwMTQzMTk2IDAwMDAwIG4gCjAwMDAxNDMzMzggMDAwMDAgbiAKMDAwMDE0MzQxOSAwMDAwMCBuIAowMDAwMTQzNTU5IDAwMDAwIG4gCjAwMDAxNDM3MDEgMDAwMDAgbiAKMDAwMDE0Mzc4MiAwMDAwMCBuIAowMDAwMTQzOTIyIDAwMDAwIG4gCjAwMDAxNDQwNjQgMDAwMDAgbiAKMDAwMDE0NDE0NSAwMDAwMCBuIAowMDAwMTQ0Mjg1IDAwMDAwIG4gCjAwMDAxNDQ0MjcgMDAwMDAgbiAKMDAwMDE0NDUwOCAwMDAwMCBuIAowMDAwMTQ0NjQ4IDAwMDAwIG4gCjAwMDAxNDQ3OTAgMDAwMDAgbiAKMDAwMDE0NDg2OSAwMDAwMCBuIAowMDAwMTQ1MDA5IDAwMDAwIG4gCjAwMDAxNDUxNTEgMDAwMDAgbiAKMDAwMDE0NTIzMiAwMDAwMCBuIAowMDAwMTQ1MzcyIDAwMDAwIG4gCjAwMDAxNDU1MTQgMDAwMDAgbiAKMDAwMDE0NTU5NCAwMDAwMCBuIAowMDAwMTQ1NzM0IDAwMDAwIG4gCjAwMDAxNDU4NzYgMDAwMDAgbiAKMDAwMDE0NTk1NyAwMDAwMCBuIAowMDAwMTQ2MDk3IDAwMDAwIG4gCjAwMDAxNDYyMzkgMDAwMDAgbiAKMDAwMDE0NjMyMCAwMDAwMCBuIAowMDAwMTQ2NDYwIDAwMDAwIG4gCjAwMDAxNDY2MDIgMDAwMDAgbiAKMDAwMDE0NjY4MyAwMDAwMCBuIAowMDAwMTQ2ODIzIDAwMDAwIG4gCjAwMDAxNDY5NjUgMDAwMDAgbiAKMDAwMDE0NzA0NiAwMDAwMCBuIAowMDAwMTQ3MTg2IDAwMDAwIG4gCjAwMDAxNDczMjggMDAwMDAgbiAKMDAwMDE0NzQwOCAwMDAwMCBuIAowMDAwMTQ3NTQ4IDAwMDAwIG4gCjAwMDAxNDc2OTAgMDAwMDAgbiAKMDAwMDE0Nzc3MSAwMDAwMCBuIAowMDAwMTQ3OTExIDAwMDAwIG4gCjAwMDAxNDgwNTMgMDAwMDAgbiAKMDAwMDE0ODEzNCAwMDAwMCBuIAowMDAwMTQ4Mjc0IDAwMDAwIG4gCjAwMDAxNDg0MTYgMDAwMDAgbiAKMDAwMDE0ODQ5NSAwMDAwMCBuIAowMDAwMTQ4NjM1IDAwMDAwIG4gCjAwMDAxNDg3NzcgMDAwMDAgbiAKMDAwMDE0ODg1OCAwMDAwMCBuIAowMDAwMTQ4OTk4IDAwMDAwIG4gCjAwMDAxNDkxNDAgMDAwMDAgbiAKMDAwMDE0OTIyMSAwMDAwMCBuIAowMDAwMTQ5MzYxIDAwMDAwIG4gCjAwMDAxNDk1MDMgMDAwMDAgbiAKMDAwMDE0OTU4NCAwMDAwMCBuIAowMDAwMTQ5NzI0IDAwMDAwIG4gCjAwMDAxNDk4NjYgMDAwMDAgbiAKMDAwMDE0OTk0NyAwMDAwMCBuIAowMDAwMTUwMDg3IDAwMDAwIG4gCjAwMDAxNTAyMjkgMDAwMDAgbiAKMDAwMDE1MDMwOSAwMDAwMCBuIAowMDAwMTUwNDQ5IDAwMDAwIG4gCjAwMDAxNTA1OTEgMDAwMDAgbiAKMDAwMDE1MDY3MiAwMDAwMCBuIAowMDAwMTUwODEwIDAwMDAwIG4gCjAwMDAxNTA5NTIgMDAwMDAgbiAKMDAwMDE1MTAzMyAwMDAwMCBuIAowMDAwMTUxMTczIDAwMDAwIG4gCjAwMDAxNTEzMTUgMDAwMDAgbiAKMDAwMDE1MTM5NiAwMDAwMCBuIAowMDAwMTUxNTM2IDAwMDAwIG4gCjAwMDAxNTE2NzggMDAwMDAgbiAKMDAwMDE1MTc1OSAwMDAwMCBuIAowMDAwMTUxODk4IDAwMDAwIG4gCjAwMDAxNTIwMzkgMDAwMDAgbiAKMDAwMDE1MjExOCAwMDAwMCBuIAowMDAwMTUyMjU2IDAwMDAwIG4gCjAwMDAxNTIzOTYgMDAwMDAgbiAKMDAwMDE3NTMxOCAwMDAwMCBuIAowMDAwMTc1MzQxIDAwMDAwIG4gCjAwMDAxNzYxNDcgMDAwMDAgbiAKMDAwMDE3NjM2MSAwMDAwMCBuIAowMDAwMTc3MDQ2IDAwMDAwIG4gCjAwMDAxNzcwNjcgMDAwMDAgbiAKMDAwMDE3NzI2MyAwMDAwMCBuIAowMDAwMTgwMjU0IDAwMDAwIG4gCjAwMDAxODAyNzYgMDAwMDAgbiAKMDAwMDE4MDQ3MiAwMDAwMCBuIAowMDAwMTgzMjUxIDAwMDAwIG4gCjAwMDAxODMyNzMgMDAwMDAgbiAKMDAwMDE4MzQ2OSAwMDAwMCBuIAowMDAwMTg0NjE2IDAwMDAwIG4gCjAwMDAxODQ2MzggMDAwMDAgbiAKMDAwMDE4NDgzNCAwMDAwMCBuIAowMDAwMTg1OTY0IDAwMDAwIG4gCjAwMDAxODU5ODYgMDAwMDAgbiAKMDAwMDE4NjE4MiAwMDAwMCBuIAowMDAwMTg3MzQ2IDAwMDAwIG4gCjAwMDAxODczNjggMDAwMDAgbiAKMDAwMDE4NzU2NCAwMDAwMCBuIAowMDAwMTg4ODEwIDAwMDAwIG4gCjAwMDAxODg4MzIgMDAwMDAgbiAKMDAwMDE4OTAyOCAwMDAwMCBuIAowMDAwMTkwMzc0IDAwMDAwIG4gCjAwMDAxOTAzOTYgMDAwMDAgbiAKMDAwMDE5MDU5MiAwMDAwMCBuIAowMDAwMTkxMDQ5IDAwMDAwIG4gCjAwMDAxOTEwNzAgMDAwMDAgbiAKMDAwMDE5MTI2NiAwMDAwMCBuIAowMDAwMTkzNDMyIDAwMDAwIG4gCjAwMDAxOTM0NTQgMDAwMDAgbiAKMDAwMDE5MzY1MCAwMDAwMCBuIAowMDAwMTk1NjY5IDAwMDAwIG4gCjAwMDAxOTU2OTEgMDAwMDAgbiAKMDAwMDE5NTg4NyAwMDAwMCBuIAowMDAwMTk1OTY4IDAwMDAwIG4gCjAwMDAxOTYxMDggMDAwMDAgbiAKMDAwMDE5NjI1MCAwMDAwMCBuIAowMDAwMTk2MzMxIDAwMDAwIG4gCjAwMDAxOTY0NzEgMDAwMDAgbiAKMDAwMDE5NjYxMyAwMDAwMCBuIAowMDAwMTk2Njk0IDAwMDAwIG4gCjAwMDAxOTY4MzQgMDAwMDAgbiAKMDAwMDE5Njk3NiAwMDAwMCBuIAowMDAwMTk3MDU3IDAwMDAwIG4gCjAwMDAxOTcxOTYgMDAwMDAgbiAKMDAwMDE5NzMzOCAwMDAwMCBuIAowMDAwMTk3NDE4IDAwMDAwIG4gCjAwMDAxOTc1NTggMDAwMDAgbiAKMDAwMDE5NzcwMCAwMDAwMCBuIAowMDAwMTk3NzgxIDAwMDAwIG4gCjAwMDAxOTc5MjEgMDAwMDAgbiAKMDAwMDE5ODA2MyAwMDAwMCBuIAowMDAwMTk4MTQ0IDAwMDAwIG4gCjAwMDAxOTgyODMgMDAwMDAgbiAKMDAwMDE5ODQyNSAwMDAwMCBuIAowMDAwMTk4NTA2IDAwMDAwIG4gCjAwMDAxOTg2NDYgMDAwMDAgbiAKMDAwMDE5ODc4OCAwMDAwMCBuIAowMDAwMTk4ODY4IDAwMDAwIG4gCjAwMDAxOTkwMDggMDAwMDAgbiAKMDAwMDE5OTE1MCAwMDAwMCBuIAowMDAwMTk5MjMwIDAwMDAwIG4gCjAwMDAxOTkzNjkgMDAwMDAgbiAKMDAwMDE5OTUxMSAwMDAwMCBuIAowMDAwMTk5NTkxIDAwMDAwIG4gCjAwMDAxOTk3MzEgMDAwMDAgbiAKMDAwMDE5OTg3MyAwMDAwMCBuIAowMDAwMTk5OTU1IDAwMDAwIG4gCjAwMDAyMDAwOTUgMDAwMDAgbiAKMDAwMDIwMDIzNyAwMDAwMCBuIAowMDAwMjAwMzE5IDAwMDAwIG4gCjAwMDAyMDA0NTkgMDAwMDAgbiAKMDAwMDIwMDYwMSAwMDAwMCBuIAowMDAwMjAwNjgzIDAwMDAwIG4gCjAwMDAyMDA4MjMgMDAwMDAgbiAKMDAwMDIwMDk2NSAwMDAwMCBuIAowMDAwMjAxMDQ3IDAwMDAwIG4gCjAwMDAyMDExODcgMDAwMDAgbiAKMDAwMDIwMTMyOSAwMDAwMCBuIAowMDAwMjAxNDEwIDAwMDAwIG4gCjAwMDAyMDE1NTAgMDAwMDAgbiAKMDAwMDIwMTY5MiAwMDAwMCBuIAowMDAwMjAxNzcyIDAwMDAwIG4gCjAwMDAyMDE5MTEgMDAwMDAgbiAKMDAwMDIwMjA1MyAwMDAwMCBuIAowMDAwMjAyMTMzIDAwMDAwIG4gCjAwMDAyMDIyNzIgMDAwMDAgbiAKMDAwMDIwMjQxNCAwMDAwMCBuIAowMDAwMjAyNDk0IDAwMDAwIG4gCjAwMDAyMDI2MzIgMDAwMDAgbiAKMDAwMDIwMjc3NCAwMDAwMCBuIAowMDAwMjAyODU0IDAwMDAwIG4gCjAwMDAyMDI5OTMgMDAwMDAgbiAKMDAwMDIwMzEzNSAwMDAwMCBuIAowMDAwMjAzMjE1IDAwMDAwIG4gCjAwMDAyMDMzNTUgMDAwMDAgbiAKMDAwMDIwMzQ5NyAwMDAwMCBuIAowMDAwMjAzNTc3IDAwMDAwIG4gCjAwMDAyMDM3MTYgMDAwMDAgbiAKMDAwMDIwMzg1OCAwMDAwMCBuIAowMDAwMjE4MDg0IDAwMDAwIG4gCjAwMDAyMTgxMDcgMDAwMDAgbiAKMDAwMDIxODQ4MCAwMDAwMCBuIAowMDAwMjE4Njk0IDAwMDAwIG4gCjAwMDAyMTk4MzUgMDAwMDAgbiAKMDAwMDIxOTg1NyAwMDAwMCBuIAowMDAwMjIwMDUzIDAwMDAwIG4gCjAwMDAyMjAzMTggMDAwMDAgbiAKMDAwMDIzNTE1MCAwMDAwMCBuIAowMDAwMjM1MTI3IDAwMDAwIG4gCjAwMDAyMzUyNTAgMDAwMDAgbiAKMDAwMDIzNTI3MCAwMDAwMCBuIAowMDAwMjM1OTI1IDAwMDAwIG4gCjAwMDAyMzU0MzUgMDAwMDAgbiAKMDAwMDIzNjUxNCAwMDAwMCBuIAowMDAwMjM2NTM1IDAwMDAwIG4gCjAwMDAyMzY3OTUgMDAwMDAgbiAKMDAwMDI1MzExNyAwMDAwMCBuIAowMDAwMjUzMDk0IDAwMDAwIG4gCjAwMDAyNTMyMjIgMDAwMDAgbiAKMDAwMDI1MzI0MiAwMDAwMCBuIAowMDAwMjUzOTQ1IDAwMDAwIG4gCjAwMDAyNTM0MDIgMDAwMDAgbiAKMDAwMDI1NDU5MSAwMDAwMCBuIAowMDAwMjU0NjEyIDAwMDAwIG4gCjAwMDAyNTQ4NzQgMDAwMDAgbiAKMDAwMDI2NjAyMyAwMDAwMCBuIAowMDAwMjY2MDAwIDAwMDAwIG4gCjAwMDAyNjYxMjIgMDAwMDAgbiAKMDAwMDI2NjE0MiAwMDAwMCBuIAowMDAwMjY2NzMzIDAwMDAwIG4gCjAwMDAyNjYzMDYgMDAwMDAgbiAKMDAwMDI2NzI2MyAwMDAwMCBuIAowMDAwMjY3NTIwIDAwMDAwIG4gCjAwMDAyNjc4NTkgMDAwMDAgbiAKdHJhaWxlcgo8PAogIC9Sb290IDM0MyAwIFIKICAvSW5mbyAxIDAgUgogIC9JRCBbPENFODU5MkNDOUZGOUU2NjcyNEU5NDlFMUU1NkQ5OTFFPiA8Q0U4NTkyQ0M5RkY5RTY2NzI0RTk0OUUxRTU2RDk5MUU+XQogIC9TaXplIDM0NQo+PgpzdGFydHhyZWYKMjY4MDIxCiUlRU9GCg==