Survey
5.0.91
OTRS AG
http://otrs.org/
GNU AFFERO GENERAL PUBLIC LICENSE Version 3, November 2007
- 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();
2017-10-17 03:17:33
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+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIxLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxDb25maWdJdGVtIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleU92ZXJ2aWV3IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkFsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QSBTdXJ2ZXkgTW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGUgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXk8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BIFN1cnZleSBNb2R1bGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPlN1cnZleTwvTmFtZT4KICAgICAgICAgICAgICAgICAgICA8VHlwZT5NZW51PC9UeXBlPgogICAgICAgICAgICAgICAgICAgIDxCbG9jaz5JdGVtQXJlYTwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPExpbms+QWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXc8L0xpbms+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5TdXJ2ZXk8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PnU8L0FjY2Vzc0tleT4KICAgICAgICAgICAgICAgICAgICA8UHJpbz44MDAwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk92ZXJ2aWV3PC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgICAgICA8TmFtZSBUcmFuc2xhdGFibGU9IjEiPk92ZXJ2aWV3PC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3PC9MaW5rPgogICAgICAgICAgICAgICAgICAgIDxUeXBlPjwvVHlwZT4KICAgICAgICAgICAgICAgICAgICA8QmxvY2s+PC9CbG9jaz4KICAgICAgICAgICAgICAgICAgICA8TmF2QmFyPlN1cnZleTwvTmF2QmFyPgogICAgICAgICAgICAgICAgICAgIDxBY2Nlc3NLZXk+PC9BY2Nlc3NLZXk+CiAgICAgICAgICAgICAgICAgICAgPFByaW8+MTAwPC9QcmlvPgogICAgICAgICAgICAgICAgPC9OYXZCYXI+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+U3VydmV5LkFnZW50LlN1cnZleU92ZXJ2aWV3LmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U3VydmV5QWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBBZGQgTW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGUgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXk8L1RpdGxlPgogICAgICAgICAgICAgICAgPE5hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5OZXc8L0Rlc2NyaXB0aW9uPgogICAgICAgICAgICAgICAgICAgIDxOYW1lIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9OYW1lPgogICAgICAgICAgICAgICAgICAgIDxMaW5rPkFjdGlvbj1BZ2VudFN1cnZleUFkZDwvTGluaz4KICAgICAgICAgICAgICAgICAgICA8VHlwZT48L1R5cGU+CiAgICAgICAgICAgICAgICAgICAgPEJsb2NrPjwvQmxvY2s+CiAgICAgICAgICAgICAgICAgICAgPE5hdkJhcj5TdXJ2ZXk8L05hdkJhcj4KICAgICAgICAgICAgICAgICAgICA8QWNjZXNzS2V5PjwvQWNjZXNzS2V5PgogICAgICAgICAgICAgICAgICAgIDxQcmlvPjIwMDwvUHJpbz4KICAgICAgICAgICAgICAgIDwvTmF2QmFyPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPlN1cnZleS5BZ2VudC5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgICAgIDxKYXZhU2NyaXB0PlN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zLmpzPC9KYXZhU2NyaXB0PgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U3VydmV5RWRpdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5IEVkaXQgTW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+U3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRTdXJ2ZXlTdGF0cyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxGcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICAgICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBTdGF0cyBNb2R1bGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxOYXZCYXJOYW1lPlN1cnZleTwvTmF2QmFyTmFtZT4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5TdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMuanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U3VydmV5Wm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEZyb250ZW5kTW9kdWxlUmVnPgogICAgICAgICAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5IFpvb20gTW9kdWxlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8TG9hZGVyPgogICAgICAgICAgICAgICAgICAgIDxDU1M+U3VydmV5LkFnZW50LkRlZmF1bHQuY3NzPC9DU1M+CiAgICAgICAgICAgICAgICAgICAgPEphdmFTY3JpcHQ+U3VydmV5LkFnZW50LlN1cnZleVpvb20uanM8L0phdmFTY3JpcHQ+CiAgICAgICAgICAgICAgICA8L0xvYWRlcj4KICAgICAgICAgICAgPC9Gcm9udGVuZE1vZHVsZVJlZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICAgICAgICAgIDxMb2FkZXI+CiAgICAgICAgICAgICAgICAgICAgPENTUz5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0NTUz4KICAgICAgICAgICAgICAgICAgICA8SmF2YVNjcmlwdD5TdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucy5qczwvSmF2YVNjcmlwdD4KICAgICAgICAgICAgICAgIDwvTG9hZGVyPgogICAgICAgICAgICA8L0Zyb250ZW5kTW9kdWxlUmVnPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNTdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb248L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8RnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QdWJsaWMgU3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgICAgICAgICA8TmF2QmFyTmFtZT5TdXJ2ZXk8L05hdkJhck5hbWU+CiAgICAgICAgICAgICAgICA8VGl0bGUgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXk8L1RpdGxlPgogICAgICAgICAgICAgICAgPExvYWRlcj4KICAgICAgICAgICAgICAgICAgICA8Q1NTPlN1cnZleS5DdXN0b21lci5EZWZhdWx0LmNzczwvQ1NTPgogICAgICAgICAgICAgICAgPC9Mb2FkZXI+CiAgICAgICAgICAgIDwvRnJvbnRlbmRNb2R1bGVSZWc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpTaG93Vm90ZURhdGEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6U2VuZFBlcmlvZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6U3VydmV5PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj4zMDA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OkRlbGV0ZVBlcmlvZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiAnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlJyBzZXR0aW5nLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+MzY1PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxIj5ZZXM8L0l0ZW0+CiAgICAgICAgICAgIDwvT3B0aW9uPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6Tm90aWZpY2F0aW9uU2VuZGVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxTdHJpbmcgUmVnZXg9IiI+cXVhbGl0eUBleGFtcGxlLmNvbTwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6Tm90aWZpY2F0aW9uUmVjaXBpZW50QmxhY2tsaXN0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6Tm90aWZpY2F0aW9uU3ViamVjdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6U3VydmV5PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iIj5IZWxwIHVzIHdpdGggeW91ciBmZWVkYmFjayE8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6Ok5vdGlmaWNhdGlvbkJvZHkiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxUZXh0QXJlYT5EZWFyIEN1c3RvbWVyLAoKVGhhbmtzIGZvciB1c2luZyBvdXIgc2VydmljZS4gSGVscCB1cyB0byBpbXByb3ZlIHVzIGFuZCBvdXIgc2VydmljZXMuCgpQbGVhc2UgZ2l2ZSB1cyBmZWVkYmFjayBvbiBob3cgdG8gaW1wcm92ZSBvdXIgc2VydmljZXM6CgombHQ7T1RSU19DT05GSUdfSHR0cFR5cGUmZ3Q7Oi8vJmx0O09UUlNfQ09ORklHX0ZRRE4mZ3Q7LyZsdDtPVFJTX0NPTkZJR19TY3JpcHRBbGlhcyZndDtwdWJsaWMucGw/QWN0aW9uPVB1YmxpY1N1cnZleTtQdWJsaWNTdXJ2ZXlLZXk9Jmx0O09UUlNfUHVibGljU3VydmV5S2V5Jmd0OwoKVGhhbmtzIGZvciB5b3VyIGhlbHAhCgpZb3VyIE9UUlMtVGVhbQogICAgICAgICAgICA8L1RleHRBcmVhPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6U2VuZE5vU3VydmV5UmVnRXhwIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPklmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpTdXJ2ZXk8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPihNQUlMRVItREFFTU9OfHBvc3RtYXN0ZXJ8YWJ1c2UpQC4rP1wuLis/PC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyM5OS1TdXJ2ZXlTZW5kUmVxdWVzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpFdmVudDo6U3VydmV5PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6OlN1cnZleVNlbmRSZXF1ZXN0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KEFydGljbGVDcmVhdGV8VGlja2V0U3RhdGVVcGRhdGUpPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6T3ZlcnZpZXcjIyNTbWFsbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXlPdmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlPdmVydmlldzo6U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPlNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lU2hvcnQiPlM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhZ2VTaG93biI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkltYWdlIj5vdmVydmlld3NtYWxsLnBuZzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW1hZ2VTZWxlY3RlZCI+b3ZlcnZpZXdzbWFsbC1zZWxlY3RlZC5wbmc8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpBZ2VudFN1cnZleU92ZXJ2aWV3IyMjU2hvd0NvbHVtbnMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlZpZXdTdXJ2ZXlPdmVydmlldzwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbnRyb2R1Y3Rpb24iPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOb3RpZmljYXRpb25TZW5kZXIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vdGlmaWNhdGlvblN1YmplY3QiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vdGlmaWNhdGlvbkJvZHkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXR1cyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3JlYXRlVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3JlYXRlQnkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZVRpbWUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZUJ5Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6SFRNTFJpY2hUZXh0SGVpZ2h0RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXlab29tPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsNH0kIj44MDwvU3RyaW5nPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6OkhUTUxSaWNoVGV4dEhlaWdodE1heCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXlab29tPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsNH0kIj4yNTAwPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6Q2hhbmdlU3VydmV5U3RhdHVzR3JvdXBzIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleVpvb208L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiAnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmQnIHNldHRpbmcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+Q29yZTo6U3VydmV5PC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPFN0cmluZyBSZWdleD0iXlswLTldezEsNX0kIj4wPC9TdHJpbmc+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpBbW91bnRPZlN1cnZleXNQZXIzMERheXMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpTdXJ2ZXk8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSJeWzAtOV17MSw0fSQiPjA8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6Okhvb2siIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpTdXJ2ZXk8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8U3RyaW5nIFJlZ2V4PSIiPlN1cnZleSM8L1N0cmluZz4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJQcmVmZXJlbmNlc0dyb3VwcyMjI1N1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpQcmVmZXJlbmNlczwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29sdW1uIj5PdGhlciBTZXR0aW5nczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGFiZWwiIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2MiIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBpcyBhIGRlc2NyaXB0aW9uIGZvciBTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIG9uIFN1cnZleS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IktleSIgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YSI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTAiPjEwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjE1Ij4xNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyMCI+MjA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjUiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjMwIj4zMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzNSI+MzU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhU2VsZWN0ZWQiPjI1PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmS2V5Ij5Vc2VyU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+ODAwMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAwMC1CYWNrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXk6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5CYWNrPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+WyUgRW52KCJMYXN0U2NyZWVuT3ZlcnZpZXciKSB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+QmFjazwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMTAtRWRpdEdlbmVyYWxJbmZvIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPkVkaXQgR2VuZXJhbCBJbmZvPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudFN1cnZleUVkaXQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFN1cnZleUVkaXQ7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDIwLUVkaXRRdWVzdGlvbnMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXk6Ok1lbnVNb2R1bGU8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IFF1ZXN0aW9uczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnM7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhcmdldCI+UG9wVXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDMwLVN0YXRzRGV0YWlscyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleTo6TWVudU1vZHVsZTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlNZW51OjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBUcmFuc2xhdGFibGU9IjEiPlN0YXRzIERldGFpbHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlpvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50U3VydmV5U3RhdHM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFN1cnZleVN0YXRzO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9TdWJHcm91cD4KICAgICAgICA8U2V0dGluZz4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5TdXJ2ZXlSZXF1ZXN0c1NlbmQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+IDwhLS0gZGVmYXVsdDogZXZlcnkgMjAgbWluIC0tPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpDb25zb2xlOjpDb21tYW5kOjpNYWludDo6U3VydmV5OjpSZXF1ZXN0c1NlbmQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT4tLWZvcmNlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5TdXJ2ZXk8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpTdXJ2ZXk8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckN1c3RvbWVySUQiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJUaXRsZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckZpcnN0bmFtZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckxhc3RuYW1lIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyTG9naW4iPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJFbWFpbCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlclBob25lIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyRmF4Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyTW9iaWxlIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyU3RyZWV0Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyWmlwIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyQ2l0eSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckNvdW50cnkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJDb21tZW50Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8R3JvdXA+U3VydmV5PC9Hcm91cD4KICAgICAgICA8U3ViR3JvdXA+RGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2s8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFza05hbWUiPlN1cnZleVJlcXVlc3RzRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPiA8IS0tIGRlZmF1bHQ6IGV2ZXJ5IDIwIG1pbiAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OlN1cnZleTo6UmVxdWVzdHNEZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkZ1bmN0aW9uIj5FeGVjdXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNYXhpbXVtUGFyYWxsZWxJbnN0YW5jZXMiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhcmFtcyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT4tLWZvcmNlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+CiAgICA8Q29uZmlnSXRlbSBOYW1lPSJTdGF0czo6RHluYW1pY09iamVjdFJlZ2lzdHJhdGlvbiMjI1N1cnZleUxpc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxHcm91cD5UaWNrZXQ8L0dyb3VwPgogICAgICAgIDxTdWJHcm91cD5Db3JlOjpTdGF0czwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpTdGF0czo6RHluYW1pYzo6U3VydmV5TGlzdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvU2V0dGluZz4KICAgIDwvQ29uZmlnSXRlbT4KICAgIDxDb25maWdJdGVtIE5hbWU9IlN1cnZleVN0YXRzOjpTaG93RGVsZXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkZyb250ZW5kOjpBZ2VudDo6U3VydmV5U3RhdHM8L1N1Ykdyb3VwPgogICAgICAgIDxTZXR0aW5nPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9TZXR0aW5nPgogICAgPC9Db25maWdJdGVtPgogICAgPENvbmZpZ0l0ZW0gTmFtZT0iU3VydmV5OjpTZW5kT25seVRvUmVhbEN1c3RvbWVyIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPEdyb3VwPlN1cnZleTwvR3JvdXA+CiAgICAgICAgPFN1Ykdyb3VwPkNvcmU6OlN1cnZleTwvU3ViR3JvdXA+CiAgICAgICAgPFNldHRpbmc+CiAgICAgICAgICAgIDxPcHRpb24gU2VsZWN0ZWRJRD0iMCI+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjAiIFRyYW5zbGF0YWJsZT0iMSI+Tm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICA8L09wdGlvbj4KICAgICAgICA8L1NldHRpbmc+CiAgICA8L0NvbmZpZ0l0ZW0+Cjwvb3Ryc19jb25maWc+Cg==
PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiID8+CjxvdHJzX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleU92ZXJ2aWV3IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkFsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5BIFN1cnZleSBNb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudFN1cnZleU92ZXJ2aWV3IyMjMDAyLVN1cnZleSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5EZWZhdWx0LmNzczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJKYXZhU2NyaXB0Ij4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlN1cnZleS5BZ2VudC5TdXJ2ZXlPdmVydmlldy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRTdXJ2ZXlPdmVydmlldyMjIzEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TWFpbiBtZW51IGZvciB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkEgU3VydmV5IE1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlPdmVydmlldzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXIiPlN1cnZleTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+TWVudTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPkl0ZW1BcmVhPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPnU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudFN1cnZleU92ZXJ2aWV3IyMjMiIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+T3ZlcnZpZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPkFjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rT3B0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUeXBlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjY2Vzc0tleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMDA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50U3VydmV5QWRkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5IEFkZCBNb2R1bGUuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZ2VudFN1cnZleUFkZCMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpOYXZpZ2F0aW9uIyMjQWdlbnRTdXJ2ZXlBZGQjIyMxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk1haW4gbWVudSBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6TW9kdWxlUmVnaXN0cmF0aW9uOjpNYWluTWVudTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5OZXc8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmV3PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlBZGQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmtPcHRpb24iPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWNjZXNzS2V5Ij48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjIwMDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRTdXJ2ZXlFZGl0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBFZGl0IE1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50U3VydmV5RWRpdCMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucy5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpNb2R1bGUjIyNBZ2VudFN1cnZleVN0YXRzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5TdXJ2ZXkgU3RhdHMgTW9kdWxlLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPlN1cnZleTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJMb2FkZXI6Ok1vZHVsZTo6QWdlbnRTdXJ2ZXlTdGF0cyMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMuanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6TW9kdWxlIyMjQWdlbnRTdXJ2ZXlab29tIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBab29tIE1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5TdXJ2ZXk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFnZW50U3VydmV5Wm9vbSMjIzAwMi1TdXJ2ZXkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuRGVmYXVsdC5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5TdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbS5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+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+U3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpOb3RpZmljYXRpb25TdWJqZWN0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPkhlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrITwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpOb3RpZmljYXRpb25Cb2R5IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iVGV4dGFyZWEiPkRlYXIgQ3VzdG9tZXIsCgpUaGFua3MgZm9yIHVzaW5nIG91ciBzZXJ2aWNlLiBIZWxwIHVzIHRvIGltcHJvdmUgdXMgYW5kIG91ciBzZXJ2aWNlcy4KClBsZWFzZSBnaXZlIHVzIGZlZWRiYWNrIG9uIGhvdyB0byBpbXByb3ZlIG91ciBzZXJ2aWNlczoKCiZsdDtPVFJTX0NPTkZJR19IdHRwVHlwZSZndDs6Ly8mbHQ7T1RSU19DT05GSUdfRlFETiZndDsvJmx0O09UUlNfQ09ORklHX1NjcmlwdEFsaWFzJmd0O3B1YmxpYy5wbD9BY3Rpb249UHVibGljU3VydmV5O1B1YmxpY1N1cnZleUtleT0mbHQ7T1RSU19QdWJsaWNTdXJ2ZXlLZXkmZ3Q7CgpUaGFua3MgZm9yIHlvdXIgaGVscCEKCllvdXIgT1RSUy1UZWFtCiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpTZW5kTm9TdXJ2ZXlSZWdFeHAiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+KE1BSUxFUi1EQUVNT058cG9zdG1hc3RlcnxhYnVzZSlALis/XC4uKz88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlRpY2tldDo6RXZlbnRNb2R1bGVQb3N0IyMjOTktU3VydmV5U2VuZFJlcXVlc3QiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6OlN1cnZleVNlbmRSZXF1ZXN0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KEFydGljbGVDcmVhdGV8VGlja2V0U3RhdGVVcGRhdGUpPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXlPdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlPdmVydmlldzo6U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPlNtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lU2hvcnQiPlM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBhZ2VTaG93biI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkltYWdlIj5vdmVydmlld3NtYWxsLnBuZzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW1hZ2VTZWxlY3RlZCI+b3ZlcnZpZXdzbWFsbC1zZWxlY3RlZC5wbmc8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6QWdlbnRTdXJ2ZXlPdmVydmlldyMjI1Nob3dDb2x1bW5zIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXdTdXJ2ZXlPdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJbnRyb2R1Y3Rpb24iPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOb3RpZmljYXRpb25TZW5kZXIiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vdGlmaWNhdGlvblN1YmplY3QiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5vdGlmaWNhdGlvbkJvZHkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXR1cyI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3JlYXRlVGltZSI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3JlYXRlQnkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZVRpbWUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNoYW5nZUJ5Ij4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6OkhUTUxSaWNoVGV4dEhlaWdodERlZmF1bHQiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXlab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5bMC05XXsxLDR9JCI+ODA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6OkhUTUxSaWNoVGV4dEhlaWdodE1heCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsNH0kIj4yNTAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpDaGFuZ2VTdXJ2ZXlTdGF0dXNHcm91cHMiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXlab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mICdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZCcgc2V0dGluZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeWzAtOV17MSw1fSQiPjA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6QW1vdW50T2ZTdXJ2ZXlzUGVyMzBEYXlzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlswLTldezEsNH0kIj4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6Okhvb2siIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OlN1cnZleTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPlN1cnZleSM8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlByZWZlcmVuY2VzR3JvdXBzIyMjU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93biIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6UHJlZmVyZW5jZXM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6UHJlZmVyZW5jZXM6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZlcmVuY2VHcm91cCI+T3RoZXIgU2V0dGluZ3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPlN1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgaXMgYSBkZXNjcmlwdGlvbiBmb3IgU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93biBvbiBTdXJ2ZXkuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+U3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGEiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjEwIj4xMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxNSI+MTU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMjAiPjIwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjI1Ij4yNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIzMCI+MzA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzUiPjM1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGF0YVNlbGVjdGVkIj4yNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VXNlclN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByaW8iPjgwMDA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGl2ZSI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjMDAwLUJhY2siIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6U3VydmV5OjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+QmFjazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+QmFjazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbmsiPlslIEVudigiTGFzdFNjcmVlbk92ZXJ2aWV3IikgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPkJhY2s8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5OjpGcm9udGVuZDo6TWVudU1vZHVsZSMjIzAxMC1FZGl0R2VuZXJhbEluZm8iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXk6Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5FZGl0IEdlbmVyYWwgSW5mbzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+RWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRTdXJ2ZXlFZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlFZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMjAtRWRpdFF1ZXN0aW9ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5TaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6U3VydmV5OjpNZW51TW9kdWxlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU1lbnU6OkdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+RWRpdCBRdWVzdGlvbnM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkVkaXQgc3VydmV5IHF1ZXN0aW9ucy48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFjdGlvbiI+QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUjIyMwMzAtU3RhdHNEZXRhaWxzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpTdXJ2ZXk6Ok1lbnVNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5TdGF0cyBEZXRhaWxzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5ab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudFN1cnZleVN0YXRzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRTdXJ2ZXlTdGF0cztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij5Qb3BVcDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXNrTmFtZSI+U3VydmV5UmVxdWVzdHNTZW5kPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTY2hlZHVsZSI+Ki8yMCAqICogKiAqPC9JdGVtPiA8IS0tIGRlZmF1bHQ6IGV2ZXJ5IDIwIG1pbiAtLT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6TWFpbnQ6OlN1cnZleTo6UmVxdWVzdHNTZW5kPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+LS1mb3JjZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3VydmV5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJDdXN0b21lcklEIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyVGl0bGUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJGaXJzdG5hbWUiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJMYXN0bmFtZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckxvZ2luIj4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyRW1haWwiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJQaG9uZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckZheCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlck1vYmlsZSI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlclN0cmVldCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlclppcCI+MDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVXNlckNpdHkiPjA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlVzZXJDb3VudHJ5Ij4wPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJVc2VyQ29tbWVudCI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5TdXJ2ZXlSZXF1ZXN0c0RlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2NoZWR1bGUiPiovMjAgKiAqICogKjwvSXRlbT4gPCEtLSBkZWZhdWx0OiBldmVyeSAyMCBtaW4gLS0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpTdXJ2ZXk6OlJlcXVlc3RzRGVsZXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+LS1mb3JjZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlN0YXRzOjpEeW5hbWljT2JqZWN0UmVnaXN0cmF0aW9uIyMjU3VydmV5TGlzdCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6U3RhdHM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6U3RhdHM6OkR5bmFtaWM6OlN1cnZleUxpc3Q8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iU3VydmV5U3RhdHM6OlNob3dEZWxldGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlN1cnZleVN0YXRzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJTdXJ2ZXk6OlNlbmRPbmx5VG9SZWFsQ3VzdG9tZXIiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpTdXJ2ZXk8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4wPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3Ryc19jb25maWc+Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6YmdfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn0KHRitC30LTQsNC50YLQtSDQvdC+0LLQviDQn9GA0L7Rg9GH0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAn0JLRitCy0LXQtNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICfQktGK0LLQtdC00LXQvdC40LUg0LIg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAn0KPQstC10LTQvtC80Y/QstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICfQotC40L/QvtCy0LUg0L3QsCDQsdC40LvQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICfQktGK0YLRgNC10YjQvdC+INC+0L/QuNGB0LDQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQvtGB0L3QvtCy0L3QsNGC0LAg0LjQvdGE0L7RgNC80LDRhtC40Y8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LLRitC/0YDQvtGB0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAn0JLQuNC1INGB0YLQtSDRgtGD0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ9CS0YrQv9GA0L7RgdC4INC30LAg0L/RgNC+0YPRh9Cy0LDQvdC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICfQlNC+0LHQsNCy0Y/QvdC1INC90LAg0LLRitC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAn0JLRitCy0LXQtNC10YLQtSDQstGK0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICfQndC10L7QsdGF0L7QtNC40Lwg0LUg0L7RgtCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICfQndGP0LzQsCDQt9Cw0L/QuNGB0LDQvdC4INCy0YrQv9GA0L7RgdC4INC30LAg0YLQvtCy0LAg0L/RgNC+0YPRh9Cy0LDQvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ9CS0YrQv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICfQndC10L7QsdGF0L7QtNC40Lwg0LUg0L7RgtCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ca0L7Qs9Cw0YLQviDQv9GA0LjQutC70Y7Rh9C40YLQtSDRgSDRgNC10LTQsNC60YLQuNGA0LDQvdC10YLQviDQvdCwINCy0YrQv9GA0L7RgdC40YLQtSDQvtGCINC40LfRgdC70LXQtNCy0LDQvdC10YLQviwg0L/RgNC+0YHRgtC+INC30LDRgtCy0L7RgNC10YLQtSDRgtC+0LfQuCDQtdC60YDQsNC9Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAn0KDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINCy0YrQv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAn0JLRitGA0L3QtdGC0LUg0YHQtSDQutGK0Lwg0LLRitC/0YDQvtGB0LjRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ9CS0YrQv9GA0L7RgSA6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn0JLRitC30LzQvtC20L3QuCDQvtGC0LPQvtCy0L7RgNC4INC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ9CU0L7QsdCw0LLRj9C90LUg0L3QsCDQntGC0LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ9Cd0Y/QvNCwINC+0YLQs9C+0LLQvtGA0Lgg0LfQsCDRgtC+0LfQuCDQstGK0L/RgNC+0YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfQndGP0LzQsCDQvdGP0LrQvtC70LrQviDQvtGC0LPQvtCy0L7RgNCwLCDQuCDRidC1INGB0LUg0L/QvtC60LDQttC1INGC0LXQutGB0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0L7RgtCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAn0JLRitGA0L3QtdGC0LUg0YHQtSwg0LfQsCDQtNCwINGA0LXQtNCw0LrRgtC40YDQsNGC0LUg0LLRitC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ9Ce0YLQs9C+0LLQvtGAJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAn0JzQsNC60YEuINC/0L7QutCw0LfQsNC90Lgg0L/RgNC+0YPRh9Cy0LDQvdC40Y8g0L3QsCDRgdGC0YDQsNC90LjRhtCw0YLQsCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAn0JjQt9C/0YDQsNGJ0LDRhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ9Cj0LLQtdC00L7QvNC70LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ9Cf0YDQvtC80LXQvdC10L3QviDQvtGCJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ9Cf0YDQtdCz0LvQtdC0INC90LAg0KHRgtCw0YLQuNGB0YLQuNC60LDRgtCwINC+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICfQotCw0LHQu9C40YbQsCDRgSDQuNGB0LrQsNC90LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICfQktGA0LXQvNC1INC30LAg0LjQt9C/0YDQsNGJ0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ9CS0YDQtdC80LUg0LfQsCDQs9C70LDRgdGD0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0LnQu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAn0JTQsNC90L3QuCDQt9CwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ9CS0YrRgNC90LXRgtC1INGB0LUg0LrRitC8INC+0LHRidC40Y8g0L/RgNC10LPQu9C10LQg0L3QsCDRgdGC0LDRgtC40YHRgtC40YfQtdGB0LrQuNGC0LUg0LTQsNC90L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQt9CwINC/0YDQvtGD0YfQstCw0L3QuNGP0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAn0JjQt9C/0YDQsNGC0LXQvdC4INC40YHQutCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfQn9C+0LvRg9GH0LXQvdC4INC/0YDQvtGD0YfQstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn0JTQsNC90L3QuCDQt9CwINC40LfRgdC70LXQtNCy0LDQvdC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXInfSA9ICfQndC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ9CR0LjQu9C10YLQvdC4INGD0YHQu9GD0LPQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ9CT0YDQsNGE0LjQutCwINC90LAg0YDQtdC30YPQu9GC0LDRgtC40YLQtSDQvtGCINC40LfRgdC70LXQtNCy0LDQvdC10YLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn0J3Rj9C80LAg0YHRgtCw0YLQuNGH0LXRgdC60Lgg0YDQtdC30YPQu9GC0LDRgtC4JzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ9Cf0YDQvtGD0YfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ9Cc0L7Qu9GPINC+0YLQs9C+0LLQvtGA0LXRgtC1INC90LAg0YHQu9C10LTQvdC40YLQtSDQstGK0L/RgNC+0YHQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfQnNC+0LnRgtC1INC+0YLQs9C+0LLQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ9Ci0L7QstCwINGB0LAg0YLQstC+0LnRgtC1INC+0YLQs9C+0LLQvtGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAn0JfQsNCz0LvQsNCy0LjQtSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAn0JTQvtCy0LDQstGP0L3QtSDQvdCwINC90L7QstC+INCf0YDQvtGD0YfQstCw0L3QtSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfQndGP0LzQsNGC0LUg0YDQsNC30YDQtdGI0LXQvdC40LUg0LfQsCDRgtC+0LLQsCDQv9GA0L7Rg9GH0LLQsNC90LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0LUg0LTQsNC00LXQvdC+IElEINC90LAg0L/RgNC+0YPRh9Cy0LDQvdC10YLQviEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ9Cd0Y/QvNCw0YLQtSDRgNCw0LfRgNC10YjQtdC90LjQtSDQt9CwINGC0L7QstCwINC/0YDQvtGD0YfQstCw0L3QtSDQuNC70Lgg0LLRitC/0YDQvtGBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ9Cd0Y/QvNCw0YLQtSDRgNCw0LfRgNC10YjQtdC90LjQtSDQt9CwINGC0L7QstCwINC/0YDQvtGD0YfQstCw0L3QtSwg0LLRitC/0YDQvtGBINC40LvQuCDQvtGC0LPQvtCy0L7RgCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn0KDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINCy0YrQv9GA0L7RgdC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ9CU0JAv0J3QlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICfQoNCw0LTQuNC+ICjRgdC/0LjRgdGK0LopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ9Ca0LLQsNC00YDQsNGC0YfQtSDQt9CwINC+0YLQvNC10YLQutCwICjRgdC/0LjRgdGK0LopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn0JLRitC/0YDQvtGBINGC0LjQvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ9Cf0YrQu9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ9Cd0LXQv9GK0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0LLRitC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAn0KDQtdC00LDQutGC0LjRgNCw0L3QtSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctINCd0LUg0LUg0LjQt9Cx0YDQsNC90LAg0L7Qv9Cw0YjQutCwIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ9Cd0L7QsiDRgdGC0LDRgtGD0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSc7CiAgICAkU2VsZi0+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+0L3QuNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHV0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICfQoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0L7QsdGJ0LDRgtCwINC40L3RhNC+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+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQvdCwINGB0YLRgNCw0L3QuNGG0LjRgtC1ICjQsiDQutC+0LjRgtC+INGB0LAg0L/QvtC60LDQt9Cw0L3QuCDQv9GA0L7Rg9GH0LLQsNC90LjRj9GC0LApINC90LAg0L7QsdGJ0LjRjyDQv9GA0LXQs9C70LXQtCDQvdCwINC40LfRgdC70LXQtNCy0LDQvdC10YLQvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfQn9GD0LHQu9C40YfQvdC+INC/0YDQvtGD0YfQstCw0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCw0L3QtSDQvdCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4sINC30LAg0LTQsCDRgNC10LTQsNC60YLQuNGA0LAg0L/RgNC+0YPRh9Cy0LDQvdC1INCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQtdC9INC40LfQs9C70LXQtCDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCw0L3QtSDQvdCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4sINC30LAg0LTQsCDRgNC10LTQsNC60YLQuNGA0LAg0LLRitC/0YDQvtGB0Lgg0L7RgiDQv9GA0L7Rg9GH0LLQsNC90LXRgtC+INCyINC90LXQs9C+0LLQuNGPINC40LfQs9C70LXQtCDQt9CwINGD0LLQtdC70LjRh9C10L3QuNC1INC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQt9CwINC00LAg0YHQtSDQstGK0YDQvdC1INCyINC40LfQs9C70LXQtNCwINC30LAg0YPQstC10LvQuNGH0LXQvdC40LUg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+LCDQt9CwINC00LAg0L/RgNC40LHQu9C40LbQuCDQv9C+0LTRgNC+0LHQvdC+0YHRgtC40YLQtSDQsiDRgdGC0LDRgtC40YHRgtC40YfQtdGB0LrQuNGC0LUg0LTQsNC90L3QuCDQt9CwINC/0YDQvtGD0YfQstCw0L3QtdGC0L4g0LIg0LXQutGA0LDQvdCwINC30LAg0YPQstC10LvQuNGH0LXQvdC40LUg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ9Ch0YLQsNGC0LjRgdGC0LjQutCwL9CU0LXRgtCw0LnQu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ9CU0L7QsdCw0LLRj9C90LUg0L3QsCDQvNC+0LTRg9C7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn0KDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINCc0L7QtNGD0LsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn0J/RgNC10LPQu9C10LQg0L3QsCDQuNC30YHQu9C10LTQstCw0L3QtdGC0L4g0LfQsCAi0JzQsNC70YrQuiIg0LvQuNC80LjRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LsgItCh0YLQsNGC0LjRgdGC0LjQutCwINC90LAg0L/RgNC+0YPRh9Cy0LDQvdC40Y/RgtCwIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDRg9Cy0LXQu9C40YfQsNCy0LDQvdC1INC90LAg0L3QsNCx0LvRjtC00LXQvdC40LXRgtC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJ9CT0YDQsNC90LjRhtCwINC90LAg0LjQt9GB0LvQtdC00LLQsNC90LXRgtC+INC90LAg0YHRgtGA0LDQvdC40YbQsCDQt9CwINC/0YDQtdCz0LvQtdC0INC90LAgItCc0LDQu9C60LgiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ9Cf0YDQvtGD0YfQstCw0L3QuNGP0YLQsCDQvdGP0LzQsCDQtNCwINCx0YrQtNCw0YIg0LjQt9C/0YDQsNGC0LXQvdC4INC00L4g0LrQvtC90YTQuNCz0YPRgNC40YDQsNC90LjRgtC1INC40LzQtdC50Lsg0LDQtNGA0LXRgdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAn0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YDRitGCINC30LAg0L/RgNC+0YPRh9Cy0LDQvdC1LCDQvdCw0L/RgC4g0J/RgNC+0YPRh9Cy0LDQvdC1ICMsIE15U3VydmV5ICMuINCf0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC1ICLQn9GA0L7Rg9GH0LLQsNC90LUgIyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgaXMgYSBkZXNjcmlwdGlvbiBmb3IgU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93biBvbiBTdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0YHRitCx0LjRgtC40LUg0L3QsCDQsdC40LvQtdGC0Lgg0LfQsCDQsNCy0YLQvtC80LDRgtC40YfQvdC+INC40LfQv9GA0LDRidCw0L3QtSDQvdCwINC30LDRj9Cy0LrQuCDQt9CwINC10LvQtdC60YLRgNC+0L3QvdCwINC/0L7RidCwINC00L4g0LrQu9C40LXQvdGC0LjRgtC1LCDQsNC60L4g0LHQuNC70LXRgtGK0YIg0LUg0LfQsNGC0LLQvtGA0LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnVHJpZ2dlciDQuNC30L/RgNCw0YnQsCDQt9Cw0LrRitGB0L3QtdC70Lgg0LfQsNGP0LLQutC4INC30LAg0L/RgNC+0YPRh9Cy0LDQvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ9Cj0LLQtdC70LjRh9C10YLQtSDRgdGC0LDRgtC40YHRgtC40YfQtdGB0LrQuNGC0LUg0LTQsNC90L3QuC4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGFfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJyc7CiAgICAkU2VsZi0+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+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdVbmRlcnPDuGdlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnYmVzdmFyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnaWtrZSBiZXN2YXJldCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnVGFrIGZvciBkaW4gYmVzdmFyZWxzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRXQgdW5kZXJzw7hnZWxzZXNtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZGVfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnTmV1ZSBVbWZyYWdlIGVyc3RlbGxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdFaW5sZWl0dW5nc3RleHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ1VtZnJhZ2UgRWlubGVpdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0JlbmFjaHJpY2h0aWd1bmcgVGV4dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUaWNrZXQtVHlwZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdJbnRlcm5lIEJlc2NocmVpYnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnQWxsZ2VtZWluZSBBbmdhYmVuIGJlYXJiZWl0ZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdGcmFnZW4gYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdTaWUgc2luZCBoaWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdVbWZyYWdlLUZyYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdGcmFnZSBoaW56dWbDvGdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0ZyYWdlIGVpbmdlYmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ0FudHdvcnQgZXJmb3JkZXJsaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnRsO8ciBkaWVzZSBVbWZyYWdlIHNpbmQga2VpbmUgRnJhZ2VuIGdlc3BlaWNoZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ0ZyYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ0FudHdvcnQgZXJmb3JkZXJsaWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdOYWNoIGRlbSBCZWFyYmVpdGVuIGRlciBVbWZyYWdlIGRpZXNlcyBGZW5zdGVyIGVpbmZhY2ggc2NobGllc3Nlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ0RpZXNlcyBGZW5zdGVyIHNjaGxpZcOfZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0ZyYWdlIGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdadXLDvGNrIHp1IGRlbiBGcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnRnJhZ2U6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTcO2Z2xpY2hlIEFudHdvcnRlbiBmw7xyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBbnR3b3J0IGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnRsO8ciBkaWVzZSBGcmFnZSBzaW5kIGtlaW5lIEFudHdvcnRlbiBnZXNwZWljaGVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0RpZXNlIEZyYWdlIGhhdCBuaWNodCBtZWhyZXJlIEFudHdvcnRlbiwgZWluIFRleHRlaW5nYWJlZmVsZCB3aXJkIGhpbnp1Z2Vmw7xndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdBbnR3b3J0IGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnWnVyw7xjayB6dW0gQmVhcmJlaXRlbiBkZXIgRnJhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ0FudHdvcnQ6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTWF4aW1hbGUgQW56YWhsIGFuZ2V6ZWlndGVyIFVtZnJhZ2VuIHBybyBTZWl0ZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnQmVuYWNocmljaHRpZ3VuZyBBYnNlbmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ0JlbmFjaHJpY2h0aWd1bmcgQmV0cmVmZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnR2XDpG5kZXJ0IHZvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdTdGF0aXN0aWvDvGJlcnNpY2h0IHZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ0FuZnJhZ2VudGFiZWxsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1NlbmRlemVpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdBYnN0aW1tdW5nc3plaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1NpZWhlIERldGFpbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdVbWZyYWdlc3RhdGlzdGlrZGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnWnVyw7xjayB6dXIgw5xiZXJzaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdVbWZyYWdlaW5mb3JtYXRpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnR2VzZW5kZXRlIEFuZnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdFcmhhbHRlbmUgVW1mcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdVbWZyYWdlZGV0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXInfSA9ICdOdW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnVGlja2V0LURpZW5zdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcmFmaWsgVW1mcmFnZWVyZ2Vibmlzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ0tlaW5lIFN0YXRpc3Rpa2VyZ2Vibmlzc2UuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1VtZnJhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdCaXR0ZSBiZWFudHdvcnRlbiBTaWUgZGllc2UgRnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ1plaWdlIG1laW5lIEFudHdvcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnRGllcyBzaW5kIElocmUgQW50d29ydGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1VtZnJhZ2V0aXRlbCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnTmV1ZSBVbWZyYWdlIGhpbnp1ZsO8Z2VuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ1NpZSBoYWJlbiBrZWluZSBCZXJlY2h0aWd1bmcgZsO8ciBkaWVzZSBVbWZyYWdlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdVbWZyYWdlIGJlYXJiZWl0ZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0ZyYWdlbiBkZXIgVW1mcmFnZSBiZWFyYmVpdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0phL05laW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnT3B0aW9uc3NjaGFsdGVyIChMaXN0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnS29udHJvbGxrw6RzdGNoZW4gKExpc3RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0ZyYWdldHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnVm9sbHN0w6RuZGlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdVbnZvbGxzdMOkbmRpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRnJhZ2UgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0FudHdvcnQgYmVhcmJlaXRlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIEtlaW5lIFF1ZXVlIGF1c2dld8OkaGx0IC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05ldWVyIFN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdVbWZyYWdlIEJlc2NocmVpYnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ2JlYW50d29ydGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25pY2h0IGJlYW50d29ydGV0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdEYW5rZSBmw7xyIElociBGZWVkYmFjay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdEaWUgVW1mcmFnZSBpc3QgYmVlbmRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnVW1mcmFnZW5hY2hyaWNodCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ01vZHVsIG5pY2h0IGFraXZpZXJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnVW1mcmFnZWZlaGxlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnVW1mcmFnZXN0aW1tZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdTaWUgaGFiZW4gZGllIFVtZnJhZ2Ugc2Nob24gYmVhbnR3b3J0ZXQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdXb2xsZW4gU2llIGRpZXNlIEZyYWdlIHdpcmtsaWNoIGzDtnNjaGVuPyBBbGxlIGRhcmluIGVudGhhbHRlbmVuIERhdGVuIHdlcmRlbiBHRUzDllNDSFQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnV29sbGVuIFNpZSBkaWVzZSBGcmFnZSB3aXJrbGljaCBsw7ZzY2hlbj8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRWluIFVtZnJhZ2Vtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VpbiBNb2R1bCwgdW0gVW1mcmFnZW4genUgYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FsbGUgUGFyYW1ldGVyIGbDvHIgZGFzIFVtZnJhZ2Vtb2R1bCBpbiBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnQW56YWhsIGFuIFRhZ2VuIG5hY2ggZGVtIFZlcnNhbmQgZWluZXIgVW1mcmFnZS1FLU1haWwgaW4gZGVuZW4ga2VpbmUgbmV1ZSBVbWZyYWdlLUUtTWFpbCBhbiBkZW4gZ2xlaWNoZW4gS3VuZGVuIHZlcnNlbmRldCB3aXJkLiBXw6RobGVuIHNpZSAwLCB1bSBpbW1lciBVbWZyYWdlLUUtTWFpbHMgenUgdmVyc2VuZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdWb3JlaW5nZXN0ZWxsdGVyIFRleHQgZsO8ciBCZW5hY2hyaWNodGlndW5ncy1FLU1haWxzIGFuIGRlbiBLdW5kZW4gw7xiZXIgbmV1ZSBVbWZyYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdWb3JlaW5nZXN0ZWxsdGVyIEFic2VuZGVyIGbDvHIgQmVuYWNocmljaHRpZ3VuZ3MtRS1NYWlscyBhbiBkZW4gS3VuZGVuIMO8YmVyIG5ldWUgVW1mcmFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1ZvcmVpbmdlc3RlbGx0ZXIgQmV0cmVmZiBmw7xyIEJlbmFjaHJpY2h0aWd1bmdzLUUtTWFpbHMgYW4gZGVuIEt1bmRlbiDDvGJlciBuZXVlIFVtZnJhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdEZWZpbmllcnQgZWluIMOcYmVyc2ljaHRzbW9kdWwsIGRhc3MgZWluZSBMaXN0ZSBhbGxlciBVbWZyYWdlbiBhbnplaWd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgbWF4aW1hbGUgQW56YWhsIHZvbiBVbWZyYWdlbiBkaWUgZWluIEt1bmRlIGlubmVyaGFsYiB2b24gMzAgVGFnZW4genVnZXNhbmR0IGJla29tbXQuICggMCBzdGVodCBmw7xyIGtlaW4gTWF4aW11bSwgYWxsZSBVbWZyYWdlLUUtTWFpbHMgd2VyZGVuIHZlcnNhbmR0LiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgQW56YWhsIGFuIFN0dW5kZW4gZsO8ciBkaWUgZWluIFRpY2tldCBnZXNjaGxvc3NlbiBzZWluIG11c3MgdW0gZGVuIFZlcnNhbmQgZWluZXIgVW1mcmFnZSBhdXN6dWzDtnNlbiAoIDAgYmVkZXV0ZXQsIHNvZm9ydCBuYWNoIFNjaGxpZcOfZW4gZWluZXMgVGlja2V0cyBzZW5kZW4gKS4gSGlud2VpczogRGFzIGFic2VuZGVuIGRlciB2ZXJ6w7ZnZXJ0ZW4gVW1mcmFnZSB3aXJkIGR1cmNoIGRlbiBPVFJTIERhZW1vbiBlcmxlZGlndCwgdm9yaGVyaWdlIEFrdGl2aWVydW5nIGR1cmNoIGRpZSBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgRWluc3RlbGx1bmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN0YW5kYXJkaMO2aGUgZWluZXMgV1lTSVdZRy1CZXJlaWNocyBmw7xyIGRpZSBVbWZyYWdlZGV0YWlsYW5zaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBhbmdlemVpZ3RlbiBTcGFsdGVuIGRlciBVbWZyYWdlIMOcYmVyc2ljaHQuIERpZXNlIE9wdGlvbiBoYXQga2VpbmUgQXVzd2lya3VuZyBhdWYgZGllIFBvc2l0aW9uIGRlciBTcGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdGcmFnZW4gYmVhcmJlaXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmllcmVuIG9kZXIgZGVha3RpdmllcmVuIGRpZSBTaG93Vm90ZURhdGEgQW56ZWlnZW4gaW4gZGVyIMO2ZmZlbnRsaWNoZW4gT2JlcmZsw6RjaGUsIHVtIEFic3RpbW11bmdzZGF0ZW4gYW56dXplaWdlbiwgd2VuIGVpbiBLdW5kZSB2ZXJzdWNodCwgZWluIHp3ZWl0ZXMgbWFsIGFienVzdGltbWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FrdGl2aWVyZW4gb2RlciBkZWFrdGl2aWVyZW4gZGVyIFZlcnNhbmRiZWRpbmd1bmdzcHLDvGZ1bmcgZsO8ciBkZW4gRGllbnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FrdGl2aWVyZW4gb2RlciBkZWFrdGl2aWVyZW4gZGVyIFZlcnNhbmRiZWRpbmd1bmdzcHLDvGZ1bmcgZsO8ciBkZW4gVGlja2V0dHlwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGFzIEhpbnp1ZsO8Z2VuIGVpbmVyIFVtZnJhZ2UgaW4gZGVyIEFnZW50ZW4tT2JlcmZsw6RjaGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGllIFVtZnJhZ2ViZWFyYmVpdHVuZyBpbiBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZC1Nb2R1bC1SZWdpc3RyaWVydW5nIGbDvHIgZGllIFVtZnJhZ2VkZXRhaWxhbnNpY2h0IGluIGRlciBBZ2VudGVuLU9iZXJmbMOkY2hlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQtTW9kdWwtUmVnaXN0cmllcnVuZyBmw7xyIGRpZSBVbWZyYWdlZGV0YWlsYW5zaWNodCBpbiBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kLU1vZHVsLVJlZ2lzdHJpZXJ1bmcgZsO8ciBkaWUgw7ZmZmVudGxpY2hlIFVtZnJhZ2XDvGJlcnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnV2VubiBkaWVzZXIgcmVndWzDpHJlIEF1c2RydWNrIHp1dHJpZmZ0LCB3aXJkIGtlaW5lIFVtZnJhZ2UgYW4gZGVuIEt1bmRlbiBnZXNlbmRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgU2VpdGVuIGRlciBVbWZyYWdlw7xiZXJzaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfDlmZmZW50bGljaGUgVW1mcmFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW0gTWVuw7wgZGVyIFpvb20tQW5zaWNodCBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZSBhbiwgZGVyIGVzIGVybcO2Z2xpY2h0IGVpbmUgVW1mcmFnZSB6dSBiZWFyYmVpdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1plaWd0IGVpbmVuIExpbmsgaW0gTWVuw7wgaW4gWm9vbS1BbnNpY2h0IGRlciBBZ2VudGVuLU9iZXJmbMOkY2hlIGFuLCBkZXIgZXMgZXJtw7ZnbGljaHQgZGllIEZyYWdlbiBlaW5lciBVbWZyYWdlIHp1IGJlYXJiZWl0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGltIE1lbsO8IGluIFpvb20tQW5zaWNodCBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZSBhbiwgbWl0IGRlbSB6dW0gVW1mcmFnZS1ab29tIHp1csO8Y2tnZWdhbmdlbiB3ZXJkZW4ga2Fubi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaZWlndCBlaW5lbiBMaW5rIGltIE1lbsO8IGluIFpvb20tQW5zaWNodCBkZXIgQWdlbnRlbi1PYmVyZmzDpGNoZSBhbiwgbWl0IGRlbSBkaWUgRGV0YWlscyBlaW5lciBVbWZyYWdlIGFuZ2V6ZWlndCB3ZXJkZW4ga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ1N0YXRpc3Rpa2RldGFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICdVbWZyYWdlIE1vZHVsIGhpbnp1ZsO8Z2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdVbWZyYWdlIGJlYXJiZWl0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdVbWZyYWdlw7xiZXJzaWNodCAiS2xlaW5lcyIgTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdVbWZyYWdlc3RhdGlzdGlrbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdVbWZyYWdlZGV0YWlsYW5zaWNodG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ1VtZnJhZ2VuIHdlcmRlbiBuaWNodCBhbiBkaWUga29uZmlndXJpZXJ0ZW4gRS1NYWlsLUFkcmVzc2VuIGdlc2VuZGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnRGllIGVpbmRldXRpZ2UgQmV6ZWljaG51bmcgZsO8ciBlaW5lIFVtZnJhZ2UsIHouIEIuIFN1cnZleSMgb2RlciBNeVN1cnZleSMuIFN0YW5kYXJkIGlzdCBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnVGlja2V0LUV2ZW50LU1vZHVsLCB1bSBhdXRvbWF0aXNjaCBVbWZyYWdlLUUtTWFpbHMgYW4gS3VuZGVuIHp1IHNlbmRlbiwgd2VubiBlaW4gVGlja2V0IGdlc2NobG9zc2VuIHdpcmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ0F1c2zDtnNlciB6dW0gU2VuZGVuIHZvbiB2ZXJ6w7ZnZXJ0ZW4gQW5mcmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXNfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQ3JlYXIgTnVldmEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWNjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWNjacOzbiBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0N1ZXJwbyBkZSBOb3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG9zIGRlIFRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gSW50ZXJuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnRWRpdGFyIGluZm9ybWFjacOzbiBHZW5lcmFsJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdVc3RlZCBlc3TDoSBhcXXDrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1ByZWd1bnRhcyBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdBZ3JlZ2FyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmliYSBsYSBwcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSZXNwdWVzdGEgcmVxdWVyaWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTm8gaGF5IHByZWd1bnRhcyBndWFyZGFkYXMgcGFyYSBlc3RhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1ByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jlc3B1ZXN0YSBSZXF1ZXJpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1YW5kbyB0ZXJtaW5lIGRlIGVkaXRhciBsYXMgcHJlZ3VudGFzIGRlIGxhIGVuY3Vlc3RhLCBjaWVycmUgZXN0YSB2ZW50YW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ0NlcnJhciDDqXN0YSB2ZW50YW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0YXIgUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdyZWdyZXNhciBhIHByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdQcmVndW50YTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdQb3NpYmxlcyByZXNwdWVzdGFzIHBhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0FncmVnYXIgUmVzcHVlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnTm8gaGF5IHJlc3B1ZXN0YXMgYWxtYWNlbmFkYXMgcGFyYSBlc3RhIHByZWd1bnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRXN0YSBwcmVndW50YSBubyB0aWVuZSB2YXJpYXMgcmVzcHVlc3RhcywgdW4gYXJlYSBkZSB0ZXh0byBzZXLDoSBtb3N0cmFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkaXRhciBSZXNwdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAndm9sdmVyIGEgZWRpdGFyIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdSZXNwdWVzdGE6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnRW5jdWVzdGFzIG1vc3RyYWRhcyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnUmVtaXRlbnRlIGRlIE5vdGlmaWNhY2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ0FzdW50byBkZSBOb3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYWRvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdSZXN1bWVuIGRlIEVzdGFkw61zdGljYXMgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJsYSBkZSBTb2xpY2l0dWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1RpZW1wbyBkZSBFbnbDrW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnVGllbXBvIGRlIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZlciBEZXRhbGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVzdGFkaXN0aWNhcyBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAncmVncmVzYXIgYSByZXPDum1lbiBkZSBlc3RhZGlzdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdTb2xpY2l0dWRlcyBlbnZpYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnRW5jdWVzdGFzIHJlY2liaWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIGVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlcid9ID0gJ07Dum1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnU2VydmljaW9zIGRlIFRpY2tldHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcsOhZmljYSBkZSBSZXN1bHRhZG9zIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdObyBoYXkgZ3JhZmljYXMgZGUgcmVzdWx0YWRvcy4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQb3IgZmF2b3IgY29udGVzdGUgZXN0YXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ01vc3RyYXIgbWlzIHJlc3B1ZXN0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHNvbiBzdXMgcmVzcHVlc3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUw610dWxvIGRlIGxhIEVuY3Vlc3RhICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnQcOxYWRpciBudWV2YSBFbmN1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICfCoU5vIHRpZW5lIHBlcm1pc28gcGFyYSBlc3RhIGVuY3Vlc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGRhIG5pbmd1bmEgaWRlbnRpZmljYWNpw7NuIGRlIGxhIGVuY3Vlc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBFbmN1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICfCoU5vIHRpZW5lIHBlcm1pc28gcGFyYSBlc3RhIGVuY3Vlc3RhIG8gcHJlZ3VudGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnwqFObyB0aWVuZSBwZXJtaXNvIHBhcmEgZXN0YSBlbmN1ZXN0YSwgcHJlZ3VudGEgbyByZXNwdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMgZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnU2kvTm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnT3BjacOzbiAobGlzdGEpICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdDYXNpbGxhIGRlIHZlcmlmaWNhY2nDs24gKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcG8gZGUgUHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdDb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnSW5jb21wbGV0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRWRpdGFyIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdGFyIFJlc3B1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIE5vIHNlIGhhIHNlbGVjY2lvbmFkbyBuaW5ndW5hIGNvbGEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnTnVldm8gRXN0YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ3Jlc3BvbmRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbm8gcmVzcG9uZGlkbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnR3JhY2lhcyBwb3IgdHVzIGNvbWVudGFyaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xhIGVuY3Vlc3RhIGhhIHRlcm1pbmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnwqFNZW5zYWplIGRlIEVuY3Vlc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnTcOzZHVsbyBubyBoYWJpbGl0YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJ0VzdGEgZnVuY2nDs24gbm8gZXN0w6EgaGFiaWxpdGFkYSwgcMOzbmdhc2UgZW4gY29udGFjdG8gY29uIHN1IGFkbWluaXN0cmFkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICfCoUVycm9yIGVuIGxhIGVuY3Vlc3RhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnQ2xhdmUgZGUgZW5jdWVzdGEgbm8gdsOhbGlkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJ0xhIGNsYXZlIGRlIGVuY3Vlc3RhIGluc2VydGFkYSBubyBlcyB2YWxpZGEsIHNpIHNpZ3Vpw7MgdW4gdsOtbmN1bG8gdGFsIHZleiBlc3RlIG9ic29sZXRvIG8gcm90by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICdWb3RvIGRlIGxhIGVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICdEYXRvcyBkZSB2b3RhY2nDs24gZGUgbGEgZW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ1VzdGVkIHlhIGhhIGNvbnRlc3RhZG8gZXN0YSBlbmN1ZXN0YS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ8K/UmVhbG1lbnRlIGRlc2VhIGVsaW1pbmFyIGVzdGEgcHJlZ3VudGE/IFRPRE9TIGxvcyBkYXRvcyBhc29jaWFkb3Mgc2UgUEVSREVSw4FOISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ8K/UmVhbG1lbnRlIGRlc2VhIGVsaW1pbmFyIGVzdGEgcmVzcHVlc3RhPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBNw7NkdWxvIGRlIEVuY3Vlc3Rhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VuIG3Ds2R1bG8gcGFyYSBlZGl0YXIgbGFzIHByZWd1bnRhcyBkZSB1bmEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9kb3MgbG9zIHBhcmFtZXRyb3MgcGFyYSBlbCBvYmpldG8gRW5jdWVzdGEgZW4gbGEgaW50ZXJmYXNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnQ2FudGlkYWQgZGUgZMOtYXMgZGVzcHXDqXMgZGUgaGFiZXIgbWFuZGFuZG8gdW4gY29ycmVvIGVsZWN0csOzbmljbyBkZSBlbmN1ZXN0YSBlbiBsb3MgcXVlIG5vIHNlIG1hbmRhcsOhbiBudWV2YXMgZW5jdWVzdGFzIGhhY2lhIGVsIG1pc21vIGNsaWVudGUuIFNlbGVjY2lvbmFyIDAgbWFuZGFyw6EgbnVldm9zIGNvcnJlb3MgZWxlY3Ryw7NuaWNvcyBkZSBlbmN1ZXN0YSBzaWVtcHJlLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQ3VlcnBvIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1JlbWl0ZW50ZSBkZWZhdWx0IHBhcmEgZWwgZW1haWwgZGUgbm90aWZpY2FjacOzbiBhIGxvcyBjbGllbnRlcyBzb2JyZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQXN1bnRvIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW5hIG3Ds2R1bG8gcmVzdW1lbiBwYXJhIG1vc3RyYXIgbGEgdmlzdGEgcGVxdWXDsWEgZGUgbGEgbGlzdGEgZGUgZW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIGdydXBvcyBxdWUgdGllbmVuIHBlcm1pc28gcGFyYSBjYW1iaWFyIGVsIGVzdGFkbyBkZSBsYSBlbmN1ZXN0YS4gTGEgbWF0cml6IGVzdMOhIHZhY8OtYSBwb3IgZGVmZWN0byB5IGxvcyBhZ2VudGVzIGRlIHRvZG9zIGxvcyBncnVwb3MgcHVlZGVuIGNhbWJpYXIgZWwgZXN0YWRvIGRlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGNhbnRpZGFkIG3DoXhpbWEgZGUgZW5jdWVzdGFzIHF1ZSBzZSBtYW5kYXLDoW4gYSB1biBjbGllbnRlIGNhZGEgMzAgZMOtYXMuICggMCBzaWduaWZpY2EgcXVlIG5vIGhheSB1biBtw6F4aW1vLCB0b2RhcyBsYXMgZW5jdWVzdGFzIHNlcsOhbiBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICdEZWZpbmUgbGEgY2FudGlkYWQgZW4gaG9yYXMgZW4gcXVlIHNlIGRlYmUgY2VycmFyIHVuIHRpY2tldCBwYXJhIGFjdGl2YXIgZWwgZW52w61vIGRlIHVuYSBlbmN1ZXN0YSwgKDAgc2lnbmlmaWNhIGVudmlhciBpbm1lZGlhdGFtZW50ZSBkZXNwdcOpcyBkZWwgY2llcnJlKS4gTm90YTogZWwgZW52w61vIHRhcmTDrW8gZGUgbGEgZW5jdWVzdGEgZXMgcmVhbGl6YWRvIHBvciBEYWVtb24gT1RSUywgcHJldmlhIGFjdGl2YWNpw7NuIGRlIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBwcmVkZWZpbmlkYSBwYXJhIGxhIHZpc3RhIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgbG9zIGVsZW1lbnRvcyBkZSBsYSBwYW50YWxsIGRlIGRldGFsbGUgZGUgZXN0YWRpc3RpY2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBtw6F4aW1hIHBhcmEgbGFzIHZpc3RhcyBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGxvcyBlbGVtZW50b3MgZGUgem9vbSBkZSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgcmVzdW1lbiBkZSBlbmN1ZXN0YXMuIEVzdGEgb3BjacOzbiBubyB0aWVuZW4gbmluZ8O6biBlZmVjdG8gZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ0VkaXRhciBpbmZvcm1hY2nDs24gZ2VuZXJhbCBkZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VkaXRhciBwcmVndW50YXMgZGUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2YSBvIGRlc2FjdGl2YSBsYSBwYW50YWxsYSBkZSAiTW9zdHJhciBEYXRvcyBkZSBWb3RvcyIgZW4gbGEgaW50ZXJmYWNlIHDDumJsaWNhIHBhcmEgbW9zdHJhciBsb3MgcmVzdWx0YWRvcyBkZSB1bmEgZW5jdWVzdGEgZXNwZWPDrWZpY2EgY3VhbmRvIHVuIGNsaWVudGUgcXVpZXJlIHJlc3BvbmRlciB1bmEgZW5jdWVzdGEgcG9yIHNlZ3VuZGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FjdGl2YSBvIGRlc2FjdGl2YSBsYSBjb21wcm9iYWNpw7NuIGRlIGxhIGNvbmRpY2nDs24gZGUgZW52w61vIHBhcmEgZWwgc2VydmljaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnQWN0aXZhIG8gZGVzYWN0aXZhIGxhIGNvbXByb2JhY2nDs24gZGUgbGEgY29uZGljacOzbiBkZSBlbnbDrW8gcGFyYSBlbCB0aXBvIGRlIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlBZGQgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleUVkaXQgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlTdGF0cyBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5Wm9vbSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgUHVibGljU3VydmV5IGVuIGxhIGludGVyZmFjZSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NpIGVzdGEgZXhwcmVzacOzbiByZWd1bGFyIGNvbmN1ZXJkYSwgbm8gc2UgZW52aWFyw6EgbmluZ3VuYSBlbmN1ZXN0YSBhbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyb3MgcGFyYSBsYXMgcMOhZ2luYXMgKGVuIHF1ZSBsYXMgZW5jdWVzdGFzIHNvbiBtb3N0cmFkYXMpIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnRW5jdWVzdGEgUMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IGRlIGVkaWNpw7NuIGRlIHVuYSBlbmN1ZXN0YSBlbiBzdSB2aXN0YSBkZSBkZXRhbGxlIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogZGUgZWRpY2nDs24gcHJlZ3VudGFzIGRlIHVuYSBlbmN1ZXN0YSBlbiBzdSB2aXN0YSBkZSBkZXRhbGxlIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBwYXJhIGlyIGhhY2lhIGF0csOhcyBlbiB2aXN0YSBkZSBkZXRhbGxlIGRlIHVuYSBlbmN1ZXN0YSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IHBhcmEgaXIgZGV0YWxsZSBkZSBsYXMgZXN0YWTDrXN0aWNhcyBkZSB1bmEgZW5jdWVzdGEgZW4gc3UgdmlzdGEgZGUgZGV0YWxsZSBlbiBsYSBpbnRlcmZhY2UgZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVzdGFkw61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnQWdyZWdhciBtw7NkdWxvIGRlIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBFZGljacOzbiBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdGUgZGUgbGEgdmlzdGEgZGUgcmVzdW1lbiBwZXF1ZcOxYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIFN0YWTDrXN0aWNhcyBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ01vZHVsbyBkZSBEZXRhbGxlIGRlIEVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJ0zDrW1pdGUgZGUgZW5jdWVzdGFzIHBvciBww6FnaW5hIHBhcmEgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbmN1ZXN0YSDCq3BlcXVlw7FhwrsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnTGFzIGVuY3Vlc3RhcyBubyBkZSBtYW5kYXLDoW4gYSBsYXMgZGlyZWNjaW9uZXMgZGUgY29ycmVvIGVsZWN0csOzbmljbyBhcXXDrSBjb25maWd1cmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdFbCBpZGVudGlmaWNhZG9yIHBhcmEgdW5hIGVuY3Vlc3RhLCBlamVtcGxvIFN1cnZleSMsIE15U3VydmV5Iy4gUG9yIGRlZmVjdG8gZXMgU3VydmV5Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyBhIGRlc2NyaXB0aW9uIGZvciBTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIG9uIFN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIHRpY2tldCBxdWUgbWFuZGEgY29ycmVvcyBlbGVjdHLDs25pY29zIGRlIGVuY3Vlc3RhcyBoYWNpYSBsb3MgY2xpZW50ZXMgc2kgdW4gdGlja2V0IGVzIGNlcnJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ0Rlc2VuY2FkZW5hciBlbCBlbnbDrW8gZGUgc29saWNpdHVkZXMgZGUgZW5jdWVzdGEgY29uIHJldHJhc28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnSXIgYSBsb3MgZGV0YWxsZXMgZGUgbGEgRXN0YWTDrXN0aWNhLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZXNfTVhfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQ3JlYXIgTnVldmEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWNjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWNjacOzbiBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0N1ZXJwbyBkZSBOb3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1RpcG9zIGRlIFRpY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXBjacOzbiBJbnRlcm5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdFZGl0YXIgaW5mb3JtYWNpw7NuIEdlbmVyYWwnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdFZGl0YXIgUHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ1VzdGVkIGVzdMOhIGFxdcOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQcmVndW50YXMgZGUgRXN0YWRpc3RpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWdyZWdhciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0VzY3JpYmEgbGEgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnUmVzcHVlc3RhIHJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ05vIGhheSBwcmVndW50YXMgYWxtYWNlbmFkYXMgcGFyYSBlc3RhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1ByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jlc3B1ZXN0YSBSZXF1ZXJpZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1YW5kbyBoYXlhIHRlcm1pbmFkbyBkZSBlZGl0YXIgc3UgZW5jdWVzdGEgc29sbyBjaWVycmUgZXN0YSBwYW50YWxsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0VkaXRhciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3JlZ3Jlc2FyIGEgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ1ByZWd1bnRhOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ1Bvc2libGVzIHJlc3B1ZXN0YXMgcGFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWdyZWdhciBSZXNwdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdObyBoYXkgcmVzcHVlc3RhcyBhbG1hY2VuYWRhcyBwYXJhIGVzdGEgcHJlZ3VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdFc3RhIHByZWd1bnRhIG5vIHRpZW5lIHZhcmlhcyByZXNwdWVzdGFzLCB1biBhcmVhIGRlIHRleHRvIHNlcsOhIG1vc3RyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdGFyIFJlc3B1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICd2b2x2ZXIgYSBlZGl0YXIgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ1Jlc3B1ZXN0YTonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdOw7ptLiBNw6F4aW1vIGRlIGVuY3Vlc3RhcyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnUmVtaXRlbnRlIGRlIE5vdGlmaWNhY2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ0FzdW50byBkZSBOb3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYWNvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdSZXN1bWVuIGRlIEVzdGFkw61zdGljYXMgZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJsYSBkZSBTb2xpY2l0dWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1RpZW1wbyBkZSBFbnbDrW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnVGllbXBvIGRlIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZlciBEZXRhbGxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsbGVzIGRlIEVzdGFkaXN0aWNhcyBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAncmVncmVzYXIgYSByZXPDum1lbiBkZSBlc3RhZGlzdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRlIEVuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdTb2xpY2l0dWRlcyBlbnZpYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnU29saWNpdHVkZXMgcmVjaWJpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgZGUgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAnTsO6bWVybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdTZXJ2aWNpb3MgZGUgVGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYWZpY2EgZGUgUmVzdWx0YWRvcyBkZSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTm8gaGF5IGdyYWZpY2FzIGRlIHJlc3VsdGFkb3MuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0VuY3Vlc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnUG9yIGZhdm9yIGNvbnRlc3RlIGVzdGFzIHByZWd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdNb3N0cmFyIG1pcyByZXNwdWVzdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdFc3RhcyBzb24gc3VzIHJlc3B1ZXN0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVMOtdHVsbyBkZSBsYSBFbmN1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnQcOxYWRpciBOdWV2YSBFbmN1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICdVc3RlZCBub3QgdGllbmUgcGVybWlzb3MgZW4gZXN0YSBlbmN1ZXN0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgZGFkbyBlbCBTdXJ2ZXlJRCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBFbmN1ZXN0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICdVc3RlZCBubyB0aWVuZSBwZXJtaXNvcyBlbiBlc3RhIGVuY3Vlc3RhIG8gcHJlZ3VudGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnVXN0ZWQgbm8gdGllbmUgcGVybWlzb3MgZW4gZXN0YSBlbmN1ZXN0YSwgcHJlZ3VudGEgbyByZXNwdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQcmVndW50YXMgZGUgRXN0YWTDrXN0aWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ1NpL05vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ09wY2nDs24gKGxpc3RhKSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnQ2FzaWxsYSBkZSB2ZXJpZmljYWNpw7NuIChsaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUaXBvIGRlIFByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnQ29tcGxldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0luY29tcGxldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkaXRhciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0VkaXRhciBSZXNwdWVzdGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBObyBzZSBoYSBzZWxlY2Npb25hZG8gbmluZ3VuYSBjb2xhIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ051ZXZvIEVzdGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdyZXNwb25kaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25vIHJlc3BvbmRpZG8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0dyYWNpYXMgcG9yIHN1IHJldHJvYWxpbWVudGFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xhIGVuY3Vlc3RhIGhhIHRlcm1pbmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnTWVuc2FqZSBkZSBsYSBFbmN1ZXN0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ03Ds2R1bG8gbm8gaGFiaWxpdGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICdFc3RhIGZ1bmNpb25hbGlkYWQgbm8gZXN0YSBoYWJpbGl0YWRhLCBwb3IgZmF2b3IgY29udGFjdGUgYWwgYWRtaW5pc3RyYWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnRXJyb3IgZW4gbGEgRW5jdWVzdGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICdMbGF2ZSBkZSBlbmN1ZXN0YSBpbnbDoWxpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICdMYSBsbGF2ZSBpbnNlcnRhZGEgZGUgbGEgZW5jdWVzdGEgZXMgaW52w6FsaWRhLCAgc2kgaGEgc2VndWlkbyB1bmEgbGlnYSwgcXVpesOhIGVzdGUgb2Jzb2xldGEgbyByb3RhLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICdWb3RhY2nDs24gZGUgbGEgRW5jdWVzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0RhdG9zIGRlIFZvdGFjacOzbiBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVXN0ZWQgeWEgaGEgY29udGVzdGFkbyBlc3RhIGVuY3Vlc3RhLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUISd9ID0KICAgICAgICAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSBwcmVndW50YT8gVE9ET1MgbG9zIGRhdG9zIGFzb2NpYWRvcyBkZSBQRVJERVLDgU4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnwr9SZWFsbWVudGUgZGVzZWEgZWxpbWluYXIgZXN0YSByZXNwdWVzdGE/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ1VuIE3Ds2R1bG8gZGUgRW5jdWVzdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW4gbcOzZHVsbyBwYXJhIGVkaXRhciBsYXMgcHJlZ3VudGFzIGRlIHVuYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb2RvcyBsb3MgcGFyYW1ldHJvcyBwYXJhIGVsIG9iamV0byBFbmN1ZXN0YSBlbiBsYSBpbnRlcmZhc2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdDYW50aWRhZCBkZSBkw61hcyBkZXNwdcOpcyBkZSBoYWJlciBtYW5kYW5kbyB1biBjb3JyZW8gZWxlY3Ryw7NuaWNvIGRlIGVuY3Vlc3RhIGVuIGxvcyBxdWUgbm8gc2UgbWFuZGFyw6FuIG51ZXZhcyBlbmN1ZXN0YXMgaGFjaWEgZWwgbWlzbW8gY2xpZW50ZS4gU2VsZWNjaW9uYXIgMCBtYW5kYXLDoSBudWV2b3MgY29ycmVvcyBlbGVjdHLDs25pY29zIGRlIGVuY3Vlc3RhIHNpZW1wcmUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdDdWVycG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnUmVtaXRlbnRlIGRlZmF1bHQgcGFyYSBlbCBlbWFpbCBkZSBub3RpZmljYWNpw7NuIGEgbG9zIGNsaWVudGVzIHNvYnJlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBc3VudG8gZGVmYXVsdCBwYXJhIGVsIGVtYWlsIGRlIG5vdGlmaWNhY2nDs24gYSBsb3MgY2xpZW50ZXMgc29icmUgbGEgZW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bmEgbcOzZHVsbyByZXN1bWVuIHBhcmEgbW9zdHJhciBsYSB2aXN0YSBwZXF1ZcOxYSBkZSBsYSBsaXN0YSBkZSBlbmN1ZXN0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGNhbnRpZGFkIG3DoXhpbWEgZGUgZW5jdWVzdGFzIHF1ZSBzZSBtYW5kYXLDoW4gYSB1biBjbGllbnRlIGNhZGEgMzAgZMOtYXMuICggMCBzaWduaWZpY2EgcXVlIG5vIGhheSB1biBtw6F4aW1vLCB0b2RhcyBsYXMgZW5jdWVzdGFzIHNlcsOhbiBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgcHJlZGVmaW5pZGEgcGFyYSBsYSB2aXN0YSBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGxvcyBlbGVtZW50b3MgZGUgbGEgcGFudGFsbCBkZSBkZXRhbGxlIGRlIGVzdGFkaXN0aWNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYSBhbHR1cmEgbcOheGltYSBwYXJhIGxhIHZpc3RhIGRlIHRleHRvIGVucmlxdWVjaWRvIHBhcmEgbG9zIGVsZW1lbnRvcyBkZSBsYSBwYW50YWxsYSBkZSBkZXRhbGxlIGRlIGVzdGFkaXN0aWNhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgcXVlIHNlIG1vc3RyYXLDoW4gZW4gZWwgcmVzdW1lbiBkZSBlbmN1ZXN0YXMuIEVzdGEgb3BjacOzbiBubyB0aWVuZW4gbmluZ8O6biBlZmVjdG8gZW4gbGEgcG9zaWNpw7NuIGRlIGxhcyBjb2x1bW5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ0VkaXRhciBsYSBpbmZvcm1hY2nDs24gZ2VuZXJhbCBkZSBsYSBlbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VkaXRhciBsYXMgcHJlZ3VudGFzIGRlIGxhIGVuY3Vlc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdBY3RpdmEgbyBkZXNhY3RpdmEgbGEgcGFudGFsbGEgZGUgIk1vc3RyYXIgRGF0b3MgZGUgVm90b3MiIGVuIGxhIGludGVyZmFjZSBww7pibGljYSBwYXJhIG1vc3RyYXIgbG9zIHJlc3VsdGFkb3MgZGUgdW5hIGVuY3Vlc3RhIGVzcGVjw61maWNhIGN1YW5kbyB1biBjbGllbnRlIHF1aWVyZSByZXNwb25kZXIgdW5hIGVuY3Vlc3RhIHBvciBzZWd1bmRhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdBY3RpdmEgbyBkZXNhY3RpdmEgbGEgY29tcHJvYmFjacOzbiBkZSBsYSBjb25kaWNpw7NuIGRlIGVudsOtbyBwYXJhIGVsIHNlcnZpY2lvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FjdGl2YSBvIGRlc2FjdGl2YSBsYSBjb21wcm9iYWNpw7NuIGRlIGxhIGNvbmRpY2nDs24gZGUgZW52w61vIHBhcmEgZWwgdGlwbyBkZSB0aWNrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5QWRkIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBmcm9udGVuZCBTdXJ2ZXlFZGl0IGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZnJvbnRlbmQgU3VydmV5U3RhdHMgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFN1cnZleVpvb20gZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGZyb250ZW5kIFB1YmxpY1N1cnZleSBlbiBsYSBpbnRlcmZhY2UgcMO6YmxpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdTaSBlc3RhIGV4cHJlc2nDs24gcmVndWxhciBjb25jdWVyZGEsIGxhIGVuY3Vlc3RhIG5vIHNlcsOhIGVudmlhZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldHJvcyBwYXJhIGxhcyBww6FnaW5hcyAoZW4gcXVlIGxhcyBlbmN1ZXN0YXMgc29uIG1vc3RyYWRhcykgZGUgbGEgdmlzdGEgZGUgcmVzdW1lbiBwZXF1ZcOxYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdFbmN1ZXN0YSBQw7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogZGUgZWRpY2nDs24gZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biB2w61uY3VsbyBlbiBlbCBtZW7DuiBkZSBlZGljacOzbiBwcmVndW50YXMgZGUgdW5hIGVuY3Vlc3RhIGVuIHN1IHZpc3RhIGRlIGRldGFsbGUgZW4gbGEgaW50ZXJmYWNlIGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIHbDrW5jdWxvIGVuIGVsIG1lbsO6IHBhcmEgaXIgaGFjaWEgYXRyw6FzIGVuIHZpc3RhIGRlIGRldGFsbGUgZGUgdW5hIGVuY3Vlc3RhIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gdsOtbmN1bG8gZW4gZWwgbWVuw7ogcGFyYSBpciBkZXRhbGxlIGRlIGxhcyBlc3RhZMOtc3RpY2FzIGRlIHVuYSBlbmN1ZXN0YSBlbiBzdSB2aXN0YSBkZSBkZXRhbGxlIGVuIGxhIGludGVyZmFjZSBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRGV0YWxsZSBkZSBsYSBFbmN1ZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICdNw7NkdWxvIHBhcmEgYWdyZWdhciBFbmN1ZXN0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgRWRpY2nDs24gZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIGRlIGxhIHZpc3RhIGRlIHJlc3VtZW4gcGVxdWXDsWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBTdGFkw61zdGljYXMgZGUgRW5jdWVzdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bG8gZGUgRGV0YWxsZSBkZSBFbmN1ZXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICdMw61taXRlIGRlIGVuY3VlbnRhcyBwb3IgcMOhZ2luYSBwYXJhIGVsIFJlc3VtZW4gZGUgRW5jdWVzdGEgIlBlcXVlw7FvIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdMYXMgZW5jdWVzdGFzIG5vIGRlIG1hbmRhcsOhbiBhIGxhcyBkaXJlY2Npb25lcyBkZSBjb3JyZW8gZWxlY3Ryw7NuaWNvIGFxdcOtIGNvbmZpZ3VyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgcGFyYSB1bmEgZW5jdWVzdGEsIGVqZW1wbG8gU3VydmV5IywgTXlTdXJ2ZXkjLiBQb3IgZGVmZWN0byBlcyBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgdGlja2V0IHF1ZSBtYW5kYSBjb3JyZW9zIGVsZWN0csOzbmljb3MgZGUgZW5jdWVzdGFzIGhhY2lhIGxvcyBjbGllbnRlcyBzaSB1biB0aWNrZXQgZXMgY2VycmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnRGlzcGFyYWRvciBwYXJhIHNvbGljaXR1ZGVzIGRlIGVudsOtbyBkZSBlbmN1ZXN0YXMgcmV0cmFzYWRhcyAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICdJciBhIGxvcyBkZXRhbGxlcyBkZSBsYSBlc3RhZMOtc3RpY2EuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZmlfRklfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQUFBU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIENoYW5nZSBTdGF0dXMgLSd9ID0gJy0gTXV1dGEgdGlsYWEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0xpc8Okw6QgdXVzaSBreXNlbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdNdW9ra2FhIGt5c2VsecOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ011b2trYWEga3lzeW15a3Npw6QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0t5c3lteXN0ZW4gbXVva2thdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdWYXN0YXVzdGVuIG11b2trYXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzZXQgbmV3IHN0YXR1cyEgTm8gcXVlc3Rpb25zIGRlZmluZWQuJ30gPSAnVXVkZW4gdGlsYW4gYXNldHRhbWluZW4gZWkgb25uaXN0dSEgRXQgb2xlIG3DpMOkcml0dMOkbnl0IGt5c3lteWtzacOkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0dXMgY2hhbmdlZC4nfSA9ICdUaWxhIG11dXRldHR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnS2lpdG9zIHBhbGF1dHRlZXN0YXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0t5c2VseSBvbiB2YWxtaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnVmFsbWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdLZXNrZW5lcsOkaW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdWYWxpdHNlIHlrc2kgdGFpIHVzZWFtcGlhIChMaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8nfSA9ICdWYWxpdHNlIHlrc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnVmFsaXRzZSB5a3NpIG1vbmVzdGEgKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyd9ID0gJ1R1bG9zdGVuIHlodGVlbnZldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnS3lzZWx5biBrdXZhdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0t5c2VseW4gZXNpdHRlbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnS3lsbMOkIC8gRWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzTm8nfSA9ICdLeWxsw6QgLyBFaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ1Zhc3Rhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnRWkgdmFzdGFubnV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbCd9ID0gJ1lrc2l0eWlza29odGFpc2V0IHR1bG9rc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdPbGV0IGpvIHZhc3Rhbm51dCB0w6Row6RuIGt5c2VseXluLic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnTHVvIHV1c2kga3lzZWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0VzaXR0ZWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnU2lzw6RpbmVuIGt1dmF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ011b2trYWEgdGlldG9qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm8nfSA9ICdZbGVpc2V0IHRpZWRvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1R1bG9zdGVuIHlodGVlbnZldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnTMOkaGV0eXNhaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ8OEw6RuZXN0eXNhaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdLeXNlbHluIHR1bG9zdGVuIHlrc2l0eWlza29oZGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdtZW5lIHRha2Fpc2luIHlodGVlbnZldG9vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHbyBiYWNrJ30gPSAnVGFrYWlzaW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdNdW9ra2FhIGt5c3lteWtzacOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0xpc8Okw6Qga3lzeW15cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1N5w7Z0w6Qga3lzeW15cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnS3lzZWx5biBreXN5bXlrc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnS3lzeW15cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0t5c2VseXluIGVpIG9sZSB0YWxsZW5uZXR0dSBreXN5bXlrc2nDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ011b2trYWEga3lzeW15c3TDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ21lbmUgdGFrYWlzaW4ga3lzeW15a3NpaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdWYXN0YXVzdmFpaHRvZWhkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0xpc8Okw6QgdmFzdGF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0gJ1TDpHNzw6QgZWkgb2xlIHVzZWl0YSB2YXN0YXVrc2lhLCBuw6R5dGV0w6TDpG4gdGVrc3RpYWx1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdNdW9ra2FhIHZhc3RhdXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICdtZW5lIHRha2Fpc2luIG11b2trYWFtYWFuIGt5c3lteXN0w6QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBTdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdNdWlzdHV0dWtzZW4gbMOkaGV0dMOkasOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnTXVpc3R1dHVrc2VuIG90c2lra28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdNdWlzdHV0dWtzZW4gdmllc3RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNdW9ra2FhamEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnS3lzZWx5biB0aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ0zDpGhldGV0dHlqw6Qga3lzZWx5aXTDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnVmFzdGF1c3RlbiBtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnVHVsb3N0ZW4geWtzaXR5aXNrb2hkYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdLeXNlbHluIHlrc2l0eWlza29oZGF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnVHVsb3N0ZW4gZ3JhYWZpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnRWkgdHVsb2tzaWEuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0t5c2VseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ1Zhc3RhYSBzZXVyYWF2aWluIGt5c3lteWtzaWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ07DpHl0w6QgdmFzdGF1a3NlbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ07DpG3DpCBvdmF0IHZhc3RhdWtzZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ0t5c2VseW4gb3RzaWtrbyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdLeXNlbHlvbWluYWlzdXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdNb2R1dWxpIGt5c2VseWlkZW4gbHVvbnRpaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPSAnJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIEJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZSBuZXh0IHF1ZXN0aW9ucyd9ID0gJyc7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6ZnJfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQ3LDqWVyIG5vdXZlYXUgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdQcsOpc2VudGF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdQcsOpc2VudGF0aW9uIGR1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdDb3JwcyBkZSBsYSBub3RpZmljYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVHlwZXMgZGUgdGlja2V0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXB0aW9uIEludGVybmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ01vZGlmaWVyIEluZm8gZ8OpbsOpcmFsZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ01vZGlmaWVyIFF1ZXN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdWb3VzIMOqdGVzIGljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUXVlc3Rpb25zIEVucXXDqnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdBam91dGVyIFF1ZXN0aW9ucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0VudHJlciBsYSBxdWVzdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdSw6lwb25zZSByZXF1aXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnQXVjdW5lIHF1ZXN0aW9uIHNhdXZlZ2FyZMOpZSBwb3VyIGNldHRlIEVucXXDqnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUXVlc3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnUsOpcG9uc2UgcmVxdWlzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnQXByw6hzIGF2b2lyIHRlcm1pbsOpIGxcJ8OpZGl0aW9uIGR1IHNvbmRhZ2UsIHZvdXMgcG91dmV6IGZlcm1lciBsYSBmZW7DqnRyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ01vZGlmaWVyIFF1ZXN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAnUmV0b3VyIGF1eCBRdWVzdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnUXVlc3Rpb246JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnUG9zc2libGUgcsOpcG9uc2VzIHBvdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0Fqb3V0ZXIgUsOpcG9uc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnUGFzIGRlIHLDqXBvbnNlIHRyb3V2w6kgcG91ciBjZXR0ZSBxdWVzdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ2lsIG5cJ3kgYSBwYXMgZGUgcsOpcG9uc2VzIHBvc3NpYmxlLCB1bmUgem9uZSBkZSB0ZXh0ZSBzZXJhIGFmZmljaMOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ01vZGlmaWVyIFLDqXBvbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ1JldG91ciDDoCBsYSBtb2RpZmljYXRpb24gZGVzIHF1ZXN0aW9ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ1LDqXBvbnNlIDonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdTb25kYWdlcyBtYXhpbXVtIHBhciBwYWdlJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdFeHDDqWRpdGV1ciBkZSBsYSBub3RpZmljYXRpb24gICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1N1amV0IGRlIGxhIG5vdGlmaWNhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnQ2hhbmfDqSBwYXJzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ1N0YXRpc3RpcXVlcyB2dWUgZFwnZW5zZW1ibGUgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFibGVhdSBkZXMgZGVtYW5kZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdUZW1wcyBkZSBsXCdlbnZvaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdUZW1wcyBkZSB2b3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdWb2lyIGxlcyBkw6l0YWlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0TDqXRhaWwgc3RhdGlzdGlxdWUgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnUmV0b3VyIHZ1ZSBkXCdlbnNlbWJsZSBzdGF0aXN0aXF1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBzb25kYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdFbnZvecOpIGRlbWFuZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ1NvbmRhZ2UgcmXDp3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdEw6l0YWlscyBzb25kYWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlcid9ID0gJ05vbWJyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdTZXJ2aWNlIFRpY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYXBoaXF1ZSByw6lzdWx0YXQgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnUGFzIGRlIHN0YXRpc3RpcXVlIHNvbmRhZ2UuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0VucXXDqnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnTWVyY2kgZGUgcsOpcG9uZHJlIMOgIGNlcyBxdWVzdGlvbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnVm9pciBtZXMgcsOpcG9uc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdWb2ljaSB2b3MgcsOpcG9uc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1RpdHJlIEVucXXDqnRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdBam91dGVyIHVuIHNvbmRhZ2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ01vZGlmaWVyIGxlIHNvbmRhZ2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ01vZGlmaWVyIGxlcyBxdWVzdGlvbnMgZHUgc29uZGFnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdPdWkvTm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ0JvdXRvbiBSYWRpbyAoTGlzdGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0Nhc2Ugw6AgY29jaGVyIChMaXN0ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUeXBlIGRlIFF1ZXN0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnVGVybWluw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0luY29tcGxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnTW9kaWZpZXIgbGEgcXVlc3Rpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdNb2RpZmllciBsYSByw6lwb25zZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIEF1Y3VuZSBmaWxlIHPDqWxlY3Rpb25uw6llIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05vdXZlYXUgU3RhdHV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXB0aW9uIGR1IHNvbmRhZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdSw6lwb25kdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdOb24gcsOpcG9uZHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ01lcmNpIHBvdXIgdm90cmUgcmV0b3VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0xlIHNvbmRhZ2UgZXN0IHRlcm1pbsOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdWb3VzIGF2ZXogZMOpasOgIHLDqXBvbmR1IMOgIGNldHRlIEVucXXDqnRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdFdGVzIHZvdXMgc3VyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNldHRlIHF1ZXN0aW9uID8gVG91dGVzIGxlcyBkb25uw6llcyBhc3NvY2nDqWVzIHNlcm9udCBwZXJkdWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0V0ZXMgdm91cyBzdXIgZGUgdm91bG9pciBzdXBwcmltZXIgY2V0dGUgcXVlc3Rpb24gPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdVbiBtb2R1bGUgZFwnRW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VuIG1vZHVsZSBwb3VyIG1vZGlmaWVyIGxlcyBxdWVzdGlvbnMgZFwndW4gc29uZGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUb3VzIGxlcyBwYXJhbcOodHJlcyBwb3VyIGxlIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ05vbWJyZSBkZSBqb3VycyBhcHLDqHMgYXZvaXIgZW52b3nDqSB1biBtYWlsIGRlIHNvbmRhZ2UsIHBlbmRhbnQgbGVxdWVsIGF1Y3VuIG5vdXZlYXUgc29uZGFnZSBuZSBzZXJhIHJlbnZvecOpIGF1IG3Dqm1lIHV0aWxpc2F0ZXVyLiBFbiBjaG9pc2lzc2FudCAwIHVuIG1haWwgZGUgc29uZGFnZSBzZXJhIGVudm95w6kgw6AgY2hhcXVlIGZvaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NvcnBzIHBhciBkw6lmYXV0IGRlIGxhIG5vdGlmaWNhdGlvbiBDbGllbnQgcGFyIG1haWwgw6AgcHJvcG9zIGRcJ3VuZSBub3V2ZWxsZSBlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdFeHDDqWRpdGV1ciBwYXIgZMOpZmF1dCBwb3VyIGxhIG5vdGlmaWNhdGlvbiBDbGllbnQgcGFyIG1haWwgw6AgcHJvcG9zIGRcJ3VuZSBub3V2ZWxsZSBlbnF1w6p0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnU3VqZXQgcGFyIGTDqWZhdXQgcG91ciBsYSBub3RpZmljYXRpb24gQ2xpZW50IHBhciBtYWlsIMOgIHByb3BvcyBkXCd1bmUgbm91dmVsbGUgZW5xdcOqdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIHVuIG1vZHVsZSBk4oCZYXBlcsOndSBvw7kgbW9udHJlciBsYSBsaXN0ZSBkZXMgc29uZGFnZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdEw6lmaW5pIGxlIG5vbWJyZSBtYXhpbXVtIGRcJ2VucXXDqnRlcyBxdWkgc2Vyb250IGVudm95w6llcyBhIHVuIENsaWVudCBwYXIgcMOpcmlvZGUgZGUgMzAgam91cnMuICgwIHNpZ25pZmllIHBhcyBkZSBtYXhpbXVtLCB0b3V0ZXMgbGVzIGVucXXDqnRlcyBzZXJvbnQgZXhww6lkacOpZXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEw6lmaW5pciBsYSBoYXV0ZXVyIHBhciBkw6lmYXV0IGRlIGxhIHZ1ZSB6b29tw6llIGRlcyDDqWzDqW1lbnRzIGR1IHNvbmRhZ2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIGxlcyBjb2xvbm5lcyB2aXNpYmxlIGRlIGzigJlhcGVyw6d1IGR1IHNvbmRhZ2UuIGNldHRlIG9wdGlvbiBuXCdhIHBhcyBkXCdlZmZldCBzdXIgbGEgcG9zaXRpb24gZGVzIGNvbG9ubmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnYWN0aXZlIG91IGTDqXNhY3RpdmUgbGEgdnVlIGRlcyByw6lzdWx0YXRzIGRcJ3VuIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgcHVibGlxdWUgbG9yc3F1XCd1biBjbGllbnQgZXNzYWllIGRlIHLDqXBvbmRyZSB1bmUgZGV1eGnDqG1lIGZvaXMgYSB1biBzb25kYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0FjdGl2ZSBvdSBkw6lzYWN0aXZlIGxhIHbDqXJpZmljYXRpb24gZGUgbGEgY29uZGl0aW9uIGRcJ2Vudm9pIHBvdXIgbGUgc2VydmljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBY3RpdmUgb3UgZMOpc2FjdGl2ZSBsYSB2w6lyaWZpY2F0aW9uIGRlIGxhIGNvbmRpdGlvbiBkXCdlbnZvaSBwb3VyIGNlIHR5cGUgZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbnRlcmZhY2UgZHUgbW9kdWxlIGRcJ2VucmVnaXN0cmVtZW50IGRcJ3VuIGFqb3V0IGRlIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbnRlcmZhY2UgZHUgbW9kdWxlIGRcJ2VucmVnaXN0cmVtZW50IGRlIGxcJ8OpZGl0aW9uIGRcJ3VuIHNvbmRhZ2UgZGFucyBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2kgY2V0dGUgZXhwcmVzc2lvbiByw6lndWxpw6hyZSBlc3QgdsOpcmlmacOpZSwgYXVjdW5lIGVucXXDqnRlIENsaWVudCBuZSBzZXJhIGVudm95w6llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ0VucXXDqnRlIHB1YmxpcXVlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRMOpdGFpbHMgU3RhdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNb2R1bGUgZFwnw6lkaXRpb24gZFwnZW5xdcOqdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTW9kdWxlIHN0YXRpc3RpcXVlIGRcJ2VucXXDqnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ01vZHVsZSBkZSBsYSB2dWUgZMOpdGFpbGzDqWUgZFwnZW5xdcOqdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0xlcyBlbnF1w6p0ZSBuZSBzZXJvbnQgcGFzIGVudm95w6llcyBhdXggYWRyZXNzZXMgZW1haWwgY29uZmlndXLDqWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnTFwnaWRlbnRpZmlhbnQgcG91ciB1bmUgZW5xdcOqdGUuIHBhciBleC4gU3VydmV5IywgTXlTdXJ2ZXkjLiBwYXIgZMOpZmF1dCA6IFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgaXMgYSBkZXNjcmlwdGlvbiBmb3IgU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93biBvbiBTdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6Z2xfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQ3JlYXIgdW5oYSBlbnF1aXNhIG5vdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1Y2nDs24gw6EgZW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ1RleHRvIGRhIG5vdGlmaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlwb3MgZGUgdMOtY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaWNpw7NuIGludGVybmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkaXRhciBhIGluZm9ybWFjacOzbiB4ZXJhbCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBhcyBwcmVndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnVm9zdGVkZSBlc3TDoSBhcXXDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUHJlZ3VudGFzIGRhIGVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnRW5nYWRpciB1bmhhIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmliYSBhIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1JlcXXDrXJlc2UgdW5oYSByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ05vbiBoYWkgcHJlZ3VudGFzIGdhcmRhZGFzIHBhcmEgZXN0YSBlbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1ByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1JlcXXDrXJlc2UgdW5oYSByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0YXIgcHJlZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdyZXRvcm5hciDDoXMgcHJlZ3VudGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ1Jlc3Bvc3RhcyBwb3PDrWJlaXMgYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnRW5nYWRpciB1bmhhIHJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnTm9uIGhhaSByZXNwb3N0YXMgZ2FyZGFkYXMgcGFyYSBlc3RhIHByZWd1bnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnSXN0byBub24gdGVuIHZhcmlhcyByZXNwb3N0YXM7IG3Ds3N0cmFzZSB1biBjYWRybyBwYXJhIGVzY3JpYmlyIHRleHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkaXRhciBhIHJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3JldG9ybmFyIMOhIGVkaWNpw7NuIGRhIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1JlbWl0ZW50ZSBkYSBub3RpZmljYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQXN1bnRvIGRhIG5vdGlmaWNhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ0NhbWJpYWRvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdWaXN0YSB4ZXJhbCBkYXMgZXN0YXTDrXN0aWNhcyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1TDoWJvYSBkZSBzb2xpY2l0dWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ0hvcmEgZGUgZW52w61vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0hvcmEgZGUgdm90YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdWZXIgb3MgZGV0YWxsZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdEZXRhbGxlcyBFc3RhdMOtc3RpY29zIEVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ3ZvbHRlIGEgdmlzdGEgeGVyYWwgZGFzIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNpw7NuIGRhIGVucXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ0VudmlhciBzb2xpY2l0dWRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnRW5xdWlzYXMgcmVjaWJpZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxsZXMgZGEgZW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXInfSA9ICdOw7ptZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ1NlcnZpem9zIFRpY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyw6FmaWNvIFJlc3VsdGFkb3MgRW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnTm8gcmVzdWx0YWRvcyBlc3RhdMOtc3RpY2EnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnRW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ1Jlc3BvbmRhIGEgZXN0YXMgcHJlZ3VudGFzLCBzZSBmYWkgbyBmYXZvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdNb3N0cmFyIGFzIG1pw7FhcyByZXNwb3N0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHNvbiBhcyBzw7phcyByZXNwb3N0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVMOtdHVsbyBkYSBlbnF1aXNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdFbmdhZGlyIHVuaGEgZW5xdWlzYSBub3ZhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdFZGl0YXIgZW5xdWlzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFByZWd1bnRhcyBkYSBFbnF1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ1NpL05vbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdPcGNpw7NuIGV4Y2x1w61udGUgKGxpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdPcGNpw7NuIG5vbiBleGNsdcOtbnRlIChsaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUaXBvIGRlIHByZWd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnQ29tcGxldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0luY29tcGxldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkaXRhciBQcmVndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0VkaXRhciBSZXNwb3N0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIE5vbiBoYWkgbmluZ3VuaGEgZmlsYSBzZWxlY2Npb25hZGEgLSc7CiAgICAkU2VsZi0+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+eydEdXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBvdSBkZXNhY3RpdmUgYSBwYW50YWxsYSBNb3N0cmFyRGF0b3NWb3RvIG5hIGludGVyZmFjZSBww7pibGljYSBwYXJhIG1vc3RyYXIgZGF0b3MgZHVuIHJlc3VsdGFkbyBkZSBlbnF1aXNhIGVzcGVjaWZpY2EgY2FuZG8gbyBjbGllbnRlIGludGVudGEgcmVzcG9uZGVyIGEgZW5xdWlzYSBwb3Igc2VndW5kYSB2ZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnQWN0aXZlIG91IGRlc2FjdGl2ZSBhIGNvbmRpY2lvbiBkZSBjb21wcm9iYWNpb24gZW52aWFyIHBhcmEgbyBzZXJ2aXpvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBvdSBkZXNhY3RpdmUgYSBjb21wcm9iYWNpw7NuIGVudmlhciBjb25kaWNpw7NuIHBhcmEgbyB0aXBvIGRlIHRpY2tldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVuZ2FkaXIgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVkaXRhciBlbnF1aXNhIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIGVzdGF0w61zdGljYXMgZGUgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIHpvb20gZGUgZW5xdWlzYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnUmV4aXN0cm8gbcOzZHVsbyBmcm9udGVuZCBwYXJhIG9ieGVjdG8gRW5xdWlzYVB1YmxpY2EgbmEgw6FyZWEgRW5xdWlzYSBww7pibGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NlIGEgZXhwcmVzacOzbiByZWd1bGFyIGNvaW5jaWRlLCBub24gZW52aWFyw6FzZSBlbnF1aXNhIGFvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBhcyBww6F4aW5hcyAobmFzIGNhbGVzIGFzIGVucXVpc2FzIHNvbiBtb3N0cmFkYXMpIGRhIHZpc3RhIHhlcmFsIHBlcXVlbmEgZGEgZW5xdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdFbnF1aXNhIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHVuaGEgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgcHJlZ3VudGFzIGRlIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSB2b2x0YXIgYXRyw6FzIG5hIHZpc3RhIHpvb20gZGUgZW5xdWlzYSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGZhY2VyIHpvb20gbm9zIGRldGFsbGVzIGRhcyBlc3RhdMOtc3RpY2FzIGRhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdEZXRhbGxlcyBkYXMgZXN0YXTDrXN0aWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ03Ds2R1bG8gRWRpdGFyIEVucXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTMOtbWl0ZSAiUGVxdWVubyIgVmlzdGEgWGVyYWwgRW5xdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ03Ds2R1bG8gRXN0YXTDrXN0aWNhcyBFbnF1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTcOzZHVsbyBab29tIEVucXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnRW5xdWlzYXMgbm9uIHNlcsOhbiBlbnZpYWRhcyBhb3MgZW5kZXJlem9zIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gY29uZmlndXJhZG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnTyBpZGVudGlmaWNhZG9yIHBhcmEgdW5oYSBlbnF1aXNhLCBleC4gRW5xdWlzYSMsIE1pw7FhRW5xdWlzYSMsIFBvciBkZWZlY3RvIMOpIEVucXVpc2EjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTcOzZHVsbyBldmVudG8gdGlja2V0IHBhcmEgZW52aWFyIGF1dG9tYXRpY2FtZW50ZSBwZXRpY2nDs25zIGRlIGVucXVpc2EgZGUgY29ycmVvIGVsZWN0csOzbmljbyBzZSB1biB0aWNrZXQgw6kgcGVjaGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aHJfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnU3R2b3JpIG5vdnUgYW5rZXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ1V2b2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ1V2b2QgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnWmFiaWxqZcW+YmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnSW50ZXJuaSBvcGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdVcmVkaSBvcMSHZSBpbmZvcm1hY2lqZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+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+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsamkgYW5rZXRuZSBzdGF0aXN0aWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2cmF0aSBzZSBuYXRyYWcgbmEgcHJlZ2xlZCBzdGF0aXN0aWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjaWplIG8gYW5rZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdQb3NsYW5pIHphaHRqZXZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdQcmltbGplbmUgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxqaSBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ1JlenVsdGF0aSBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ05lbWEgcmV6dWx0YXRhLiAnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnQW5rZXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnTW9saW1vIHZhcyBkYSBvZGdvdm9yaXRlIG5hIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnUHJpa2HFvmkgbW9qZSBvZGdvdm9yZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnT3ZvIHN1IHZhxaFpIG9kZ292b3JpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ05hc2xvdiBhbmtldGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0RvZGFqIG5vdnUgYW5rZXR1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdVcmVkaSBhbmtldHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ1VyZWRpIGFua2V0bmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdEYS9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcCBwaXRhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnRG92csWhZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdOZWRvdnLFoWVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnVXJlZGkgcGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ1VyZWRpIG9kZ292b3InOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnT3BpcyBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdvZGdvdm9yZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25pamUgb2Rnb3ZvcmVubyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnSHZhbGEgdmFtIHphIHBvdnJhdG51IGluZm9ybWFjaWp1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0Fua2V0YSBqZSB6YXZyxaFlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ1ZlxIcgc3RlIGlzcHVuamF2YWxpIGFua2V0dS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ8W9ZWxpdGUgbGkgemFpc3RhIGl6YnJpc2F0aSBvdm8gcGl0YW5qZT8gU3ZpIHBvZGFjaSBwcmkgdG9tZSDEh2UgYml0aSBpemd1YmxqZW5pISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ8W9ZWxpdGUgbGkgemFpc3RhIG9icmlzYXRpIG92YWogb2Rnb3Zvcj8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnQW5rZXRuaSBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ01vZHVsIHphIHVyZcSRaXZhbmplIGFua2V0bmloIHBpdGFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHV0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdKYXZuYSBhbmtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnU2F0aXN0aWthIGRldGFsam5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aHVfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnw5pqIGvDqXJkxZHDrXYgbMOpdHJlaG96w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdCZXZlemV0w6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdLw6lyZMWRw612IGJldmV6ZXTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnw4lydGVzw610w6lzIHTDtnJ6c2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnSmVneXTDrXB1c29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnQmVsc8WRIGxlw61yw6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfDgWx0YWzDoW5vcyBpbmZvcm3DoWNpw7NrIHN6ZXJrZXN6dMOpc2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdLw6lyZMOpc2VrIHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnw5ZuIGl0dCDDoWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdLw6lyZMWRw612IGvDqXJkw6lzZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnS8OpcmTDqXMgaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnR8OpcGVsamUgYmUgYSBrw6lyZMOpc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnVsOhbGFzeiBrw7Z0ZWxlesWRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTmluY3NlbmVrIGvDqXJkw6lzZWsgZWxtZW50dmUgZWhoZXogYSBrw6lyZMWRw612aGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ0vDqXJkw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1bDoWxhc3oga8O2dGVsZXrFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnQW1pa29yIGJlZmVqZXp0ZSBhIGvDqXJkxZHDrXYga8OpcmTDqXNlaW5layBzemVya2VzenTDqXPDqXQsIGFra29yIGVneXN6ZXLFsWVuIHrDoXJqYSBiZSBlenQgYSBrw6lwZXJuecWRdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICdBYmxhayBiZXrDoXLDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdLw6lyZMOpcyBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAndmlzc3phIGEga8OpcmTDqXNla2hleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdLw6lyZMOpczonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdMZWhldHPDqWdlcyB2w6FsYXN6b2sgYSBrw7Z2ZXRrZXrFkWjDtnonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ1bDoWxhc3ogaG96esOhYWTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnTmluY3NlbmVrIHbDoWxhc3pvayBlbG1lbnR2ZSBlaGhleiBhIGvDqXJkw6lzaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRW5uZWsgbmluY3MgdMO2YmIgdsOhbGFzemEsIGVneSBzesO2dmVnZG9ib3ogbGVzeiBtZWdqZWxlbsOtdHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ1bDoWxhc3ogc3plcmtlc3p0w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICd2aXNzemEgYSBrw6lyZMOpcyBzemVya2VzenTDqXPDqWhleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnVsOhbGFzejonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdPbGRhbGFua8OpbnQgbWVnamVsZW7DrXRldHQgbGVndMO2YmIga8OpcmTFkcOtdic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnw4lydGVzw610w6lzIGvDvGxkxZFqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ8OJcnRlc8OtdMOpcyB0w6FyZ3lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNw7Nkb3PDrXRvdHRhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ0Ega8O2dmV0a2V6xZEgc3RhdGlzenRpa8OhaW5hayDDoXR0ZWtpbnTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnS8OpcsOpc2VrIHTDoWJsw6F6YXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdLw7xsZMOpcyBpZGVqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdTemF2YXrDoXMgaWRlamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1LDqXN6bGV0ZWsgbWVndGVraW50w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0vDqXJkxZHDrXYgc3RhdGlzenRpa2EgcsOpc3psZXRlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAndmlzc3phIGEgc3RhdGlzenRpa8OhayDDoXR0ZWtpbnTFkWrDqWhleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdLw6lyZMWRw612IGluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ0Vsa8O8bGTDtnR0IGvDqXLDqXNlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnQmXDqXJrZXpldHQga8OpcmTFkcOtdmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnS8OpcmTFkcOtdiByw6lzemxldGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlcid9ID0gJ1N6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ0plZ3lzem9sZ8OhbHRhdMOhc29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnS8OpcmTFkcOtdiBlcmVkbcOpbnllayBncmFmaWtvbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdOaW5jc2VuZWsgc3RhdGlzenRpa2EgZXJlZG3DqW55ZWsuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0vDqXJkxZHDrXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdWw6FsYXN6b2xqb24gZXpla3JlIGEga8OpcmTDqXNla3JlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ1NhasOhdCB2w6FsYXN6YWltIG1lZ2plbGVuw610w6lzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnRXplayBheiDDlm4gdsOhbGFzemFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ0vDqXJkxZHDrXYgY8OtbWUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ8OaaiBrw6lyZMWRw612IGhvenrDoWFkw6FzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICdOaW5jcyBqb2dvc3VsdHPDoWdhIGVoaGV6IGEga8OpcmTFkcOtdmhleiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga8OpcmTFkcOtdi1hem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0vDqXJkxZHDrXYgc3plcmtlc3p0w6lzZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICdOaW5jcyBqb2dvc3VsdHPDoWdhIGVoaGV6IGEga8OpcmTFkcOtdmhleiB2YWd5IGvDqXJkw6lzaGV6ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ05pbmNzIGpvZ29zdWx0c8OhZ2EgZWhoZXogYSBrw6lyZMWRw612aGV6LCBrw6lyZMOpc2hleiB2YWd5IHbDoWxhc3pob3ohJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0vDqXJkxZHDrXYga8OpcmTDqXNlayBzemVya2VzenTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0lnZW4vTmVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ1bDoWxhc3p0w7Nnb21iIChsaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnSmVsw7ZsxZFuw6lneXpldCAobGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnS8OpcmTDqXMgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0vDqXN6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdCZWZlamV6ZXRsZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0vDqXJkw6lzIHN6ZXJrZXN6dMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdWw6FsYXN6IHN6ZXJrZXN6dMOpc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBOaW5jcyB2w6Fyw7NsaXN0YSBraWplbMO2bHZlIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ8OaaiDDoWxsYXBvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdLw6lyZMWRw612IGxlw61yw6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ21lZ3bDoWxhc3pvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnbmVtIG1lZ3bDoWxhc3pvbHQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ0vDtnN6w7ZuasO8ayBhIHZpc3N6YWplbHrDqXPDqXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQSBrw6lyZMWRw612IGJlZmVqZXrFkWTDtnR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICdLw6lyZMWRw612IMO8emVuZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdBIG1vZHVsIG5pbmNzIGVuZ2Vkw6lseWV6dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnRXogYSBmdW5rY2lvbmFsaXTDoXMgbmluY3MgZW5nZWTDqWx5ZXp2ZS4gVmVneWUgZmVsIGEga2FwY3NvbGF0b3QgYSByZW5kc3plcmdhemTDoXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ0vDqXJkxZHDrXYgaGliYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ8OJcnbDqW55dGVsZW4ga8OpcmTFkcOtdmt1bGNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnQSBiZXN6w7pydCBrw6lyZMWRw612a3VsY3Mgw6lydsOpbnl0ZWxlbi4gSGEgZWd5IGhpdmF0a296w6FzdCBrw7Z2ZXRldHQsIGFra29yIGF6IHRhbMOhbiBlbGF2dWx0IHZhZ3kgc8OpcsO8bHQgbGVoZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnS8OpcmTFkcOtdiBzemF2YXrDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0vDqXJkxZHDrXYgc3phdmF6w6FzIGFkYXRvayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnTcOhciBraXTDtmx0w7Z0dGUgYSBrw6lyZMWRw612ZXQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIGvDqXJkw6lzdD8gTUlOREVOIGthcGNzb2zDs2TDsyBhZGF0IGVsIGZvZyBWRVNaTkkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnVmFsw7NiYW4gdMO2csO2bG5pIHN6ZXJldG7DqSBlenQgYSB2w6FsYXN6dD8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnRWd5IGvDqXJkxZHDrXYgbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFZ3kgbW9kdWwgYSBrw6lyZMWRw612IGvDqXJkw6lzZWluZWsgc3plcmtlc3p0w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7Zzc3plcyBwYXJhbcOpdGVyIGEga8OpcmTFkcOtdiBvYmpla3R1bWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ0EgbmFwb2sgc3rDoW1hIGVneSBvbHlhbiBrw6lyZMWRw612IGxldsOpbCBraWvDvGxkw6lzZSB1dMOhbiwgYW1lbHliZW4gbmluY3NlbmVrIMO6aiBrw6lyZMWRw612IGvDqXLDqXNlayBlbGvDvGxkdmUgdWd5YW5hbm5hayBheiDDvGd5ZsOpbG5lay4gQSAwIHbDoWxhc3p0w6FzYSBtaW5kaWcgZWwgZm9namEga8O8bGRlbmkgYSBrw6lyZMWRw612IGxldmVsZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lmZWxla25layBheiDDumoga8OpcmTFkcOtdnZlbCBrYXBjc29sYXRiYW4gZWxrw7xsZMO2dHQgw6lydGVzw610xZEgZS1tYWlsIGFsYXDDqXJ0ZWxtZXpldHQgdMO2cnpzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdBeiDDvGd5ZmVsZWtuZWsgYXogw7pqIGvDqXJkxZHDrXZ2ZWwga2FwY3NvbGF0YmFuIGVsa8O8bGTDtnR0IMOpcnRlc8OtdMWRIGUtbWFpbCBhbGFww6lydGVsbWV6ZXR0IGvDvGxkxZFqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQXogw7xneWZlbGVrbmVrIGF6IMO6aiBrw6lyZMWRw612dmVsIGthcGNzb2xhdGJhbiBlbGvDvGxkw7Z0dCDDqXJ0ZXPDrXTFkSBlLW1haWwgYWxhcMOpcnRlbG1lemV0dCB0w6FyZ3lhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICdFZ3kgw6F0dGVraW50xZEgbW9kdWx0IGhhdMOhcm96IG1lZyBlZ3kga8OpcmTFkcOtdmxpc3RhIGtpcyBuw6l6ZXTDqW5layBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6b2thdCBhIGNzb3BvcnRva2F0LCBhbWVseWVrbmVrIGpvZ29zdWx0c8OhZ2EgdmFuIGEga8OpcmTFkcOtdiDDoWxsYXBvdMOhbmFrIG1lZ3bDoWx0b3p0YXTDoXPDoXJhLiBBbGFww6lydGVsbWV6ZXR0ZW4gYSB0w7ZtYiDDvHJlcywgw6lzIGF6IMO8Z3lpbnTDqXrFkWsgYXogw7Zzc3plcyBjc29wb3J0YsOzbCBtZWd2w6FsdG96dGF0aGF0asOhayBhIGvDqXJkxZHDrXYgw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga8OpcmTFkcOtdmVrIGxlZ25hZ3lvYmIgbWVubnlpc8OpZ8OpdCwgYW1lbHlldCAzMCBuYXBvbnRhIGVsa8O8bGRoZXRuZWsgZWd5IMO8Z3lmw6lsbmVrIChhIDAgYXp0IGplbGVudGksIGhvZ3kgbmluY3MgbWF4aW11bSwgbWluZGVuIGvDqXJkxZHDrXYga8OpcsOpcyBlbGvDvGxkw6lzcmUga2Vyw7xsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXp0IGEgbWVubnlpc8OpZ2V0IMOzcsOhYmFuLCBhbcOtZyBhIGplZ3lldCBsZSBrZWxsIHrDoXJuaSwgaG9neSBha3RpdsOhbGphIGEga8OpcmTFkcOtdiBraWvDvGxkw6lzw6l0IChhIDAgamVsZW50w6lzZSwgaG9neSBhem9ubmFsIGvDvGxkamUgYSBsZXrDoXLDoXMgdXTDoW4pLiBNZWdqZWd5esOpczogYSBrw6lzbGVsdGV0ZXR0IGvDqXJkxZHDrXYga2lrw7xsZMOpc8OpdCBheiBPVFJTIGTDqW1vbiB2w6lnemkgZWwgYSDigJ5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZOKAnSBiZcOhbGzDrXTDoXMgZWzFkXpldGVzIGJla2FwY3NvbMOhc2EgdXTDoW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgUmljaCBUZXh0IG7DqXpldGVrIGFsYXDDqXJ0ZWxtZXpldHQgbWFnYXNzw6Fnw6F0IGEga8OpcmTFkcOtdiBuYWd5w610w6FzIGVsZW1la27DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgUmljaCBUZXh0IG7DqXpldGVrIGxlZ25hZ3lvYmIgbWFnYXNzw6Fnw6F0IGEga8OpcmTFkcOtdiBuYWd5w610w6FzIGVsZW1la27DqWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgbWVnamVsZW7DrXRldHQgb3N6bG9wb2thdCBhIGvDqXJkxZHDrXYgw6F0dGVraW50xZFiZW4uIEVubmVrIGEgYmXDoWxsw610w6FzbmFrIG5pbmNzIGhhdMOhc2EgYXogb3N6bG9wb2sgaGVseXpldMOpcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHV0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICdLw6lyZMWRw612IMOhbHRhbMOhbm9zIGluZm9ybcOhY2nDs2luYWsgc3plcmtlc3p0w6lzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0vDqXJkxZHDrXYga8OpcmTDqXNlayBzemVya2VzenTDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICdBIHN6YXZhesOhc2kgYWRhdG9rIG1lZ2plbGVuw610w6lzZSBrw6lwZXJuecWRIGVuZ2Vkw6lseWV6w6lzZSB2YWd5IGxldGlsdMOhc2EgYSBueWlsdsOhbm9zIGZlbMO8bGV0ZW4gZWd5IGFkb3R0IGvDqXJkxZHDrXZlcmVkbcOpbnkgYWRhdGFpbmFrIG1lZ2plbGVuw610w6lzw6loZXosIGFtaWtvciBheiDDvGd5ZsOpbCBtw6Fzb2Rzem9yIHByw7Niw6FsIG1lZyB2w6FsYXN6b2xuaSBhIGvDqXJkxZHDrXZyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdBIGvDvGxkw6lzaSBmZWx0w6l0ZWwgZWxsZW7FkXJ6w6lzw6luZWsgZW5nZWTDqWx5ZXrDqXNlIHZhZ3kgbGV0aWx0w6FzYSBhIHN6b2xnw6FsdGF0w6FzbsOhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICdBIGvDvGxkw6lzaSBmZWx0w6l0ZWwgZWxsZW7FkXJ6w6lzw6luZWsgZW5nZWTDqWx5ZXrDqXNlIHZhZ3kgbGV0aWx0w6FzYSBhIGplZ3l0w61wdXNuw6FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbMWRdMOpdHByb2dyYW0gbW9kdWwgcmVnaXN6dHLDoWNpw7MgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGzDqXbFkSBrw6lyZMWRw612IGhvenrDoWFkw6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbMWRdMOpdHByb2dyYW0gbW9kdWwgcmVnaXN6dHLDoWNpw7MgYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGzDqXbFkSBrw6lyZMWRw612IHN6ZXJrZXN6dMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsxZF0w6l0cHJvZ3JhbSBtb2R1bCByZWdpc3p0csOhY2nDsyBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbMOpdsWRIGvDqXJkxZHDrXYgc3RhdGlzenRpa8Oha2hvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsxZF0w6l0cHJvZ3JhbSBtb2R1bCByZWdpc3p0csOhY2nDsyBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gbMOpdsWRIGvDqXJkxZHDrXYgbmFnecOtdMOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnRWzFkXTDqXRwcm9ncmFtIG1vZHVsIHJlZ2lzenRyw6FjacOzIGEgbnlpbHbDoW5vcyBrw6lyZMWRw612IG9iamVrdHVtaG96IGEgbnlpbHbDoW5vcyBrw6lyZMWRw612IHRlcsO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdIYSBleiBhIHJlZ3Vsw6FyaXMga2lmZWplesOpcyBpbGxlc3prZWRpaywgYWtrb3IgYXogw7xneWbDqWxrw6lyZMWRw612IG5lbSBrZXLDvGwga2lrw7xsZMOpc3JlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ1BhcmFtw6l0ZXJlayBhIGtpcyBrw6lyZMWRw612IMOhdHRla2ludMWRIG9sZGFsYWlob3ogKGFtZWx5ZWtiZW4gYSBrw6lyZMWRw612ZWsgbWVnamVsZW5uZWspLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ055aWx2w6Fub3Mga8OpcmTFkcOtdi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGvDqXJkxZHDrXYgc3plcmtlc3p0w6lzw6loZXogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuIGF6IGVsZW0gbmFnecOtdMOhc2kgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBhIGvDqXJkxZHDrXYga8OpcmTDqXNlaW5layBzemVya2VzenTDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrw6lyZMWRw612IG5hZ3nDrXTDoXNpIG7DqXpldMOpYmUgdmFsw7Mgdmlzc3phdMOpcsOpc2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrw6lyZMWRw612IHN0YXRpc3p0aWthIHLDqXN6bGV0ZWliZSB2YWzDsyBuYWd5w610w6FzaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnU3RhdGlzenRpa8OhayByw6lzemxldGVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ0vDqXJkxZHDrXYgaG96esOhYWTDoXMgbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdLw6lyZMWRw612IHN6ZXJrZXN6dMOpcyBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdLw6lyZMWRw612IMOhdHRla2ludMWRIOKAnmtpc+KAnSBrb3Jsw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnS8OpcmTFkcOtdiBzdGF0aXN6dGlrw6FrIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnS8OpcmTFkcOtdiBuYWd5w610w6FzIG1vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJ09sZGFsYW5rw6ludGkga8OpcmTFkcOtdiBrb3Jsw6F0IGEg4oCea2lz4oCdIGvDqXJkxZHDrXYgw6F0dGVraW50xZFuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ0Ega8OpcmTFkcOtdmVrIG5lbSBrZXLDvGxuZWsgZWxrw7xsZMOpc3JlIGEgYmXDoWxsw610b3R0IGUtbWFpbCBjw61tZWtyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ0VneSBrw6lyZMWRw612IGF6b25vc8OtdMOzamEsIHDDqWxkw6F1bCBTdXJ2ZXkjLCBNeVN1cnZleSMuIEF6IGFsYXDDqXJ0ZWxtZXpldHQ6IFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgaXMgYSBkZXNjcmlwdGlvbiBmb3IgU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93biBvbiBTdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICdKZWd5IGVzZW3DqW55IG1vZHVsIGF1dG9tYXRpa3VzIGvDqXJkxZHDrXYgZS1tYWlsIGvDqXLDqXNlayBrw7xsZMOpc8OpaGV6IGF6IMO8Z3lmZWxla25laywgaGEgZWd5IGplZ3kgbGUgdmFuIHrDoXJ2YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnS8Opc2xlbHRldGV0dCBrw6lyZMWRw612a8OpcsOpc2VrIGvDvGxkw6lzw6luZWsgYWt0aXbDoWzDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ05hZ3nDrXTDoXMgYSBzdGF0aXN6dGlrw6FrIHLDqXN6bGV0ZWliZS4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aWRfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQnVhdCBzdXJ2ZXkgYmFydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdQZW5nYW50YXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0tldGEgcGVuZ2FudGFyIHN1cnZleS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdJc2kgbm90aWZpa2FzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUaXBlLXRpcGUgdGlrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNrcmlwc2kgaW50ZXJuYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ1ViYWggaW5mb3JtYXNpIHVtdW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdVYmFoIHBlcnRhbnlhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnQW5kYSBiZXJhZGEgZGlzaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQZXJ0YW55YWFuIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdUYW1iYWggcGVydGFueWFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdLZXRpayBwZXJ0YW55YWFubnlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICdKYXdhYmFuIGRpYnV0dWhrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnVGlkYWsgYWRhIHBlcnRhbnlhYW4geWFuZyBkaSBzaW1wYW4gdW50dWsgc3VydmV5IGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdQZXJ0YW55YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ0phd2FiYW4gZGlidXR1aGthbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnS2V0aWthIGFuZGEgc2VsZXNhaSBtZW5ndWJhaCBwZXJ0YW55YWFuIHN1cnZleSBpbmksIHNpbGFoa2FuIHR1dHVwIHRhbXBpbGFuIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ1ViYWggcGVydGFueWFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ0tlbWJhbGkga2UgcGVydGFueWFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnUGVydGFueWFhbjogJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnSmF3YWJhbiB5YW5nIG1lbXVuZ2tpbmthbiB1bnR1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnVGFtYmFoIGphd2FiYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdUaWRhayBhZGEgamF3YWJhbiB5YW5nIGRpIHNpbXBhbiB1bnR1ayBwZXJ0YW55YWFuIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnVGlkYWsgbWVtaWxpa2kgYmViZXJhcGEgamF3YWJhbiwgYmlkYW5ndGVrcyBha2FuIGRpIHRhbXBpbGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICd1YmFoIGphd2FiYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnS2VtYmFsaSBrZSB1YmFoIHBlcnRhbnlhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ0phd2FiYW46JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnSnVtbGFoIG1ha3NpbWFsIHN1cnZleSB5YW5nIGRpIHRhbXBpbGthbiBwZXIgaGFsYW1hbi4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1BlbmdpcmltIG5vdGlmaWthc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnU3ViamVrIG5vdGlmaWthc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ2RpdWJhaCBvbGVoJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ0dhbWJhcmFuIHN0YXR1cyBkYXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnVGFiZWwgcGVybWludGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdXYWt0dSBwZW5naXJpbWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdXYWt0dSBwZW1pbGloYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdMaWhhdCByaW5jaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnUmluY2lhbiBzdGF0dXMgc3VydmV5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdLZW1iYWxpIGtlIGdhbWJhcmFuIHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2kgc3VydmV5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdQZXJtaW50YWFuIHlhbmcgdGVsYWggZGlraXJpbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnU3VydmV5IHlhbmcgZGl0ZXJpbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdSaW5jaWFuIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXInfSA9ICdOb21vcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdMYXlhbmFuIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmlrIGhhc2lsIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnVGlkYWsgYWRhIGhhc2lsIHN0YXQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnU3VydmV5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnTW9ob24gamF3YWIgcGVydGFueWFhbiBiZXJpa3V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdUYW1waWxrYW4gamF3YWJhbiBzYXlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdCZXJpa3V0IGluaSBhZGFsYWggamF3YWJhbiBhbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ0p1ZHVsIHN1cnZleSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnVGFtYmFoa2FuIHN1cnZleSBiYXJ1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdVYmFoIHN1cnZleSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnVWJhaCBwZXJ0YW55YWFuIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdZYS9UaWRhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdSYWRpbyAoZGFmdGFyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdLb3RhayBjZW50YW5nIChkYWZ0YXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVGlwZSBwZXJ0YW55YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnTGVuZ2thcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ1RpZGFrIGxlbmdrYXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdVYmFoIHBlcnRhbnlhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICdVYmFoIGphd2FiYW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBUaWRhayBhZGEgYW50cmlhbiB5YW5nIGRpcGlsaWggLSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ1N0YXR1cyBiYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0Rlc2tyaXBzaSBzdXJ2ZXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnVGVyamF3YWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnQmVsdW0gZGlqYXdhYic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnVGVyaW1hIGthc2loIGF0YXMgdGFuZ2dhcGFuIGFuZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnU3VydmV5IHRlbGFoIHNlbGVzYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ0FuZGEgdGVsYWggbWVuamF3YWIgc3VydmV5IGluaS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ0FwYWthaCBhbmRhIHlha2luIGluZ2luIG1lbmdoYXB1cyBwZXJ0YW55YWFuIGluaT8gU0VNVUEgZGF0YSB5YW5nIGJlcmh1YnVuZ2FuIGFrYW4gSElMQU5HISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0FwYWthaCBhbmRhIHlha2luIGluZ2luIG1lbmdoYXB1cyBqYXdhYmFuIGluaT8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnU2VidWFoIG1vZHVsIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnU2VidWFoIG1vZHVsIHVudHVrIG1lbmd1YmFoIGphd2FiYW4gc3VydmV5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2VtdWEgcGFyYW1ldGVyIHVudHVrIG9iamVrIHN1cnZleSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnSnVtbGFoIGhhcmkgc2V0ZWxhaCBtZW5naXJpbWthbiBzdXJhdCBzdXJ2ZXkgZGltYW5hIHRpZGFrIGFkYSBwZW5naXJpbWFuIHN1cnZleSBiYXJ1IGtlcGFkYSBwZWxhbmdnYW4geWFuZyBzYW1hLiBNZW1pbGloIDAgYWthbiBzZWxhbHUgbWVuZ2lyaW1rYW4gc3VyYXQgc3VydmV5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdJc2kgZGVmYXVsdCB1bnR1ayBlbWFpbCBwZW1iZXJpdGFodWFuIHRlbnRhbmcgc3VydmV5IGJhcnUga2VwYWRhIHBlbGFuZ2dhbiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdQZW5naXJpbSBkZWZhdWx0IHVudHVrIGVtYWlsIHBlbWJlcml0YWh1YW4gdGVudGFuZyBzdXJ2ZXkgYmFydSBrZXBhZGEgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdTdWJqZWN0IGRlZmF1bHQgdW50dWsgZW1haWwgcGVtYmVyaXRhaHVhbiB0ZW50YW5nIHN1cnZleSBiYXJ1IGtlcGFkYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGdhbWJhcmFuIG1vZHVsIHVudHVrIG1lbmFtcGlsa2FuIHRhbXBpbGFuIGtlY2lsIGRhZnRhciBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBKdW1sYWggc3VydmV5IG1ha3NpbXVtIHlhbmcgZGlraXJpbWthbiBrZXBhZGEgcGVsYW5nZ2FuIHBlciAzMCBoYXJpLiAoIDAgYmVyYXJ0aSB0aWRhayBhZGEgYmF0YXMgbWFrc2ltdW0sIHNlbXVhIHBlcm1pbnRhYW4gc3VydmV5IGFrYW4gZGlraXJpbSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIHRpbmdnaSBkZWZhdWx0IHVudHVrIHRhbXBpbGFuIFJpY2h0ZXh0IHVudHVrIGVsZW1lbiBTdXJ2ZXlab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGtvbG9tIHlhbmcgZGkgdGFtcGlsa2FuIHBhZGEgZ2FtYmFyYW4gc3VydmV5LiBQaWxpaGFuIGluaSB0aWRhayBtZW1pbGlraSBlZmVrIHBhZGEgcG9zaXNpIGtvbG9tIHRlcnNlYnV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnYWt0aWYgYXRhdSBub24tYWt0aWZrYW4gbGF5YXIgU2hvd1ZvdGVEYXRhIHBhZGEgYW50YXJtdWthIHVtdW0gdW50dWsgbWVuYW1waWxrYW4gZGF0YSBkYXJpIGhhc2lsIHN1cnZleSBzcGVzaWZpayBrZXRpa2EgcGVsYW5nZ2FuIG1lbmN1YmEgdW50dWsgbWVuamF3YWIgc3VydmV5IGtlZHVhIGthbGlueWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnQWt0aWYgYXRhdSBub24tYWt0aWZrYW4gcGVtZXJpa3NhYW4ga29uZGlzaSBwZW5naXJpbWFuIHVudHVrIGxheWFuYW4gdGVyc2VidXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnQWt0aWYgYXRhdSBub24tYWt0aWZrYW4gcGVtZXJpa3NhYW4ga29uZGlzaSBwZW5naXJpbWFuIHVudHVrIHRpcGUgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIGZyb250ZW5kICB1bnR1ayBtZW5hbWJhaCBzdXJ2ZXkgZGkgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIGZyb250ZW5kICB1bnR1ayBtZW5ndWJhaCBzdXJ2ZXkgZGkgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZW5kYWZ0YXJhbiBtb2R1bCBmcm9udGVuZCAgdW50dWsgc3RhdHMgc3VydmV5IGRpIGFudGFybXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZW5kYWZ0YXJhbiBtb2R1bCBmcm9udGVuZCAgdW50dWsgem9vbSBzdXJ2ZXkgZGkgYW50YXJtdWthIGFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ1BlbmRhZnRhcmFuIG1vZHVsIGZyb250ZW5kICB1bnR1ayBvYmplayBQdWJsaWNTdXJ2ZXkgZGkgYXJlYSBzdXJ2ZXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdKaWthIHJlZ2V4IGluaSBjb2NvaywgbWFrYSB0aWRhayBhZGEgc3VydmV5IHBlbGFuZ2dhbiB5YW5nIGFrYW4gZGkga2lyaW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGhhbGFtYW4gKGRpbWFuYSBzdXJ2ZXkgdGVyc2VidXQgZGkgdGFtcGlsa2FuKSBnYW1iYXJhbiBrZWNpbCBzdXJ2ZXkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnU3VydmV5IHVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIG1lbmd1YmFoIHN1cnZleSBwYWRhIHRhbXBpbGFuIHpvb21ueWEgZGkgYW50YXIgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIG1lbmd1YmFoIHBlcnRhbnlhYW4gc3VydmV5IHBhZGEgdGFtcGlsYW4gem9vbW55YSBkaSBhbnRhciBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYW1waWxrYW4gdGF1dGFuIHBhZGEgbWVudSB1bnR1ayBrZW1iYWxpIHBhZGEgdGFtcGlsYW4gem9vbSBzdXJ2ZXkgZGkgYW50YXIgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhbXBpbGthbiB0YXV0YW4gcGFkYSBtZW51IHVudHVrIHpvb20ga2UgcmluY2lhbiBzdGF0aXN0aWsgc3VydmV5IHBhZGEgdGFtcGlsYW4gem9vbW55YSBkaSBhbnRhciBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdSaW5jaWFuIFN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICdNb2R1bCBtZW5hbWJhaCBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsIG1lbmd1YmFoIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0dhbWJhcmFuIGJhdGFzICJLZWNpbCIgc3VydmV5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTW9kdWwgc3RhdGlzdGlrIHN1cnZleSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWwgem9vbSBzdXJ2ZXknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdTdXJ2ZXkgdGlkYWsgYWthbiBkaSBraXJpbSBrZXBhZGEgYWxhbWF0IGVtYWlsIHlhbmcgdGVsYWggZGkga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ1BlbmdpZGVudGlmaWthc2kgdW50dWsgc3VydmV5LCBtaXNhbG55YSBTdXJ2ZXkjLCBNeVN1cnZleSMuIFNlY2FyYSBkZWZhdWx0bnlhIFN1cnZleSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyBhIGRlc2NyaXB0aW9uIGZvciBTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIG9uIFN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ01vZHVsIHRpa2V0IHBlcmlzdGl3YSB1bnR1ayBzZWNhcmEgb3RvbWF0aXMgbWVuZ2lyaW1rYW4gcGVybWludGFhbiBlbWFpbCBzdXJ2ZXkga2VwYWRhIHBlbGFuZ2dhbiBqaWthIHRpa2V0IHRlbGFoIGRpdHV0dXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ011bGFpIHBlbmdpcmltYW4gcGVybWludGFhbiBzdXJ2ZXkgeWFuZyB5YW5nIGRpdHVuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6aXRfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQ3JlYXppb25lIG51b3ZvIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHV6aW9uZSBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnQ29ycG8gZGVsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdUaXBpIHRpY2tldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXppb25lIGFkIHVzbyBpbnRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdNb2RpZmljYSBsZSBpbmZvcm1hemlvbmkgZ2VuZXJhbGknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdNb2RpZmljYSBsZSBkb21hbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ1NlaSBxdWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1ZvY2kgZGVsIFNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdBZ2dpdW5naSBkb21hbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnSW5zZXJpc2NpIGxhIGRvbWFuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnUmlzcG9zdGEgcmljaGllc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTm9uIGNpIHNvbm8gdm9jaSBwZXIgcXVlc3RvIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ0RvbWFuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnUmlzcG9zdGEgcmljaGllc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdRdWFuZG8gY29tcGxldGkgbGEgbW9kaWZpY2EgZGVsbGUgZG9tYW5kZSBkZWwgc29uZGFnZ2lvLCBiYXN0YSBjaGl1ZGVyZSBxdWVzdGEgc2NoZXJtYXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnTW9kaWZpY2EgZG9tYW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ1JpdG9ybmEgYWxsZSBkb21hbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uOid9ID0gJ0RvbWFuZGE6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnUG9zc2liaWxpIHJpc3Bvc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBZ2dpdW5naSByaXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ05lc3N1bmEgcmlzcG9zdGEgc2FsdmF0YSBwZXIgcXVlc3RhIGRvbWFuZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdOb24gc29ubyBwcmV2aXN0ZSByaXNwb3N0ZSBtdWx0aXBsZSwgaWwgZGVzdGluYXRhcmlvIGluc2VyaXNjZSBkZWwgdGVzdG8gbGliZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnTW9kaWZpY2EgcmlzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnUml0b3JuYSBhIG1vZGlmaWNhcmUgbGUgZG9tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnUmlzcG9zdGE6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTnVtZXJvIG1hc3NpbW8gZGkgc29uZGFnZ2kgcGVyIHBhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnTWl0dGVudGUgZGVsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ09nZ2V0dG8gZGVsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAnTW9kaWZpY2F0byBkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdSaWVwaWxvZ28gc3RhdGlzdGljaGUgZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJlbGxhIGRlbGxlIHJpY2hpZXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ0RhdGEgZSBPcmEgZGkgaW52aW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnRGF0YSBlIE9yYSBkaSBjb21waWxhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZlZGkgaSBkZXR0YWdsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldHRhZ2xpIHN0YXRpc3RpY2kgc3VsIFNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnUml0b3JuYSBhbGxlIHN0YXRpc3RpY2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF6aW9uaSBzdWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdTb25kYWdnaSBpbnZpYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdTb25kYWdnaSByaWNldnV0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldHRhZ2xpIHN1bCBzb25kYWdnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAnTnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ1NlcnZpemkgdGlja2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmljaSBzdWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdOb24gY2kgc29ubyByaXN1bHRhdGkgZGEgbW9zdHJhcmUnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnU29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnVGkgY2hpZWRpYW1vLCBjb3J0ZXNlbWVudGUsIGRpIHJpc3BvbmRlcmUgYSBxdWVzdGUgZG9tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdNb3N0cmEgbGUgbWllIHJpc3Bvc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdRdWVzdGUgc29ubyBsZSB0dWUgcmlzcG9zdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVGl0b2xvIGRlbCBzb25kYWdnaW8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ0FnZ2l1bmdpIG51b3ZvIHNvbmRhZ2dpbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICdOb24gaGFpIGkgcGVybWVzc2kgcGVyIHF1ZXN0byBTb25kYWdnaW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJ05vbiDDqCBzdGF0byBzcGVjaWZpY2F0byB1biBTdXJ2ZXlJRCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ01vZGlmaWNhIFNvbmRhZ2dpbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnTW9kaWZpY2EgbGUgZG9tYW5kZSBkZWwgc29uZGFnZ2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ1PDrC9Obyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdSYWRpbyAoZWxlbmNvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdDYXNlbGxhIGRpIHNlbGV6aW9uZSAoZWxlbmNvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ1RpcG8gZGkgZG9tYW5kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ1NvbmRhZ2dpIGNvbXBsZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdTb25kYWdnaSBpbmNvbXBsZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdNb2RpZmljYSBkb21hbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnTW9kaWZpY2EgcmlzcG9zdGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSBOZXNzdW5hIGNvZGEgc2VsZXppb25hdGEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnTnVvdm8gc3RhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpemlvbmUgZGVsIHNvbmRhZ2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ3Jpc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25vbiByaXNwb3N0YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnR3JhemllIHBlciBpbCB0dW8gcmlzY29udHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0lsIHNvbmRhZ2dpbyDDqCB0ZXJtaW5hdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ0hhaSBnacOgIHJpc3Bvc3RvIGFsIHNvbmRhZ2dpby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ1Z1b2kgZGF2dmVybyBlbGltaW5hcmUgcXVlc3RhIGRvbWFuZGE/IFRVVFRJIGkgZGF0aSBhc3NvY2lhdGkgc2FyYW5ubyBQRVJTSSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICdWdW9pIGRhdnZlcm8gZWxpbWluYXJlIHF1ZXN0YSByaXNwb3N0YT8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnVW4gbW9kdWxvIHBlciBpIHNvbmRhZ2dpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnVW4gbW9kdWxvIHBlciBtb2RpZmljYXJlIGxlIGRvbWFuZGUgZGVpIHNvbmRhZ2dpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1R1dHRpIGkgcGFyYW1ldHJpIGRlbCBzb25kYWdnaW8gbmVsbFwnaW50ZXJmYWNjaWEgQWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdOdW1lcm8gZGkgZ2lvcm5pIGRvcG8gbFwnaW52aW8gZGkgdW4gc29uZ2dpbyBpbiBjdWkgbm9uIHZlcnJhbm5vIGludmlhdGUgbnVvdmUgcmljaGllc3RlIGFsbG8gc3Rlc3NvIGNsaWVudGUgKDAgaW52aWVyw6AgaSBzb25kYWdnaSBzZW1wcmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdDb3JwbyBkZWwgdGVzdG8gZGkgZGVmYXVsdCBwZXIgbGEgbm90aWZpY2EgdmlhIGVtYWlsIGFsIGNsaWVudGUgcmlndWFyZG8gdW4gbnVvdm8gc29uZGFnZ2lvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ01pdHRlbnRlIGRpIGRlZmF1bHQgcGVyIGxhIG5vdGlmaWNhIHZpYSBlbWFpbCBhbCBjbGllbnRlIHJpZ3VhcmRvIHVuIG51b3ZvIHNvbmRhZ2dpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnT2dnZXR0byBkaSBkZWZhdWx0IHBlciBsYSBub3RpZmljYSB2aWEgZW1haWwgYWwgY2xpZW50ZSByaWd1YXJkbyB1biBudW92byBzb25kYWdnaW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBtb2R1bG8gcGVyIG1vc3RyYXJlIGxhIHZpc3VhbGl6emF6aW9uZSBjb21wYXR0YSBkaSB1bmEgbGlzdGEgZGkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5pc2NpIGlsIG51bWVybyBtYXNzaW1vIGRpIHNvbmRhZ2dpIGNoZSBwb3Nzb25vIGVzc2VyZSBpbnZpYXRpIGFsIGNsaWVudGUgaW4gdW4gaW50ZXJ2YWxsbyBkaSAzMCBnaW9ybmkgKDAgaW5kaWNhIHVuIG51bWVybyBpbGxpbWl0YXRvLCB0dXR0aSBpIHNvbmRhZ2dpIHNhcmFubm8gaW52aWF0aSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICdEZWZpbmlzY2kgaWwgbnVtZXJvIGRpIG9yZSBkb3BvIGxhIGNoaXVzdXJhIGRlbCB0aWNrZXQgcGVyIGxcJ2ludmlvIGRlbCBzb25kYWdnaW8gKDAgaW5kaWNhIGxcJ2ludmlvIGltbWVkaWF0byBkb3BvIGxhIGNoaXVzdXJhKS4gTm90YTogbFwnaW52aW8gcml0YXJkYXRvIGRlaSBzb25kYWdnaSB2aWVuZSBlc2VndWl0byBkYWwgRGFlbW9uIE9UUlMgY29uIGxcJ2F0dGl2YXppb25lIGRlbGxhIHByZWZlcmVuemEgIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhbHRlenphIGRpIGRlZmF1bHQgcGVyIGxhIHZpc3RhIGNvbXBsZXRhIHBlciBnbGkgZWxlbWVudGkgU3VydmV5Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHV0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdBYmlsaXRhIG8gZGlzYWJpbGl0YSBpbCBjb250cm9sbG8gZGVsbGEgY29uZGl6aW9uZSBkaSBpbnZpbyBwZXIgaWwgc2Vydml6aW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnQWJpbGl0YSBvIGRpc2FiaWxpdGEgaWwgY29udHJvbGxvIGRlbGxhIGNvbmRpemlvbmUgZGkgaW52aW8gcGVyIGlsIHRpcG8gZGkgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxvIGRpIHJlZ2lzdHJhemlvbmUgcGVyIGlsIHNvbmRhZ2dpbyBuZWxsXCdhcmVhIEFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ01vZHVsbyBkaSByZWdpc3RyYXppb25lIHBlciBpbCBzb25kYWdnaW8gbmVsbFwnYXJlYSBkaSBTb25kYWdnaSBQdWJibGljaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NlIHF1ZXN0YSBzb3R0b3N0cmluZ2EgdmllbmUgcmljb25vc2NpdXRhLCBpbCBzb25kYWdnaW8gbm9uIHZpZW5lIGludmlhdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsYSB2aXN1YWxpenphemlvbmUgImNvbXBhdHRhIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdTb25kYWdnaW8gcHViYmxpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRGV0dGFnbGkgc3RhdGlzdGljaGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTW9kdWxvIGRpIGFnZ2l1bnRhIGRlaSBzb25kYWdnaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ01vZHVsbyBkaSBtb2RpZmljYSBkZWkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTGltaXRlIHBlciB2aXN1YWxpenphemlvbmUgImNvbXBhdHRhIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1bG8gZGkgc3RhdGlzdGljaGUgZGVpIHNvbmRhZ2dpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAnTW9kdWxvIGRpIHpvb20gcGVyIGkgc29uZGFnZ2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnSSBzb25kYWdnaSBub24gc2FyYW5ubyBpbnZpYXRpIGFnbGkgaW5kaXJpenppIGVtYWlsIGNvbmZpZ3VyYXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnSWRlbnRpZmljYXRpdm8gcGVyIGlsIHNvbmRhZ2dpbywgcGVyIGVzZW1waW8gU29uZGFnZ2lvIywgSW5jaGllc3RhIy4gSWwgZGVmYXVsdCBTb25kYWdnaW8jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6amFfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn5paw6KaP6Kq/5p+744Gu5L2c5oiQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ+e0ueS7i+aWhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAn6Kq/5p+744Gu57S55LuL5paHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAn6YCa55+l44Gu5pys5paHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ+ODgeOCseODg+ODiOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ+WGhemDqOWQkeOBkeiqrOaYjic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn5LiA6Iis5oOF5aCx44Gu57eo6ZuGJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAn6LOq5ZWP44Gu57eo6ZuGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ+OBguOBquOBn+OBruePvuWcqOWcsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAn6Kq/5p+76LOq5ZWPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ+izquWVj+OBrui/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ+izquWVj+OBruWFpeWKmyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICflm57nrZTlv4XpoIjjgafjgZknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICfjgZPjga7oqr/mn7vjgavlr77jgZnjgovos6rllY/jgYzkv53lrZjjgZXjgozjgabjgYTjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICfos6rllY8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAn5Zue562U44GM5b+F6aCI44Gu6aCF55uu44Gn44GZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfjgZPjga7jgrXjg7zjg5njgqToqK3llY/jga7nt6jpm4bjgYzlrozkuobjgZfjgZ/jgonjgIHnlLvpnaLjgpLplonjgZjjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ+izquWVj+e3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ+izquWVj+OBuOaIu+OCiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICfoqK3llY86JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn6YG45oqe6IKiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICflm57nrZTjga7ov73liqAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfjgZPjga7os6rllY/jgbjjga7lm57nrZTjga/jgb7jgaDjgYLjgorjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ+OBk+OBruizquWVj+OBq+OBr+mBuOaKnuiCouOBjOOBguOCiuOBvuOBm+OCk+OAguODhuOCreOCueODiOOCqOODquOCouOBjOihqOekuuOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ+WbnuetlOOBrue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfos6rllY/jga7nt6jpm4bjgavmiLvjgosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ+WbnuetlDonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICfjg5rjg7zjgrjjgYLjgZ/jgorjga7mnIDlpKfmlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ+mAmuefpeOBrumAgeS/oeiAhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ+mAmuefpeOBruS7tuWQjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAn5pu05paw6ICFJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ+e1seioiOS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ+WbnuetlOS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ+mAgeS/oeaXpeaZgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfov5Tkv6Hml6XmmYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ+ips+e0sOOCkueiuuiqjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ+iqv+afu+e1seioiOOBruips+e0sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAn57Wx6KiI5LiA6Kan44Gr5oi744KLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ+iqv+afu+OBruaDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAn6YCB5L+h5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfov5Tkv6HmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICfoqr/mn7vjga7oqbPntLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAn55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ+ODgeOCseODg+ODiOODu+OCteODvOODk+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ+iqv+afu+e1kOaenOOBruOCsOODqeODlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn57Wx6KiI57WQ5p6c44GM44GC44KK44G+44Gb44KT44CCJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ+iqv+afuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ+OBk+OCjOOCieOBruizquWVj+OBq+WbnuetlOOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICfpgY7ljrvjga7lm57nrZTjgpLooajnpLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ+OBk+OCjOOCieOBr+mBjuWOu+OBq+WbnuetlOOBleOCjOOBn+OCguOBruOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICfoqr/mn7vjga7jgr/jgqTjg4jjg6snOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ+aWsOimj+iqv+afu+OBrui/veWKoCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAn6Kq/5p+744Gu57eo6ZuGJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICfoqr/mn7vos6rllY/jga7nt6jpm4YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAn44Gv44GEL+OBhOOBhOOBiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICfjg6njgrjjgqrjg5zjgr/jg7MgKOS4gOimpyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn44OB44Kn44OD44Kv44Oc44OD44Kv44K5ICjkuIDopqcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn6LOq5ZWP44K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAn5a6M5oiQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICfmnKrlrozmiJAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ+izquWVj+OBrue3qOmbhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ+WbnuetlOOBrue3qOmbhic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICfjgq3jg6Xjg7zjgYzpgbjmip7jgZXjgozjgabjgYTjgb7jgZvjgpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ+aWsOOBl+OBhOeKtuazgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfoqr/mn7vjga7oqqzmmI4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICflm57nrZTjgYLjgoonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn5Zue562U44Gq44GXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfjg5XjgqPjg7zjg4njg5Djg4Pjgq/jgYTjgZ/jgaDjgY3jgYLjgorjgYzjgajjgYbjgZTjgZbjgYTjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfoqr/mn7vjgYzlrozkuobjgZfjgb7jgZfjgZ/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAn6Kq/5p+744Gr5Zue562U5riI44G/44Gn44GZ44CCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfjgZPjga7os6rllY/jgpLmnKzlvZPjgavliYrpmaTjgZfjgabjgoLjgYTjgYTjgafjgZnjgYvvvJ/jgIDplqLpgKPjgZfjgabjgYTjgovjgZnjgbnjgabjga7jg4fjg7zjgr/jg7zjgYzlpLHjgo/jgozjgb7jgZkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAn5pys5b2T44Gr44GT44Gu562U44GI44KS5YmK6Zmk44GX44Gm44KC44GE44GE44Gn44GZ44GL77yfJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ+iqv+afu+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1vZHVsZSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAn6Kq/5p+76LOq5ZWP44KS57eo6ZuG44GZ44KL44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gr44GK44GR44KL6Kq/5p+744Kq44OW44K444Kn44Kv44OI44Gr5a++44GZ44KL5YWo44Gm44Gu44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJ+iqv+afu+ODoeODvOODq+OCkumAgeS/oeOBl+OBn+W+jOOAgeWQjOOBmOmhp+WuouOBq+aWsOOBl+OBhOiqv+afu+imgeaxguOBjOmAgeS/oeOBleOCjOOBquOBhOaXpeaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfmlrDjgZfjgYToqr/mn7vjgavjgaTjgYTjgabpoaflrqLjgavpgJrnn6XjgZnjgovjg6Hjg7zjg6vjga7mnKzmlofjga7jg4fjg5Xjgqnjg6vjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfmlrDjgZfjgYToqr/mn7vjgpLjgavjgaTjgYTjgabpoaflrqLjgavpgJrnn6XjgZnjgovjg6Hjg7zjg6vjga7pgIHkv6HogIXjga7jg4fjg5Xjgqnjg6vjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn5paw44GX44GE6Kq/5p+744KS44Gr44Gk44GE44Gm6aGn5a6i44Gr6YCa55+l44GZ44KL44Oh44O844Or44Gu5Lu25ZCN44Gu44OH44OV44Kp44Or44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ+iqv+afu+S4gOimpyhTKeOCkuihqOekuuOBmeOCi+OBn+OCgeOBruS4gOimp+ODouOCuOODpeODvOODq+OBruWumue+qSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGdyb3VwcyB3aGljaCBoYXZlIGEgcGVybWlzc2lvbiB0byBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4gQXJyYXkgaXMgZW1wdHkgYnkgZGVmYXVsdCBhbmQgYWdlbnRzIGZyb20gYWxsIGdyb3VwcyBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJzMw5pel44Gu6ZaT44Gr6aGn5a6i44Gr6YCB5L+h44GZ44KL6Kq/5p+744Gu5pyA5aSn5pWw44KS5a6a576p44GX44G+44GZ44CCKDDjga/nhKHliLbpmZDjgpLmhI/lkbPjgZfjgIHlhajjgabjga7oqr/mn7vopoHmsYLjgYzpgIHkv6HjgZXjgozjgb7jgZkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ+iqv+afu+aLoeWkp+eUu+mdouOBruimgee0oOOBq+WvvuOBl+OBpuODquODg+ODgeODhuOCreOCueODiOOBq+WvvuOBmeOCi+ODh+ODleOCqeODq+ODiOOBrumrmOOBleOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICfoqr/mn7vkuIDopqfjgafooajnpLrjgZXjgozjgovliJfmlbDjgpLlrprnvqnjgZfjgb7jgZnjgILjgZPjga7jgqrjg5fjgrfjg6fjg7Pjga/liJfjga7kvY3nva7jgavjga/kvZznlKjjgZfjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ+WFrOmWi+OCpOODs+OCv+ODvOODleOCp+ODvOOCueOBq+OBiuOBhOOBpuOAgemhp+WuouOBjDLluqblm57nrZTjgZfjgojjgYbjgajjgZfjgZ/pmpvjgavjgIHjgZPjgozjgb7jgafjga7lm57nrZTjg4fjg7zjgr/jgpLooajnpLrjgZnjgotTaG93Vm90ZURhdGHnlLvpnaLjgpLmnInlirnjgavjgZnjgovjgYvlkKbjgYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICfjgrXjg7zjg5Pjgrnjga7pgIHkv6HmnaHku7bjgpLmnInlirnjgb7jgZ/jga/nhKHlirnjgavjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICfjg4bjgqPjgrHjg4Pjg4jjgr/jgqTjg5fjga7pgIHkv6HmnaHku7bjgpLmnInlirnjgb7jgZ/jga/nhKHlirnjgavjgZnjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44OV44Kn44O844K544Gu57Wx6KiI44OV44Ot44Oz44OI44Ko44Oz44OJ44O744Oi44K444Ol44O844Or44Gu55m76Yyy44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjjga7lpInmm7TnlLvpnaLjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njg7vjg6Ljgrjjg6Xjg7zjg6vjga7nmbvpjLLjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7ntbHoqIjnirbms4Hjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njg7vjg6Ljgrjjg6Xjg7zjg6vjga7nmbvpjLLjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruiqv+afu+aLoeWkp+OBq+WvvuOBmeOCi+ODleODreODs+ODiOOCqOODs+ODieODu+ODouOCuOODpeODvOODq+OBrueZu+mMsuOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44O844K544GuUHVibGljU3VydmV544Kq44OW44K444Kn44Kv44OI44Gr5a++44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44O744Oi44K444Ol44O844Or44Gu55m76Yyy44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICfjgZPjga7mraPopo/ooajnj77jgavjg57jg4Pjg4HjgZnjgovloLTlkIjjgIHoqr/mn7vjga/poaflrqLjgavpgIHkv6HjgZXjgozjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfoqr/mn7vkuIDopqcgKFNtYWxsKSDjga4gKOiqv+afu+OBjOihqOekuuOBleOCjOOCiykg44Oa44O844K444Gr5a++44GZ44KL44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn5YWs6ZaL44Kk44Oz44K/44O844OV44Kn44O844K544GuUHVibGljU3VydmV544Kq44OW44K444Kn44Kv44OI44Gr5a++44GZ44KL44OV44Ot44Oz44OI44Ko44Oz44OJ44Oi44K444Ol44O844Or55m76Yyy44Gn44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+OCteODvOODmeOCpOODouOCuOODpeODvOODq+i/veWKoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn57Wx6KiI57eo6ZuG44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn6Kq/5p+75LiA6KanKFMp44Gu6KGo56S65pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAn57Wx6KiI6Kq/5p+744Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfoqr/mn7vjga7mi6HlpKfjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICfoqr/mn7vjga/oqK3lrprjgZXjgozjgZ/pm7vlrZDjg6Hjg7zjg6vjgqLjg4njg6zjgrnjgavjga/pgIHkv6HjgZXjgozjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ+S+i+OBiOOBsFN1cnZleSMsIE15U3VydmV5I+OBquOBqeOBruODgeOCseODg+ODiOOBruitmOWIpeWtkOOBp+OBmeOAguODh+ODleOCqeODq+ODiOOBr1N1cnZleSPjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyBhIGRlc2NyaXB0aW9uIGZvciBTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIG9uIFN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ+ODgeOCseODg+ODiOOBjOWujOS6huOBl+OBn+mam+OBq+OAgemhp+WuouOBq+iHquWLleeahOOBq+iqv+afu+ODoeODvOODq+OCkumAgeS/oeOBmeOCi+ODgeOCseODg+ODiOOCpOODmeODs+ODiOODouOCuOODpeODvOODq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICfov73jgaPjgabjga7jgrXjg7zjg5njgqTopoHmsYLjgpLpgIHkv6HjgZnjgovjg4jjg6rjgqzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bXNfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQnVhdCBTdXJ2ZXkgQmFydSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdQZW5nZW5hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdQZW55aWFzYXRhbiBQZW5nZW5hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnQmFkYW4gUGVtYmVyaXRhaHVhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdKZW5pcyBUaWNrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmlwdGlvbiBkYWxhbWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdFZGl0IE1ha2x1bWF0IFVtdW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdFZGl0IFNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdBbmRhIGRpIHNpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ1BlbnlpYXNhdGFuIFNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgUXVlc3Rpb24nfSA9ICdUYW1iYWggU29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnVGFpcCBzb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAnSmF3YXBhbiBkaXBlcmx1a2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnVGlhZGEgc29hbGFuIHlhbmcgZGlzaW1wYW4gdW50dWsga2FqaWFuIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnSmF3YXBhbiBkaXBlcmx1a2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdBcGFiaWxhIGFuZGEgc3VkYWggc2VsZXNhaSBtZW5ndWJhaCBzb2FsYW4ga2FqaSBzZWxpZGlrIGhhbnlhIHR1dHVwIHNrcmluIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0VkaXQgU29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAna2VtYmFsaSBrZXBhZGEgc29hbGFuLXNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdTb2FsYW46JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnSmF3YXBhbiBLZW11bmdraW5hbiBVbnR1ayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnVGFtYmFoIEphd2FiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAnVGlhZGEgamF3YXBhbiB5YW5nIGRpc2ltcGFuIHVudHVrIHNvYWxhbiBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdJbmkgdGlkYWsgbWVtcHVueWFpIGJlYmVyYXBhIGphd2FwYW4sIHRleHRhcmVhIGFrYW4gZGlwYXBhcmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdFZGl0IEphd2FwYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAna2VtYmFsaSB1bnR1ayBtZW5nZWRpdCBzb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ0phd2FwYW46JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTWFrc2ltdW0gc29hbCBzZWxpZGlrIGRpdHVuanVra2FuIHNldGlhcCBoYWxhbWFuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdQZW1iZXJpdGFodWFuIFBlbmdpcmltJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnVGVydGFrbHVrIFBlbWJlcml0YWh1YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ0RpdHVrYXIgZGVuZ2FuJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ0dhbWJhcmFuIEtlc2VsdXJ1aGFuIFN0YXRpc3RpayBkYXJpcGFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ0phZHVhbCBwZXJtaW50YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnTWFzYSBIYW50YXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnTWFzYSBVbmRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdMaWhhdCBtYWtsdW1hdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ1BlbnlpYXNhdGFuIERldGFpbHMgU3RhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAna2VtYmFsaSBrZSBTdGF0aXN0aWsgZ2FtYmFyYW4ga2VzZWx1cnVoYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAnTWFrbHVtYXQgVWt1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnbWVuZ2hhbnRhciBwZXJtaW50YWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdkaXRlcmltYSBrYWppIHNlbGlkaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdQZW55aWFzYXRhbiB0ZXJwZXJpbmNoaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXInfSA9ICdOb21ib3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnUGVya2hpZG1hdGFuIHRpa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnVWt1ciBLZXB1dHVzYW4gR3JhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnVGlhZGEgc3RhdCBrZXB1dHVzYW4uJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1BlbnlpYXNhdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnU2lsYSBqYXdhYiBzb2FsYW4tc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ1R1bmp1a2thbiBqYXdhcGFuIHNheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0luaSBhZGFsYWggamF3YXBhbiBhbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBUaXRsZSd9ID0gJ1RhanVrIFVrdXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ1RhbWJhaCBVa3VyIEJhcnUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ1VrdXIgRWRpdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnUGVueWlhc2F0YW4gRWRpdCBTb2FsYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnWWEvVGlkYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKFNlbmFyYWkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0NoZWNrYm94IChTZW5hcmFpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0plbmlzIHNvYWxhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ2xlbmdrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ3RpZGFrIGxlbmdrYXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkaXQgc29hbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpdCBKYXdhcGFuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy1UaWFkYSBnaWxpcmFuIGRpcGlsaWgtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdTdGF0dXMgYmFoYXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0h1cmFpYW4gcGVueWlhc2F0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdEaWphd2FiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ1RpZGFrIGRpamF3YWInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ1RlcmltYSBrYXNpaCBhdGFzIG1ha2x1bSBiYWxhcyBhbmRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0thamkgc2VsaWRpayBpdHUgc2VsZXNhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnQW5kYSB0ZWxhaCBtZW5qYXdhYiBrYWppIHNlbGlkaWsuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdBZGFrYWggYW5kYSBiZW5hci1iZW5hciBpbmdpbiBtZW1hZGFtIHNvYWxhbiBpbmk/IFNFTVVBIGRhdGEgYmVya2FpdGFuIGFrYW4gSElMQU5HISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0FkYWthaCBhbmRhIGJlbmFyLWJlbmFyIGluZ2luIG1lbWFkYW0gamF3YXBhbiBpbmk/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ1NhdHUgTW9kdWwgUGVueWlhc2F0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1NhdHUgbW9kdWwgdW50dWsgbWVuZ2VkaXQgc29hbGFuIHRpbmphdWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2VtdWEgcGFyYW1ldGVyIGJhZ2kgb2JqZWsgVWt1ciBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdKdW1sYWggaGFyaSBzZWxlcGFzIG1lbmdoYW50YXIgbWVsIGthamkgc2VsaWRpayBkaSBtYW5hIHRpYWRhIHBlcm1pbnRhYW4ga2FqaSBzZWxpZGlrIGJhcnUgZGloYW50YXIga2VwYWRhIHBlbGFuZ2dhbiB5YW5nIHNhbWEuIE1lbWlsaWggMCBha2FuIHNlbnRpYXNhIG1lbmdoYW50YXIgbWVsIGthamkgc2VsaWRpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnRGVmYXVsdCBiYWRhbiB1bnR1ayBwZW1iZXJpdGFodWFuIGUtbWVsIGtlcGFkYSBwZWxhbmdnYW4gdGVudGFuZyBrYWppIHNlbGlkaWsgYmFydS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdQZW5naGFudGFyIGxhbGFpIHVudHVrIHBlbWJlcml0YWh1YW4gZS1tZWwga2VwYWRhIHBlbGFuZ2dhbiB0ZW50YW5nIGthamkgc2VsaWRpayBiYXJ1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdUZXJ0YWtsdWsgbGFsYWkgdW50dWsgcGVtYmVyaXRhaHVhbiBlLW1lbCBrZXBhZGEgcGVsYW5nZ2FuIHRlbnRhbmcga2FqaSBzZWxpZGlrIGJhcnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBtb2R1bCBnYW1iYXJhbiB1bnR1ayBtZW51bmp1a2thbiBwYW5kYW5nYW4geWFuZyBrZWNpbCBzZW5hcmFpIGthamkgc2VsaWRpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ganVtbGFoIG1ha3NpbXVtIGthamkgc2VsaWRpayB5YW5nIG1lbmRhcGF0IGRpaGFudGFyIGtlcGFkYSBwZWxhbmdnYW4gc2V0aWFwIDMwIGhhcmkuICgwIGJlcm1ha25hIHRpZGFrIG1ha3NpbXVtLCBzZW11YSBwZXJtaW50YWFuIGthamkgc2VsaWRpayBha2FuIGRpaGFudGFyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBqdW1sYWggamFtIHN1YXR1IHRpa2V0IGFrYW4gZGl0dXR1cCB1bnR1ayBtZW5jZXR1c2thbiBwZW5naGFudGFyYW4gc3VhdHUga2FqaSBzZWxpZGlrLCAoMCBiZXJlcnRpIG1lbmdoYW50YXIgc2VnZXJhIHNlbGVwYXMgcGVudXR1cGFuKS4gTm90YTogcGVuZ2hhbnRhcmFuIGthamkgc2VsaWRpayB0ZXJ0dW5kYSBhZGFsYWggZGlsYWt1YW4gb2xlaCBPVFJTIERhZW1vbiwgcGVuZ2FrdGlmYW4gc2ViZWx1bW55YSB0ZXRhcGFuIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZXRpbmdnaWFuIGxhbGFpIHVudHVrIHBlbm9udG9uIFRla3MgS2F5YSB1bnR1ayBlbGVtZW4gWm9vbSBVa3VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcnVhbmdhbiBtZW51bmp1a2thbiBkYWxhbSBnYW1iYXJhbiBrYWppYW4uUGlsaWhhbiBpbmkgdGlkYWsgbWVtcHVueWFpIGtlc2FuIGtlIGF0YXMga2VkdWR1a2FuIHRpYW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnRGF5YWthbiBhdGF1IG55YWhkYXlha2FuIFVuZGkgUGFwYXIgRGF0YSBza3JpbiBkYWxhbSBhbnRhcmEgbXVrYSBhd2FtIHVudHVrIG1lbnVuanVra2FuIGRhdGEgaGFzaWwga2FqaWFuIHRlcnRlbnR1IGFwYWJpbGEgcGVsYW5nZ2FuIGN1YmEgdW50dWsgbWVuamF3YWIga2FqaSBzZWxpZGlrIGthbGkga2VkdWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnTWVtYm9sZWhrYW4gYXRhdSBtZWx1bXB1aGthbiBtZW5naGFudGFyIHNlbWFrYW4ga2VhZGFhbiB1bnR1ayBwZXJraGlkbWF0YW4gaXR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ01lbWJvbGVoa2FuIGF0YXUgbWVsdW1wdWhrYW4gbWVuZ2hhbnRhciBzZW1ha2FuIGtlYWRhYW4gdW50dWsgamVuaXMgdGlrZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JhaGFnaWFuIGRlcGFuIHBlbmRhZnRhcmFuIG1vZHVsIHVudHVrIG1lbmFtYmFoIGthamkgc2VsaWRpayBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmFoYWdpYW4gZGVwYW4gcGVuZGFmdGFyYW4gbW9kdWwgdW50dWsgbWVueXVudGluZyBrYWppIHNlbGlkaWsgZGFsYW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCYWhhZ2lhbiBEZXBhbiBwZW5kYWZ0YXJhbiBtb2R1bCBzdGF0aXN0aWsga2FqaWFuIGRhbGFtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCBwZW5kYWZ0YXJhbiBtb2R1bCB1bnR1ayB6b29tIGthamkgc2VsaWRpayBkYWxhbSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnRnJvbnRlbmQgcGVuZGFmdGFyYW4gbW9kdWwgYmFnaSBvYmplayBVa3VyIEF3YW0gZGkga2F3YXNhbiBVa3VyIGF3YW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdKaWthIHBlcmxhd2FuYW4gcmVnZXggaW5pLCB0aWFkYSBrYWppYW4gcGVsYW5nZ2FuIGFrYW4gZGloYW50YXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGhhbGFtYW4gKGRpIG1hbmEga2FqaSBzZWxpZGlrIGRpdHVuanVra2FuKSBnYW1iYXJhbiBrYWppYW4ga2VjaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnUGVueWlhc2F0YW4gYXdhbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbnl1bnRpbmcga2FqaSBzZWxpZGlrIGRhbGFtIHBhcGFyYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVueXVudGluZyBzb2FsYW4ga2FqaSBzZWxpZGlrIGRhbGFtIHBhcGFyYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW51bmp1a2thbiBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBrZW1iYWxpIGtlIHBhcGFyYW4genVtIGthamkgc2VsaWRpayBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIHp1bSBtYWtsdW1hdCBzdGF0aXN0aWsga2FqaSBzZWxpZGlrIGRhbGFtIHBhcGFyYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdNYWtsdW1hdCBzdGF0aXN0aWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTW9kdWwgVGFtYmFoIFNvYWwgU2VsaWRpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnS2FqaSBzZWxpZGlrIHN1bnRpbmdhbiBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ1VrdXIgVGluamF1YW4gSGFkICJLZWNpbCInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdLYWppIHNlbGlkaWsgTW9kdWwgU3RhdGlzdGlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdQZW55aWFzYXRhbiBab29tIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnVWt1ciB0aWRhayBha2FuIGRpaGFudGFyIGtlIGFsYW1hdCBlLW1lbCB5YW5nIGRpa29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdQZW5nZWNhbSB1bnR1ayBrYWppIHNlbGlkaWssIG1pc2FsbnlhIFBlbnlpYXNhdGFuICMgTXlTdXJ2ZXkgIy4gTGFsYWkgYWRhbGFoIFBlbnlpYXNhdGFuIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyBhIGRlc2NyaXB0aW9uIGZvciBTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIG9uIFN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ1Rpa2V0IG1vZHVsIGFjYXJhIHVudHVrIG1lbmdoYW50YXIgcGVybWludGFhbiBlLW1lbCBzZWNhcmEgYXV0b21hdGlrIGthamkgc2VsaWRpayBrZXBhZGEgcGVsYW5nZ2FuIGppa2EgdGlrZXQgZGl0dXR1cC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnUGVuY2V0dXMgbWVuZ2hhbnRhciBwZXJtb2hvbmFuIHNvYWwgc2VsaWRpayBkaXRhbmdndWhrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bmJfTk9fU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnTGFnIG55IHNww7hycmV1bmRlcnPDuGtlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVrc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnTWVsZGluZyBpIHZhcnNlbC1lLXBvc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnSW50ZXJuIGJlc2tyaXZlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdSZWRpZ2VyIGdlbmVyZWxsIGluZm9ybWFzam9uJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnUmVkaWdlciBzcMO4cnNtw6VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnU3DDuHJzbcOlbCB0aWwgc3DDuHJyZXVuZGVyc8O4a2Vsc2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0xlZ2cgdGlsIHNww7hyc23DpWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdTa3JpdiBpbm4gc3DDuHJzbcOlbGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ0luZ2VuIHNww7hyc23DpWwgbGFncmV0IGZvciBkZW5uZSBzcMO4cnJldW5kZXJzw7hrZWxzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnU3DDuHJzbcOlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnUmVkaWdlciBzcMO4cnNtw6VsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAndGlsYmFrZSB0aWwgc3DDuHJzbcOlbGVuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdNdWxpZ2Ugc3ZhcmFsdGVybmF0aXZlciBmb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0xlZ2cgdGlsIHN2YXJhbHRlcm5hdGl2ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0RldHRlIHNww7hyc23DpWxldCBoYXIgaWtrZSBtdWxpZ2hldCBmb3Igc3ZhcmFsdGVybmF0aXZlci4gSGVyIHZpbCBkZXQga3VuIGJsaSB2aXN0IGVuIHRla3N0Ym9rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdSZWRpZ2VyIHN2YXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnZ8OlIHRpbGJha2UgZm9yIMOlIHJlZGlnZXJlIHNww7hyc23DpWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnQXZzZW5kZXIgYXYgdmFyc2VsLWUtcG9zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ1RpdHRlbCBpIHZhcnNlbC1lLXBvc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ0VuZHJldCBhdic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJlbGxmb3Jlc3DDuHJzZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdUaWQgc2VuZHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAnVGlkIHN2YXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdEZXRhbGpzdGF0aXN0aWtrIGZvciBzcMO4cnJldW5kZXJzw7hrZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnZ8OlIHRpbGJha2UgdGlsIHN0YXRpc3Rpa2tvdmVyc2lrdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFzam9uIG9tIHNww7hycmV1bmRlcnPDuGtlbHNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnU2VuZHRlIGZvcmVzcMO4cnNsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ01vdHRhdHRlIHNww7hycmV1bmRlcnPDuGtlbHNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFsamVyIG9tIHNww7hycmV1bmRlcnPDuGtlbHNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3JhZmlzayBmcmVtc3RpbGxpbmcgYXYgc3ZhcmVuZSBpIHNww7hycmV1bmRlcnPDuGtlbHNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnSW5nZW4gcmVzdWx0YXRlcic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdTcMO4cnJldW5kZXJzw7hrZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnUmVkaWdlciBzcMO4cnJldW5kZXJzw7hrZWxzZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnUmVkaWdlciBzcMO4cnNtw6VsIHRpbCBzcMO4cnJldW5kZXJzw7hrZWxzZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdFbiBtb2R1bCBmb3Igc3DDuHJyZXVuZGVyc8O4a2Vsc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdFbiBtb2R1bCBmb3Igw6UgcmVkaWdlcmUgc3DDuHJyZXVuZGVyc8O4a2Vsc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Ftb3VudCBvZiBkYXlzIGFmdGVyIHNlbmRpbmcgYSBzdXJ2ZXkgbWFpbCBpbiB3aGljaCBubyBuZXcgc3VydmV5IHJlcXVlc3RzIGFyZSBzZW50IHRvIHRoZSBzYW1lIGN1c3RvbWVyLiBTZWxlY3RpbmcgMCB3aWxsIGFsd2F5cyBzZW5kIHRoZSBzdXJ2ZXkgbWFpbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdTdGFuZGFyZCBtZWxkaW5nIGkgdmFyc2VsLWUtcG9zdCB0aWwga3VuZGVyIG9tIGVuIG55IHNww7hycmV1bmRlcnPDuGtlbHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1N0YW5kYXJkIGF2c2VuZGVyIGkgdmFyc2VsLWUtcG9zdCB0aWwga3VuZGVyIG9tIGVuIG55IHNww7hycmV1bmRlcnPDuGtlbHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdTdGFuZGFyZCBvdmVyc2tyaWZ0IGkgdmFyc2VsLWUtcG9zdCB0aWwga3VuZGVyIG9tIGVuIG55IHNww7hycmV1bmRlcnPDuGtlbHNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnSHZpcyBkZW5uZSByZWdleGVuIHN0ZW1tZXIsIHZpbCBkZXQgaWtrZSBibGkgc2VuZHQgdXQgZW4gc3DDuHJyZXVuZGVyc8O4a2Vsc2UgdGlsIGt1bmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnU3RhbmRhcmQgaWRlbnRpZmlrYXRvciBmb3IgZW4gdW5kZXJzw7hrbHNlLCBmLmVrcy4gU3DDuHJyZXVuZGVyc8O4a2Vsc2UjLCBNaW5TcMO4cnJldW5kZXJzw7hrZWxzZSMuIFN0YW5kYXJkIGVyIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgaXMgYSBkZXNjcmlwdGlvbiBmb3IgU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93biBvbiBTdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6bmxfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnTmlldXdlIGVucXXDqnRlIGFhbm1ha2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ0ludHJvZHVjdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1Y3RpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0JvZHkgdGV4dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdJbnRlcm5lIG9tc2NocmlqdmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnQmV3ZXJrIGFsZ2VtZW5lIGluZm9ybWF0aWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdCZXdlcmsgdnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJyc7CiAgICAkU2VsZi0+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+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ0RldGFpbHMgZW5xdcOqdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ1RpY2tldCBTZXJ2aWNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ1Jlc3VsdGF0ZW4gKGdyYWZpZWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdHZWVuIHJlc3VsdGF0ZW4uJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0VucXXDqnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAnQmVhbnR3b29yZHQgdSBkZSB2b2xnZW5kZSB2cmFnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAnVG9vbiBtaWpuIGFudHdvb3JkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0RpdCB6aWpuIHV3IGFudHdvb3JkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnRW5xdcOqdGV0aXRlbCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnTmlldXdlIGVucXXDqnRlIHRvZXZvZWdlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnQmV3ZXJrIGVucXXDqnRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBRdWVzdGlvbnMnfSA9ICdCZXdlcmsgdnJhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0phL05lZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdLZXV6ZXJvbmRqZSAobGlqc3QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ1NlbGVjdGlldmFrIChsaWpzdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdWcmFhZ3R5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdWb2xsZWRpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAnT252b2xsZWRpZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnQmV3ZXJrIHZyYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnQmV3ZXJrIGFudHdvb3JkJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gR2VlbiByaWogZ2VzZWxlY3RlZXJkIC0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IFN0YXR1cyd9ID0gJ05pZXV3ZSBTdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnT21zY2hyaWp2aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnYmVhbnR3b29yZCc7CiAgICAkU2VsZi0+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+eydEdXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgc3RhdHMgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ1N0YXRzIERldGFpbHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgaXMgYSBkZXNjcmlwdGlvbiBmb3IgU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93biBvbiBTdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cGxfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnVXR3w7NyeiBub3fEhSBhbmtpZXTEmSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdXcHJvd2FkemVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ1dzdMSZcCBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnVHJlxZvEhyBwb3dpYWRvbWllbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ1R5cHkgemfFgm9zemXFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ1dld27EmXRyem55IG9waXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkeXR1aiBpbmZvcm1hY2plIG9nw7NsbmUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdFZHl0dWogcHl0YW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdKZXN0ZcWbIHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQeXRhbmlhIGFua2lldHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnRG9kYWogcHl0YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ1dwcm93YWTFuiBweXRhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1d5bWFnYW5hIG9kcG93aWVkxbonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdCcmFrIHB5dGHFhCB6YXBpc2FueWNoIHcgdGVqIGFua2llY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1B5dGFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAnV3ltYWdhbmEgb2Rwb3dpZWTFuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnS2llZHkgemFrb8WEY3p5c3ogZWR5Y2rEmSBweXRhxYQgYW5raWV0eSBwbyBwcm9zdHUgemFta25paiB0byBva25vLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJ1phbWtuaWogdG8gb2tubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnRWR5dHVqIHB5dGFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICdwb3dyw7N0IGRvIHB5dGHFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdQeXRhbmllOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01vxbxsaXdlIG9kcG93aWVkemkgZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0RvZGFqIG9kcG93aWVkxbonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdCcmFrIHphcGlzYW55Y2ggb2Rwb3dpZWR6aSBuYSB0byBweXRhbmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnTmllIHBvc2lhZGEgd2llbHUgb2Rwb3dpZWR6aSwgYsSZZHppZSB3ecWbd2lldGxhbmUgcG9sZSB0ZWtzdG93ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdFZHl0dWogb2Rwb3dpZWTFuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICdwb3dyw7N0IGRvIGVkeWNqaSBweXRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICdPZHBvd2llZHo6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTWFrcy4gbGljemJhIHd5xZt3aWV0bGFueWNoIGFua2lldCBuYSBzdHJvbsSZJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdOYWRhd2NhIHBvd2lhZG9taWVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdUZW1hdCBwb3dpYWRvbWllbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdabWllbmlvbmUgcHJ6ZXonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnUHJ6ZWdsxIVkIHN0YXR5c3R5a2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJlbGEgxbzEhWRhxYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdDemFzIHd5c8WCYW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdDemFzIGfFgm9zb3dhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdab2JhY3ogc3pjemVnw7PFgnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdTemN6ZWfDs8WCeSBzdGF0eXN0eWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdXc3RlY3ogZG8gcHJ6ZWdsxIVkdSBzdGF0eXN0eWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjamUgbyBhbmtpZWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnV3lzxYJhbmUgxbzEhWRhbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdPdHJ6eW1hbmUgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ1N6Y3plZ8OzxYJ5IGFua2lldHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAnTGljemJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ1pnxYJvc3plbmllIFVzxYJ1Zyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ1d5a3JlcyB3eW5pa8OzdyBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdCcmFrIHd5bmlrw7N3IGFua2lldHkuJzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ0Fua2lldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQcm9zesSZIG9kcG93aWVkemllxIcgbmEgdGUgcHl0YW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdQb2thxbwgbW9qZSBvZHBvd2llZHppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICdPdG8gVHdvamUgb2Rwb3dpZWR6aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdUeXR1xYIgYW5raWV0eSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnRG9kYWogbm93xIUgYW5raWV0xJknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnTmllIG1hc3ogdXByYXduaWXFhCBkbyB0ZWogYW5raWV0eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnTmllIHBvZGFubyBpZGVudHlmaWthdG9yYSBhbmtpZXR5IFN1cnZleUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkeWNqYSBhbmtpZXR5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ05pZSBtYXN6IHVwcmF3bmllxYQgZG8gdGVqIGFua2lldHkgbHViIHB5dGFuaWEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnTmllIG1hc3ogdXByYXduaWXFhCBkbyB0ZWogYW5raWV0eSwgcHl0YW5pYSBsdWIgb2Rwb3dpZWR6aSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnRWR5Y2phIHB5dGHFhCBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ1Rhay9OaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmFkaW8gKExpc3RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVja2JveCAoTGlzdCknfSA9ICdQb2xlIHd5Ym9ydSAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVHlwIHB5dGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdLb21wbGV0bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ05pZWtvbXBsZXRuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAnRWR5Y2phIHB5dGHFhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ0VkeWNqYSBvZHBvd2llZHppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gTmllIHd5YnJhbm8ga29sZWpraSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOb3d5IHN0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnT3BpcyBhbmtpZXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnb2Rwb3dpZWR6aWFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICduaWUgb2Rwb3dpZWR6aWFubyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnRHppxJlrdWrEmW15IHphIHd5cGXFgm5pZW5pZSBhbmtpZXR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0Fua2lldGEgemFrb8WEY3pvbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJ1dpYWRvbW/Fm8SHIGFua2lldHkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICdNb2R1xYIgbmllIHfFgsSFY3pvbnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnVGEgZnVua2Nqb25hbG5vxZvEhyBuaWUgamVzdCB3xYLEhWN6b25hLiBQcm9zesSZIHNrb250YWt0dWogc2nEmcKgeiBhZG1pbmlzdHJhdG9yZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICdCxYLEhWQgYW5raWV0eSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ05pZXByYXdpZMWCb3d5IGtsdWN6IGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICdXcHJvd2Fkem9ueSBrbHVjeiBhbmtpZXR5IGplc3QgbmllcHJhd2lkxYJvd3kuIEplxZtsaSB0cmFmacWCZcWbIHR1dGFqIHByenkgcG9tb2N5IGxpbmt1LCBiecSHIG1vxbxlIGplc3Qgb24gbmllYWt0dWFsbnkgbHViIG5pZXByYXdpZMWCb3d5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJ1d5bmlrIGFua2lldHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ0RhbmUgd3luaWtvd2UgYW5raWV0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnSnXFvCBvZHBvd2llZHppYcWCZcWbIG5hIHTEmSBhbmtpZXTEmS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ0N6eSBuYSBwZXdubyBjaGNlc3ogdXN1bsSFxIcgdG8gcHl0YW5pZT8gV3N6eXN0a2llIHp3acSFemFuZSBkYW5lIGLEmWTEhSBVU1VOScSYVEUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnQ3p5IG5hIHBld25vIGNoY2VzeiB1c3VuxIXEhyB0xJkgb2Rwb3dpZWTFuj8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnTW9kdcWCIGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ01vZHXFgiBkbyBlZHljamkgcHl0YcWEIGFua2lldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1dzenlzdGtpZSBwYXJhbWV0cnkgZGxhIGFua2lldCB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnTGljemJhIGRuaSBwbyBrdMOzcnljaCBuYXN0xIVwaSB3eXPFgmFuaWUgxbzEhWRhbmlhIHd5cGXFgm5pZW5pYSBhbmtpZXR5LiBXcHJvd2FkemVuaWUgIjAiIHNwb3dvZHVqZSB3eXPFgmFuaWUgZS1tYWlsYSB6YXdzemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0RvbXnFm2xuYSBidWRvd2EgaW5mb3JtYWNqaSBkbCB1xbx5dGtvd25pa2Egb2Rub8WbbmllIG5vd2VqIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnRG9tecWbbG55IG5hZGF3Y2EgaW5mb3JtYWNqaSBvIG5vd2VqIGFua2llY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdEb215xZtsbnkgdGVtYXQgaW5mb3JtYWNqaSBvIG5vd2VqIGFua2lldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ0RlZm5pdWplIG1vZHXFgiBwcnplZ2zEhWR1IHd5xZt3aWV0bGFuaWEgbGlzdCBhbmtpZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGdydXB5LCBrdMOzcmUgbWFqxIUgZG9zdMSZcCBkbyB6bWlhbnkgc3RhdHVzw7N3IGFua2lldC4gVGFiZWxhIGplc3QgZG9tecWbbG5pZSBwdXN0YSBpIGFnZW5jaSB6ZSB3c3p5c3RraWNoIGdydXAgbW9nxIUgem1pZW5pYcSHIHN0YXR1c3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdEZWZpbml1amUgbWFrc3ltYWxuxIUgbGljemLEmSBhbmtpZXQgd3lzecWCYW5pdSBkbyBLbGllbnRhIHcgY2nEhWd1IDMwIGRuaS4gKDAgb3puYWN6YSBicmFrIG9ncmFuaWN6ZW5pYSwgd3N6eXN0a2llIMW8xIVkYW5pYSBixJlkxIUgd3lzecWCYW5lKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ1VzdGFsYSBsaWN6YsSZIGdvZHppbiBrdMOzcmUgbXVzesSFIG1pbsSFxIcgb2QgemFta25pxJljaWEgemfFgm9zemVuaWEgZG8gd3lzxYJhbmlhIGFua2lldHkgKDAgb3puYWN6YSBiZXp6d8WCb2N6bsSFIHd5c3nFgmvEmSBwcnp5IHphbXlrYW5pdSB6Z8WCb3N6ZW5pYSkuIFV3YWdhOiBvcMOzxbpuaW9uZSB3eXN5xYJhbmllIGFua2lldHkgamVzdCByZWFsaXpvd2FuZSBwcnpleiBEZW1vbmEgT1RSUywgcG8gdXByemVkbmllaiBha3R5d2FjamkgdyB1c3Rhd2llbmlhY2g6IFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb215xZtsbsSFIHd5c29rb8WbxIcgd2lkb2vDs3cgUmljaHRleHQgZGxhIGVsZW1lbnTDs3cgU3VydmV5Wm9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBtYWtzeW1hbG7EhSB3eXNva2/Fm8SHIHdpZG9rw7N3IFJpY2h0ZXh0IGRsYSBlbGVtZW50w7N3IFN1cnZleVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICdEZWZpbml1amUgd2lkb2N6bmUga29sdW1ueSB3IHByemVnbMSFZHppZSBhbmtpZXQuIFRhIG9wY2phIG5pZSB3cMWCeXdhIG5hIHBvenljasSZIGtvbHVtbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ0VkeXR1aiBpbmZvcm1hY2plIG9nw7NsbmUgYW5raWV0eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ0VkeXR1aiBweXRhbmlhIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ1fFgsSFY3ogbHViIHd5xYLEhWN6IGVrcmFuIFNob3dWb3RlRGF0YSB3IGludGVyZmVqc2llIHB1YmxpY3pueW0gYWJ5IHBva2F6YcSHIHd5bmlraSBhbmtpZXR5IGdkeSBrbGllbnQgcHLDs2J1amUgb2Rwb3dpZWR6aWXEhyBuYSBha2lldMSZIGRydWdpIHJhei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdXxYLEhWN6YSBsdWIgd3nFgsSFY3phIHNwcmF3ZHphbmllIHdhcnVua3Ugd3lzecWCa2kgZGxhIHVzxYJ1Z2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnV8WCxIVjemEgbHViIHd5xYLEhWN6YSBzcHJhd2R6YW5pZSB3YXJ1bmt1IHd5c3nFgmtpIGRsYSB0eXB1IHpnxYJvc3plbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1xYIgZnJvbnRlbmQgcmVqZXN0cnVqxIVjeSBkb2Rhd2FuaWUgYW5raWV0IHcgcGFuZWx1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGVkaXQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHXFgiBmcm9udGVuZCByZWplc3RydWrEhWN5IGVkeWNqxJkgYW5raWV0IHcgcGFuZWx1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1xYIgZnJvbnRlbmQgcmVqZXN0cnVqxIVjeSBzdGF0eXN0eWvEmSBhbmtpZXQgdyBwYW5lbHUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdcWCIGZyb250ZW5kIHJlamVzdHJ1asSFY3kgcG9kZ2zEhWQgYW5raWV0IHcgcGFuZWx1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ01vZHXFgiBmcm9udGVuZCByZWplc3RydWrEhWN5IG9iaWVrdCBQdWJsaWNTdXJ2ZXkgdyBvYnN6YXJ6ZSBwdWJsaWN6bnltIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdHZHkgdG8gd3lyYcW8ZW5pZSByZWd1bGFybmUgamVzdCBzcGXFgm5pb25lLCBuaWUgem9zdGFuaWUgd3lzxYJhbmEgxbxhZG5hIGFua2lldGEgZG8ga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIHN0cm9uIChuYSBrdMOzcnljaCBwb2thenl3YW5lIHPEhSBhbmtpZXR5KSBkbGEgbWHFgmVnbyBwcnplZ2zEhWR1IGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICdBbmtpZXRhIHB1YmxpY3puYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIGxpbmsgdyBtZW51IGRvIGVkeWNqaSBhbmtpZXR5IHcgamVqIHByenlibGnFvG9ueW0gd2lkb2t1IHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIGxpbmsgdyBtZW51IGRvIGVkeWNqaSBweXRhxYQgYW5raWV0eSB3IGplaiBwcnp5YmxpxbxvbnltIHdpZG9rdSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bva2F6dWplIHcgbWVudSBsaW5rIHdzdGVjeiB3IHdpZG9rdSBwcnp5YmxpxbxvbnltIGFua2lldHkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG9rYXp1amUgbGluayB3IG1lbnUgZG8gcHJ6eWJsacW8YW5pYSBzemN6ZWfDs8WCw7N3IHN0YXR5c3R5ayBhbmtpZXR5IHcgamVqIHdpZG9rdSBwcnp5YmxpxbxvbnltIHcgaW50ZXJmZWpzaWUgYWdlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdTemN6ZWfDs8WCeSBzdGF0eXN0eWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnTW9kdcWCIGRvZGF3YW5pYSBhbmtpZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNb2R1xYIgZWR5Y2ppIGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIgTGltaXQnfSA9ICdMaW1pdCAibWHFgmVnbyIgcHJ6ZWdsxIVkdSBhbmtpZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1xYIgc3RhdHlzdHlrIGFua2lldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ1BvZGdsxIVkIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnTGltaXQgaWxvxZtjaSBhbmtpZXQgdyAibWHFgnltIiBwcnplZ2zEhWR6aWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnQW5raWV0eSBuaWUgYsSZZMSFIHd5c3nFgmFuZSBuYSBza29uZmlndXJvd2FuZSBhZHJlc3kgZW1haWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdJZGVudHlmaWthY2phIGRsYSBhbmtpZXR5LCBucC4gU3VydmV5IywgTXlTdXJ2ZXkjLiBEb215xZtsbmllOiBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnWmRhcnplbmllIHpnxYJvc3plbmlhIHd5c3nFgmEgYXV0b21hdHljem5pZSBlLW1haWxhIHogcHJvxZtixIUgbyB3eXBlxYJuaWVuaWUgYW5raWV0eSBwbyB6YW1rbmnEmWNpdSB6Z8WCb3N6ZW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnV3l6d2FsYWN6IG9ww7PFum5pb25laiB3eXN5xYJraSBwcsOzxZtiIG8gd3lwZcWCbmllbmllIGFua2lldHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnUG9kZ2zEhWQgc3pjemVnw7PFgsOzdyBzdGF0eXN0eWsuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cHRfQlJfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnQ3JpYXIgTm92YSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICdJbnRyb2R1w6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHXDp8OjbyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ0NvcnBvIGRhIE5vdGlmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlwb3MgZGUgQ2hhbWFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyacOnw6NvIEludGVybmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ0VkaXRhciBJbmZvcm1hw6fDtWVzIEdlcmFpcyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBQZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAnVm9jw6ogZXN0YSBhcXVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICdQZXJndW50YXMgZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWRpY2lvbmFyIFBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmV2YSBhIHBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1Jlc3Bvc3RhIHJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ05lbmh1bWEgcXVlc3TDo28gc2FsdmEgcGFyYSBlc3RhIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1Blcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1Jlc3Bvc3RhIFJlcXVlcmlkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGVuIHlvdSBmaW5pc2ggdG8gZWRpdCB0aGUgc3VydmV5IHF1ZXN0aW9ucyBqdXN0IGNsb3NlIHRoaXMgc2NyZWVuLid9ID0KICAgICAgICAnUXVhbmRvIHZvY8OqIHRlcm1pbmFyIGRlIGVkaXRhciBhcyBxdWVzdMO1ZXMgZGEgcGVzcXVpc2EsIGFwZW5hcyBmZWNoZSBhIHRlbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdFZGl0YXIgUGVyZ3VudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBxdWVzdGlvbnMnfSA9ICd2b2x0YXIgw6BzIHBlcmd1bnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdRdWVzdMOjbzonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdQb3Nzw612ZWlzIFJlc3Bvc3RhcyBQYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdBZGljaW9uYXIgUmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdOw6NvIGjDoSByZXNwb3N0YXMgc2FsdmFzIHBhcmEgZXN0YSBxdWVzdMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnRXN0YSBwZXJndW50YSBuw6NvIHBvc3N1aSB2w6FyaWFzIHJlc3Bvc3RhcywgdW1hIMOhcmVhIGRlIHRleHRvIHNlcsOhIG1vc3RyYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnRWRpdGFyIFJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ3ZvbHRhciBwYXJhIGVkaXRhciBwZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnUmVzcG9zdGE6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnUXRkLiBtw6F4LiBkZSBwZXNxdWlzYXMgZXhpYmlkYXMgcG9yIHDDoWdpbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1JlbWV0ZW50ZSBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnQXNzdW50byBkYSBOb3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYWRvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdSZXN1bW8gZGUgRXN0YXTDrXN0aWNhcyBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ1RhYmVsYSBkZSBSZXF1aXNpw6fDtWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAnSG9yYSBkZSBFbnZpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdIb3JhIGRvIFZvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ1ZlciBkZXRhbGhlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ0RldGFsaGVzIGRlIEVzdGF0w61zdGljYXMgZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ3ZvbHRhciBhbyByZXN1bW8gZGUgZXN0YXTDrXN0aWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDo28gZGEgUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ1NvbGljaXRhw6fDtWVzIGVudmlhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdTb2xpY2l0YcOnw7VlcyByZWNlYmlkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdEZXRhbGhlcyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXInfSA9ICdOw7ptZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ1NlcnZpw6dvIGRvIGNoYW1hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcsOhZmljb3MgZGUgUmVzdWx0YWRvcyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnU2VtIHJlc3VsdGFkb3MgZGUgZXN0YXTDrXN0aWNhcy4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnUGVzcXVpc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdQb3IgZmF2b3IsIHJlc3BvbmRhIGVzdGFzIHF1ZXN0w7Vlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdNb3N0cmFyIG1pbmhhcyByZXNwb3N0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ0VzdGFzIHPDo28gc3VhcyByZXNwb3N0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVMOtdHVsbyBkYSBQZXNxdWlzYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnQWRpY2lvbmFyIE5vdmEgUGVzcXVpc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAnVm9jw6ogbsOjbyB0ZW0gcGVybWlzc8OjbyBwYXJhIGVzdGEgcGVzcXVpc2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFN1cnZleUlEIGlzIGdpdmVuISd9ID0gJ05lbmh1bSBJRCBkYSBQZXNxdWlzYSBpbmZvcm1hZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnRWRpdGFyIFBlc3F1aXNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ1ZvY8OqIG7Do28gdGVtIHBlcm1pc3PDo28gcGFyYSBlc3RhIHBlc3F1aXNhIG91IHBlcmd1bnRhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyISd9ID0gJ1ZvY8OqIG7Do28gdGVtIHBlcm1pc3PDo28gcGFyYSBlc3RhIHBlc3F1aXNhLCBwZXJndW50YSBvdSByZXNwb3N0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnRWRpdGFyIFBlcmd1bnRhcyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdTaW0vTsOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICdSYWRpbyAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ0NoZWNrYm94IChMaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdUaXBvIGRlIHF1ZXN0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnQ29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0luY29tcGxldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0VkacOnw6NvIGRlIFBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnRWRpw6fDo28gZGUgUmVzcG9zdGEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnTmVuaHVtYSBmaWxhIHNlbGVjaW9uYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdOb3ZvIGVzdGFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8OjbyBkYSBQZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ1Jlc3BvbmRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnTsOjbyByZXNwb25kaWRvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdPYnJpZ2FkbyBwZWxhIHN1YSBwYXJ0aWNpcGHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICdBIHBlc3F1aXNhIGVzdMOhIGZpbmFsaXphZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJ01lbnNhZ2VtIGRhIFBlc3F1aXNhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnTcOzZHVsbyBuw6NvIGhhYmlsaXRhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnRXN0YSBmdW5jaW9uYWxpZGFkZSBuw6NvIGVzdMOhIGF0aXZhLCBwb3IgZmF2b3IgY29udGF0ZSBzZXUgYWRtaW5pc3RyYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ0Vycm8gbmEgUGVzcXVpc2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICdDaGF2ZSBkYSBwZXNxdWlzYSBpbnbDoWxpZGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICdBIGNoYXZlIGRhIHBlc3F1aXNhIGluc2VyaWRhIMOpIGludsOhbGlkYSwgc2Ugdm9jw6ogYWNlc3NvdSB1bSBsaW5rLCB0YWx2ZXogZWxlIGVzdGVqYSBvYnNvbGV0byBvdSBxdWVicmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICdWb3RvIGRhIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICdEYWRvcyBkbyB2b3RvIGRhIHBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICdWb2PDqiBqw6EgcmVzcG9uZGV1IGEgcGVzcXVpc2EuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdWb2PDqiByZWFsbWVudGUgZGVzZWphIGV4Y2x1aXIgZXNzYSBxdWVzdMOjbz8gVE9ET1Mgb3MgZGFkb3MgYXNzb2NpYWRvcyBzZXLDo28gUEVSRElET1MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnVm9jw6ogcmVhbG1lbnRlIHF1ZXIgZXhjbHVpciBlc3NhIHJlc3Bvc3RhID8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnVW0gTcOzZHVsbyBkZSBQZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VtIG3Ds2R1bG8gcGFyYSBlZGl0YXIgcGVyZ3VudGFzIGRlIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RvZG9zIG9zIHBhcsOibWV0cm9zIHBhcmEgYSBQZXNxdWlzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdJbnRlcnZhbG8gZGUgZGlhcyBhcMOzcyBlbnZpYXIgdW0gZS1tYWlsIGRlIHBlc3F1aXNhIGRlbnRybyBkbyBxdWFsIG5vdmFzIHJlcXVpc2nDp8O1ZXMgZGUgcGVzcXVpc2EgbsOjbyBzZXLDo28gZW52aWFkYXMgcGFyYSBvIG1lc21vIGNsaWVudGUuIFNlbGVjaW9uYXIgMCBpcsOhIHNlbXByZSBlbnZpYXIgbyBlLW1haWwgZGUgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NvcnBvIHBhZHLDo28gcGFyYSBvIGUtbWFpbCBkZSBub3RpZmljYcOnw6NvIGRlIGNsaWVudGVzIHNvYnJlIG5vdmEgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnUmVtZXRlbnRlIHBhZHLDo28gcGFyYSBvIGUtbWFpbCBkZSBub3RpZmljYcOnw6NvIGRlIGNsaWVudGVzIHNvYnJlIG5vdmEgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0Fzc3VudG8gcGFkcsOjbyBwYXJhIG8gZS1tYWlsIGRlIG5vdGlmaWNhw6fDo28gZGUgY2xpZW50ZXMgc29icmUgbm92YSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIG8gbcOzZHVsbyBkZSB2aXPDo28gZ2VyYWwgcGFyYSBleGliaXIgYSB2aXPDo28gcGVxdWVuYSBkZSB1bWEgbGlzdGEgZGUgcGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnRGVmaW5lIGEgbcOheGltYSBxdWFudGlkYWRlIGRlIHBlc3F1aXNhcyBxdWUgc8OjbyBlbnZpYWRhcyBwYXJhIHVtIGNsaWVudGUgYSBjYWRhIDMwIGRpYXMgKDAgc2lnbmlmaWNhIHF1ZSBuw6NvIGjDoSBtw6F4aW1vOyB0b2RhcyBhcyByZXF1aXNpw6fDtWVzIGRlIHBlc3F1aXNhIHNlcsOjbyBlbnZpYWRhcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICdEZWZpbmUgYSBxdWFudGlkYWRlIGRlIGhvcmFzIHF1ZSB1bSBjaGFtYWRvIGRldmUgZXN0YXIgZmVjaGFkbyBwYXJhIGVudmlvIGRlIHVtYSBwZXNxdWlzYSAoMCBzaWduaWZpY2EgZW52aWFyIGltZWRpYXRhbWVudGUgYXDDs3MgZmVjaGFtZW50bykuIE5vdGE6IHVtIGVudmlvIHRhcmRpbyBkZSBwZXNxdWlzYSDDqSBmZWl0byBwZWxvIE9UUlMgRGFlbW9uLCBzb2IgYXRpdmHDp8OjbyBkYSBjb25maWd1cmHDp8OjbyAgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBwYWRyw6NvIHBhcmEgUmljaHRleHQgbm9zIGVsZW1lbnRvcyBkYSBTdXJ2ZXlab29tJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmUgYSBhbHR1cmEgbcOheGltYSBwYXJhIHZpc3VhbGl6YcOnw7VlcyBkbyBSaWNodGV4dCBub3MgZWxlbWVudG9zIGRvIFN1cnZleVpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBleGliaWRhcyBuYSB2aXPDo28gZ2VyYWwgZGUgcGVzcXVpc2EuIEVzdGEgb3DDp8OjbyBuw6NvIHRlbSBlZmVpdG8gc29icmUgYSBwb3Npw6fDo28gZGFzIGNvbHVuYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHV0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICdFZGl0YXIgaW5mb3JtYcOnw6NvIGdlcmFsIGRhIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnRWRpdGFyIGFzIHF1ZXN0w7VlcyBkYSBwZXNxdWlzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnSGFiaWxpdGEgb3UgZGVzYWJpbGl0YSBhIHRlbGEgU2hvd1ZvdGVEYXRhIG5hIGludGVyZmFjZSBww7pibGljYSBwYXJhIGV4aWJpciBkYWRvcyBkbyByZXN1bHRhZG8gZGUgdW1hIHBlc3F1aXNhIGVzcGVjw61maWNhIHF1YW5kbyBvIGNsaWVudGUgdGVudGEgcmVzcG9uZGVyIHVtYSBwZXNxdWlzYSBwZWxhIHNlZ3VuZGEgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ0F0aXZhIG91IGRlc2F0aXZhIHZlcmlmaWNhw6fDo28gZGUgY29uZGnDp8O1ZXMgZGUgc2VydmnDp29zIHBhcmEgZW52aW8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnQXRpdmEgb3UgZGVzYXRpdmEgdmVyaWZpY2HDp8OjbyBkZSBjb25kacOnw7VlcyBkZSB0aXBvcyBwYXJhIGVudmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGRlIGludGVyZmFjZSBwYXJhIGFkacOnw6NvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RybyBkZSBtw7NkdWxvIGRlIGludGVyZmFjZSBwYXJhIGVkacOnw6NvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGUgbcOzZHVsbyBkZSBpbnRlcmZhY2UgcGFyYSBlc3RhdMOtc3RpY2EgZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgZGV0YWxoZXMgZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlIG3Ds2R1bG8gZGUgaW50ZXJmYWNlIHBhcmEgbyBvYmpldG8gUHVibGljU3VydmV5IG5hIMOhcmVhIGRlIHBlc3F1aXNhIHDDumJsaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnU2UgZXN0YSByZWdleCBmb3IgZW5jb250cmFkYSwgbmVuaHVtYSBwZXNxdWlzYSBzZXLDoSBlbnZpYWRvIHBhcmEgbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBhcyBww6FnaW5hcyAobmFzIHF1YWlzIGFzIHBlc3F1aXNhcyBzw6NvIG1vc3RyYWRhcykgZGEgdmlzw6NvIGdlcmFsIGRlIHBlc3F1aXNhIHBlcXVlbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnUGVzcXVpc2EgUMO6YmxpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bWEgcGVzcXVpc2EgZW0gc3VhIHZpc8OjbyBkZSBkZXRhbGhlcyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0V4aWJlIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciBxdWVzdMO1ZXMgZGUgcGVzcXVpc2EgZW0gc3VhIHZpc8OjbyBkZSBkZXRhbGhlcyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXhpYmUgdW0gbGluayBubyBtZW51IHBhcmEgdm9sdGFyIGRhIHZpc8OjbyBkZSBkZXRhbGhlcyBkZSB1bWEgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFeGliZSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBkZXRhbGhhciBhcyBlc3RhdMOtc3RpY2FzIGRhIHBlc3F1aXNhIGVtIHN1YSB2aXPDo28gZGUgZGV0YWxoZXMgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ0RldGFsaGVzIGRhIGVzdGF0w61zdGljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIGFkacOnw6NvIGRlIHBlc3F1aXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBlZGnDp8OjbyBkZSBwZXNxdWlzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBkYSBWaXPDo28gR2VyYWwgZGUgUGVzcXVpc2EgIlBlcXVlbmEiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTcOzZHVsbyBkZSBFc3RhdMOtc3RpY2FzIGRlIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIERldGFsaGUgZGUgUGVzcXVpc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnTGltaXRlIGRlIHBlc3F1aXNhIHBvciBww6FnaW5hIHBhcmEgVmlzw6NvIEdlcmFsIGRhIHBlc3F1aXNhICJQZXF1ZW5vIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdBcyBwZXNxdWlzYXMgbsOjbyBzZXLDoSBlbnZpYWRhcyBwYXJhIG9zIGVuZGVyZcOnb3MgZGUgZS1tYWlsIGNvbmZpZ3VyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBkZSB1bWEgcGVzcXVpc2EsIGV4LiBQZXNxdWlzYSMsIE1pbmhhUGVzcXVpc2EjLiBPIHBhZHLDo28gw6kgUGVzcXVpc2EjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgY2hhbWFkbyBwYXJhIGVudmlhciByZXF1aXNpw6fDtWVzIGRlIHBlc3F1aXNhIHZpYSBlLW1haWwgYXV0b21hdGljYW1lbnRlIHBhcmEgY2xpZW50ZXMgc2UgdW0gY2hhbWFkbyBmb3IgZmVjaGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnRGlzcGFyYXIgbyBlbnZpbyBkZSBzb2xpY2l0YcOnw7VlcyBkZSBwZXNxdWlzYSBhdHJhc2FkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnWm9vbSBlbSBkZXRhbGhlcyBkZSBlc3RhdMOtc3RpY2FzLic7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyBDb3B5cmlnaHQgKEMpIDIwMTIgRkNDTiAtIFJ1aSBGcmFuY2lzY28gPHJ1aS5mcmFuY2lzY29AZmNjbi5wdD4KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cHRfUFRfU3VydmV5OwoKdXNlIHV0Zjg7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICdDcmlhciBub3ZvIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3Jpw6fDo28gaW50ZXJuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCd9ID0gJ0VkaXRhciBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mbyd9ID0gJ0luZm9ybWHDp8OjbyBnZW7DqXJpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcnfSA9ICdWaXN0YSBkZSBlc3RhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJlbGEgZGUgcGVkaWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdIb3JhIGRlIGVudmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ0hvcmEgZGUgcmVzcG9zdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0YWlscyd9ID0gJ0RldGFsaGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnTsOjbyBleGlzdGVtIHBlcmd1bnRhcyBubyBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdFc3RhdMOtc3RpY2EgZGV0YWxoYSBkbyBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICd2b2x0YXIgw6AgdmlzdGEgZGUgZXN0YXTDrXN0aWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHbyBiYWNrJ30gPSAndm9sdGFyJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBwZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnQWRpY2lvbmFyIHBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAnRXNjcmV2ZXIgYSBwZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnUGVyZ3VudGFzIGRvIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdQZXJndW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAnRWRpdGFyIHBlcmd1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAndm9sdGFyIMOgcyBwZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICdSZXNwb3N0YXMgcG9zc8OtdmVpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAnQWRpY2lvbmFyIHJlc3Bvc3RhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPSAnTsOjbyBleGlzdGVtIHbDoXJpYXMgcmVzcG9zdGFzLCB2YWkgc2VyIG1vc3RyYWRhIHVtYSDDoXJlYSBkZSB0ZXh0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ0VkaXRhciByZXNwb3N0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICd2b2x0YXIgw6AgZWRpw6fDo28gZGEgcGVyZ3VudGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRleHQgU2V0dGluZ3MnfSA9ICdEZWZpbmnDp8O1ZXMgZGUgY29udGV4dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBTdXJ2ZXlzIHBlciBwYWdlJ30gPSAnTsO6bWVybyBkZSBpbnF1w6lyaXRvcyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAnUmVtZXRlbnRlIGRhIG5vdGlmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdBc3N1bnRvIGRhIG5vdGlmaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdUZXh0byBkYSBub3RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZWQgVGltZSd9ID0gJ0NyaWFkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVkIEJ5J30gPSAnQ3JpYWRvIHBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIFRpbWUnfSA9ICdNb2RpZmljYWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdNb2RpZmljYWRvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hw6fDo28gZGUgaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnUGVkaWRvcyBlbnZpYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnSW5xdcOpcml0b3MgcmVzcG9uZGlkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdFZGl0YXIgaW5mb3JtYcOnw6NvIGdlbsOpcmljYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9ucyd9ID0gJ0VkaXRhciBwZXJndW50YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ0RldGFsaGVzIGRlIGVzdGF0w61zdGljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdEZXRhbGhlcyBkbyBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnR3LDoWZpY28gZGUgcmVzdWx0YWRvcyBkbyBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdOw7ptZXJvIGRlIHJlc3Bvc3Rhcyc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdJbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlIG5leHQgcXVlc3Rpb25zJ30gPSAnUHJvIGZhdm9yLCByZXNwb25kYSDDoHMgc2VndWludGVzIHBlcmd1bnRhcyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICdNw7NkdWxvIGRlIGlucXXDqXJpdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICdNw7NkdWxvIHBhcmEgZWRpdGFyIGFzIHBlcmd1bnRhcyBkb3MgaW5xdcOpcml0b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF5cyBzdGFydGluZyBmcm9tIHRoZSBsYXRlc3QgY3VzdG9tZXIgc3VydmV5IGVtYWlsIGJldHdlZW4gbm8gY3VzdG9tZXIgc3VydmV5IGVtYWlsIGlzIHNlbnQsICggMCBtZWFucyBBbHdheXMgc2VuZCBpdCApIC4nfSA9ICdOw7ptZXJvIGRlIGRpYXMgZW50cmUgZW52aW8gbm90aWZpY2HDp8O1ZXMgcG9yIGNsaWVudGUsICgwIHNpZ25pZmljYSBlbnZpYXIgc2VtcHJlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPSAnQ29ycG8gcG9yIG9taXNzw6NvIGRvIGVtYWlsIGRhIG5vdGlmaWNhw6fDo28gZGUgaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9ICdSZW1ldGVudGUgcG9yIG9taXNzw6NvIGRvIGVtYWlsIGRhIG5vdGlmaWNhw6fDo28gZGUgaW5xdcOpcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9ICdBc3N1bnRvIHBvciBvbWlzc8OjbyBkbyBlbWFpbCBkYSBub3RpZmljYcOnw6NvIGRlIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0gJ0RlZmluZSBhIHZpc3RhIHBlcXVlbmEgY29tIGEgbGlzdGEgZGUgaW5xdcOpcml0b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1uLid9ID0gJ0RlZmluZSBhcyBjb2x1bmFzIGEgbW9zdHJhciBuYSB2aXN0YSBkZSBpbnF1w6lyaXRvcy4gTsOjbyBpbnRlcmZlcmUgY29tIGEgcG9zacOnw6NvIGRhcyBjb2x1bmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPSAnTcOzZHVsbyBkZSBhdXRvIHJlZ2lzdG8gZGUgaW5xdcOpcml0b3MgZGUgY2xpZW50ZSBubyBpbnRlcmZhY2UgZGUgYWdlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPSAnTcOzZHVsbyBkZSBhdXRvIHJlZ2lzdG8gZGUgaW5xdcOpcml0b3MgZGUgY2xpZW50ZSBubyBpbnRlcmZhY2UgcMO6YmxpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ1NlIGEgZXhwcmVzc8OjbyByZWd1bGFyIGNvaW5jaWRpciwgbsOjbyBzZXLDoSBlbnZpYWRvIHVtIGlucXXDqXJpdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0gJ1BhcmFtZXRyaXphw6fDo28gZGFzIHDDoWdpbmFzIGRhIHZpc3RhIGdlcmFsIGRlIGlucXXDqXJpdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnSW5xdcOpcml0byBww7pibGljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ0xpbWl0ZSBwZXF1ZW5vIG5hIHZpc3RhIGRlIGlucXXDqXJpdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgZGV0YWxoZSBkZSBpbnF1w6lyaXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCInfSA9ICdOw7ptZXJvIGRlIGlucXXDqXJpdG9zIHBvciBww6FnaW5hIG5hIHZpc3RhIHBlcXVlbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9ICdJZGVudGlmaWNhZG9yIHBhcmEgb3MgaW5xdcOpcml0b3MuIGV4LiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFBvciBvbWlzc8OjbyDDqSBTdXJ2ZXkjICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGdldHMgY2xvc2VkLid9ID0gJ03Ds2R1bG8gZGUgZW52aW8gZGUgbm90aWZpY2HDp8O1ZXMgYXV0b23DoXRpY2FzIHBhcmEgY2xpZW50ZXMgcXVhbmRvIHVtIHRpY2tldCDDqSBmZWNoYWRvJzsKCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAnSW50cm9kdcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyacOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZmllbGQgaXMgcmVxdWlyZWQnfSA9ICdDYW1wbyBvYnJpZ2F0w7NyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0ludHJvZHXDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICdEZXNjcmnDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb21wbGV0ZSd9ID0gJ0NvbXBsZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdJbmNvbXBsZXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCB2YWx1ZSd9ID0gJ1ZhbG9yIHBvciBvbWlzc8Ojbyc7CgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gb24gcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYW4gc3BlY2lmaWMgdm90YXRpb24gd2hlbiBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgYnkgc2Vjb25kIHRpbWUuJ30gPSAnQXRpdmEgb3UgaW5hdGl2YSBvIGVjcsOjIFNob3dWb3RlRGF0YSBubyBpbnRlcmZhY2UgcMO6YmxpY28sIHF1YW5kbyBvIGNsaWVudGUgdGVudGEgcmVzcG9uZGVyIGFvIGlucXXDqXJpdG8gcGVsYSBzZWd1bmRhIHZleic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9ICdUb2RvcyBvcyBwYXLDom1ldHJvcyBwYXJhIG8gb2JqZXRvIElucXXDqXJpdG8gbm8gaW50ZXJmYWNlIGRlIGFnZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPSAnRGVmaW5lIGEgYWx0dXJhIHBvciBvbWlzc8OjbyBwYXJhIG8gZWRpdG9yIHJ0ZiBwYXJhIG9zIGVsZW1lbnRvcyBkbyBpbnF1w6lyaXRvJzsKCiAgICAjCiAgICAjIE9CU09MRVRFIEVOVFJJRVMgRk9SIFJFRkVSRU5DRSwgRE8gTk9UIFRSQU5TTEFURSEKICAgICMKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6cnVfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn0KHQvtC30LTQsNGC0Ywg0L3QvtCy0YvQuSDQvtC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ9Ce0L/QuNGB0LDQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ9CX0L3QsNC60L7QvNGB0YLQstC+INGBINC+0L/RgNC+0YHQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAn0KLQtdC70L4g0YPQstC10LTQvtC80LvQtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICfQotC40L/RiyDQt9Cw0Y/QstC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICfQktC90YPRgtGA0LXQvdC90LXQtSDQvtC/0LjRgdCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvtCx0YnRg9GOINC40L3RhNC+0YDQvNCw0YbQuNGOJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LLQvtC/0YDQvtGB0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGFyZSBoZXJlJ30gPSAn0JLRiyDQt9C00LXRgdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICfQktC+0L/RgNC+0YHRiyDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAn0JTQvtCx0LDQstGC0Ywg0LLQvtC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1R5cGUgdGhlIHF1ZXN0aW9uJ30gPSAn0JLQvtC/0YDQvtGBINC4INGC0LjQvyDQstC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICfQotGA0LXQsdGD0Y7RgtGB0Y8g0L7RgtCy0LXRgtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAn0KHQvtGF0YDQsNC90LXQvdGL0YUg0LLQvtC/0YDQvtGB0L7QsiDQvdC10YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAn0JLQvtC/0YDQvtGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ9Ci0YDQtdCx0YPRjtGC0YHRjyDQntGC0LLQtdGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Cf0L4g0L7QutC+0L3Rh9Cw0L3QuNC4INGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0LLQvtC/0YDQvtGB0L7QsiDQvtC/0YDQvtGB0LAg0L/RgNC+0YHRgtC+INC30LDQutGA0L7QudGC0LUg0Y3RgtC+0YIg0Y3QutGA0LDQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICfQl9Cw0LrRgNGL0YLRjCDRjdGC0L4g0L7QutC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINCy0L7Qv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ9C90LDQt9Cw0LQg0Log0LLQvtC/0YDQvtGB0LDQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICfQktC+0L/RgNC+0YE6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn0JLQvtC30LzQvtC20L3Ri9C1INC+0YLQstC10YLRiyDQtNC70Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0L7RgtCy0LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ9Cd0LUg0LfQsNC00LDQvdGLINCy0LDRgNC40LDQvdGC0Ysg0L7RgtCy0LXRgtC+0LIg0LTQu9GPINGN0YLQvtCz0L4g0LLQvtC/0YDQvtGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfQrdGC0L7RgiDQstC+0L/RgNC+0YEg0L3QtSDQv9GA0LXQtNGD0YHQvNCw0YLRgNC40LLQsNC10YIg0L3QtdGB0LrQvtC70YzQutC+INC+0YLQstC10YLQvtCyLCDQsdGD0LTQtdGCINC/0L7QutCw0LfQsNC90L4g0YLQtdC60YHRgtC+0LLQvtC1L3RleHRhcmVhINC/0L7Qu9C1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC+0YLQstC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAn0L3QsNC30LDQtCDQuiDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGOINCy0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICfQntGC0LLQtdGCOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ9Cc0LDQutGBLiDQutC+0Lst0LLQviDQvtC/0YDQvtGB0L7QsiDQvdCwINGB0YLRgNCw0L3QuNGG0YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ9Ce0YLQv9GA0LDQstC40YLQtdC70Ywg0YPQstC10LTQvtC80LvQtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ9Ci0LXQvNCwINGD0LLQtdC00L7QvNC70LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ9CY0LfQvNC10L3QuNCy0YjQuNC5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ9Cf0L7QtNGA0L7QsdC90L7RgdGC0Lgg0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAn0KLQsNCx0LvQuNGG0LAg0L7RgtCy0LXRgtC+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICfQktGA0LXQvNGPINC+0YLQv9GA0LDQstC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAn0JLRgNC10LzRjyDQvtGC0LLQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ9Ch0LwuINC/0L7QtNGA0L7QsdC90L7RgdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfQn9C+0LTRgNC+0LHQvdC+0YHRgtC4INC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAn0L3QsNC30LDQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQv9C+INC+0L/RgNC+0YHRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAn0J7RgtC/0YDQsNCy0LvQtdC90L3Ri9C1INC30LDQv9GA0L7RgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfQn9C+0LvRg9GH0LXQvdC90YvQtSDQvtC/0YDQvtGB0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICfQmNC90YTQvtGA0LzQsNC40Y8g0L/QviDQvtC/0YDQvtGB0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAn0KfQuNGB0LvQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICfQodC10YDQstC40YHRiyDQt9Cw0Y/QstC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICfQoNC10LfRg9C70YzRgtCw0YLRiyDQvtC/0YDQvtGB0LAg0LIg0LPRgNCw0YTQuNC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gc3RhdCByZXN1bHRzLid9ID0gJ9Ch0YLQsNGC0LjRgdGC0LjQutC4INC90LXRgi4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAn0J7Qv9GA0L7RgdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAn0J7RgtCy0LXRgtGM0YLQtSDQvdCwINGN0YLQuCDQstC+0L/RgNC+0YHRizonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAn0J/QvtC60LDQt9Cw0YLRjCDQvNC+0Lgg0L7RgtCy0LXRgtGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICfQktCw0YjQuCDQvtGC0LLQtdGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAn0J3QsNC30LLQsNC90LjQtSDQvtC/0YDQvtGB0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ9CU0L7QsdCw0LLQuNGC0Ywg0L3QvtCy0YvQuSDQvtC/0YDQvtGBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJ9CjINCy0LDRgSDQvdC10YIg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINGN0YLQvtCz0L4g0L7Qv9GA0L7RgdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICfQoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvtC/0YDQvtGBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ9CjINCy0LDRgSDQvdC10YIg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINGN0YLQvtCz0L4g0L7Qv9GA0L7RgdCwINC40LvQuCDQstC+0L/RgNC+0YHQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICfQoyDQstCw0YEg0L3QtdGCINGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDRjdGC0L7Qs9C+INC+0L/RgNC+0YHQsCwg0LLQvtC/0YDQvtGB0LAg0LjQu9C4INC+0YLQstC10YLQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAn0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LLQvtC/0YDQvtGBINCyINC+0L/RgNC+0YHQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICfQlNCwL9Cd0LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICfQotC+0YfQutC4ICjQodC/0LjRgdC+0LopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ9CT0LDQu9C+0YfQutC4ICjQodC/0LjRgdC+0LopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn0KLQuNC/INCy0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAn0JfQsNCy0LXRgNGI0LXQvdC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNvbXBsZXRlJ30gPSAn0J3QtdC30LDQstC10YDRiNC10L3QvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINCy0L7Qv9GA0L7RgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ9Cg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMINC+0YLQstC10YInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSDQndC4INC+0LTQvdC+0Lkg0L7Rh9C10YDQtdC00Lgg0L3QtSDQstGL0LHRgNCw0L3QviAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICfQndC+0LLQvtC1INGB0L7RgdGC0L7Rj9C90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfQntC/0LjRgdCw0L3QuNC1INC+0L/RgNC+0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ9C+0YLQstC10YLQuNC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAn0L3QtSDQvtGC0LLQtdGC0LjQu9C4JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfQodC/0LDRgdC40LHQviDQt9CwINCS0LDRiNC4INC+0YLQstC10YLRiy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfQntC/0YDQvtGBINC30LDQstC10YDRiNC10L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAn0JzQvtC00YPQu9GMINC90LUg0LLQutC70Y7Rh9C10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAn0J3QtdCy0LXRgNC90YvQuSDQutC+0LQg0L7Qv9GA0L7RgdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAn0JLRiyDRg9C20LUg0L/RgNC+0YjQu9C4INC+0L/RgNC+0YEuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0Y3RgtC+0YIg0LLQvtC/0YDQvtGBPyAg0JLQodCVINGB0LLRj9C30LDQvdC90YvQtSDQtNCw0L3QvdGL0LUg0LHRg9C00YPRgiDQn9Ce0KLQldCg0K/QndCrISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ9CS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0LbQtdC70LDQtdGC0LUg0YPQtNCw0LvQuNGC0YwgINGN0YLQvtGCINC+0YLQstC10YI/JzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBTdXJ2ZXkgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0LvRjCDQntC/0YDQvtGB0YsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfQnNC+0LTRg9C70Ywg0LTQu9GPINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0LLQvtC/0YDQvtGB0L7QsiDQtNC70Y8g0L7Qv9GA0L7RgdC+0LIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLRgdC1INC/0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0L7QsdGK0LXQutGC0LAg0J7Qv9GA0L7RgdGLINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LTQvdC10LksINC/0L7RgdC70LUg0L7RgtGB0YvQu9C60Lgg0L/QuNGB0LXQvCDRgSDQvtC/0YDQvtGB0L7QvCwg0LIg0YLQtdGH0LXQvdC40LUg0LrQvtGC0L7RgNGL0YUg0L3QuNC60LDQutC40LUg0L3QvtCy0YvQtSDQv9GA0LXQtNC70L7QttC10L3QuNGPINC+0LEg0L7Qv9GA0L7RgdC1INC90LUg0L/QvtGB0YvQu9Cw0Y7RgtGB0Y8sINC+0LTQvdC+0LzRgyDQuCDRgtC+0LzRgyDQttC1INC60LvQuNC10L3RgtGDLiDQktGL0LHQvtGAINC30L3QsNGH0LXQvdC40Y8gMCDRg9C60LDQt9GL0LLQsNC10YIg0LLRgdC10LPQtNCwINC/0L7RgdGL0LvQsNGC0Ywg0L/QuNGB0YzQvNC+INGBINC+0L/RgNC+0YHQvtC8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLQtdC60YHRgiDQv9C40YHRjNC80LAg0LIg0L/QvtGH0YLQvtCy0L7QvCDRg9Cy0LXQtNC+0LzQu9C10L3QuNC4LCDQv9C+0YHRi9C70LDQtdC80L7QvCDQutC70LjQtdC90YLQsNC8LCDQviDQvdC+0LLQvtC8INC+0L/RgNC+0YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQntGC0L/RgNCw0LLQuNGC0LXQu9GMINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0Ysg0LIg0L3QvtCy0L7QvCDQvtC/0YDQvtGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Ci0LXQvNCwINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0Ysg0LIg0L3QvtCy0L7QvCDQvtC/0YDQvtGB0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQvNC+0LTRg9C70Ywg0L/RgNC+0YHQvNC+0YLRgNCwINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINGB0L/QuNGB0LrQsCDQvtC/0YDQvtGB0L7QsiDQsiBzbWFsbCDRhNC+0YDQvNCw0YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0LzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INC+0L/RgNC+0YHQvtCyINC+0YLRgdGL0LvQsNC10LzRi9GFINC60LvQuNC10L3RgtGDINC30LAg0LrQsNC20LTRi9C1IDMwINC00L3QtdC5LiAoIjAiINC+0LfQvdCw0YfQsNC10YIsINGH0YLQviDQstGB0LUg0LfQsNC/0YDQvtGB0Ysg0L7Qv9GA0L7RgdC+0LIg0LHRg9C00YPRgiDQvtGC0YHRi9C70LDRgtGM0YHRjykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDQstGL0YHQvtGC0YMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0L7QsdC70LDRgdGC0Lgg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90L3QvtCz0L4g0YLQtdC60YHRgtCwINC00LvRjyDRjdC70LXQvNC10L3RgtC+0LIg0L7Qv9GA0L7RgdCwINC/0YDQuCDQv9C+0LTRgNC+0LHQvdC+0Lwg0L/RgNC+0YHQvNC+0YLRgNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgaW4gdGhlIHN1cnZleSBvdmVydmlldy4gVGhpcyBvcHRpb24gaGFzIG5vIGVmZmVjdCBvbiB0aGUgcG9zaXRpb24gb2YgdGhlIGNvbHVtbnMuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0L/QtdGA0LXRh9C10L3RjCDQutC+0LvQvtC90L7Quiwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINCyINC+0LHQt9C+0YDQtSDQntC/0YDQvtGB0L7Qsi4g0K3RgtC+0YIg0L/QsNGA0LDQvNC10YLRgCDQvdC1INCy0LvQuNGP0LXRgiDQvdCwINC/0L7RgNGP0LTQvtC6INC60L7Qu9C+0L3QvtC6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfQn9GA0LDQstC60LAg0LLQvtC/0YDQvtGB0L7QsiDQvtC/0YDQvtGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9C40YLQtSDQuNC70Lgg0L7RgtC60LvRjtGH0LjRgtGMINC60L3QvtC/0LrRgyAi0J/QvtC60LDQt9Cw0YLRjCDQvNC+0Lgg0L7RgtCy0LXRgtGLIiwg0YfRgtC+0LHRiyDQv9C+0LrQsNC30LDRgtGMINC00LDQvdC90YvQtSDQvtC/0YDQtdC00LXQu9C10L3QvdC+0LPQviDRgNC10LfRg9C70YzRgtCw0YLQsCDQvtC/0YDQvtGB0LAsINC60L7Qs9C00LAg0LrQu9C40LXQvdGCINC/0L7Qv9GL0YLQsNC10YLRgdGPINC+0YLQstC10YLQuNGC0Ywg0L3QsCDQvtC/0YDQvtGBINCy0L4g0LLRgtC+0YDQvtC5INGA0LDQty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICfQktC60LvRjtGH0LjRgtGMINC40LvQuCDQvtGC0LrQu9GO0YfQuNGC0Ywg0L/RgNC+0LLQtdGA0LrRgyDRg9GB0LvQvtCy0LjRjyDQvtGC0L/RgNCw0LLQutC4INC00LvRjyDRgdC10YDQstC40YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgdGlja2V0IHR5cGUuJ30gPQogICAgICAgICfQktC60LvRjtGH0LjRgtGMINC40LvQuCDQvtGC0LrQu9GO0YfQuNGC0Ywg0L/RgNC+0LLQtdGA0LrRgyDRg9GB0LvQvtCy0LjRjyDQvtGC0L/RgNCw0LLQutC4INC00LvRjyDRgtC40L/QsCDQt9Cw0Y/QstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24g0LTQu9GPINC00L7QsdCw0LLQu9C10L3QuNGPINC+0L/RgNC+0YHQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uINC00LvRjyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINC+0L/RgNC+0YHQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiDQtNC70Y8g0LzQvtC00YPQu9GPINC+0YLRh9C10YLQvdC+0YHRgtC4INC+0LEg0L7Qv9GA0L7RgdC1INCyINC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24g0LTQu9GPINC/0L7QtNGA0L7QsdC90L7Qs9C+INC/0YDQvtGB0LzQvtGC0YDQsCDQvtC/0YDQvtGB0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiDQtNC70Y8g0L7QsdGK0LXQutGC0LAg0J/Rg9Cx0LvQuNGH0L3QvtCz0L4g0L7Qv9GA0L7RgdCwINCyINGA0LDQt9C00LXQu9C1INC/0YPQsdC70LjRh9C90YvRhSDQvtC/0YDQvtGB0L7Qsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWYgdGhpcyByZWdleCBtYXRjaGVzLCBubyBjdXN0b21lciBzdXJ2ZXkgd2lsbCBiZSBzZW50Lid9ID0gJ9CV0YHQu9C4INGN0YLQviDRgNC10LPRg9C70Y/RgNC90L7QtSDQstGL0YDQsNC20LXQvdC40LUg0LLQtdGA0L3Qviwg0L7Qv9GA0L7RgSDQutC70LjQtdC90YLRgyDQvdC1INC/0L7RgdGL0LvQsNC10YLRgdGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDRgdGC0YDQsNC90LjRhtGLICjQvdCwINC60L7RgtC+0YDQvtC5INC+0YLQvtCx0YDQsNC20LDRjtGC0YHRjyDQvtC/0YDQvtGB0YspINC/0YDQuCDQvtCx0LfQvtGA0LUg0L7Qv9GA0L7RgdC+0LIg0LIgc21hbGwg0YTQvtGA0LzQsNGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn0J7QsdGJ0LXQtNC+0YHRgtGD0L/QvdGL0Lkg0L7Qv9GA0L7RgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4sINC/0L7Qt9Cy0L7Qu9GP0Y7RidC40Lkg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L7Qv9GA0L7RgSDQv9GA0Lgg0LXQs9C+INC/0L7QtNGA0L7QsdC90L7QvCDQv9GA0L7RgdC80L7RgtGA0LUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4sINC/0L7Qt9Cy0L7Qu9GP0Y7RidC40Lkg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LLQvtC/0YDQvtGB0Ysg0L7Qv9GA0L7RgdCwINC/0YDQuCDQtdCz0L4g0L/QvtC00YDQvtCx0L3QvtC8INC/0YDQvtGB0LzQvtGC0YDQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INCy0LXRgNC90YPRgtGM0YHRjyDQvdCw0LfQsNC0INC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0L7Qv9GA0L7RgdCwINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOLCDQv9C+0LfQstC+0LvRj9GO0YnQuNC5INGD0LLQuNC00LXRgtGMINC/0L7QtNGA0L7QsdC90L7RgdGC0Lgg0L7RgtGH0LXRgtCwINC+0LEg0L7Qv9GA0L7RgdC1INC/0YDQuCDQtdCz0L4g0LTQtdGC0LDQu9GM0L3QvtC8INC/0YDQvtGB0LzQvtGC0YDQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICfQn9C+0LTRgNC+0LHQvdC+0YHRgtC4INC+0YLRh9C10YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C70Ywg0JTQvtCx0LDQstC70LXQvdC40Y8g0L7Qv9GA0L7RgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn0JzQvtC00YPQu9GMINGA0LXQtNCw0LrRgtC40YDQvtCy0LDQvdC40Y8g0L7Qv9GA0L7RgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC30LDQv9C40YHQtdC5LCDQvtGC0L7QsdGA0LDQttCw0LXQvNGL0YUg0L/RgNC4INC/0YDQvtGB0LzQvtGC0YDQtSDQvtC/0YDQvtGB0L7QsiDQsiAiU21hbGwiINGE0L7RgNC80LDRgtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAn0JzQvtC00YPQu9GMINC/0L7RgdGC0YDQvtC10L3QuNGPINC+0YLRh9C10YLQvtCyINC+0LEg0L7Qv9GA0L7RgdCw0YUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C70Ywg0L/QvtC00YDQvtCx0L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwINC+0L/RgNC+0YHQvtCyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ9Ce0L/RgNC+0YHRiyDQvdC1INCx0YPQtNGD0YIg0L7RgtC/0YDQsNCy0LvRj9GC0YzRgdGPINC90LAg0YPQutCw0LfQsNC90L3Ri9C1INC/0L7Rh9GC0L7QstGL0LUg0LDQtNGA0LXRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAn0J7QsdC+0LfQvdCw0YfQtdC90LjQtSDQtNC70Y8g0LjQtNC10L3RgtC40YTQuNC60LDRhtC40Lgg0L7Qv9GA0L7RgdCwLCDQvdCw0L/RgNC40LzQtdGALCDQntC/0YDQvtGB4oSWLCBTdXJ2ZXkjLCBNeVN1cnZleSMuINCf0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIFN1cnZleSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgaXMgYSBkZXNjcmlwdGlvbiBmb3IgU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93biBvbiBTdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0YPQv9GA0LDQstC70LXQvdC40Y8g0YHQvtCx0YvRgtC40LXQvCDQtNC70Y8g0LfQsNGP0LLQutC4LCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCDQvtGC0L/RgNCw0LLQu9GP0Y7RidC40Lkg0L/QuNGB0YzQvNC+INC60LvQuNC10L3RgtGDINGBINC+0L/RgNC+0YHQvtC8LCDQv9GA0Lgg0LfQsNC60YDRi9GC0LjQuCDQt9Cw0Y/QstC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ9Ci0YDQuNCz0LPQtdGAINC+0YLQv9GA0LDQstC60Lgg0LfQsNC00LXRgNC20LDQvdC90YvRhSDQt9Cw0L/RgNC+0YHQvtCyINC90LAg0L7Qv9GA0L7RgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3JfQ3lybF9TdXJ2ZXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICfQndCw0L/RgNCw0LLQuCDQvdC+0LLRgyDQsNC90LrQtdGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAn0KPQstC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ9Cj0LLQvtC0INGDINCw0L3QutC10YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gQm9keSd9ID0gJ9Ch0LDRgNC00LbQsNGYINC+0LHQsNCy0LXRiNGC0LXRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ9Ci0LjQv9C+0LLQuCDRgtC40LrQtdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICfQmNC90YLQtdGA0L3QuCDQvtC/0LjRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn0KPRgNC10LTQuCDQvtC/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+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAn0JzQsNC60YHQuNC80YPQvCDQv9GA0LjQutCw0LfQsNC90LjRhSDQsNC90LrQtdGC0LAg0L/QviDRgdGC0YDQsNC90LgnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ9Cf0L7RiNC40ZnQsNC+0YYg0L7QsdCw0LLQtdGI0YLQtdGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfQn9GA0LXQtNC80LXRgiDQvtCx0LDQstC10YjRgtC10ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAn0JzQtdGa0LDQvic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfQn9GA0LXQs9C70LXQtCDRgdGC0LDRgtC40YHRgtC40LrQtSDQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAn0KLQsNCx0LXQu9CwINC30LDRhdGC0LXQstCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn0JLRgNC10LzQtSDRgdC70LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ9CS0YDQtdC80LUg0LPQu9Cw0YHQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ9CS0LjQtNC4INC00LXRgtCw0ZnQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0ZnQuCDRgdGC0LDRgtC40YHRgtC40LrQtSDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ9C40LTQuCDQvdCw0LfQsNC0INC90LAg0L/RgNC10LPQu9C10LQg0YHRgtCw0YLQuNGB0YLQuNC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn0JjQvdGE0L7RgNC80LDRhtC40ZjQtSDQviDQsNC90LrQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ9Cf0L7RgdC70LDRgtC4INC30LDRhdGC0LXQstC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfQn9GA0LjQvNGZ0LXQvdC1INCw0L3QutC10YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0ZnQuCDQsNC90LrQtdGC0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAn0JHRgNC+0ZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAn0KPRgdC70YPQs9C1INC30LAg0YLQuNC60LXRgic7CiAgICAkU2VsZi0+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+0YLQstGA0LTRgyAo0JvQuNGB0YLQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICfQotC40L8g0L/QuNGC0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAn0JrQvtC80L/Qu9C10YLQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICfQndC10LrQvtC80L/Qu9C10YLQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfQo9GA0LXQtNC4INC/0LjRgtCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ9Cj0YDQtdC00Lgg0L7QtNCz0L7QstC+0YAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSDQndC40ZjQtSDQuNC30LDQsdGA0LDQvSDRgNC10LQgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAn0J3QvtCy0Lgg0YHRgtCw0YLRg9GBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ9Ce0L/QuNGBINCw0L3QutC10YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ9C+0LTQs9C+0LLQvtGA0LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ9C90LjRmNC1INC+0LTQs9C+0LLQvtGA0LXQvdC+JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfQpdCy0LDQu9CwINC90LAg0LLQsNGI0LjQvCDQvtC00LPQvtCy0L7RgNC40LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfQkNC90LrQtdGC0LAg0ZjQtSDQt9Cw0LLRgNGI0LXQvdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICfQn9C+0YDRg9C60LAg0LDQvdC60LXRgtC1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAn0JzQvtC00YPQuyDQvdC40ZjQtSDQsNC60YLQuNCy0LjRgNCw0L0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAn0J7QstCwINGE0YPQvdGG0LjQvtC90LDQu9C90L7RgdGCINC90LjRmNC1INC+0LzQvtCz0YPRm9C10L3QsCwg0LzQvtC70LjQvNC+INC60L7QvdGC0LDQutGC0LjRgNCw0ZjRgtC1INCy0LDRiNC10LMg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJ9CT0YDQtdGI0LrQsCDRgyDQsNC90LrQtdGC0LghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICfQndC10LjRgdC/0YDQsNCy0LDQvSDQutGZ0YPRhyDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICfQo9C90LXRgtC4INC60ZnRg9GHINCw0L3QutC10YLQtSDRmNC1INC90LXQuNGB0L/RgNCw0LLQsNC9LCDQsNC60L4g0YHRgtC1INC/0YDQsNGC0LjQu9C4INCy0LXQt9GDINC80L7QttC00LAg0ZjQtSDQvtC90LAg0L3QtdCy0LDQttC10ZvQsCDQuNC70Lgg0L7RiNGC0LXRm9C10L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICfQk9C70LDRgdCw0ZrQtSDRgyDQsNC90LrQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJ9Cf0L7QtNCw0YbQuCDQviDQs9C70LDRgdCw0ZrRgyDRgyDQsNC90LrQtdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ9CS0LXRmyDRgdGC0LUg0L7QtNCz0L7QstC+0YDQuNC70Lgg0L3QsCDQsNC90LrQtdGC0YMuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICfQlNCwINC70Lgg0LfQsNC40YHRgtCwINC20LXQu9C40YLQtSDQtNCwINC+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+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvNCw0LrRgdC40LzQsNC70L3QuCDQsdGA0L7RmCDQsNC90LrQtdGC0LAg0LrQvtGY0Lgg0ZvQtSDQsdC40YLQuCDQv9C+0YHQu9Cw0YIg0LrQvtGA0LjRgdC90LjQutGDINGC0L7QutC+0LwgMzAg0LTQsNC90LAuICgwINC30L3QsNGH0Lgg0LTQsCDQvdC10LzQsCDQvNCw0LrRgdC40LzRg9C80LAsINGB0LLQuCDQt9Cw0YXRgtC10LLQuCDRm9C1INCx0LjRgtC4INC/0L7RgdC70LDRgtC4KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LHRgNC+0Zgg0YHQsNGC0Lgg0L7QtCDQt9Cw0YLQstCw0YDQsNGa0LAg0YLQuNC60LXRgtCwINC30LAg0L/QvtC60YDQtdGC0LDRmtC1INGB0LvQsNGa0LAg0LDQvdC60LXRgtC1LiAoMCDQt9C90LDRh9C4INC00LAg0YHQtSDRiNCw0ZnQtSDQvtC00LzQsNGFINC/0L4g0LfQsNGC0LLQsNGA0LDRmtGDKS4g0J3QsNC/0L7QvNC10L3QsDog0L7QtNC70LDQs9Cw0ZrQtSDRgdC70LDRmtCwINCw0L3QutC10YLQtSDQvtCx0LDQstGZ0LAg4oCeT1RSUyDigJ0g0YHQtdGA0LLQuNGBINC/0YDQtSDQsNC60YLQuNCy0LjRgNCw0ZrQsCDigJ5EYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZOKAnSDQv9C+0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3RgyDQstC40YHQuNC90YMg0L7QutCy0LjRgNCwINC30LAg0L/RgNC40LrQsNC3INGC0LXQutGB0YLQsCAg0LfQsCDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0LXQu9C10LzQtdC90LDRgtCwINCw0L3QutC10YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LzQsNC60YHQuNC80LDQu9C90YMg0LLQuNGB0LjQvdGDIOKAnlJpY2h0ZXh04oCdINC/0YDQuNC60LDQt9CwINGC0LXQutGB0YLQsCAg0LfQsCDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0LXQu9C10LzQtdC90LDRgtCwINCw0L3QutC10YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/RgNC40LrQsNC30LDQvdC1INC60L7Qu9C+0L3QtSDRgyDQv9GA0LXQs9C70LXQtNGDINCw0L3QutC10YLQtS4g0J7QstCwINC+0L/RhtC40ZjQtSDQvdC10LzQsCDRg9GC0LjRhtCw0Zgg0L3QsCDQv9C+0LfQuNGG0LjRmNC1INC60L7Qu9C+0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ9Cj0YDQtdC00Lgg0L7Qv9GI0YLQtSDQuNC90YTQvtGA0LzQsNGG0LjRmNC1INC+INCw0L3QutC10YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ9Cj0YDQtdC00Lgg0LDQvdC60LXRgtC90LAg0L/QuNGC0LDRmtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICfQo9C60ZnRg9GH0Lgg0LjQu9C4INC40YHQutGZ0YPRh9C4INC/0YDQuNC60LDQtyDQtdC60YDQsNC90LAg0LfQsCDQs9C70LDRgdCw0ZrQtSDQvdCwINGY0LDQstC90L7QvCDQuNC90YLQtdGA0YTQtdGY0YHRgyDRgNCw0LTQuCDQv9GA0LjQutCw0LfQsCDRgNC10LfRg9C70YLQsNGC0LAg0L/QvtGY0LXQtNC40L3QtSDQsNC90LrQtdGC0LUg0LrQsNC00LAg0LrQvtGA0LjRgdC90LjQuiDQv9C+0LrRg9GI0LAg0LTQsCDQvtC00LPQvtCy0L7RgNC4INC90LAg0YPQv9C40YLQvdC40Log0L/QviDQtNGA0YPQs9C4INC/0YPRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICfQo9C60ZnRg9GH0Lgg0LjQu9C4INC40YHQutGZ0YPRh9C4INC/0YDQvtCy0LXRgNGDINGB0YLQsNGC0YPRgdCwINGB0LvQsNGa0LAg0LfQsCDRg9GB0LvRg9Cz0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAn0KPQutGZ0YPRh9C4INC40LvQuCDQuNGB0LrRmdGD0YfQuCDQv9GA0L7QstC10YDRgyDRgdGC0LDRgtGD0YHQsCDRgdC70LDRmtCwINC30LAg0YLQuNC/INGC0LjQutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwICJGcm9udGVuZCIg0LzQvtC00YPQu9CwINC30LAg0LTQvtC00LDQstCw0ZrQtSDQsNC90LrQtdGC0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwICJGcm9udGVuZCIg0LzQvtC00YPQu9CwINC30LAg0LjQt9C80LXQvdC1INCw0L3QutC10YLQtSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwICJGcm9udGVuZCIg0LzQvtC00YPQu9CwINC30LAg0YHRgtCw0YLQuNGB0YLQuNC60YMg0LDQvdC60LXRgtC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LDRhtC40ZjQsCAiRnJvbnRlbmQiINC80L7QtNGD0LvQsCDQt9CwINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQsNC90LrQtdGC0LUg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwICJGcm9udGVuZCIg0LzQvtC00YPQu9CwINC30LAg0ZjQsNCy0L3QtSDQsNC90LrQtdGC0L3QtSDQvtCx0ZjQtdC60YLQtSDQsNC90LrQtdGC0LUg0YMg0L/RgNC+0YHRgtC+0YDRgyDRmNCw0LLQvdC40YUg0LDQvdC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAn0JDQutC+INGB0LUg0L7QstCw0Zgg0LjQt9GA0LDQtyDQv9C+0LrQu9Cw0L/QsCwg0LDQvdC60LXRgtCwINC90LXRm9C1INCx0LjRgtC4INC/0L7RgdC70LDRgtCwINC60L7RgNC40YHQvdC40LrRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0YHRgtGA0LDQvdC40YbQsCAo0L3QsCDQutC+0ZjQuNC80LAg0YHRgyDQsNC90LrQtdGC0LUg0LLQuNC00ZnQuNCy0LUpINC90LAg0LzQsNC70L7QvCDQv9GA0LjQutCw0LfRgyDQv9GA0LXQs9C70LXQtNCwINCw0L3QutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfQiNCw0LLQvdCwINCw0L3QutC10YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRg9GA0LXRktC40LLQsNGa0LUg0LDQvdC60LXRgtC1INGDINC00LXRgtCw0ZnQvdC+0Lwg0L/RgNC40LrQsNC30YMg0LjQvdGC0LXRgNGE0LXRmNGB0LAg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CjINC80LXQvdC40ZjRgyDQv9GA0LjQutCw0LfRg9GY0LUg0LLQtdC30YMg0LfQsCDRg9GA0LXRktC40LLQsNGa0LUg0LDQvdC60LXRgtC90LjRhSDQv9C40YLQsNGa0LAg0YMg0LTQtdGC0LDRmdC90L7QvCDQv9GA0LjQutCw0LfRgyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBzdXJ2ZXkgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0L/QvtCy0YDQsNGC0LDQuiDRgyDQtNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0LDQvdC60LXRgtC1INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byB0aGUgc3VydmV5IHN0YXRpc3RpY3MgZGV0YWlscyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQoyDQvNC10L3QuNGY0YMg0L/RgNC40LrQsNC30YPRmNC1INCy0LXQt9GDINC30LAg0LTQtdGC0LDRmdC90Lgg0L/RgNC40LrQsNC3INGB0YLQsNGC0LjRgdGC0LjQutC1INCw0L3QutC10YLQtSDRgyDQtNC10YLQsNGZ0L3QvtC8INC/0YDQuNC60LDQt9GDINC90LAg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn0JTQtdGC0LDRmdC4INGB0YLQsNGC0LjRgdGC0LjQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDQtNC+0LTQsNCy0LDRmtC1INCw0L3QutC10YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgTW9kdWxlLid9ID0gJ9Cc0L7QtNGD0Lsg0LfQsCDRg9GA0LXRktC40LLQsNGa0LUg0LDQvdC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC/0YDQtdCz0LvQtdC00LAg0LDQvdC60LXRgtC1IC0g4oCe0LzQsNC70L7igJ0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC30LAg0YHRgtCw0YLQuNGB0YLQuNC60YMg0LDQvdC60LXRgtC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAn0JzQvtC00YPQuyDQt9CwINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDQsNC90LrQtdGC0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LDQvdC60LXRgtC1INC/0L4g0YHRgtGA0LDQvdC4INC30LAg0L/RgNC10LPQu9C10LQgLSDigJ7QvNCw0LvQvuKAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ9CQ0L3QutC10YLQsCDQvdC10ZvQtSDQsdC40YLQuCDQv9C+0YHQu9Cw0YLQsCDQvdCwINC/0L7QtNC10YjQtdC90YMg0LjQvNC10ZjQuyDQsNC00YDQtdGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDQt9CwINCw0L3QutC10YLRgywg0L3Qv9GAIFN1cnZleSMsIE15U3VydmV5Iy4g0J/QvtC00YDQsNC30YPQvNC10LLQsNC90L4g0ZjQtSBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQtNC+0LPQsNGS0LDRmNCwINC90LAg0YLQuNC60LXRgtGDINC30LAg0LDRg9GC0L7QvNCw0YLRgdC60L4g0YHQu9Cw0ZrQtSDQuNC80LXRmNC70LAg0L4g0LjRgdGC0YDQsNC20LjQstCw0ZrRgyDQutC+0YDQuNGB0L3QuNGG0LjQvNCwINCw0LrQviDRmNC1INGC0LjQutC10YIg0LfQsNGC0LLQvtGA0LXQvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAn0J7QutC40LTQsNGHINC+0LTQu9C+0LbQtdC90L7QsyDRgdC70LDRmtCwINC30LDRhdGC0LXQstCwINC30LAg0LDQvdC60LXRgtGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJ9Cj0LvQsNC3INGDINC00LXRgtCw0ZnQvdC4INC/0YDQuNC60LDQtyDRgdGC0LDRgtC40YHRgtC40LrQtS4nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3JfTGF0bl9TdXJ2ZXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSB1dGY4OwoKc3ViIERhdGEgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUFkZAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIE5ldyBTdXJ2ZXknfSA9ICdOYXByYXZpIG5vdnUgYW5rZXR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ1V2b2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ1V2b2QgdSBhbmtldHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICdTYXJkxb5haiBvYmF2ZcWhdGVuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnVGlwb3ZpIHRpa2V0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ0ludGVybmkgb3Bpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAnVXJlZGkgb3DFoXRlIGluZm9ybWFjaWplJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnVXJlZGkgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICdWaSBzdGUgb3ZkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAnQW5rZXRuYSBwaXRhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ0RvZGFqIHBpdGFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHlwZSB0aGUgcXVlc3Rpb24nfSA9ICdVbmVzaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ09iYXZlemFuIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICdaYSBvdnUgYW5rZXR1IG5pc3Ugc2HEjXV2YW5hIHBpdGFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uJ30gPSAnUGl0YW5qZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICdPYmF2ZXphbiBvZGdvdm9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdLYWRhIHphdnLFoWl0ZSBzYSB1cmXEkWl2YW5qZW0gYW5rZXRuaWggcGl0YW5qYSBzYW1vIHphdHZvcml0ZSBvdmFqIHByb3pvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICdaYXR2b3JpIG92YWogcHJvem9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdVcmVkaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAnbmF6YWQgbmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdQaXRhbmplOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ01vZ3XEh2kgb2Rnb3ZvcmkgemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ0RvZGFqIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdaYSBvdm8gcGl0YW5qZSBuaXN1IHNhxI11dmFuaSBvZGdvdm9yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ092byBuZW1hIHZpxaFlIG9kZ292b3JhLCBwcm9zdG9yIHphIHRla3N0IMSHZSBiaXRpIHByaWthemFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ1VyZWRpIG9kZ292b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnbmF6YWQgbmEgdXJlxJFpdmFuamUgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnT2Rnb3ZvcjonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdNYWtzaW11bSBwcmlrYXphbmloIGFua2V0YSBwbyBzdHJhbmknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ1BvxaFpbGphb2Mgb2JhdmXFoXRlbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAnUHJlZG1ldCBvYmF2ZcWhdGVuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ01lbmphbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdQcmVnbGVkIHN0YXRpc3Rpa2UgemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdUYWJlbGEgemFodGV2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1ZyZW1lIHNsYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdWcmVtZSBnbGFzYW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnVmlkaSBkZXRhbGplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAnRGV0YWxqaSBzdGF0aXN0aWtlIGFua2V0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAnaWRpIG5hemFkIG5hIHByZWdsZWQgc3RhdGlzdGlrZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2lqZSBvIGFua2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAnUG9zbGF0aSB6YWh0ZXZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdQcmltbGplbmUgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnRGV0YWxqaSBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAnQnJvaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgU2VydmljZXMnfSA9ICdVc2x1Z2UgemEgdGlrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICdHcmFmaWtvbiByZXp1bHRhdGEgYW5rZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdOZW1hIHN0YXRpc3Rpa2UgcmV6dWx0YXRhLic7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICdBbmtldGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdNb2xpbW8gZGEgb2Rnb3Zvcml0ZSBuYSBvdmEgcGl0YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdQb2thxb5pIG1vamUgb2Rnb3ZvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ092byBzdSB2YcWhaSBvZGdvdm9yaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdOYXNsb3YgYW5rZXRlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICdEb2RhaiBub3Z1IGFua2V0dSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICdOZW1hdGUgZG96dm9sdSB6YSBvdnUgYW5rZXR1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICdOaWplIGRhdCBJRCBBbmtldGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnVXJlZGkgYW5rZXR1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uISd9ID0gJ05lbWF0ZSBkb3p2b2x1IHphIG92dSBhbmtldHUgaWxpIHBpdGFuamUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnTmVtYXRlIGRvenZvbHUgemEgb3Z1IGFua2V0dSwgcGl0YW5qZSBpbGkgb2Rnb3ZvciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnVXJlZGkgYW5rZXRuYSBwaXRhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1llcy9Obyd9ID0gJ0RhL05lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ0R1Z21lIChMaXN0YSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnUG9samUgemEgcG90dnJkdSAoTGlzdGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAnVGlwIHBpdGFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29tcGxldGUnfSA9ICdLb21wbGV0bm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ05la29tcGxldG5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdVcmVkaSBwaXRhbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnVXJlZGkgb2Rnb3Zvcic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIE5pamUgaXphYnJhbiByZWQgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAnTm92aSBzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnT3BpcyBhbmtldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdvZGdvdm9yZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ25pamUgb2Rnb3ZvcmVubyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnSHZhbGEgbmEgdmHFoWltIG9kZ292b3JpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuJ30gPSAnQW5rZXRhIGplIHphdnLFoWVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnUG9ydWthIGFua2V0ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJ01vZHVsIG5pamUgYWt0aXZpcmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJ092YSBmdW5jaW9uYWxub3N0IG5pamUgb21vZ3XEh2VuYSwgbW9saW1vIGtvbnRha3RpcmFqdGUgdmHFoWVnIGFkbWluaXN0cmF0b3JhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnR3JlxaFrYSB1IGFua2V0aSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJ05laXNwcmF2YW4ga2xqdcSNIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJ1VuZXRpIGtsanXEjSBhbmtldGUgamUgbmVpc3ByYXZhbiwgYWtvIHN0ZSBwcmF0aWxpIHZlenUgbW/FvmRhIGplIG9uYSBuZXZhxb5lxIdhIGlsaSBvxaF0ZcSHZW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJ0dsYXNhbmplIHUgYW5rZXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICdQb2RhY2kgbyBnbGFzYW5qdSB1IGFua2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVmXEhyBzdGUgb2Rnb3ZvcmlsaSBuYSBhbmtldHUuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdEYSBsaSB6YWlzdGEgxb5lbGl0ZSBkYSBvYnJpxaFldGUgb3ZvIHBpdGFuamU/IFNWSSBwb3ZlemFuaSBwb2RhY2kgxIdlIGJpdGkgSVpHVUJMSkVOSSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nfSA9ICdEYSBsaSB6YWlzdGEgxb5lbGl0ZSBkYSBpemJyacWhZXRlIG92YWogb2Rnb3Zvcj8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnQW5rZXRuaSBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ01vZHVsIHphIHVyZcSRaXZhbmplIGFua2V0bmloIHBpdGFuamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU3ZpIHBhcmFtZXRyaSBPYmpla3RhIGFua2V0ZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdCcm9qIGRhbmEgcG9zbGUgc2xhbmphIGltZWpsYSBvIGFua2V0aSB6YSBrb2plIGlzdG9tIGtvcmlzbmlrdSBuZcSHZSBiaXRpIHNsYW5pIG5vdmkgemFodGV2aS4gQWtvIGl6YWJlcmV0ZSAwIGltZWpsIG8gYW5rZXRpIHNlIHV2ZWsgxaFhbGplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5pIHNhZHLFvmFqIGltZWpsYSBvYmF2ZcWhdGVuamEgbyBub3ZvaiBhbmtldGkgemEga29yaXNuaWtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmkgcG/FoWlsamFvYyBpbWVqbGEgb2JhdmXFoXRlbmphIG8gbm92b20gaXN0cmHFvml2YW5qdSB6YSBrb3Jpc25pa2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmkgcHJlZG1ldCBpbWVqbGEgb2JhdmXFoXRlbmphIG8gbm92b2ogYW5rZXRpIHphIGtvcmlzbmlrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pxaFlIG1vZHVsIHByZWdsZWRhIHphIG1hbGkgcHJpa2F6IGxpc3RlIGFua2V0YS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBncnVwZSBrb2plIGltYWp1IGRvenZvbHUgZGEgbWVuamFqdSBzdGF0dXMgYW5rZXRlLiBUYWJlbGEgamUgcG9kcmF6dW1ldmFubyBwcmF6bmEgaSBvcGVyYXRlcmkgaXogc3ZpaCBncnVwYSBtb2d1IGRhIG1lbmphanUgc3RhdHVzIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBvbmx5IHNlbmQgdG8gcmVhbCBjdXN0b21lcnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBtYXhpbXVtIGFtb3VudCBvZiBzdXJ2ZXlzIHRoYXQgZ2V0IHNlbnQgdG8gYSBjdXN0b21lciBwZXIgMzAgZGF5cy4gKCAwIG1lYW5zIG5vIG1heGltdW0sIGFsbCBzdXJ2ZXkgcmVxdWVzdHMgd2lsbCBiZSBzZW50KS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBtYWtzaW1hbG5pIGJyb2ogYW5rZXRhIGtvamkgxIdlIGJpdGkgcG9zbGF0IGtvcmlzbmlrdSB0b2tvbSAzMCBkYW5hLiAoMCB6bmHEjWkgZGEgbmVtYSBtYWtzaW11bWEsIHN2aSB6YWh0ZXZpIMSHZSBiaXRpIHBvc2xhdGkpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGJyb2ogc2F0aSBvZCB6YXR2YXJhbmphIHRpa2V0YSB6YSBwb2tyZXRhbmplIHNsYW5qYSBhbmtldGUuICgwIHpuYcSNaSBkYSBzZSDFoWFsamUgb2RtYWggcG8gemF0dmFyYW5qdSkuIE5hcG9tZW5hOiBvZGxhZ2FuamUgc2xhbmphIGFua2V0ZSBvYmF2bGphIOKAnk9UUlMg4oCdIHNlcnZpcyBwcmUgYWt0aXZpcmFuamEg4oCeRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmTigJ0gcG9zdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFudSB2aXNpbnUgb2t2aXJhIHphIHByaWtheiB0ZWtzdGEgIHphIGRldGFsam5pIHByaWtheiBlbGVtZW5hdGEgYW5rZXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnT2RyZcSRdWplIG1ha3NpbWFsbnUgdmlzaW51IOKAnlJpY2h0ZXh04oCdIHByaWthemEgdGVrc3RhICB6YSBkZXRhbGpuaSBwcmlrYXogZWxlbWVuYXRhIGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIHUgcHJlZ2xlZHUgYW5rZXRlLiBPdmEgb3BjaWplIG5lbWEgdXRpY2FqIG5hIHBvemljaWplIGtvbG9uYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJ1VyZWRpIG9wxaF0ZSBpbmZvcm1hY2lqZSBvIGFua2V0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ1VyZWRpIGFua2V0bmEgcGl0YW5qYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnVWtsanXEjWkgaWxpIGlza2xqdcSNaSBwcmlrYXogZWtyYW5hIHphIGdsYXNhbmplIG5hIGphdm5vbSBpbnRlcmZlanN1IHJhZGkgcHJpa2F6YSByZXp1bHRhdGEgcG9qZWRpbmUgYW5rZXRlIGthZGEga29yaXNuaWsgcG9rdcWhYSBkYSBvZGdvdm9yaSBuYSB1cGl0bmlrIHBvIGRydWdpIHB1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdVa2xqdcSNaSBpbGkgaXNrbGp1xI1pIHByb3ZlcnUgc3RhdHVzYSBzbGFuamEgemEgdXNsdWd1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ1VrbGp1xI1pIGlsaSBpc2tsanXEjWkgcHJvdmVydSBzdGF0dXNhIHNsYW5qYSB6YSB0aXAgdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgIkZyb250ZW5kIiBtb2R1bGEgemEgZG9kYXZhbmplIGFua2V0ZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphICJGcm9udGVuZCIgbW9kdWxhIHphIGl6bWVuZSBhbmtldGUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgIkZyb250ZW5kIiBtb2R1bGEgemEgc3RhdGlzdGlrdSBhbmtldGUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSAiRnJvbnRlbmQiIG1vZHVsYSB6YSBkZXRhbGpuaSBwcmlrYXogYW5rZXRlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBQdWJsaWNTdXJ2ZXkgb2JqZWN0IGluIHRoZSBwdWJsaWMgU3VydmV5IGFyZWEuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgIkZyb250ZW5kIiBtb2R1bGEgemEgamF2bmUgYW5rZXRuZSBvYmpla3RlIGFua2V0ZSB1IHByb3N0b3J1IGphdm5paCBhbmtldGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdBa28gc2Ugb3ZhaiBpenJheiBwb2tsYXBhLCBhbmtldGEgbmXEh2UgYml0aSBwb3NsYXRhIGtvcmlzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0cmkgc3RyYW5pY2EgKG5hIGtvamltYSBzdSBhbmtldGUgdmlkbGppdmUpIG5hIG1hbG9tIHByaWthenUgcHJlZ2xlZGEgYW5rZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ0phdm5hIGFua2V0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHVyZcSRaXZhbmplIGFua2V0ZSB1IGRldGFsam5vbSBwcmlrYXp1IGludGVyZmVqc2Egb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHVyZcSRaXZhbmplIGFua2V0bmloIHBpdGFuamEgdSBkZXRhbGpub20gcHJpa2F6dSBpbnRlcmZlanNhIG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHBvdnJhdGFrIHUgZGV0YWxqbmkgcHJpa2F6IGFua2V0ZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIGRldGFsam5pIHByaWtheiBzdGF0aXN0aWtlIGFua2V0ZSB1IGRldGFsam5vbSBwcmlrYXp1IG5hIGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnRGV0YWxqaSBzdGF0aXN0aWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ01vZHVsIHphIGRvZGF2YW5qZSBhbmtldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNb2R1bCB6YSB1cmXEkWl2YW5qZSBhbmtldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnT2dyYW5pxI1lbmplIHByZWdsZWRhIGFua2V0ZSAtIOKAnm1hbG/igJ0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1bCB6YSBzdGF0aXN0aWt1IGFua2V0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ01vZHVsIHphIGRldGFsam5pIHByaWtheiBhbmtldGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnT2dyYW5pxI1lbmplIGFua2V0ZSBwbyBzdHJhbmkgemEgcHJlZ2xlZCAtIOKAnm1hbG/igJ0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdBbmtldGEgbmXEh2UgYml0aSBwb3NsYXRhIG5hIHBvZGXFoWVudSBpbWVqbCBhZHJlc3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICdJZGVudGlmaWthdG9yIHphIGFua2V0dSwgbnByIFN1cnZleSMsIE15U3VydmV5Iy4gUG9kcmF6dW1ldmFubyBqZSBTdXJ2ZXkjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnTW9kdWwgZG9nYcSRYWphIG5hIHRpa2V0dSB6YSBhdXRvbWF0c2tvIHNsYW5qZSBpbWVqbGEgbyBpc3RyYcW+aXZhbmp1IGtvcmlzbmljaW1hIGFrbyBqZSB0aWtldCB6YXR2b3Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnT2tpZGHEjSBvZGxvxb5lbm9nIHNsYW5qYSB6YWh0ZXZhIHphIGFua2V0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICdVbGF6IHUgZGV0YWxqbmkgcHJpa2F6IHN0YXRpc3Rpa2UuJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6c3dfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnVGVuZ2VuZXphIHRhZml0aSBtcHlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ1V0YW5ndWxpemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ1V0YW5ndWxpemkgd2EgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnS2lpbmkgY2hhIHRhYXJpZmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAnQWluYSB6YSB0aWtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdNYWVsZXpvIHlhIG5kYW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdIYXJpcmkgdGFhcmlmYSB6YSB1anVtbGEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICdIYXJpcmkgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ01hc3dhbGkgeWEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ09uZ2V6YSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ0NoYXBhIHN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ0ppYnUgbGluYWhpdGFqaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnSGFrdW5hIG1hc3dhbGkgeWFsaXlvIGhpZmFkaGl3YSBrd2EgaGlpIHRhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ1N3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ0ppYnUgbGluYWhpdGFqaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ0hhcmlyaSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ3J1ZGkga3dlbnllIG1hc3dhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAnTWFqaWJ1IHlhd2V6ZWthbmEga3dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdPbmdlemEgamlidSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJ0hha3VuYSBtYWppYnUgeWFsaXlvaGlmYWRoaXdhIGt3YSBoaWxpIHN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICdIaWxpIGhhbGluYSBtYWppYnUgbWVuZ2ksIHNlaGVtdSB5YSBuYWthbGEgaXRhb255ZXNod2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAnSGFyaXJpIGppYnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAnUnVkaSBueXVtYSBrdWhhcmlyaSBzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdNdHVtYWppIHRhYXJpZmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICdTb21vIGxhIHRhYWZpZmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ0ltZWJhZGlsaXNod2EgbmEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAnTWFwaXRpbyB5YSB0YWt3aW11IHlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAnSmVkd2FsaSBsYSBtYW9tYmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICdNdWRhIHdhIGt1dHVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICdNdWRhIHdhIGt1cGlnYSBrdXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICdPbmEgbWFlbGV6byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ01hZWxlem8geWEgdGFrd2ltdSB6YSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ1J1ZGkgbnl1bWEga3dlbnllIG1hcGl0aW8geWEgdGFrd2ltdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdUYWFyaWZhIHphIHRha3dpbXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ01hb21iaSB5YWxpeW90dW13YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAnVGFmaXRpIHppbGl6b3Bva2VsZXdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAnTWFlbGV6byB5YSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAnTmFtYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnSHVkdW1hIHphIHRpa2V0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUmVzdWx0cyBHcmFwaCd9ID0gJ0dyYWZ1IHlhIG1hdG9rZW8geWEgdGFmaXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICdIYWt1bmEgbWF0b2tlbyB5YSB0YWt3aW11JzsKCiAgICAjIFRlbXBsYXRlOiBQdWJsaWNTdXJ2ZXkKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSd9ID0gJ1RhZml0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ1RhZmFkaGFsaSBqaWJ1IGhheWEgbWFzd2FsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93IG15IGFuc3dlcnMnfSA9ICdPbnllc2hhIG1hamlidSB5YW5ndSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGVzZSBhcmUgeW91ciBhbnN3ZXJzJ30gPSAnSGF5YSBuaSBtYWppYnUgeWFrbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVGl0bGUnfSA9ICdLaWNod2EgY2hhIGhhYmFyaSBjaGEgdXRhZml0aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlBZGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBOZXcgU3VydmV5J30gPSAnT25nZXphIHV0YWZpdGkgbXB5YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAnSGFyaXJpIHV0YWZpdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ0hhcmlyaSBtYXN3YWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWWVzL05vJ30gPSAnTmRpby9IYXBhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFkaW8gKExpc3QpJ30gPSAnUmVkaW8gKE9yb2RoYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnQ2hla2kgYm9rc2kgKG9yb2RoYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICdBaW5hIHlhIHN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnS2FtaWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICdJc2l5byBrYW1pbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ0hhcmlyaSBtYXN3YWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnSGFyaXJpIG1hamlidSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIEhha3VuYSBmb2xlbmkgaWxpeW9jaGFndWxpd2EtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdIYWxpIG1weWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAnTWFlbGV6byB5YSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnYW5zd2VyZWQnfSA9ICdZYWxpeW9qaWJpd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnbm90IGFuc3dlcmVkJ30gPSAnWWFzaXlvamliaXdhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICdBc2FudGUga3dhIG1hamlidSB5YWtvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ1V0YWZpdGkgdW1lbWFsaXppa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSBub3QgZW5hYmxlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVycm9yISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbnNlcnRlZCBzdXJ2ZXkga2V5IGlzIGludmFsaWQsIGlmIHlvdSBmb2xsb3dlZCBhIGxpbmsgbWF5YmUgdGhpcyBpcyBvYnNvbGV0ZSBvciBicm9rZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUgRGF0YSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBhbHJlYWR5IGFuc3dlcmVkIHRoZSBzdXJ2ZXkuJ30gPSAnVW1la3dpc2hhamlidSB0YWZpdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ0plIHVuYXRha2Ega3VmdXRhIGhpbGkgc3dhbGk/IERhdGEgem90ZSB6aXRhIFBPVEVBISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ0plIHVuYXRha2Ega3VmdXRhIGhpbGkgamlidT8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnTW9kdWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ01vZHVsaSB5YSBrdWhhcmlyaSBtYXN3YWxpIHlhIHV0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0YSB6b3RlIHphIHZpdHUgdnlhIHNhdmVpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICdJZGFkaSB5YSBzaWt1IGJhYWRhIHlhIGt1dHVtYSBiYXJ1YSBwZXBlIHlhIHRhZml0aSBhbWJhcG8gaGFrdW5hIG1hb21iaSBtYXB5YSB5YSB0YWZpdGkga3V0dW13YSBrd2EgbXRlamEgaHV5by4gS3VjaGFndWEgMCBkYWltYSBrdXRhdHVtYSBiYXJ1YSBwZXBlIHlhIHNhdmVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEga2lpbmkgY2hhIGJhcnVhIHBlcGUgeWEgdGFhcmlmYSBrd2Egd2F0ZWphIGt1aHVzdSBzYXZlaSBtcHlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEgbXR1bWFqaSB3YSBiYXJ1YSBwZXBlIHlhIHRhYXJpZmEga3VodXN1IHNhdmVpIG1weWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ0NoYWd1by1tc2luZ2kgbGEgc29tbyBsYSBiYXJ1YSBwZXBlIHlhIHRhYXJpZmEga3dhIHdhdGVqYSBrdWh1c3Ugc2F2ZWkgbXB5YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIHN1cnZleSBsaXN0Lid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtYXBpdGlvIHlhIG1vZHVsaSBrdW9ueWVzaGEgbXVvbmVrYW5vIG1kb2dvIHdhIG9yb2RoYSB5YSBzYXZlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIGtpa29tbyBjaGEganV1IGNoYSBpZGFkaSB5YSBzYXZlaSB6aW5hem90dW13YSBrd2EgbXRlamEga3dhIHNpa3UgMzAuICgwIGluYW1hYW5pc2hhIGhha3VuYSBraWtvbW8sIHNhdmVpIHpvdGUgeml0YXR1bXdhKS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgY2hhZ3VvLW1zaW5naSBsYSB1cmVmdSB3YSBtdW9uZWthbm8gd2EgUmljaHRleHQga3dhIGVsZW1lbnRpIHphIFV0YWZpdGlLdXp3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBzYWZ1IGlsaXlvb255ZXNod2Ega3dlbnllIG1hcGl0aW8geWEgdXRhZml0aS4gSGlsaSBjaGFndW8gaGFsaW5hIGF0aGFyaSBrd2EgbmFmYXNpIHlhIHNhZnUuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnV2V6ZXNoYSBhdSBVc2l3ZXplc2hlIHNrcmluaSB5YSBPbmVzaGFLdXJhRGF0YSBrd2Ega2lvbGVzdXJhIGNoYSB1bW1hIGlsaSBrdW9ueWVzaGEgZGF0YSB6YSB1dGFmaXRpIGZ1bGFuaSBtYWFsdW11IHBhbGUgbXRlamEgYW5hcG9qYXJpYnUga3VqaWJ1IHV0YWZpdGkga3dhIG1hcmEgeWEgcGlsaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICdXZXplc2hhIGF1IFVzaXdlemVzaGUga3VjaGFndWEgaGFsaSB5YSBrdXR1bWEga3dhIGhpaSBodWR1bWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnV2V6ZXNoYSBhdSBVc2l3ZXplc2hlIGt1Y2hhZ3VhIGhhbGkgeWEga3V0dW1hIGt3YSBhaW5hIHlhIHRpa2V0aS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsaSB5YSBGcm9udGVuZCB5YSBrdXNhamlsaSBpbGkga3VvbmdlemEgIHV0YWZpdGkga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxpIHlhIEZyb250ZW5kIHlhIGt1c2FqaWxpIGlsaSBrdWhhcmlyaSB1dGFmaXRpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bGkgeWEgRnJvbnRlbmQgeWEga3VzYWppbGkgdGFrd2ltdSB6YSB1dGFmaXRpIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHpvb20gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsaSB5YSBGcm9udGVuZCB5YSBrdXNhamlsaSB1dGFmaXRpIGt1emEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnTW9kdWxpIHlhIEZyb250ZW5kIHlhIGt1c2FqaWxpIGt3YSBhamlsaSB5YSBVdGFmaXRpVW1tYSBrYXRpa2EgZW5lbyBsYSB1dGFmaXRpIHdhIHVtbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdLYW1hIGhpaSByZWdleCBpbmFmYW5hbmEsIHV0YWZpdGkgd2EgbXRlamEgaGF1dGF0dW13YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICdQYXJhbWV0YSBrd2EgYWppbGkgeWEga3VyYXNhIChhbWJhem8gbmRhbmkgeWFrZSB1dGFmaXRpIHVtZW9ueWVzaHdhKSB6YSBtYXBpdGlvIHlhIHV0YWZpdGkgbWRvZ28uICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgU3VydmV5Lid9ID0gJ1NhdmVpIHlhIHVtbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVzdWx0cyBvbGRlciB0aGFuIHRoZSBjb25maWd1cmVkIGFtb3VudCBvZiBkYXlzIHdpbGwgYmUgZGVsZXRlZC4gTm90ZTogZGVsZXRlIHJlc3VsdHMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdUYXNrIyMjU3VydmV5UmVxdWVzdHNEZWxldGVcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgc3VydmV5IGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBpbGkga3VoYXJpcmkgdXRhZml0aSBrYXRpa2EgbXVvbmVrYW5vIHVsaW9rdXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUgaWxpIGt1aGFyaXJpIG1hc3dhbGkgeWEgdXRhZml0aSBrYXRpa2EgbXVvbmVrYW5vIHVsaW9rdXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBpbGkga3VydWRpIGthdGlrYSBtdW9uZWthbm8gdWxpb2t1endhIHdhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdvIGthdGlrYSBtZW55dSBpbGkga3VrdXphIG1hZWxlem8geWEgdGFrd2ltdSB6YSB1dGFmaXRpIGthdGlrYSBtdW9uZWthbm8gdWxpb2t1endhIHdhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnTWFlbGV6byB5YSB0YWZpdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEFkZCBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICdNb2R1bGkgeWEga3VoYXJpcmkgc2F2ZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnTWFwaXRpbyB5YSBzYXZlaSBraWtvbW8gImNoYSBjaGluaSInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXRzIE1vZHVsZS4nfSA9ICdNb2R1bGkgeWEgdGFrd2ltdSB6YSBzYXZlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFpvb20gTW9kdWxlLid9ID0gJ01vZHVsaSB5YSBrdWt1emEgc2F2ZWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICdTYXZlaSBoYXppdGF0dW13YSBrd2EgYmFydWEgcGVwZSB6aWxpem93ZWt3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ0tpdGFtYnVsaXNobyBjaGEgdXRhZml0aSwgbWYuIFV0YWZpdGkjLCBVdGFmaXRpIHdhbmd1Iy4gQ2hhZ3VvLW1zaW5naSBuaSBVdGFmaXRpIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyBhIGRlc2NyaXB0aW9uIGZvciBTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIG9uIFN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ01vZHVsaSB5YSB0dWtpbyBsYSB0aWtldGkga3dhIGFqaWxpIHlhIGt1dHVtYSBiYXJ1YSBwZXBlIHphIG1hb21iaSB5YSB0YWZpdGkgbW9qYSBrd2EgbW9qYSBrd2Egd2F0ZWphIGthbWEgdGlrZXRpIGltZWZ1bmd3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6dGhfVEhfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn4Liq4Lij4LmJ4Liy4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4Lir4Lih4LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ+C4muC4l+C4meC4syc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAn4LiE4Liz4LiZ4Liz4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAn4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4Liq4LmI4Lin4LiZ4LmA4LiZ4Li34LmJ4Lit4LmA4Lij4Li34LmI4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4guC4reC4h+C4leC4seC5i+C4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ+C4o+C4suC4ouC4peC4sOC5gOC4reC4teC4ouC4lOC4oOC4suC4ouC5g+C4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn4LmB4LiB4LmJ4LmE4LiC4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Lix4LmI4Lin4LmE4LibJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAn4LmB4LiB4LmJ4LmE4LiC4LiE4Liz4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ+C4hOC4uOC4k+C4reC4ouC4ueC5iOC4l+C4teC5iOC4meC4teC5iCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAn4LiE4Liz4LiW4Liy4Lih4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ+C5gOC4nuC4tOC5iOC4oeC4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICfguJXguYnguK3guIfguIHguLLguKPguITguLPguJXguK3guJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICfguYTguKHguYjguKHguLXguITguLPguJbguLLguKHguJrguLHguJnguJfguLbguIHguYPguJnguYHguJrguJrguKrguK3guJrguJbguLLguKHguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICfguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAn4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LiE4Liz4LiV4Lit4LiaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfguYDguKHguLfguYjguK3guITguLjguJPguIHguLLguKPguYHguIHguYnguYTguILguITguLPguJbguLLguKHguYPguJnguYHguJrguJrguKrguK3guJrguJbguLLguKHguYDguKrguKPguYfguIjguKrguLTguYnguJnguYHguKXguYnguKfguYDguJ7guLXguKLguIfguYHguITguYjguJvguLTguJTguKvguJnguYnguLLguIjguK3guJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ+C5geC4geC5ieC5hOC4guC4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ+C4geC4peC4seC4muC5hOC4m+C4l+C4teC5iOC4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICfguITguLPguJbguLLguKE6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn4LiE4Liz4LiV4Lit4Lia4LiX4Li14LmI4LmA4Lib4LmH4LiZ4LmE4Lib4LmE4LiU4LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfguYDguJ7guLTguYjguKHguITguLPguJXguK3guJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICfguYTguKHguYjguKHguLXguITguLPguJXguK3guJrguJrguLHguJnguJfguLbguIHguYPguJnguITguLPguJbguLLguKHguJnguLXguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ+C4oeC4teC4muC4suC4h+C4hOC4s+C4luC4suC4oeC4l+C4teC5iOC4ouC4seC4h+C5hOC4oeC5iOC4leC4reC4miB0ZXh0YXJlYSDguIjguLDguJvguKPguLLguIHguI8gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn4LmB4LiB4LmJ4LmE4LiC4LiE4Liz4LiV4Lit4LiaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ+C4geC4peC4seC4muC5hOC4m+C4l+C4teC5iOC5geC4geC5ieC5hOC4guC4hOC4s+C4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAn4LiE4Liz4LiV4Lit4LiaOic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ+C4iOC4s+C4meC4p+C4meC4quC4ueC4h+C4quC4uOC4lOC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC5geC4leC5iOC4peC4sOC4q+C4meC5ieC4sic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld1NtYWxsCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU2VuZGVyJ30gPSAn4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4Lic4Li54LmJ4Liq4LmI4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTdWJqZWN0J30gPSAn4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4LmA4Lij4Li34LmI4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICfguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguYLguJTguKInOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAn4Liq4LiW4Li04LiV4Li04Lig4Liy4Lie4Lij4Lin4Lih4LiC4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVlc3RzIFRhYmxlJ30gPSAn4LiB4Liy4Lij4Lij4LmJ4Lit4LiH4LiC4Lit4LiV4Liy4Lij4Liy4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn4LmA4Lin4Lil4Liy4Liq4LmI4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ+C5gOC4p+C4peC4suC5guC4q+C4p+C4lSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAn4LiU4Li54LmA4LiZ4Li34LmJ4Lit4Lir4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBzdGF0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdCBEZXRhaWxzJ30gPSAn4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4LiC4Lit4LiH4Liq4LiW4Li04LiV4Li04LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfguIHguKXguLHguJrguYTguJvguJfguLXguYjguKrguJbguLTguJXguLTguKDguLLguJ7guKPguKfguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHJldmlvdXMgdm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXh0IHZvdGUnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5Wm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEluZm9ybWF0aW9uJ30gPSAn4LiC4LmJ4Lit4Lih4Li54Lil4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICfguKrguYjguIfguITguLPguKPguYnguK3guIcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVjZWl2ZWQgc3VydmV5cyd9ID0gJ+C5hOC4lOC5ieC4o+C4seC4muC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5geC4peC5ieC4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGV0YWlscyd9ID0gJ+C5gOC4meC4t+C5ieC4reC4q+C4suC4guC4reC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXInfSA9ICfguKvguKHguLLguKLguYDguKXguIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAn4LiB4Liy4Lij4Lia4Lij4Li04LiB4Liy4Lij4LiC4Lit4LiH4LiV4Lix4LmL4LinJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAn4LiB4Lij4Liy4Lif4LiE4Liz4LiV4Lit4Lia4LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHN0YXQgcmVzdWx0cy4nfSA9ICfguYTguKHguYjguKHguLXguITguLPguJXguK3guJrguILguK3guIfguKrguJbguLTguJXguLQnOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAn4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBhbnN3ZXIgdGhlc2UgcXVlc3Rpb25zJ30gPSAn4LmC4Lib4Lij4LiU4LiV4Lit4Lia4LiE4Liz4LiW4Liy4Lih4LmA4Lir4Lil4LmI4Liy4LiZ4Li14LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ+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+eydJbmNvbXBsZXRlJ30gPSAn4LmE4Lih4LmI4LmA4Liq4Lij4LmH4LiIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICfguYHguIHguYnguYTguILguITguLPguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIEVkaXQnfSA9ICfguYHguIHguYnguYTguILguITguLPguJXguK3guJonOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSDguYTguKHguYjguKHguLXguITguLTguKfguJfguLXguYjguJbguLnguIHguYDguKXguLfguK3guIEgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAn4Liq4LiW4Liy4LiZ4Liw4LmD4Lir4Lih4LmIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ+C4hOC4s+C4reC4mOC4tOC4muC4suC4ouC5geC4muC4muC4quC4reC4muC4luC4suC4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ+C4leC4reC4muC5geC4peC5ieC4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICfguKLguLHguIfguYTguKHguYjguJXguK3guJonOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ+C4guC4reC4muC4hOC4uOC4k+C4quC4s+C4q+C4o+C4seC4muC4hOC4p+C4suC4oeC4hOC4tOC4lOC5gOC4q+C5h+C4meC4guC4reC4h+C4hOC4uOC4kyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC5gOC4quC4o+C5h+C4iOC5gOC4o+C4teC4ouC4muC4o+C5ieC4reC4ouC5geC4peC5ieC4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICfguITguLjguJPguYTguJTguYnguJXguK3guJrguYHguJrguJrguKrguK3guJrguJbguLLguKHguJnguLXguYnguYHguKXguYnguKcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ+C4hOC4uOC4k+C5geC4meC5iOC5g+C4iOC4q+C4o+C4t+C4reC5hOC4oeC5iOC4l+C4teC5iOC4iOC4sOC4peC4muC4hOC4s+C4luC4suC4oeC4meC4teC5iT8g4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4LmA4LiB4Li14LmI4Lii4Lin4LiC4LmJ4Lit4LiH4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiI4Liw4Lir4Liy4Lii4LmE4LibISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4peC4muC4geC4suC4o+C4leC4reC4muC4meC4teC5ieC4q+C4o+C4t+C4reC5hOC4oeC5iD8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAn4LmC4Lih4LiU4Li54Lil4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbW9kdWxlIHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICfguYLguKHguJTguLnguKXguKrguLPguKvguKPguLHguJrguYHguIHguYnguYTguILguITguLPguJbguLLguKHguYHguJrguJrguKrguK3guJrguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguJfguLHguYnguIfguKvguKHguJTguKrguLPguKvguKPguLHguJrguK3guK3guJrguYDguIjguIHguJXguYzguILguK3guIfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAn4LiI4LmN4Liy4LiZ4Lin4LiZ4Lin4Lix4LiZ4Lir4Lil4Lix4LiH4LiI4Liy4LiB4Liq4LmI4LiH4Lit4Li14LmA4Lih4Lil4LmM4LmD4LiZ4LiB4Liy4Lij4Liq4Lit4Lia4LiW4Liy4Lih4LiX4Li14LmI4LmE4Lih4LmI4Lih4Li14LiB4Liy4Lij4Lij4LmJ4Lit4LiH4LiC4Lit4LiB4Liy4Lij4Liq4Lit4Lia4LiW4Liy4Lih4LiE4Lij4Lix4LmJ4LiH4LmD4Lir4Lih4LmI4LiI4Liw4LiW4Li54LiB4Liq4LmI4LiH4LmE4Lib4Lii4Lix4LiH4Lil4Li54LiB4LiE4LmJ4Liy4Lij4Liy4Lii4LmA4LiU4Li14Lii4Lin4LiB4Lix4LiZIOC5gOC4peC4t+C4reC4gSAwIOC5gOC4nuC4t+C5iOC4reC4quC5iOC4h+C4reC4teC5gOC4oeC4peC5jOC5g+C4meC4geC4suC4o+C4quC4reC4muC4luC4suC4oeC4leC4peC4reC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGJvZHkgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguKrguYjguKfguJnguYDguJnguLfguYnguK3guYDguKPguLfguYjguK3guIfguKrguLPguKvguKPguLHguJrguIHguLLguKPguYHguIjguYnguIfguYDguJXguLfguK3guJnguK3guLXguYDguKHguKXguYzguYDguIHguLXguYjguKLguKfguIHguLHguJrguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguKvguKHguYjguJbguLbguIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzZW5kZXIgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJzguLnguYnguKrguYjguIfguKrguLPguKvguKPguLHguJrguIHguLLguKPguYHguIjguYnguIfguYDguJXguLfguK3guJnguK3guLXguYDguKHguKXguYzguYDguIHguLXguYjguKLguKfguIHguLHguJrguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguKvguKHguYjguJbguLbguIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmB4LiI4LmJ4LiH4LmA4LiV4Li34Lit4LiZ4Lit4Li14LmA4Lih4Lil4LmM4LmA4LiB4Li14LmI4Lii4Lin4LiB4Lix4Lia4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4Lir4Lih4LmI4LiW4Li24LiH4Lil4Li54LiB4LiE4LmJ4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC5guC4oeC4lOC4ueC4peC4oOC4suC4nuC4o+C4p+C4oeC4l+C4teC5iOC4iOC4sOC5geC4quC4lOC4h+C4oeC4uOC4oeC4oeC4reC4h+C5gOC4peC5h+C4gSDguYYg4LiC4Lit4LiH4Lij4Liy4Lii4LiK4Li34LmI4Lit4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiI4Liz4LiZ4Lin4LiZ4Liq4Li54LiH4Liq4Li44LiU4LiC4Lit4LiH4LiB4Liy4Lij4Liq4Liz4Lij4Lin4LiI4LiX4Li14LmI4LmE4LiU4LmJ4Lij4Lix4Lia4LiB4Liy4Lij4Liq4LmI4LiH4LmD4Lir4LmJ4LiB4Lix4Lia4Lil4Li54LiB4LiE4LmJ4Liy4Lig4Liy4Lii4LmD4LiZIDMwIOC4p+C4seC4mSAoMCDguKvguKHguLLguKLguJbguLbguIfguYTguKHguYjguKHguLXguIHguLLguKPguIHguLPguKvguJnguJTguIjguLPguJnguKfguJnguKrguLnguIfguKrguLjguJQg4LiL4Li24LmI4LiH4LmB4Lia4Lia4Liq4Liz4Lij4Lin4LiI4LiX4Li14LmI4LmA4Lij4Li14Lii4LiB4LiC4Lit4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiI4Liw4LiW4Li54LiB4Liq4LmI4LiHKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhbW91bnQgaW4gaG91cnMgYSB0aWNrZXQgaGFzIHRvIGJlIGNsb3NlZCB0byB0cmlnZ2VyIHRoZSBzZW5kaW5nIG9mIGEgc3VydmV5LCAoIDAgbWVhbnMgc2VuZCBpbW1lZGlhdGVseSBhZnRlciBjbG9zZSApLiBOb3RlOiBkZWxheWVkIHN1cnZleSBzZW5kaW5nIGlzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnRGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2sjIyNTdXJ2ZXlSZXF1ZXN0c1NlbmRcJyBzZXR0aW5nLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGNvbHVtbnMgZm9yIHRoZSBkcm9wZG93biBsaXN0IGZvciBidWlsZGluZyBzZW5kIGNvbmRpdGlvbnMgKDAgPT4gaW5hY3RpdmUsIDEgPT4gYWN0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguKfguLLguKHguKrguLnguIfguYDguKPguLTguYjguKHguJXguYnguJnguKrguLPguKvguKPguLHguJrguKHguLjguKHguKHguK3guIcgUmljaHRleHQg4Liq4Liz4Lir4Lij4Lix4Lia4Lit4LiH4LiE4LmM4Lib4Lij4Liw4LiB4Lit4Lia4LiC4Lit4LiHIFN1cnZleVpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZ3JvdXBzIChydykgd2hpY2ggY2FuIGRlbGV0ZSBzdXJ2ZXkgc3RhdHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG1heGltdW0gaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIGluIHRoZSBzdXJ2ZXkgb3ZlcnZpZXcuIFRoaXMgb3B0aW9uIGhhcyBubyBlZmZlY3Qgb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBjb2x1bW5zLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiE4Lit4Lil4Lix4Lih4LiZ4LmM4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4LmD4LiZ4Lig4Liy4Lie4Lij4Lin4Lih4LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LiV4Lix4Lin4LmA4Lil4Li34Lit4LiB4LiZ4Li14LmJ4LiI4Liw4LmE4Lih4LmI4Lih4Li14Lic4Lil4LiV4LmI4Lit4LiV4Liz4LmB4Lir4LiZ4LmI4LiH4LiC4Lit4LiH4LiE4Lit4Lil4Lix4Lih4LiZ4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHV0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICfguYDguJvguLTguJTguKvguKPguLfguK3guJvguLTguJTguIHguLLguKPguYPguIrguYnguIfguLLguJnguKrguIHguKPguLXguJkg4LiX4Li14LmI4LmB4Liq4LiU4LiH4LiC4LmJ4Lit4Lih4Li54Lil4LiB4Liy4Lij4LmC4Lir4Lin4LiV4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4Liq4Liy4LiY4Liy4Lij4LiT4Liw4LmA4Lie4Li34LmI4Lit4LiI4Liw4LmB4Liq4LiU4LiH4Lic4Lil4LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihIOC5gOC4oeC4t+C5iOC4reC4peC4ueC4geC4hOC5ieC4suC4nuC4ouC4suC4ouC4suC4oeC4l+C4teC5iOC4iOC4sOC4leC4reC4muC5geC4muC4muC4quC4reC4muC4luC4suC4oeC4hOC4o+C4seC5ieC4h+C4l+C4teC5iOC4quC4reC4hyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSBzZXJ2aWNlLid9ID0gJ+C5gOC4m+C4tOC4lOC4q+C4o+C4t+C4reC4m+C4tOC4lOC4geC4suC4o+C4leC4o+C4p+C4iOC4quC4reC4muC5gOC4h+C4t+C5iOC4reC4meC5hOC4guC4geC4suC4o+C4quC5iOC4h+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4muC4o+C4tOC4geC4suC4oyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ+C5gOC4m+C4tOC4lOC4q+C4o+C4t+C4reC4m+C4tOC4lOC4geC4suC4o+C4leC4o+C4p+C4iOC4quC4reC4muC5gOC4h+C4t+C5iOC4reC4meC5hOC4guC4geC4suC4o+C4quC5iOC4h+C4quC4s+C4q+C4o+C4seC4muC4m+C4o+C4sOC5gOC4oOC4l+C4guC4reC4h+C4leC4seC5i+C4pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLLguKPguKXguIfguJfguLDguYDguJrguLXguKLguJnguYLguKHguJTguLnguKUgRnJvbnRlbmQg4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmA4Lie4Li04LmI4Lih4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLLguKPguKXguIfguJfguLDguYDguJrguLXguKLguJnguYLguKHguJTguLnguKUgRnJvbnRlbmQg4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4LmB4LiB4LmJ4LmE4LiC4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmD4LiZ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEZyb250ZW5kIOC4quC4s+C4q+C4o+C4seC4muC4quC4luC4tOC4leC4tOC4guC4reC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEZyb250ZW5kIOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4i+C4ueC4oeC5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEZyb250ZW5kIOC4quC4s+C4q+C4o+C4seC4muC4reC4reC4muC5gOC4iOC4geC4hOC5jOC5geC4muC4muC4quC4reC4muC4luC4suC4oeC4l+C4seC5iOC4p+C5hOC4m+C5g+C4meC4nuC4t+C5ieC4meC4l+C4teC5iOC4quC4s+C4o+C4p+C4iOC4quC4suC4mOC4suC4o+C4k+C4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAn4LiW4LmJ4Liy4Lir4Liy4LiBIHJlZ2V4IOC4leC4o+C4h+C4geC4seC4mSDguIjguLDguYTguKHguYjguKHguLXguIHguLLguKPguKrguYjguIfguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguKvguYnguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgc3VydmV5cyBhcmUgc2hvd24pIG9mIHRoZSBzbWFsbCBzdXJ2ZXkgb3ZlcnZpZXcuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguYDguJ7guIggKOC4i+C4tuC5iOC4h+C4iOC4sOC5geC4quC4lOC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oSkg4LiC4Lit4LiH4Lig4Liy4Lie4Lij4Lin4Lih4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LiC4LiZ4Liy4LiU4LmA4Lil4LmH4LiBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4Liq4Liy4LiY4Liy4Lij4LiT4LiwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guYHguIHguYnguYTguILguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYHguKrguJTguIfguKXguLTguIfguITguYzguYPguJnguYDguKHguJnguLnguYDguJ7guLfguYjguK3guYHguIHguYnguYTguILguITguLPguJbguLLguKHguYPguJnguYHguJrguJrguKrguK3guJrguJbguLLguKHguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguIvguLnguKHguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4ouC5ieC4reC4meC4geC4peC4seC4muC5g+C4meC4geC4suC4o+C4i+C4ueC4oeC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C5geC4quC4lOC4h+C4peC4tOC4h+C4hOC5jOC5g+C4meC5gOC4oeC4meC4ueC5gOC4nuC4t+C5iOC4reC4i+C4ueC4kuC5hOC4m+C4l+C4teC5iOC4o+C4suC4ouC4peC4sOC5gOC4reC4teC4ouC4lOC4quC4luC4tOC4leC4tOC4guC4reC4h+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4guC4reC4h+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAn4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Liq4LiW4Li04LiV4Li0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ+C5geC4muC4muC4quC4reC4muC4luC4suC4oeC5gOC4nuC4tOC5iOC4oeC5guC4oeC4lOC4ueC4pSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LmB4LiB4LmJ4LmE4LiC4LmC4Lih4LiU4Li54LilJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAn4LiB4Liy4Lij4LiI4Liz4LiB4Lix4LiU4Lig4Liy4Lie4Lij4Lin4Lih4LiC4Lit4LiH4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihICLguILguJnguLLguJTguYDguKXguYfguIEiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAn4LiB4Liy4Lij4Liq4Liz4Lij4Lin4LiI4Liq4LiW4Li04LiV4Li04LmC4Lih4LiU4Li54LilJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICfguYLguKHguJTguLnguKXguIvguLnguKHguYHguJrguJrguKrguK3guJrguJbguLLguKEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICfguIjguLDguYTguKHguYjguKHguLXguIHguLLguKPguKrguYjguIfguYHguJrguJrguKrguK3guJrguJbguLLguKHguJfguLXguYjguK3guLXguYDguKHguKXguJfguLXguYjguJbguLnguIHguIHguLPguKvguJnguJTguITguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJ+C4leC4seC4p+C4muC5iOC4h+C4iuC4teC5ieC4quC4s+C4q+C4o+C4seC4muC5geC4muC4muC4quC4reC4muC4luC4suC4oSwg4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiH4LmA4LiK4LmI4LiZIOC5geC4muC4muC4quC4reC4muC4luC4suC4oSMg4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4Lih4LiC4Lit4LiH4LiJ4Lix4LiZIy4g4LiE4LmI4Liy4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiE4Li34Lit4LmB4Lia4Lia4Liq4Lit4Lia4LiW4Liy4LihIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyBhIGRlc2NyaXB0aW9uIGZvciBTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIG9uIFN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ+C5guC4oeC4lOC4ueC4peC4leC4seC5i+C4p+C4geC4tOC4iOC4geC4o+C4o+C4oeC4l+C4teC5iOC4iOC4sOC4quC5iOC4h+C4reC4teC5gOC4oeC4peC5geC4muC4muC4quC4reC4muC4luC4suC4oeC4guC4reC4h+C4geC4suC4o+C4o+C5ieC4reC4h+C4guC4reC4reC4seC4leC5guC4meC4oeC4seC4leC4tOC5g+C4q+C5ieC4peC4ueC4geC4hOC5ieC4suC5g+C4meC4geC4o+C4k+C4teC4l+C4teC5iOC4leC4seC5i+C4p+C4luC4ueC4geC4m+C4tOC4lCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIGRlbGV0ZSByZXN1bHRzIChpbmNsdWRpbmcgdm90ZSBkYXRhIGFuZCByZXF1ZXN0cykuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgc2VuZGluZyBkZWxheWVkIHN1cnZleSByZXF1ZXN0cy4nfSA9ICfguIHguLLguKPguIHguKPguLDguJXguLjguYnguJnguIHguLLguKPguKrguYjguIfguIHguLLguKPguKPguYnguK3guIfguILguK3guYHguJrguJrguKrguK3guJrguJfguLXguYjguKXguYjguLLguIrguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6dWtfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn0KHRgtCy0L7RgNC40YLQuCDQvdC+0LLQtSDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRyb2R1Y3Rpb24nfSA9ICfQn9GA0LXQtNGB0YLQsNCy0LvQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAn0J/RgNC10LTRgdGC0LDQstC70LXQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIEJvZHknfSA9ICfQotGW0LvQviDRltC90YTQvtGA0LzRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFR5cGVzJ30gPSAn0KLQuNC/0Lgg0LfQsNGP0LLQvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludGVybmFsIERlc2NyaXB0aW9uJ30gPSAn0JLQvdGD0YLRgNGW0YjQvdGW0Lkg0L7Qv9C40YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXIgY29uZGl0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgc3VydmV5IGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeGFtcGxlIHN1cnZleSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlFZGl0CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEdlbmVyYWwgSW5mbyd9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INC30LDQs9Cw0LvRjNC90YMg0ZbQvdGE0L7RgNC80LDRhtGW0Y4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbnMnfSA9ICfQoNC10LTQsNCz0YPQsNGC0Lgg0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ9CS0Lgg0YLRg9GCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBRdWVzdGlvbnMnfSA9ICfQl9Cw0L/QuNGC0LDQvdC90Y8g0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAn0JTQvtC00LDRgtC4INC30LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ9Ci0LjQvyDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIHJlcXVpcmVkJ30gPSAn0J3QtdC+0LHRhdGW0LTQvdCwINCy0ZbQtNC/0L7QstGW0LTRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBxdWVzdGlvbnMgc2F2ZWQgZm9yIHRoaXMgc3VydmV5Lid9ID0gJ9Cd0LXQvNCw0ZQg0LfQsdC10YDQtdC20LXQvdC40YUg0LfQsNC/0LjRgtCw0L3RjCDQtNC70Y8g0YbRjNC+0LPQviDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbid9ID0gJ9CX0LDQv9C40YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgUmVxdWlyZWQnfSA9ICfQndC10L7QsdGF0ZbQtNC90LAg0LLRltC00L/QvtCy0ZbQtNGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICfQodC70ZbQtCDQt9Cw0LrRgNC40YLQuCDRhtC1INCy0ZbQutC90L4g0L/RltGB0LvRjyDQt9Cw0LLQtdGA0YjQtdC90L3RjyDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9zZSB0aGlzIHdpbmRvdyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IFF1ZXN0aW9uJ30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAn0L/QvtCy0LXRgNC90YPRgtC40YHRjCDQtNC+INC30LDQv9C40YLQsNC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb246J30gPSAn0JfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn0JzQvtC20LvQuNCy0ZYg0LLRltC00L/QvtCy0ZbQtNGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICfQlNC+0LTQsNGC0Lgg0LLRltC00L/QvtCy0ZbQtNGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAn0J3QtdC80LDRlCDQt9Cx0LXRgNC10LbQtdC90LjRhSDQstGW0LTQv9C+0LLRltC00LXQuSDQtNC+INGG0YzQvtCz0L4g0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfQptC1INC30LDQv9C40YLQsNC90L3RjyDQvdC1INC80ZbRgdGC0LjRgtGMINCy0LDRgNGW0LDQvdGC0ZbQsiDQstGW0LTQv9C+0LLRltC00ZYsINCx0YPQtNC1INC/0L7QutCw0LfQsNC90LUg0YLQtdC60YHRgtC+0LLQtSDQv9C+0LvQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IEFuc3dlcid9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INCy0ZbQtNC/0L7QstGW0LTRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIGVkaXQgcXVlc3Rpb24nfSA9ICfQv9C+0LLQtdGA0L3Rg9GC0LjRgdGMINC00L4g0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ9CS0ZbQtNC/0L7QstGW0LTRjCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlPdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoZXMgaW4gdGhlIGF0dHJpYnV0ZXMgTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLCBOb3RpZmljYXRpb25TdWJqZWN0IGFuZCBOb3RpZmljYXRpb25Cb2R5LCBvdmVycmlkaW5nIG90aGVyIGF0dHJpYnV0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBDcmVhdGUgVGltZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZXN0cmljdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heC4gc2hvd24gc3VydmV5cyBwZXIgcGFnZSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LAg0LrRltC70YzQutGW0YHRgtGMINC+0L/QuNGC0YPQstCw0L3RjCDQvdCwINGB0YLQvtGA0ZbQvdC60YMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ9CS0ZbQtNC/0YDQsNCy0L3QuNC6INGW0L3RhNC+0YDQvNGD0LLQsNC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfQotC10LzQsCDRltC90YTQvtGA0LzRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ9CX0LzRltC90LXQvdC40LknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5U3RhdHMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIE92ZXJ2aWV3IG9mJ30gPSAn0J7Qs9C70Y/QtCDRgdGC0LDRgtC40YHRgtC40LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ9Ci0LDQsdC70LjRhtGPINC30LDQv9C40YLRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBhbGwgcmVxdWVzdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VuZCBUaW1lJ30gPSAn0KfQsNGBINC90LDQtNGB0LjQu9Cw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ9Cn0LDRgSDQs9C+0LvQvtGB0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfQn9C10YDQtdCz0LvRj9C90YPRgtC4INC00LXRgtCw0LvRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0LvRliDRgdGC0LDRgtC40YHRgtC40LrQuCDQvtC/0LjRgtGD0LLQsNC90L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICfQv9C+0LLQtdGA0L3Rg9GC0LjRgdGMINC00L4g0L/QtdGA0LXQs9C70Y/QtNGDINGB0YLQsNGC0LjRgdGC0LjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ9CG0L3RhNC+0YDQuNCw0YbRltGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICfQndCw0LTRltGB0LvQsNC90ZYg0LfQsNC/0LjRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICfQntGC0YDQuNC80LDQvdGWINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn0JTQtdGC0LDQu9GWINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlcid9ID0gJ9Cn0LjRgdC70L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAn0KHQtdGA0LLRltGB0Lgg0LfQsNGP0LLQutC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFJlc3VsdHMgR3JhcGgnfSA9ICfQk9GA0LDRhNGW0Log0YDQtdC30YPQu9GM0YLQsNGC0ZbQsiDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAn0J3QtdC80LDRlCDRgdGC0LDRgtC40YHRgtC40LrQuCc7CgogICAgIyBUZW1wbGF0ZTogUHVibGljU3VydmV5CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXknfSA9ICfQntC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGVhc2UgYW5zd2VyIHRoZXNlIHF1ZXN0aW9ucyd9ID0gJ9CR0YPQtNGMINC70LDRgdC60LAsINC00LDQudGC0LUg0LLRltC00L/QvtCy0ZbQtNGMINC90LAg0L3QsNGB0YLRg9C/0L3RliDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvdyBteSBhbnN3ZXJzJ30gPSAn0J/QvtC60LDQt9Cw0YLQuCDQvNC+0Zcg0LLRltC00L/QvtCy0ZbQtNGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZXNlIGFyZSB5b3VyIGFuc3dlcnMnfSA9ICfQktCw0L3RliDQstGW0LTQv9C+0LLRltC70ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAn0JfQsNCz0L7Qu9C+0LLQvtC6INC+0L/QuNGC0YPQstCw0L3QvdGPJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUFkZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIE5ldyBTdXJ2ZXknfSA9ICfQlNC+0LTQsNGC0Lgg0L3QvtCy0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJ30gPSAn0JLQuCDQvdC1INC80LDRlNGC0LUg0L/QvtCy0L3QvtCy0LDQttC10L3RjCDQvdCwINGG0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gU3VydmV5SUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQvdCw0LTQsNC90L4gU3VydmV5SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0J30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJ30gPSAn0JLQuCDQvdC1INC80LDRlNGC0LUg0L/QvtCy0L3QvtCy0LDQttC10L3RjCDQvdCwINGG0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0YfQuCDQt9Cw0L/QuNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICfQktC4INC90LUg0LzQsNGU0YLQtSDQv9C+0LLQvdC+0LLQsNC20LXQvdGMINC90LAg0YbQtSDQvtC/0LjRgtGD0LLQsNC90L3Rjywg0LfQsNC/0LjRgtCw0L3QvdGPINGH0Lgg0LLRltC00L/QvtCy0ZbQtNGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IFF1ZXN0aW9ucyd9ID0gJ9Cg0LXQtNCw0LPRg9Cy0LDRgtC4INC30LDQv9C40YLQsNC90L3RjyDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICfQotCw0Lov0J3Rlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWRpbyAoTGlzdCknfSA9ICfQoNGW0LTRltC+ICjRgdC/0LjRgdC+0LopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrYm94IChMaXN0KSd9ID0gJ9Cf0YDQsNC/0L7RgNGG0ZYgKNGB0L/QuNGB0L7QuiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0IFByb21vdGVyIFNjb3JlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIFR5cGUnfSA9ICfQotC40L8g0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAn0JfQsNCy0LXRgNGI0LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICfQndC1INC30LDQstC10YDRiNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBFZGl0J30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LfQsNC/0LjRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAn0KDQtdC00LDQs9GD0LLQsNGC0Lgg0LLRltC00L/QvtCy0ZbQtNGMICc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctINCd0LUg0LLQuNCx0YDQsNC90L4g0YfQtdGA0LPRgyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICfQndC+0LLQuNC5INGB0YLQsNGC0YPRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRGVzY3JpcHRpb24nfSA9ICfQntC/0LjRgSDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ9Cy0ZbQtNC/0L7Qu9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J25vdCBhbnN3ZXJlZCd9ID0gJ9C90LUg0LLRltC00L/QvtCy0ZbQu9C4JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9QdWJsaWNTdXJ2ZXkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoYW5rIHlvdSBmb3IgeW91ciBmZWVkYmFjay4nfSA9ICfQlNGP0LrRg9GU0LzQviDQt9CwINCS0LDRiCDQstGW0LTQs9GD0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIHN1cnZleSBpcyBmaW5pc2hlZC4nfSA9ICfQntC/0LjRgtGD0LLQsNC90L3RjyDQt9Cw0LLQtdGA0YjQtdC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IE1lc3NhZ2UhJ30gPSAn0J/QvtCy0ZbQtNC+0LzQu9C10L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAn0JzQvtC00YPQu9GMINC90LUg0LTQvtC30LLQvtC70LXQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBmdW5jdGlvbmFsaXR5IGlzIG5vdCBlbmFibGVkLCBwbGVhc2UgY29udGFjdCB5b3VyIGFkbWluaXN0cmF0b3IuJ30gPQogICAgICAgICfQptC10Lkg0YTRg9C90LrRhtGW0L7QvdCw0Lsg0L3QtSDQtNC+0LfQstC+0LvQtdC90LjQuSwg0LHRg9C00Ywg0LvQsNGB0LrQsCDQt9Cy0Y/QttGW0YLRjNGB0Y8g0Lcg0LDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YDQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICfQn9C+0LzQuNC70LrQsCDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIHN1cnZleSBrZXkuJ30gPSAn0J3QtSDQstGW0YDQvdC40Lkg0LrQu9GO0Ycg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJ9CS0LrQu9Cw0LTQtdC90LjQuSDQutC70Y7RhyDQvtC/0LjRgtGD0LLQsNC90L3RjyDQvdC1INCy0ZbRgNC90LjQuSwg0LDQsdC+INCS0Lgg0L/QtdGA0LXQudGI0LvQuCDQt9CwINGF0LjQsdC90LjQvCDRh9C4INC/0L7RiNC60L7QtNC20LXQvdC40Lwg0L/QvtGB0LjQu9Cw0L3QvdGP0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFZvdGUnfSA9ICfQk9C+0LvQvtGB0YPQstCw0L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICfQlNCw0L3RliDQs9C+0LvQvtGB0YPQstCw0L3QvdGPINC/0L4g0L7Qv9C40YLRg9Cy0LDQvdC90Y4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ9CS0Lgg0LLQttC1INCy0ZbQtNC/0L7QstGW0LvQuCDQvdCwINCy0YHRliDQt9Cw0L/QuNGC0LDQvdC90Y8g0LIg0L7Qv9C40YLRg9Cy0LDQvdC90ZYnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJ9CS0Lgg0LTRltC50YHQvdC+INGF0L7Rh9C10YLQtSDQstC40LTQsNC70LjRgtC4INGG0LUg0LfQsNC/0LjRgtCw0L3QvdGPPyDQktGB0ZYg0L/QvtCy0Y/Qt9Cw0L3RliDQtNCw0L3RliDQsdGD0LTRg9GC0Ywg0JLQotCg0JDQp9CV0J3Qhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ9CS0Lgg0LTRltC50YHQvdC+INGF0L7Rh9C10YLQtSDQstC40LTQsNC70LjRgtC4INGG0LUg0LfQsNC/0LjRgtCw0L3QvdGPPyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfQnNC+0LTRg9C70Ywg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQt9Cw0L/QuNGC0LDQvdGMINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbCBwYXJhbWV0ZXJzIGZvciB0aGUgU3VydmV5IG9iamVjdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLRgdGWINC/0LDRgNCw0LzQtdGC0YDQuCDQv9C+INC+0L/QuNGC0YPQstCw0L3QvdGOINGUINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LTQvdGW0LIg0L/RltGB0LvRjyDQvdCw0LTRgdC40LvQsNC90L3RjyDQvtC/0LjRgtGD0LLQsNC90L3RjyDQv9C+INGP0LrQuNGFINC90LXQvNCw0ZQg0LLRltC00LPRg9C60YMg0YLQvtC80YMg0YHQsNC80L7QvNGDINC60LvRltGU0L3RgtGDICgwLdC30LDQstC20LTQuCDQvdCw0LTRgdC40LvQsNGC0LgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ9Ci0ZbQu9C+INC70LjRgdGC0LAg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0ZbQvdGE0L7RgNC80YPQstCw0L3QvdGPINC/0L4g0LXQu9C10LrRgtGA0L7QvdC90ZbQuSDQv9C+0YjRgtGWINC60LvRltGU0L3RgtCw0Lwg0L/RgNC+INC90L7QstC1INC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAn0JLRltC00L/RgNCw0LLQvdC40Log0L/QviDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y4g0LTQu9GPINGW0L3RhNC+0YDQvNGD0LLQsNC90L3RjyDQv9C+INC10LvQtdC60YLRgNC+0L3QvdGW0Lkg0L/QvtGI0YLRliDQutC70ZbRlNC90YLQsNC8INC/0YDQviDQvdC+0LLQtSDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHN1YmplY3QgZm9yIHRoZSBub3RpZmljYXRpb24gZW1haWwgdG8gY3VzdG9tZXJzIGFib3V0IG5ldyBzdXJ2ZXkuJ30gPQogICAgICAgICfQotC10LzQsCDQv9C+INC30LDQvNC+0LLRh9GD0LLQsNC90L3RjiDQtNC70Y8g0ZbQvdGE0L7RgNC80YPQstCw0L3QvdGPINC/0L4g0LXQu9C10LrRgtGA0L7QvdC90ZbQuSDQv9C+0YjRgtGWINC60LvRltGU0L3RgtCw0Lwg0L/RgNC+INC90L7QstC1INC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBzdXJ2ZXkgbGlzdC4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQvtC00YPQu9GMINC/0LXRgNC10LPQu9GP0LTRgywg0YnQvtCxINC/0L7QutCw0LfQsNGC0Lgg0LrQvtGA0L7RgtC60LjQuSDQvtCz0LvRj9C0INGB0L/QuNGB0LrRgyDQtyDQvtC/0LjRgtGD0LLQsNC90L3Rj9C80LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGC0LDQutGB0LjQvNCw0LvRjNC90LUg0LfQvdCw0YfQtdC90L3RjyDQutGW0LvRjNC60L7RgdGC0ZYg0L7Qv9C40YLRg9Cy0LDQvdGMLCDRidC+INC80L7QttGD0YLRjCDQsdGD0YLQuCDQvdCw0ZbRgdC70LDQvdGWINC60L7RgNC40YHRgtGD0LLQsNGH0YMg0L/RgNC+0YLRj9Cz0L7QvCAzMCDQtNC90ZbQsiAoMC3QstGB0ZYpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGFtb3VudCBpbiBob3VycyBhIHRpY2tldCBoYXMgdG8gYmUgY2xvc2VkIHRvIHRyaWdnZXIgdGhlIHNlbmRpbmcgb2YgYSBzdXJ2ZXksICggMCBtZWFucyBzZW5kIGltbWVkaWF0ZWx5IGFmdGVyIGNsb3NlICkuIE5vdGU6IGRlbGF5ZWQgc3VydmV5IHNlbmRpbmcgaXMgZG9uZSBieSB0aGUgT1RSUyBEYWVtb24sIHByaW9yIGFjdGl2YXRpb24gb2YgXCdEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1N1cnZleVJlcXVlc3RzU2VuZFwnIHNldHRpbmcuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC30L3QsNGH0LXQvdC90Y8g0LfQsNGC0YDQuNC80LrQuCDQvdCw0LTRgdC40LvQsNC90L3RjyDQvtC/0LjRgtGD0LLQsNC90L3RjyDQv9GW0YHQu9GPINC30LDQutGA0LjRgtGC0Y8g0LfQsNGP0LLQutC4INCyINCz0L7QtNC40L3QsNGFICgwLdC+0LTRgNCw0LfRgyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgY29sdW1ucyBmb3IgdGhlIGRyb3Bkb3duIGxpc3QgZm9yIGJ1aWxkaW5nIHNlbmQgY29uZGl0aW9ucyAoMCA9PiBpbmFjdGl2ZSwgMSA9PiBhY3RpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgaGVpZ2h0IGZvciBSaWNodGV4dCB2aWV3cyBmb3IgU3VydmV5Wm9vbSBlbGVtZW50cy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LLQuNGB0L7RgtGDIFJpY2h0ZXh0IHZpZXdzINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LTQu9GPINC30LHRltC70YzRiNC10L3QuNGFINC10LvQtdC80LXQvdGC0ZbQsiDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBncm91cHMgKHJ3KSB3aGljaCBjYW4gZGVsZXRlIHN1cnZleSBzdGF0cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbWF4aW11bSBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNCw0LrRgS4g0LLQuNGB0L7RgtGDIFJpY2h0ZXh0IHZpZXdzINC00LvRjyDQt9Cx0ZbQu9GM0YjQtdC90LjRhSDQtdC70LXQvNC10L3RgtGW0LIg0L7Qv9C40YLRg9Cy0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0Y/QutGWINC60L7Qu9C+0L3QutC4INC/0L7QutCw0LfRg9Cy0LDRgtC4INCyINC/0LXRgNC10LPQu9GP0LTRliDQvtC/0LjRgtGD0LLQsNC90L3Rjy4g0J3QtSDQstC/0LvQuNCy0LDRlCDQvdCwINGX0YUg0YDQvtC30YLQsNGI0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RldGVybWluZXMgaWYgdGhlIHN0YXRpc3RpY3MgbW9kdWxlIG1heSBnZW5lcmF0ZSBzdXJ2ZXkgbGlzdHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHV0Y2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgZ2VuZXJhbCBpbmZvcm1hdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgU2hvd1ZvdGVEYXRhIHNjcmVlbiBpbiB0aGUgcHVibGljIGludGVyZmFjZSB0byBzaG93IGRhdGEgb2YgYSBzcGVjaWZpYyBzdXJ2ZXkgcmVzdWx0IHdoZW4gdGhlIGN1c3RvbWVyIHRyaWVzIHRvIGFuc3dlciBhIHN1cnZleSB0aGUgc2Vjb25kIHRpbWUuJ30gPQogICAgICAgICfQktCy0ZbQvNC60L3Rg9GC0Lgv0LLQuNC80LrQvdGD0YLQuCDQstGW0LTQvtCx0YDQsNC20LXQvdC90Y8g0LTQsNGC0Lgg0LPQvtC70L7RgdGD0LLQsNC90L3RjyDQsiDQv9GD0LHQu9GW0YfQvdC+0LzRgyDRltC90YLQtdGA0YTQtdC50YHRlijQv9C+0LrQsNC30YPRlNGC0YzRgdGPINC60LvRltGU0L3RgtGDINC/0YDQuCDQv9C+0LLRgtC+0YDQvdGW0Lkg0YHQv9GA0L7QsdGWINC/0YDQvtC50YLQuCDQvtC/0LjRgtGD0LLQsNC90L3RjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIHNlbmQgY29uZGl0aW9uIGNoZWNrIGZvciB0aGUgc2VydmljZS4nfSA9ICfQktCy0ZbQvNC60L3Rg9GC0Lgv0LLQuNC80LrQvdGD0YLQuCDQv9C10YDQtdCy0ZbRgNC60YMg0YPQvNC+0LLQuCDQstGW0LTQv9GA0LDQstC60Lgg0LTQu9GPINGB0LXRgNCy0ZbRgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAn0JLQstGW0LzQutC90YPRgtC4L9Cy0LjQvNC60L3Rg9GC0Lgg0L/QtdGA0LXQstGW0YDQutGDINGD0LzQvtCy0Lgg0LLRltC00L/RgNCw0LLQutC4INC00LvRjyDRgtC40L/RgyDQt9Cw0Y/QstC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IGFkZCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQg0LzQvtC00YPQu9GMINGA0LXRlNGB0YLRgNCw0YbRltGXLCDRidC+INC00L7QtNCw0ZQg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0LIg0ZbQvdGC0LXRgNGE0LXQudGBINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRnJvbnRlbmQg0LzQvtC00YPQu9GMINGA0LXRlNGB0YLRgNCw0YbRltGXLCDRidC+INGA0LXQtNCw0LPRg9GUINC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGW0L3RgtC10YDRhNC10LnRgSDQsNCz0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3Igc3VydmV5IHN0YXRzIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCDQvNC+0LTRg9C70Ywg0YDQtdGU0YHRgtGA0LDRhtGW0ZcsINGJ0L4g0LTQvtC00LDRlCDRgdGC0LDRgtC40YHRgtC40LrRgyDQvtC/0LjRgtGD0LLQsNC90L3RjyDQsiDRltC90YLQtdGA0YTQtdC50YEg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdGcm9udGVuZCDQvNC+0LTRg9C70Ywg0YDQtdGU0YHRgtGA0LDRhtGW0ZcsINGJ0L4g0LLRltC00LrRgNC40LLQsNGUINC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGW0L3RgtC10YDRhNC10LnRgSDQsNCz0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJ0Zyb250ZW5kINC80L7QtNGD0LvRjCDRgNC10ZTRgdGC0YDQsNGG0ZbRlywg0YnQviDQtNC+0LTQsNGUINCf0YPQsdC70ZbRh9C90LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y8g0LIg0L/Rg9Cx0LvRltGH0L3QuNC5INGW0L3RgtC10YDRhNC10LnRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAn0K/QutGJ0L4g0YDQtdCz0YPQu9GP0YDQvdC40Lkg0LLQuNGA0LDQtyDQstC40LfQvdCw0YfQsNGULCDQttC+0LTQvdC1INC+0L/QuNGC0YPQstCw0L3QvdGPINC60LvRltGU0L3RgtGDINC90LUg0LHRg9C00LUg0LLRltC00L/RgNCw0LLQu9C10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBzdXJ2ZXlzIGFyZSBzaG93bikgb2YgdGhlIHNtYWxsIHN1cnZleSBvdmVydmlldy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDRgdGC0L7RgNGW0L3QutC4ICjQsiDRj9C60LjRhSDQv9C+0LrQsNC30YPRjtGC0YzRgdGPINC+0L/QuNGC0YPQstCw0L3QvdGPKSDQsiDQutC+0YDQvtGC0LrQvtC80YMg0L/RgNC10LTRgdGC0LDQstC70LXQvdC90ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIFN1cnZleS4nfSA9ICfQn9GD0LHQu9GW0YfQvdC1INC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQu9GW0L3QuiDQsiDQvNC10L3RjiDQtNC70Y8g0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQvtC/0LjRgtGD0LLQsNC90L3RjyDQsiDRgNC+0LfRiNC40YDQtdC90L7QvNGDINC/0LXRgNC10LPQu9GP0LTRliDQsNCz0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQu9GW0L3QuiDQsiDQvNC10L3RjiDQtNC70Y8g0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQt9Cw0L/QuNGC0LDQvdGMINC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGA0L7Qt9GI0LjRgNC10L3QvtC80YMg0L/QtdGA0LXQs9C70Y/QtNGWINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgc3VydmV5IHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0LvRltC90Log0LIg0LzQtdC90Y4g0LTQu9GPINC/0L7QstC10YDQvdC10L3QvdGPINCyINC+0L/QuNGC0YPQstCw0L3QvdGPINCyINGA0L7Qt9GI0LjRgNC10L3QvtC80YMg0L/QtdGA0LXQs9C70Y/QtNGWINCw0LPQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC70ZbQvdC6INCyINC80LXQvdGOINC00LvRjyDRgdGC0LDRgtC40YHRgtC40LrQuCDQvtC/0LjRgtGD0LLQsNC90L3RjyDQsiDRgNC+0LfRiNC40YDQtdC90L7QvNGDINC/0LXRgNC10LPQu9GP0LTRliDQsNCz0LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgRGV0YWlscyd9ID0gJ9CU0LXRgtCw0LvRliDRgdGC0LDRgtC40YHRgtC40LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQWRkIE1vZHVsZS4nfSA9ICfQlNC+0LTQsNGC0Lgg0LzQvtC00YPQu9GMINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFZGl0IE1vZHVsZS4nfSA9ICfQn9C+0LTRg9C70Ywg0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIiBMaW1pdCd9ID0gJ9Cb0ZbQvNGW0YIg0L/QtdGA0LXQs9C70Y/QtNGDINC+0L/QuNGC0YPQstCw0L3RjCDQmtC+0YDQvtGC0LrQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgU3RhdHMgTW9kdWxlLid9ID0gJ9Ch0YLQsNGC0LjRgdGC0LjQutCwINC80L7QtNGD0LvRjiDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgWm9vbSBNb2R1bGUuJ30gPSAn0JfQsdGW0LvRjNGI0LjRgtC4INC80L7QtNGD0LvRjCDQvtC/0LjRgtGD0LLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgbGltaXQgcGVyIHBhZ2UgZm9yIFN1cnZleSBPdmVydmlldyAiU21hbGwiLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXlzIHdpbGwgbm90IGJlIHNlbnQgdG8gdGhlIGNvbmZpZ3VyZWQgZW1haWwgYWRkcmVzc2VzLid9ID0gJ9Ce0L/QuNGC0YPQstCw0L3QvdGPINC90LUg0LHRg9C00YPRgtGMINC90LDQtNGB0LjQu9Cw0YLQuNGB0Ywg0L3QsCDQstC60LDQt9Cw0L3RliBlbWFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBzdXJ2ZXksIGUuZy4gU3VydmV5IywgTXlTdXJ2ZXkjLiBUaGUgZGVmYXVsdCBpcyBTdXJ2ZXkjLid9ID0KICAgICAgICAn0IbQtNC10YLQuNGE0ZbQutCw0YLQvtGAINC+0L/QuNGC0YPQstCw0L3QvdGPLiDQn9C+INC30LDQvNC+0LLRh9GD0LLQsNC90L3RjiDQntC/0LjRgtGD0LLQsNC90L3RjyMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyBhIGRlc2NyaXB0aW9uIGZvciBTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIG9uIFN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ9Cf0L7QtNGW0Y8g0LfQsNGP0LLQutC4LCDQtNC70Y8g0LDQstGC0L7QvNCw0YLQuNGH0L3QvtGXINCy0ZbQtNC/0YDQsNCy0LrQuCDQvtC/0LjRgtGD0LLQsNC90L3RjyDQutC70ZbRlNC90YLRgyDRj9C60YnQviDQt9Cw0Y/QstC60LAg0LfQsNC60YDQuNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAn0KLRgNC40LPQtdGAINCy0ZbQtNC/0YDQsNCy0LrQuCDQstGW0LTQutC70LDQtNC10L3QuNGFINC30LDQv9C40YLRltCyINC+0L/QuNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6dmlfVk5fU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAnVOG6oW8ga2jhuqNvIHPDoXQgbeG7m2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50cm9kdWN0aW9uJ30gPSAnR2nhu5tpIHRoaeG7h3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEludHJvZHVjdGlvbid9ID0gJ0dp4bubaSB0aGnhu4d1IGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAnTuG7mWkgZHVuZyB0aMO0bmcgYsOhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgVHlwZXMnfSA9ICdDw6FjIGxv4bqhaSB2w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW50ZXJuYWwgRGVzY3JpcHRpb24nfSA9ICdNw7QgdOG6oyBu4buZaSBi4buZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVyIGNvbmRpdGlvbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGNob29zZSBhIEN1c3RvbWVyIHByb3BlcnR5IHRvIGFkZCBhIGNvbmRpdGlvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHN1cnZleSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhhbXBsZSBzdXJ2ZXknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5RWRpdAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBHZW5lcmFsIEluZm8nfSA9ICdT4butYSB0aMO0bmcgdGluIGNodW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAnU+G7rWEgY8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgYXJlIGhlcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFF1ZXN0aW9ucyd9ID0gJ0PDonUgaOG7j2kga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIFF1ZXN0aW9uJ30gPSAnVGjDqm0gY8OidSBo4buPaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ05o4bqtcCBjw6J1IGjhu49pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciByZXF1aXJlZCd9ID0gJ1nDqnUgY+G6p3UgcGjhuqNpIHRy4bqjIGzhu51pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHF1ZXN0aW9ucyBzYXZlZCBmb3IgdGhpcyBzdXJ2ZXkuJ30gPSAnS2jDtG5nIGPDsyBjw6J1IGjhu49pIG7DoG8gxJHGsOG7o2MgbMawdSBjaG8ga2jhuqNvIHPDoXQgbsOgeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICdDw6J1IGjhu49pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBSZXF1aXJlZCd9ID0gJ1nDqnUgY+G6p3UgcGjhuqNpIHRy4bqjIGzhu51pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICdLaGkga+G6v3QgdGjDumMgdmnhu4djIHPhu61hIGPDonUgaOG7j2kga2jhuqNvIHPDoXQsIGNo4buJIGPhuqduIMSRw7NuZyBtw6BuIGjDrG5oIG7DoHkgbOG6oWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb3NlIHRoaXMgd2luZG93J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb24nfSA9ICdT4butYSBjw6J1IGjhu49pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gcXVlc3Rpb25zJ30gPSAncXVheSBs4bqhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICdDw6J1IGjhu49pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3NzaWJsZSBBbnN3ZXJzIEZvcid9ID0gJ8SQw6FwIMOhbiBjw7MgdGjhu4MgY2hvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBBbnN3ZXInfSA9ICdUaMOqbSDEkcOhcCDDoW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4nfSA9ICdLaMO0bmcgY8OzIMSRw6FwIMOhbiBuw6BvIMSRxrDhu6NjIGzGsHUgY2hvIGPDonUgaOG7j2kgbsOgeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBkb2VzblwndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4nfSA9CiAgICAgICAgJ0PDonUgaOG7j2kgbsOgeSBraMO0bmcgY8OzIMSRw6FwIMOhbiwgbeG7mXQga2h1bmcgc2/huqFuIHRo4bqjbyBz4bq9IMSRxrDhu6NjIGhp4buDbiB0aOG7iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICdT4butYSDEkcOhcCDDoW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAncXVheSB24buBIHPhu61hIGPDonUgaOG7j2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyOid9ID0gJ8SQw6FwIMOhbjonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICdT4buRIGLDoGkga2jhuqNvIHPDoXQgdOG7kWkgxJFhIHRyw6puIG3hu5l0IHRyYW5nJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICdOZ8aw4budaSBn4butaSB0aMO0bmcgYsOhbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ0No4bunIMSR4buBIHRow7RuZyBiw6FvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZWQgQnknfSA9ICdUaGF5IMSR4buVaSBi4bufaSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICdUaOG7kW5nIGvDqiB04buVbmcgcXXDoXQgY+G7p2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICdC4bqjbmcgecOqdSBj4bqndSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ1Ro4budaSBnaWFuIGfhu61pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvdGUgVGltZSd9ID0gJ1Ro4budaSBnaWFuIGLDrG5oIGNo4buNbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhpcyByZXF1ZXN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlZSBEZXRhaWxzJ30gPSAnWGVtIGNoaSB0aeG6v3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICdDaGkgdGnhur90IHRo4buRbmcga8OqIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gc3RhdHMgb3ZlcnZpZXcnfSA9ICdxdWF5IGzhuqFpIHRo4buRbmcga8OqIHThu5VuZyBxdcOhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICdUaMO0bmcgdGluIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbnQgcmVxdWVzdHMnfSA9ICdH4butaSB5w6p1IGPhuqd1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICdOaOG6rW4ga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICdDaGkgdGnhur90IGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlcid9ID0gJ1Phu5EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IFNlcnZpY2VzJ30gPSAnROG7i2NoIHbhu6UgcGhp4bq/dSB5w6p1IGPhuqd1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBSZXN1bHRzIEdyYXBoJ30gPSAnxJDhu5MgdGjDrCBr4bq/dCBxdeG6oyBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBzdGF0IHJlc3VsdHMuJ30gPSAnS2jDtG5nIGPDsyBr4bq/dCBx4bunYSB0aOG7kW5nIGvDqi4nOwoKICAgICMgVGVtcGxhdGU6IFB1YmxpY1N1cnZleQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5J30gPSAnS2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMnfSA9ICdYaW4gdnVpIGzDsm5nIHRy4bqjIGzhu51pIG5o4buvbmcgY8OidSBo4buPaSBuw6B5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3cgbXkgYW5zd2Vycyd9ID0gJ0NobyB0w7RpIHhlbSDEkcOhcCDDoW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlc2UgYXJlIHlvdXIgYW5zd2Vycyd9ID0gJ8SQw6J5IGzDoCDEkcOhcCDDoW4gY+G7p2EgYuG6oW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFRpdGxlJ30gPSAnVGnDqnUgxJHhu4Ega2jhuqNvIHPDoXQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5QWRkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgTmV3IFN1cnZleSd9ID0gJ1Row6ptIGto4bqjbyBzw6F0IG3hu5tpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5ISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQnfSA9ICdT4butYSBi4bqjbiBraOG6o28gc8OhdCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IEVkaXQgUXVlc3Rpb25zJ30gPSAnU+G7rWEgY8OidSBo4buPaSBraOG6o28gc8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZZXMvTm8nfSA9ICdDw7MvS2jDtG5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhZGlvIChMaXN0KSd9ID0gJ0jhu5lwIGNo4buNbiAoZGFuaCBzw6FjaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAnSOG7mXAga2nhu4NtIChkYW5oIHPDoWNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXQgUHJvbW90ZXIgU2NvcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gVHlwZSd9ID0gJ0xv4bqhaSBjw6J1IGjhu49pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAnSG/DoG4gdOG6pXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jb21wbGV0ZSd9ID0gJ0NoxrBhIGhvw6BuIHThuqV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1F1ZXN0aW9uIEVkaXQnfSA9ICdT4butYSBjw6J1IGjhu49pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlciBFZGl0J30gPSAnU+G7rWEgxJHDoXAgw6FuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudFN1cnZleVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57Jy0gTm8gcXVldWUgc2VsZWN0ZWQgLSd9ID0gJy0gQ2jGsGEgY2jhu41uIGjDoG5nIMSR4bujaSAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICdUcuG6oW5nIHRow6FpIG3hu5tpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ03DtCB04bqjIGto4bqjbyBzw6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2Fuc3dlcmVkJ30gPSAnxJHDoyB0cuG6oyBs4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICdjaMawYSB0cuG6oyBs4budaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvUHVibGljU3VydmV5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suJ30gPSAnQ+G6o20gxqFuIGLhuqFuIMSRw6MgcGjhuqNuIGjhu5NpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ0to4bqjbyBzw6F0IMSRw6Mga+G6v3QgdGjDumMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBNZXNzYWdlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgbm90IGVuYWJsZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZnVuY3Rpb25hbGl0eSBpcyBub3QgZW5hYmxlZCwgcGxlYXNlIGNvbnRhY3QgeW91ciBhZG1pbmlzdHJhdG9yLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBFcnJvciEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBzdXJ2ZXkga2V5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5zZXJ0ZWQgc3VydmV5IGtleSBpcyBpbnZhbGlkLCBpZiB5b3UgZm9sbG93ZWQgYSBsaW5rIG1heWJlIHRoaXMgaXMgb2Jzb2xldGUgb3IgYnJva2VuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBWb3RlIERhdGEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgYWxyZWFkeSBhbnN3ZXJlZCB0aGUgc3VydmV5Lid9ID0gJ0LhuqFuIMSRw6MgdGhhbSBnaWEgdHLhuqMgbOG7nWkga2jhuqNvIHPDoXQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL1N0YXRzL0R5bmFtaWMvU3VydmV5TGlzdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IExpc3QnfSA9ICcnOwoKICAgICMgSlMgRmlsZTogU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJ30gPQogICAgICAgICdC4bqhbiBjw7MgdGjhuq10IHPhu7EgbXXhu5FuIHhvw6EgY8OidSBo4buPaSBuw6B5PyBU4bqkVCBD4bqiIGPDoWMgZOG7ryBsaeG7h3UgbGnDqm4gcXVhbiBz4bq9IGLhu4sgTeG6pFQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/J30gPSAnQuG6oW4gY8OzIHRo4bqtdCBz4buxIG114buRbiB4b8OhIMSRw6FwIMOhbj8nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIFN1cnZleSBNb2R1bGUuJ30gPSAnTeG7mXQgbcO0LcSRdW4ga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJ03hu5l0IG3DtC3EkXVuIMSR4buDIHPhu61hIGPDonUgaOG7j2kga2jhuqNvIHPDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsIHBhcmFtZXRlcnMgZm9yIHRoZSBTdXJ2ZXkgb2JqZWN0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdU4bqldCBj4bqjIGPDoWMgdGhhbSBz4buRIGNobyDEkeG7kWkgdMaw4bujbmcga2jhuqNvIHPDoXQgdHJvbmcgZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW1vdW50IG9mIGRheXMgYWZ0ZXIgc2VuZGluZyBhIHN1cnZleSBtYWlsIGluIHdoaWNoIG5vIG5ldyBzdXJ2ZXkgcmVxdWVzdHMgYXJlIHNlbnQgdG8gdGhlIHNhbWUgY3VzdG9tZXIuIFNlbGVjdGluZyAwIHdpbGwgYWx3YXlzIHNlbmQgdGhlIHN1cnZleSBtYWlsLid9ID0KICAgICAgICAnU+G7kSBuZ8OgeSBzYXUga2hpIGfhu61pIGVtYWlsIGto4bqjbyBzw6F0IG3DoCB0cm9uZyBsw7pjIMSRw7Mgc+G6vSBraMO0bmcgY8OzIHnDqnUgY+G6p3Uga2jhuqNvIHPDoXQgbsOgbyDEkcaw4bujYyBn4butaSDEkeG6v24gY8O5bmcga2jDoWNoIGjDoG5nIMSRw7MuIE5o4bqtcCAwIHPhur0gbHXDtG4gZ+G7rWkgZW1haWwga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgYm9keSBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ07hu5lpIGR1bmcgbmfhuqdtIMSR4buLbmggY2hvIGVtYWlsIHRow7RuZyBiw6FvIHThu5tpIGtow6FjaCBow6BuZyB24buBIGto4bqjbyBzw6F0IG3hu5tpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IHNlbmRlciBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJ05nxrDhu51pIGfhu61pIG5n4bqnbSDEkeG7i25oIGNobyBlbWFpbCB0aMO0bmcgYsOhbyB04bubaSBraMOhY2ggaMOgbmcgduG7gSBraOG6o28gc8OhdCBt4bubaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBzdWJqZWN0IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnQ2jhu6cgxJHhu4EgbmfhuqdtIMSR4buLbmggY2hvIGVtYWlsIHRow7RuZyBiw6FvIHThu5tpIGtow6FjaCBow6BuZyB24buBIGto4bqjbyBzw6F0IG3hu5tpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICfEkOG7i25oIG5naMSpYSBt4buZdCBtw7QtxJF1biB04buVbmcgcXXDoXQgxJHhu4MgaGnhu4NuIHRo4buLIG3hu5l0IGRhbmggc8OhY2gga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgZ3JvdXBzIHdoaWNoIGhhdmUgYSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLiBBcnJheSBpcyBlbXB0eSBieSBkZWZhdWx0IGFuZCBhZ2VudHMgZnJvbSBhbGwgZ3JvdXBzIGNhbiBjaGFuZ2Ugc3VydmV5IHN0YXR1cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIG9ubHkgc2VuZCB0byByZWFsIGN1c3RvbWVycy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIG1heGltdW0gYW1vdW50IG9mIHN1cnZleXMgdGhhdCBnZXQgc2VudCB0byBhIGN1c3RvbWVyIHBlciAzMCBkYXlzLiAoIDAgbWVhbnMgbm8gbWF4aW11bSwgYWxsIHN1cnZleSByZXF1ZXN0cyB3aWxsIGJlIHNlbnQpLid9ID0KICAgICAgICAnxJDhu4tuaCBuZ2jEqWEgc+G7kSBraOG6o28gc8OhdCB04buRaSDEkWEgbcOgIMSRxrDhu6NjIGfhu61pIMSR4bq/biBraMOhY2ggaMOgbmcgbeG7l2kgdGjDoW5nLiAoMCBuZ2jEqWEgbMOgIGtow7RuZyBnaeG7m2kgaOG6oW4sIHThuqV0IGPhuqMgecOqdSBj4bqndSBraOG6o28gc8OhdCBz4bq9IMSRxrDhu6NjIGfhu61pKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnxJDhu4tuaCBuZ2jEqWEgY2hp4buBdSBjYW8gbmfhuqdtIMSR4buLbmggY+G7p2Ega2h1bmcgUmljaHRleHQgY2hvIMSR4buRaSB0xrDhu6NuZyB4ZW0ga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ8SQ4buLbmggbmdoxKlhIHPhu5EgY+G7mXQgaGnhu4NuIHRo4buLIHRyb25nIG3DoG4gaMOsbmggdOG7lW5nIHF1w6F0LiBUdeG7syBjaOG7jW4gbsOgeSBraMO0bmcg4bqjbmggaMaw4bufbmcgxJHhur9uIHbhu4sgdHLDrSBj4bunYSBj4buZdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGV0ZXJtaW5lcyBpZiB0aGUgc3RhdGlzdGljcyBtb2R1bGUgbWF5IGdlbmVyYXRlIHN1cnZleSBsaXN0cy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXRjaCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBnZW5lcmFsIGluZm9ybWF0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFZGl0IHN1cnZleSBxdWVzdGlvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBTaG93Vm90ZURhdGEgc2NyZWVuIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHRvIHNob3cgZGF0YSBvZiBhIHNwZWNpZmljIHN1cnZleSByZXN1bHQgd2hlbiB0aGUgY3VzdG9tZXIgdHJpZXMgdG8gYW5zd2VyIGEgc3VydmV5IHRoZSBzZWNvbmQgdGltZS4nfSA9CiAgICAgICAgJ0vDrWNoIGhv4bqhdCBob+G6t2MgZ2nhuqNpIGhv4bqhdCBtw6BuIGjDrG5oIFNob3dWb3RlRGF0YSB0cm9uZyBnaWFvIGRp4buHbiBjw7RuZyBj4buZbmcgxJHhu4MgaGnhu4NuIHRo4buLIGThu68gbGnhu4d1IGPhu6dhIG3hu5l0IGvhur90IHF14bqjIGto4bqjbyBzw6F0IGtoaSBraMOhY2ggaMOgbmcgY+G7kSB0aOG7rSB0cuG6oyBs4budaSBt4buZdCBi4bqjbiBraOG6o28gc8OhdCBoYWkgbOG6p24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnS8OtY2ggaG/huqF0IGhv4bq3YyBnaeG6o2kgaG/huqF0IGfhu61pIGtp4buDbSB0cmEgxJFp4buBdSBraeG7h24gY2hvIGThu4tjaCB24bulLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGUgb3IgZGlzYWJsZSB0aGUgc2VuZCBjb25kaXRpb24gY2hlY2sgZm9yIHRoZSB0aWNrZXQgdHlwZS4nfSA9CiAgICAgICAgJ0vDrWNoIGhv4bqhdCBob+G6t2MgZ2nhuqNpIGhv4bqhdCBn4butaSBraeG7g20gdHJhIMSRaeG7gXUga2nhu4duIGNobyBsb+G6oWkgcGhp4bq/dSB5w6p1IGPhuqd1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgYWRkIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfEkMSDbmcga8O9IG3DtC3EkXVuIHRow6ptIGto4bqjbyBzw6F0IHRyb25nIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBlZGl0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfEkMSDbmcga8O9IG3DtC3EkXVuIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxJDEg25nIGvDvSBtw7QtxJF1biB0aOG7kW5nIGvDqiBraOG6o28gc8OhdCB0cm9uZyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgem9vbSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxJDEg25nIGvDvSBtw7QtxJF1biB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCB0cm9uZyBnaWFvIGRp4buHbiDEkWnhu4F1IGjDoG5oIHZpw6puLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgUHVibGljU3VydmV5IG9iamVjdCBpbiB0aGUgcHVibGljIFN1cnZleSBhcmVhLid9ID0KICAgICAgICAnxJDEg25nIGvDvSBtw7QtxJF1biBjaG8gxJHhu5FpIHTGsOG7o25nIGto4bqjbyBzw6F0IGPDtG5nIGPhu5luZyB0cm9uZyBnaWFvIGRp4buHbiBraOG6o28gc8OhdCBjw7RuZyBj4buZbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lmIHRoaXMgcmVnZXggbWF0Y2hlcywgbm8gY3VzdG9tZXIgc3VydmV5IHdpbGwgYmUgc2VudC4nfSA9ICdO4bq/dSDEkWnhu4F1IGtp4buHbiB0w6xtIHBow7kgaOG7o3AsIGtow7RuZyBjw7Mga2jhuqNvIHPDoXQga2jDoWNoIGjDoG5nIG7DoG8gxJHGsOG7o2MgZ+G7rWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnVGhhbSBz4buRIGNobyB0cmFuZyAobcOgIGhp4buDbiB0aOG7iyBraOG6o28gc8OhdCkgY+G7p2EgZGFuaCBzw6FjaCBraOG6o28gc8OhdCB04buVbmcgcXXDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAnS2jhuqNvIHPDoXQgY8O0bmcgY+G7mW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXN1bHRzIG9sZGVyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgYW1vdW50IG9mIGRheXMgd2lsbCBiZSBkZWxldGVkLiBOb3RlOiBkZWxldGUgcmVzdWx0cyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ1Rhc2sjIyNTdXJ2ZXlSZXF1ZXN0c0RlbGV0ZVwnIHNldHRpbmcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBzdXJ2ZXkgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IHN1cnZleSBxdWVzdGlvbnMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBjw6J1IGjhu49pIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4MgcXVheSBs4bqhaSB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gdGhlIHN1cnZleSBzdGF0aXN0aWNzIGRldGFpbHMgaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyB4ZW0gdGjhu5FuZyBrw6ogY2hpIHRp4bq/dCBj4bunYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRzIERldGFpbHMnfSA9ICdUaOG7kW5nIGvDqiBjaGkgdGnhur90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ03DtCDEkXVuIHRow6ptIEto4bqjbyBzw6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAnTcO0LcSRdW4gc+G7rWEgS2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnR2nhu5tpIGjhuqFuIGRhbmggc8OhY2gga2jhuqNvIHPDoXQgdOG7lW5nIHF1w6F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnTcO0LcSRdW4gdGjhu5FuZyBrw6oga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNw7QtxJF1biB4ZW0ga2jhuqNvIHPDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBsaW1pdCBwZXIgcGFnZSBmb3IgU3VydmV5IE92ZXJ2aWV3ICJTbWFsbCIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleXMgd2lsbCBub3QgYmUgc2VudCB0byB0aGUgY29uZmlndXJlZCBlbWFpbCBhZGRyZXNzZXMuJ30gPSAnS2jhuqNvIHPDoXQgc+G6vSBraMO0bmcgxJHGsOG7o2MgZ+G7rWkgxJHhur9uIMSR4buLYSBjaOG7iSBlbWFpbCDEkcOjIHRoaeG6v3QgbOG6rXAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIHN1cnZleSwgZS5nLiBTdXJ2ZXkjLCBNeVN1cnZleSMuIFRoZSBkZWZhdWx0IGlzIFN1cnZleSMuJ30gPQogICAgICAgICfEkOG7i25oIGRhbmggY2hvIGto4bqjbyBzw6F0LCB2w60gZOG7pTogS2jhuqNvIHPDoXQjLCBLaOG6o28gc8OhdCBj4bunYSB0w7RpIy4gTmfhuqdtIMSR4buLbmggbMOgIEto4bqjbyBzw6F0Iy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpcyBpcyBhIGRlc2NyaXB0aW9uIGZvciBTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duIG9uIFN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaWNrZXQgZXZlbnQgbW9kdWxlIHRvIHNlbmQgYXV0b21hdGljYWxseSBzdXJ2ZXkgZW1haWwgcmVxdWVzdHMgdG8gY3VzdG9tZXJzIGlmIGEgdGlja2V0IGlzIGNsb3NlZC4nfSA9CiAgICAgICAgJ03DtC3EkXVuIGLhuq90IHPhu7Ega2nhu4duIGPhu6dhIHBoaeG6v3UgecOqdSBj4bqndSDEkeG7gyBn4butaSBlbWFpbCB5w6p1IGPhuqd1IHThu7EgxJHhu5luZyDEkeG6v24ga2jDoWNoIGjDoG5nIG7hur91IHBoaeG6v3UgecOqdSBj4bqndSDEkcaw4bujYyDEkcOzbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJ0Lhuqt5IGfhu61pIHnDqnUgY+G6p3Uga2jhuqNvIHPDoXQgYuG7iyB0cuG7hS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBpbnRvIHN0YXRpc3RpY3MgZGV0YWlscy4nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPycsCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgKTsKCn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6emhfVFdfU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn5Ym15bu65paw55qE6Kq/5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ+S7i+e0uSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAn6Kq/5p+l5LuL57S5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAn6YCa55+l5q2j5paHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ+WGhemDqOaPj+i/sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn57eo6Lyv5LiA6Iis5L+h5oGvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAn57eo6Lyv5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAn6Kq/5p+l5ZWP6aGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ+a3u+WKoOWVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ+WVj+mhjOmhnuWeiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICfpnIDopoHlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICfpgJnlgIvoqr/mn6XmsqHmnInkv53lrZjnmoTllY/poYzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICfllY/poYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAn5b+F6aCI5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ+e3qOi8r+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ+i/lOWbnuWVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICfllY/poYzvvJonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG9zc2libGUgQW5zd2VycyBGb3InfSA9ICflj6/pgbjnmoTlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkIEFuc3dlcid9ID0gJ+a3u+WKoOWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhbnN3ZXJzIHNhdmVkIGZvciB0aGlzIHF1ZXN0aW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGRvZXNuXCd0IGhhdmUgc2V2ZXJhbCBhbnN3ZXJzLCBhIHRleHRhcmVhIHdpbGwgYmUgZGlzcGxheWVkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgQW5zd2VyJ30gPSAn57eo6Lyv5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dvIGJhY2sgdG8gZWRpdCBxdWVzdGlvbid9ID0gJ+i/lOWbnuWIsOe3qOi8r+WVj+mhjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXI6J30gPSAn562U77yaJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3TmF2QmFyCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgb3ZlcnZpZXcgb3B0aW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2hlcyBpbiB0aGUgYXR0cmlidXRlcyBOdW1iZXIsIFRpdGxlLCBJbnRyb2R1Y3Rpb24sIERlc2NyaXB0aW9uLCBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QgYW5kIE5vdGlmaWNhdGlvbkJvZHksIG92ZXJyaWRpbmcgb3RoZXIgYXR0cmlidXRlcyB3aXRoIHRoZSBzYW1lIG5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IENyZWF0ZSBUaW1lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlc3RyaWN0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09ubHkgc3VydmV5cyBjcmVhdGVkIGJldHdlZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4LiBzaG93biBzdXJ2ZXlzIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBTZW5kZXInfSA9ICfpgJrnn6XnmbzpgIHogIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFN1YmplY3QnfSA9ICfpgJrnn6XkuLvpoYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hhbmdlZCBCeSd9ID0gJ+S/ruaUueS6uic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlTdGF0cwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdHMgT3ZlcnZpZXcgb2YnfSA9ICfntbHoqIjmpoLms4EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWVzdHMgVGFibGUnfSA9ICfoq4vmsYLooagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IGFsbCByZXF1ZXN0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW5kIFRpbWUnfSA9ICfnmbzpgIHmmYLplpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm90ZSBUaW1lJ30gPSAn5oqV56Wo5pmC6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIHJlcXVlc3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VlIERldGFpbHMnfSA9ICfmn6XnnIvoqbPmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIHN0YXRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0IERldGFpbHMnfSA9ICfoqr/mn6XntbHoqIjoqbPmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyd9ID0gJ+i/lOWbnue1seioiOamguazgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQcmV2aW91cyB2b3RlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05leHQgdm90ZSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW5mb3JtYXRpb24nfSA9ICfoqr/mn6Xkv6Hmga8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VudCByZXF1ZXN0cyd9ID0gJ+W3sueZvOmAgeeahOiri+axgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWNlaXZlZCBzdXJ2ZXlzJ30gPSAn5bey5o6l5pS255qE6Kq/5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXRhaWxzJ30gPSAn6Kq/5p+l6Kmz5oOFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+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/lm57nrZQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50U3VydmV5Wm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnLSBObyBxdWV1ZSBzZWxlY3RlZCAtJ30gPSAnLSDmspLmnInpgbjlj5bkvYfliJcgLSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgU3RhdHVzJ30gPSAn5paw54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBEZXNjcmlwdGlvbid9ID0gJ+iqv+afpeaPj+i/sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydhbnN3ZXJlZCd9ID0gJ+W3suWbnuetlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydub3QgYW5zd2VyZWQnfSA9ICfmnKrlm57nrZQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL1B1YmxpY1N1cnZleS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhhbmsgeW91IGZvciB5b3VyIGZlZWRiYWNrLid9ID0gJ+aEn+isneS9oOeahOWPjemli+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgc3VydmV5IGlzIGZpbmlzaGVkLid9ID0gJ+iqv+afpee1kOadn+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTWVzc2FnZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIG5vdCBlbmFibGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGZ1bmN0aW9uYWxpdHkgaXMgbm90IGVuYWJsZWQsIHBsZWFzZSBjb250YWN0IHlvdXIgYWRtaW5pc3RyYXRvci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRXJyb3IhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgc3VydmV5IGtleS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgVm90ZSBEYXRhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIGFscmVhZHkgYW5zd2VyZWQgdGhlIHN1cnZleS4nfSA9ICfkvaDlt7LntpPlm57nrZTkuoboqr/mn6XjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vU3RhdHMvRHluYW1pYy9TdXJ2ZXlMaXN0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgTGlzdCd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHF1ZXN0aW9uPyBBTEwgYXNzb2NpYXRlZCBkYXRhIHdpbGwgYmUgTE9TVCEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyd9ID0gJ+aCqOeiuuWumuimgeWIqumZpOatpOetlOahiO+8nyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgU3VydmV5IE1vZHVsZS4nfSA9ICfoqr/mn6XmqKHntYQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtb2R1bGUgdG8gZWRpdCBzdXJ2ZXkgcXVlc3Rpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGwgcGFyYW1ldGVycyBmb3IgdGhlIFN1cnZleSBvYmplY3QgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbW91bnQgb2YgZGF5cyBhZnRlciBzZW5kaW5nIGEgc3VydmV5IG1haWwgaW4gd2hpY2ggbm8gbmV3IHN1cnZleSByZXF1ZXN0cyBhcmUgc2VudCB0byB0aGUgc2FtZSBjdXN0b21lci4gU2VsZWN0aW5nIDAgd2lsbCBhbHdheXMgc2VuZCB0aGUgc3VydmV5IG1haWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBib2R5IGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc2VuZGVyIGZvciB0aGUgbm90aWZpY2F0aW9uIGVtYWlsIHRvIGN1c3RvbWVycyBhYm91dCBuZXcgc3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgc3ViamVjdCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBlbWFpbCB0byBjdXN0b21lcnMgYWJvdXQgbmV3IHN1cnZleS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgc3VydmV5IGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBncm91cHMgd2hpY2ggaGF2ZSBhIHBlcm1pc3Npb24gdG8gY2hhbmdlIHN1cnZleSBzdGF0dXMuIEFycmF5IGlzIGVtcHR5IGJ5IGRlZmF1bHQgYW5kIGFnZW50cyBmcm9tIGFsbCBncm91cHMgY2FuIGNoYW5nZSBzdXJ2ZXkgc3RhdHVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYW1vdW50IGluIGhvdXJzIGEgdGlja2V0IGhhcyB0byBiZSBjbG9zZWQgdG8gdHJpZ2dlciB0aGUgc2VuZGluZyBvZiBhIHN1cnZleSwgKCAwIG1lYW5zIHNlbmQgaW1tZWRpYXRlbHkgYWZ0ZXIgY2xvc2UgKS4gTm90ZTogZGVsYXllZCBzdXJ2ZXkgc2VuZGluZyBpcyBkb25lIGJ5IHRoZSBPVFJTIERhZW1vbiwgcHJpb3IgYWN0aXZhdGlvbiBvZiBcJ0RhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBjb2x1bW5zIGZvciB0aGUgZHJvcGRvd24gbGlzdCBmb3IgYnVpbGRpbmcgc2VuZCBjb25kaXRpb25zICgwID0+IGluYWN0aXZlLCAxID0+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IHF1ZXN0aW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlIG9yIGRpc2FibGUgdGhlIFNob3dWb3RlRGF0YSBzY3JlZW4gaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UgdG8gc2hvdyBkYXRhIG9mIGEgc3BlY2lmaWMgc3VydmV5IHJlc3VsdCB3aGVuIHRoZSBjdXN0b21lciB0cmllcyB0byBhbnN3ZXIgYSBzdXJ2ZXkgdGhlIHNlY29uZCB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHNlcnZpY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZSBvciBkaXNhYmxlIHRoZSBzZW5kIGNvbmRpdGlvbiBjaGVjayBmb3IgdGhlIHRpY2tldCB0eXBlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBhZGQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciBzdXJ2ZXkgZWRpdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSBzdGF0cyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHN1cnZleSB6b29tIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIFB1YmxpY1N1cnZleSBvYmplY3QgaW4gdGhlIHB1YmxpYyBTdXJ2ZXkgYXJlYS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZiB0aGlzIHJlZ2V4IG1hdGNoZXMsIG5vIGN1c3RvbWVyIHN1cnZleSB3aWxsIGJlIHNlbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn5YWs6ZaL55qE6Kq/5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIHN1cnZleSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgc3VydmV5IHF1ZXN0aW9ucyBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIHN1cnZleSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIHRoZSBzdXJ2ZXkgc3RhdGlzdGljcyBkZXRhaWxzIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBEZXRhaWxzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBBZGQgTW9kdWxlLid9ID0gJ+iqv+afpea3u+WKoOaooee1hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgRWRpdCBNb2R1bGUuJ30gPSAn6Kq/5p+l57eo6Lyv5qih57WEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBPdmVydmlldyAiU21hbGwiIExpbWl0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBTdGF0cyBNb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBab29tIE1vZHVsZS4nfSA9ICdNb2R1bCBVbWZyYWdlLURldGFpbGFuc2ljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IGxpbWl0IHBlciBwYWdlIGZvciBTdXJ2ZXkgT3ZlcnZpZXcgIlNtYWxsIi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5cyB3aWxsIG5vdCBiZSBzZW50IHRvIHRoZSBjb25maWd1cmVkIGVtYWlsIGFkZHJlc3Nlcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgc3VydmV5LCBlLmcuIFN1cnZleSMsIE15U3VydmV5Iy4gVGhlIGRlZmF1bHQgaXMgU3VydmV5Iy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGlzIGlzIGEgZGVzY3JpcHRpb24gZm9yIFN1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24gb24gU3VydmV5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBldmVudCBtb2R1bGUgdG8gc2VuZCBhdXRvbWF0aWNhbGx5IHN1cnZleSBlbWFpbCByZXF1ZXN0cyB0byBjdXN0b21lcnMgaWYgYSB0aWNrZXQgaXMgY2xvc2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXIgZGVsZXRlIHJlc3VsdHMgKGluY2x1ZGluZyB2b3RlIGRhdGEgYW5kIHJlcXVlc3RzKS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBzZW5kaW5nIGRlbGF5ZWQgc3VydmV5IHJlcXVlc3RzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIGludG8gc3RhdGlzdGljcyBkZXRhaWxzLid9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBhbnN3ZXI/JywKICAgICdEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcXVlc3Rpb24/IEFMTCBhc3NvY2lhdGVkIGRhdGEgd2lsbCBiZSBMT1NUIScsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICApOwoKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpMYW5ndWFnZTo6emhfQ05fU3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnN1YiBEYXRhIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRTdXJ2ZXlBZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBOZXcgU3VydmV5J30gPSAn5Yib5bu65paw55qE6LCD5p+lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludHJvZHVjdGlvbid9ID0gJ+S7i+e7jSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgSW50cm9kdWN0aW9uJ30gPSAn6LCD5p+l5LuL57uNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGlmaWNhdGlvbiBCb2R5J30gPSAn6YCa55+l5q2j5paHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBUeXBlcyd9ID0gJ+W3peWNleexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnRlcm5hbCBEZXNjcmlwdGlvbid9ID0gJ+WGhemDqOaPj+i/sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lciBjb25kaXRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsZWFzZSBjaG9vc2UgYSBDdXN0b21lciBwcm9wZXJ0eSB0byBhZGQgYSBjb25kaXRpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBzdXJ2ZXkga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4YW1wbGUgc3VydmV5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgR2VuZXJhbCBJbmZvJ30gPSAn57yW6L6R5LiA6Iis5L+h5oGvJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgUXVlc3Rpb25zJ30gPSAn57yW6L6R6Zeu6aKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBhcmUgaGVyZSd9ID0gJ+S9oOWcqOi/memHjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgUXVlc3Rpb25zJ30gPSAn6LCD5p+l6Zeu6aKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZCBRdWVzdGlvbid9ID0gJ+a3u+WKoOmXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUeXBlIHRoZSBxdWVzdGlvbid9ID0gJ+mXrumimOexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgcmVxdWlyZWQnfSA9ICfpnIDopoHlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4nfSA9ICfov5nkuKrosIPmn6XmsqHmnInkv53lrZjnmoTpl67popjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24nfSA9ICfpl67popgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5zd2VyIFJlcXVpcmVkJ30gPSAn6ZyA6KaB5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZW4geW91IGZpbmlzaCB0byBlZGl0IHRoZSBzdXJ2ZXkgcXVlc3Rpb25zIGp1c3QgY2xvc2UgdGhpcyBzY3JlZW4uJ30gPQogICAgICAgICflvZPmgqjlrozmiJDnvJbovpHosIPmn6Xpl67popjlkI7vvIzlhbPpl63ov5nkuKrnqpflj6PljbPlj6/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvc2UgdGhpcyB3aW5kb3cnfSA9ICflhbPpl63mnKznqpflj6MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBRdWVzdGlvbid9ID0gJ+e8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHF1ZXN0aW9ucyd9ID0gJ+i/lOWbnuWIsOmXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbjonfSA9ICfpl67popg6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvc3NpYmxlIEFuc3dlcnMgRm9yJ30gPSAn5Y+v6IO955qE5Zue562UICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGQgQW5zd2VyJ30gPSAn5re75Yqg5Zue562UJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFuc3dlcnMgc2F2ZWQgZm9yIHRoaXMgcXVlc3Rpb24uJ30gPSAn6L+Z5Liq6Zeu6aKY5rKh5pyJ5L+d5a2Y55qE5Zue562U44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgZG9lc25cJ3QgaGF2ZSBzZXZlcmFsIGFuc3dlcnMsIGEgdGV4dGFyZWEgd2lsbCBiZSBkaXNwbGF5ZWQuJ30gPQogICAgICAgICfov5nkuKrpl67popjkuI3og73mnInlpJrkuKrlm57nrZTvvIzlsIbmmL7npLrkuIDkuKrmlofmnKzljLrlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRWRpdCBBbnN3ZXInfSA9ICfnvJbovpHlm57nrZQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uJ30gPSAn6L+U5Zue5Yiw57yW6L6R6Zeu6aKYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fuc3dlcjonfSA9ICflm57nrZTvvJonOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBvdmVydmlldyBvcHRpb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdXJ2ZXkgQ3JlYXRlIFRpbWUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVzdHJpY3Rpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT25seSBzdXJ2ZXlzIGNyZWF0ZWQgYmV0d2Vlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UnfSA9ICfmr4/pobXmmL7npLrosIPmn6XnmoTmnIDlpKfmlbAnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50U3VydmV5T3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90aWZpY2F0aW9uIFNlbmRlcid9ID0gJ+mAmuefpeWPkeS7tuS6uic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RpZmljYXRpb24gU3ViamVjdCd9ID0gJ+mAmuefpeS4u+mimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2VkIEJ5J30gPSAn5L+u5pS55Lq6JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVN0YXRzCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0cyBPdmVydmlldyBvZid9ID0gJ+e7n+iuoeamguWGtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1ZXN0cyBUYWJsZSd9ID0gJ+ivt+axguihqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYWxsIHJlcXVlc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbmQgVGltZSd9ID0gJ+WPkemAgeaXtumXtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb3RlIFRpbWUnfSA9ICfmipXnpajml7bpl7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgcmVxdWVzdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWUgRGV0YWlscyd9ID0gJ+afpeeci+ivpuaDhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgc3RhdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IFN0YXQgRGV0YWlscyd9ID0gJ+iwg+afpee7n+iuoeivpuaDhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbyBiYWNrIHRvIHN0YXRzIG92ZXJ2aWV3J30gPSAn6L+U5Zue57uf6K6h5qaC5Ya1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ByZXZpb3VzIHZvdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV4dCB2b3RlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudFN1cnZleVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBJbmZvcm1hdGlvbid9ID0gJ+iwg+afpeS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZW50IHJlcXVlc3RzJ30gPSAn5bex5Y+R6YCB55qE6K+35rGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlY2VpdmVkIHN1cnZleXMnfSA9ICflt7LmjqXmlLbnmoTosIPmn6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERldGFpbHMnfSA9ICfosIPmn6Xor6bmg4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyJ30gPSAn57yW5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpY2tldCBTZXJ2aWNlcyd9ID0gJ+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+eydSYWRpbyAoTGlzdCknfSA9ICfljZXpgInvvIjliJfooajvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2tib3ggKExpc3QpJ30gPSAn5aSN6YCJ5qGG77yI5YiX6KGo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldCBQcm9tb3RlciBTY29yZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydRdWVzdGlvbiBUeXBlJ30gPSAn6Zeu6aKY57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbXBsZXRlJ30gPSAn5a6M5pW0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY29tcGxldGUnfSA9ICfkuI3lrozmlbQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUXVlc3Rpb24gRWRpdCd9ID0gJ+e8lui+kemXrumimCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbnN3ZXIgRWRpdCd9ID0gJ+e8lui+keWbnuetlCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRTdXJ2ZXlab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyctIE5vIHF1ZXVlIHNlbGVjdGVkIC0nfSA9ICctIOayoeaciemAieaLqemYn+WIlyAtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBTdGF0dXMnfSA9ICfmlrDnmoTnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VydmV5IERlc2NyaXB0aW9uJ30gPSAn6LCD5p+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+afpeOAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9TdGF0cy9EeW5hbWljL1N1cnZleUxpc3QucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1cnZleSBMaXN0J30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IFN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zCiAgICAkU2VsZi0+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+l54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgb25seSBzZW5kIHRvIHJlYWwgY3VzdG9tZXJzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgbWF4aW11bSBhbW91bnQgb2Ygc3VydmV5cyB0aGF0IGdldCBzZW50IHRvIGEgY3VzdG9tZXIgcGVyIDMwIGRheXMuICggMCBtZWFucyBubyBtYXhpbXVtLCBhbGwgc3VydmV5IHJlcXVlc3RzIHdpbGwgYmUgc2VudCkuJ30gPQogICAgICAgICflrprkuYnmr48zMOWkqeWPkemAgee7meS4gOS4quWuouaIt+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+IGFjdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBoZWlnaHQgZm9yIFJpY2h0ZXh0IHZpZXdzIGZvciBTdXJ2ZXlab29tIGVsZW1lbnRzLid9ID0KICAgICAgICAn6LCD5p+l6K+m5oOF56qX5Y+j5a+M5paH5pys5p+l55yL55qE6buY6K6k6auY5bqm44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGdyb3VwcyAocncpIHdoaWNoIGNhbiBkZWxldGUgc3VydmV5IHN0YXRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBtYXhpbXVtIGhlaWdodCBmb3IgUmljaHRleHQgdmlld3MgZm9yIFN1cnZleVpvb20gZWxlbWVudHMuJ30gPQogICAgICAgICflrprkuYnosIPmn6Xor6bmg4Xnqpflj6Plr4zmlofmnKzmn6XnnIvop4blm77nmoTpu5jorqTpq5jluqbjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBpbiB0aGUgc3VydmV5IG92ZXJ2aWV3LiBUaGlzIG9wdGlvbiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgY29sdW1ucy4nfSA9CiAgICAgICAgJ+WumuS5ieiwg+afpeamguiniOS4reaYvuekuueahOWtl+auteOAgui/meS4qumAiemhueS4jeS8muW9seWTjeWtl+auteeahOS9jee9ruOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXRlcm1pbmVzIGlmIHRoZSBzdGF0aXN0aWNzIG1vZHVsZSBtYXkgZ2VuZXJhdGUgc3VydmV5IGxpc3RzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1dGNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VkaXQgc3VydmV5IGdlbmVyYWwgaW5mb3JtYXRpb24uJ30gPSAn57yW6L6R6LCD5p+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+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIHN1cnZleXMgYXJlIHNob3duKSBvZiB0aGUgc21hbGwgc3VydmV5IG92ZXJ2aWV3Lid9ID0KICAgICAgICAn6LCD5p+l5qaC6KeI566A5rSB5qih5byP5pi+56S66LCD5p+l55qE6aG16Z2i5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBTdXJ2ZXkuJ30gPSAn5YWs5YWx6LCD5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jlc3VsdHMgb2xkZXIgdGhhbiB0aGUgY29uZmlndXJlZCBhbW91bnQgb2YgZGF5cyB3aWxsIGJlIGRlbGV0ZWQuIE5vdGU6IGRlbGV0ZSByZXN1bHRzIGRvbmUgYnkgdGhlIE9UUlMgRGFlbW9uLCBwcmlvciBhY3RpdmF0aW9uIG9mIFwnVGFzayMjI1N1cnZleVJlcXVlc3RzRGVsZXRlXCcgc2V0dGluZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+8mlN1cnZleSPjgIFNeVN1cnZleSPjgILpu5jorqTkuLpTdXJ2ZXkj44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaXMgaXMgYSBkZXNjcmlwdGlvbiBmb3IgU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93biBvbiBTdXJ2ZXkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGlja2V0IGV2ZW50IG1vZHVsZSB0byBzZW5kIGF1dG9tYXRpY2FsbHkgc3VydmV5IGVtYWlsIHJlcXVlc3RzIHRvIGN1c3RvbWVycyBpZiBhIHRpY2tldCBpcyBjbG9zZWQuJ30gPQogICAgICAgICflpoLmnpzkuIDkuKrlt6XljZXlt7LlhbPpl63lsLHoh6rliqjlj5HpgIHosIPmn6Xor7fmsYLpgq7ku7bnu5nlrqLmiLfnmoTlt6XljZXkuovku7bmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlciBkZWxldGUgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VyIHNlbmRpbmcgZGVsYXllZCBzdXJ2ZXkgcmVxdWVzdHMuJ30gPSAn6Kem5Y+R5Zmo5Y+R6YCB5bu26L+f55qE6LCD5p+l6K+35rGC44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gaW50byBzdGF0aXN0aWNzIGRldGFpbHMuJ30gPSAn6L+b5YWl6LCD5p+l57uf6K6h6K+m5oOF44CCJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGFuc3dlcj8nLAogICAgJ0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleUFkZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbW1vbiBvYmplY3RzCiAgICAleyRTZWxmfSA9ICVQYXJhbTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHN1cnZleSBhZGQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fU3VydmV5QWRkTWFzaygpOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3VydmV5IG5ldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N1cnZleU5ldycgKSB7CgogICAgICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAgICAgIyBnZXQgcGFyYW1zCiAgICAgICAgbXkgJFN1cnZleUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlN1cnZleUlEIiApOwoKICAgICAgICAjIGdldCByZXF1aXJlZCBmb3JtIGVsZW1lbnRzIGFuZCBlcnJvcnMKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgbXkgJUZvcm1FbGVtZW50czsKICAgICAgICBmb3IgbXkgJEl0ZW0gKAogICAgICAgICAgICBxdyggVGl0bGUgSW50cm9kdWN0aW9uIERlc2NyaXB0aW9uIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkgKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkRm9ybUVsZW1lbnRzeyRJdGVtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICIkSXRlbSIgKTsKCiAgICAgICAgICAgIGlmICggISRGb3JtRWxlbWVudHN7JEl0ZW19ICkgewogICAgICAgICAgICAgICAgJFNlcnZlckVycm9yeyAiJEl0ZW0iIC4gJ1NlcnZlckVycm9yJyB9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBnZXQgYXJyYXkgcGFyYW1zCiAgICAgICAgZm9yIG15ICRJdGVtIChxdyhRdWV1ZXMgVGlja2V0VHlwZUlEcyBTZXJ2aWNlSURzKSkgewogICAgICAgICAgICBAeyAkRm9ybUVsZW1lbnRzeyRJdGVtfSB9ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJEl0ZW0gKTsKICAgICAgICB9CgogICAgICAgIG15ICRDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRTdHJnID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnLAogICAgICAgICk7CiAgICAgICAgbXkgJUN1c3RvbWVyVXNlckNvbmRpdGlvbnM7CgogICAgICAgIGlmICgkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkU3RyZykgewoKICAgICAgICAgICAgRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKCBzcGxpdCggLywvLCAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkU3RyZyApICkgewogICAgICAgICAgICAgICAgbmV4dCBGSUVMRCBpZiAhJEZpZWxkOwoKICAgICAgICAgICAgICAgIG15ICVTZWxlY3Rpb25zRGF0YTsKICAgICAgICAgICAgICAgICVTZWxlY3Rpb25zRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+X1NlbmRDb25kaXRpb25HZXRGaWVsZFNlbGVjdGlvbnMoCiAgICAgICAgICAgICAgICAgICAgRmllbGROYW1lID0+ICRGaWVsZCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgQENoZWNrYm94ZXMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KAogICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICIke0ZpZWxkfUNoZWNrYm94IiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSBAQ29uZGl0aW9ucyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoCiAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBDb25kaXRpb25BcnJheTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJENvdW50ICggMCAuLiAoIHNjYWxhciBAQ29uZGl0aW9ucyAtIDEgKSApIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJE5lZ2F0aW9uOwogICAgICAgICAgICAgICAgICAgIGlmICglU2VsZWN0aW9uc0RhdGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZ2F0aW9uID0gJENoZWNrYm94ZXNbMF0gKyAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE5lZ2F0aW9uID0gJENoZWNrYm94ZXNbJENvdW50XSArIDA7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBteSAkUmVnRXhwVmFsdWUgICAgICA9ICRDb25kaXRpb25zWyRDb3VudF07CiAgICAgICAgICAgICAgICAgICAgbXkgJUNvbmRpdGlvbkVudHJpZXMgPSAoCiAgICAgICAgICAgICAgICAgICAgICAgIE5lZ2F0aW9uICAgID0+ICROZWdhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgUmVnRXhwVmFsdWUgPT4gJFJlZ0V4cFZhbHVlLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggIWV2YWwgeyBteSAkUmVnZXggPSBxci8kUmVnRXhwVmFsdWUvOyAxOyB9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgJFNlcnZlckVycm9ye0N1c3RvbWVyVXNlckNvbmRpdGlvbkVycm9yc30tPnskRmllbGR9LT57JENvdW50fSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBwdXNoIEBDb25kaXRpb25BcnJheSwgXCVDb25kaXRpb25FbnRyaWVzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDdXN0b21lclVzZXJDb25kaXRpb25zeyRGaWVsZH0gPSBcQENvbmRpdGlvbkFycmF5OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJUN1c3RvbWVyVXNlckNvbmRpdGlvbnMpIHsKCiAgICAgICAgICAgICAgICAkRm9ybUVsZW1lbnRze0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9ID0gXCVDdXN0b21lclVzZXJDb25kaXRpb25zOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRnJvbnRlbmQ6OlJpY2hUZXh0JykgKSB7CiAgICAgICAgICAgICRGb3JtRWxlbWVudHN7SW50cm9kdWN0aW9ufSAgICAgPSAiXCRodG1sL3RleHRcJCAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0iOwogICAgICAgICAgICAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9ID0gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSI7CiAgICAgICAgICAgICRGb3JtRWxlbWVudHN7RGVzY3JpcHRpb259ICAgICAgPSAiXCRodG1sL3RleHRcJCAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSI7CiAgICAgICAgfQoKICAgICAgICAjIHNhdmUgaWYgbm8gZXJyb3JzCiAgICAgICAgaWYgKCAhJVNlcnZlckVycm9yICkgewogICAgICAgICAgICBteSAkU3VydmV5SUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlN1cnZleUFkZCgKICAgICAgICAgICAgICAgICVGb3JtRWxlbWVudHMsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyByZWxvYWQgZm9ybSBpZiBlcnJvcgogICAgICAgIHJldHVybiAkU2VsZi0+X1N1cnZleUFkZE1hc2soCiAgICAgICAgICAgIEZvcm1FbGVtZW50cyA9PiBcJUZvcm1FbGVtZW50cywKICAgICAgICAgICAgU2VydmVyRXJyb3IgID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIFN1cnZleSBBSkFYIHJlcXVlc3QKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYUmVxdWVzdCcgKSB7CgogICAgICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICAgICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgICAgICBteSAkSlNPTk9iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKTsKCiAgICAgICAgbXkgJEZpZWxkTmFtZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgIFBhcmFtID0+ICdGaWVsZE5hbWUnLAogICAgICAgICk7CiAgICAgICAgbXkgQFNlbGVjdGVkVmFsdWVzID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSgKICAgICAgICAgICAgUGFyYW0gPT4gJ1NlbGVjdGVkVmFsdWVzW10nLAogICAgICAgICk7CgogICAgICAgIG15ICVTZWxlY3Rpb25zRGF0YTsKICAgICAgICAlU2VsZWN0aW9uc0RhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPl9TZW5kQ29uZGl0aW9uR2V0RmllbGRTZWxlY3Rpb25zKAogICAgICAgICAgICBGaWVsZE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBteSAkSlNPTlN0cmluZyA9ICRKU09OT2JqZWN0LT5FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJycsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCVTZWxlY3Rpb25zRGF0YSkgewogICAgICAgICAgICBteSAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc1N0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTZWxlY3Rpb25zRGF0YSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gIiR7RmllbGROYW1lfVtdIiwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICAgPT4gNiwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBXNTBwYycsCiAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+IFxAU2VsZWN0ZWRWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlSlNPTkRhdGEgPSAoCiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICA9PiBcMSwKICAgICAgICAgICAgICAgIFNlbGVjdEZpZWxkID0+ICRDdXN0b21lclVzZXJDb25kaXRpb25zU3RyZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRKU09OU3RyaW5nID0gJEpTT05PYmplY3QtPkVuY29kZSgKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVKU09ORGF0YSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTlN0cmluZywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KfQoKc3ViIF9TdXJ2ZXlBZGRNYXNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJUpTRGF0YTsKCiAgICBteSAlU2VydmVyRXJyb3I7CiAgICBpZiAoICRQYXJhbXtTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgJVNlcnZlckVycm9yID0gJXsgJFBhcmFte1NlcnZlckVycm9yfSB9OwogICAgfQoKICAgIG15ICVGb3JtRWxlbWVudHM7CiAgICBpZiAoICRQYXJhbXtGb3JtRWxlbWVudHN9ICkgewogICAgICAgICVGb3JtRWxlbWVudHMgPSAleyAkUGFyYW17Rm9ybUVsZW1lbnRzfSB9OwogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0FkZCBOZXcgU3VydmV5JyksCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgIG15ICVRdWV1ZXMgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRBbGxRdWV1ZXMoKTsKICAgIG15ICRRdWV1ZVN0cmluZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVF1ZXVlcywKICAgICAgICBOYW1lICAgICAgICAgPT4gJ1F1ZXVlcycsCiAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRGb3JtRWxlbWVudHN7UXVldWVzfSwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgaWYgdGhlIGZvciBzZW5kIGNvbmRpdGlvbiB0aWNrZXQgdHlwZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJykgKSB7CgogICAgICAgICMgZ2V0IHRoZSB2YWxpZCB0aWNrZXQgdHlwZSBsaXN0CiAgICAgICAgbXkgJVRpY2tldFR5cGVzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxpc3QoKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIHRpY2tldCB0eXBlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICglVGlja2V0VHlwZXMpIHsKCiAgICAgICAgICAgICMgYnVpbGQgdGlja2V0IHR5cGUgc2VsZWN0aW9uCiAgICAgICAgICAgIG15ICRUaWNrZXRUeXBlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlVGlja2V0VHlwZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1RpY2tldFR5cGVJRHMnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1RpY2tldFR5cGVJRHN9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRUeXBlcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUaWNrZXRUeXBlU3RyZyA9PiAkVGlja2V0VHlwZVN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSBzZW5kIGNvbmRpdGlvbiBzZXJ2aWNlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnKSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIHNlcnZpY2UgbGlzdAogICAgICAgIG15ICVTZXJ2aWNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgY2hlY2sgaWYgYSBzZXJ2aWNlIGlzIGF2YWlsYWJsZQogICAgICAgIGlmICglU2VydmljZXMpIHsKCiAgICAgICAgICAgICMgYnVpbGQgc2VydmljZSBzZWxlY3Rpb24KICAgICAgICAgICAgbXkgJFNlcnZpY2VTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVTZXJ2aWNlcywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnU2VydmljZUlEcycsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNiwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRGb3JtRWxlbWVudHN7U2VydmljZUlEc30sCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1RpY2tldFNlcnZpY2VzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFNlcnZpY2VTdHJnID0+ICRTZXJ2aWNlU3RyZywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgQ2hlY2sgc2VuZCBjb25kaXRpb24gYnkgQ3VzdG9tZXJVc2VyIGZpZWxkcy4KICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJykgKSB7CgogICAgICAgIG15ICVDdXN0b21lckZpZWxkc0NvbmZpZyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycpIH07CiAgICAgICAgbXkgQEN1c3RvbWVyRmllbGRzOwoKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICAgICBDVVNUT01FUkZJRUxEOgogICAgICAgIGZvciBteSAkQ3VzdG9tZXJGaWVsZCAoIHNvcnQga2V5cyAlQ3VzdG9tZXJGaWVsZHNDb25maWcgKSB7CiAgICAgICAgICAgIG5leHQgQ1VTVE9NRVJGSUVMRCBpZiAhJEN1c3RvbWVyRmllbGRzQ29uZmlneyRDdXN0b21lckZpZWxkfTsKICAgICAgICAgICAgbmV4dCBDVVNUT01FUkZJRUxEIGlmICEkU3VydmV5T2JqZWN0LT5fU2VuZENvbmRpdGlvbkNoZWNrQ3VzdG9tZXJGaWVsZCggRmllbGROYW1lID0+ICRDdXN0b21lckZpZWxkICk7CgogICAgICAgICAgICBwdXNoIEBDdXN0b21lckZpZWxkcywgJEN1c3RvbWVyRmllbGQ7CiAgICAgICAgfQoKICAgICAgICBpZiAoQEN1c3RvbWVyRmllbGRzKSB7CgogICAgICAgICAgICBteSAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQEN1c3RvbWVyRmllbGRzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDdXN0b21lclVzZXJDb25kaXRpb25zJywKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkSlNEYXRhe0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9ID0gJEZvcm1FbGVtZW50c3tDdXN0b21lclVzZXJDb25kaXRpb25zfSB8fCAkUGFyYW17Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc307CiAgICAgICAgICAgICRKU0RhdGF7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uRXJyb3JzfSA9ICRTZXJ2ZXJFcnJvcntDdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnN9IHx8ICcnOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZW5kQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzU3RyZyA9PiAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHJpY2ggdGV4dCBlbGVtZW50cwogICAgbXkgJVN1cnZleUVsZW1lbnRzOwoKICAgICRTdXJ2ZXlFbGVtZW50c3tJbnRyb2R1Y3Rpb259ID0gJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259IHx8CiAgICAgICAgJFBhcmFte0ludHJvZHVjdGlvbn07CgogICAgJFN1cnZleUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9ID0gJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSB8fAogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSB8fAogICAgICAgICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25Cb2R5Jyk7CgogICAgJFN1cnZleUVsZW1lbnRze0Rlc2NyaXB0aW9ufSA9ICRGb3JtRWxlbWVudHN7RGVzY3JpcHRpb259IHx8CiAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9ufSB8fAogICAgICAgICcnOwoKICAgICMgbG9hZCByaWNoIHRleHQgZWRpdG9yCiAgICBteSAkUmljaFRleHRFZGl0b3IgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpOwogICAgaWYgKCRSaWNoVGV4dEVkaXRvcikgewogICAgICAgICRMYXlvdXRPYmplY3QtPlNldFJpY2hUZXh0UGFyYW1ldGVycygKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgfQoKICAgICMgY29udmVydCByZXF1aXJlZCBlbGVtZW50cyB0byBSVEUKICAgIEZJRUxEOgogICAgZm9yIG15ICRTdXJ2ZXlGaWVsZCAoIHNvcnQga2V5cyAlU3VydmV5RWxlbWVudHMgKSB7CiAgICAgICAgbmV4dCBGSUVMRCBpZiAhJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH07CgogICAgICAgICMgY2xlYW4gSFRNTAogICAgICAgIG15ICRIVE1MQ29udGVudCA9ICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICAgICBpZiAoICEkSFRNTENvbnRlbnQgJiYgJFJpY2hUZXh0RWRpdG9yICkgewogICAgICAgICAgICAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSwKICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEhUTUxDb250ZW50ICYmICEkUmljaFRleHRFZGl0b3IgKSB7CiAgICAgICAgICAgICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgU3RyaW5nID0+ICRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdJbnRyb2R1Y3Rpb24nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gPT4gJFN1cnZleUVsZW1lbnRze0ludHJvZHVjdGlvbn0sCiAgICAgICAgfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTm90aWZpY2F0aW9uQm9keScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgPT4gJFN1cnZleUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9LAogICAgICAgIH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ludGVybmFsRGVzY3JpcHRpb24nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBEZXNjcmlwdGlvbiA9PiAkU3VydmV5RWxlbWVudHN7RGVzY3JpcHRpb259LAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2VuZXJhdGVzIGdlbmVyaWMgZXJyb3JzIGZvciBKYXZhU2NyaXB0CiAgICBmb3IgbXkgJE5lZWRlZEl0ZW0gKAogICAgICAgIHF3KCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24gTm90aWZpY2F0aW9uU2VuZGVyIE5vdGlmaWNhdGlvblN1YmplY3QgTm90aWZpY2F0aW9uQm9keSApCiAgICAgICAgKQogICAgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdHZW5lcmljRXJyb3InLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEl0ZW1OYW1lID0+ICROZWVkZWRJdGVtIC4gJ0Vycm9yJywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgIGZvciBteSAkSXRlbSAoIHNvcnQga2V5cyAlU2VydmVyRXJyb3IgKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyaWNTZXJ2ZXJFcnJvcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSXRlbU5hbWUgPT4gJEl0ZW0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0pTRGF0YScsCiAgICAgICAgVmFsdWUgPT4gXCVKU0RhdGEsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRTdXJ2ZXlBZGQnLAogICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgUXVldWVTdHJpbmcgICAgICAgID0+ICRRdWV1ZVN0cmluZywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyID0+ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uU2VuZGVyfQogICAgICAgICAgICAgICAgfHwgJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0KICAgICAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25TZW5kZXInKSwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvblN1YmplY3R9CiAgICAgICAgICAgICAgICB8fCAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0KICAgICAgICAgICAgICAgIHx8ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25TdWJqZWN0JyksCiAgICAgICAgICAgICVTZXJ2ZXJFcnJvciwKICAgICAgICAgICAgJUZvcm1FbGVtZW50cywKICAgICAgICB9LAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleUVkaXQ7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkU3VydmV5SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiU3VydmV5SUQiICk7CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgZWRpdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBteSAkU3VydmV5RXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdTdXJ2ZXknCiAgICAgICAgKTsKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCApOwoKICAgICAgICByZXR1cm4gJFNlbGYtPl9TdXJ2ZXlFZGl0TWFzaygKICAgICAgICAgICAgJVN1cnZleSwKICAgICAgICApOwoKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHN1cnZleSBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3VydmV5U2F2ZScgKSB7CgogICAgICAgIGlmICggISRTdXJ2ZXlJRCApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHJlcXVpcmVkIGZvcm0gZWxlbWVudHMgYW5kIGVycm9ycwogICAgICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgICAgICBteSAlRm9ybUVsZW1lbnRzOwogICAgICAgIGZvciBteSAkSXRlbSAoCiAgICAgICAgICAgIHF3KCBUaXRsZSBJbnRyb2R1Y3Rpb24gRGVzY3JpcHRpb24gTm90aWZpY2F0aW9uU2VuZGVyIE5vdGlmaWNhdGlvblN1YmplY3QgTm90aWZpY2F0aW9uQm9keSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGb3JtRWxlbWVudHN7JEl0ZW19ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIiRJdGVtIiApOwoKICAgICAgICAgICAgaWYgKCAhJEZvcm1FbGVtZW50c3skSXRlbX0gKSB7CiAgICAgICAgICAgICAgICAkU2VydmVyRXJyb3J7ICIkSXRlbSIgLiAnU2VydmVyRXJyb3InIH0gPSAnU2VydmVyRXJyb3InOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgICAgICBmb3IgbXkgJEl0ZW0gKHF3KFF1ZXVlcyBUaWNrZXRUeXBlSURzIFNlcnZpY2VJRHMpKSB7CiAgICAgICAgICAgIEB7ICRGb3JtRWxlbWVudHN7JEl0ZW19IH0gPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkSXRlbSApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ0Zyb250ZW5kOjpSaWNoVGV4dCcpICkgewogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0gPSAoIGxlbmd0aCAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0gKQogICAgICAgICAgICAgICAgPyAiXCRodG1sL3RleHRcJCAkRm9ybUVsZW1lbnRze0ludHJvZHVjdGlvbn0iCiAgICAgICAgICAgICAgICA6ICcnOwogICAgICAgICAgICAkRm9ybUVsZW1lbnRze05vdGlmaWNhdGlvbkJvZHl9ID0gKCBsZW5ndGggJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSApCiAgICAgICAgICAgICAgICA/ICJcJGh0bWwvdGV4dFwkICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uQm9keX0iCiAgICAgICAgICAgICAgICA6ICcnOwogICAgICAgICAgICAkRm9ybUVsZW1lbnRze0Rlc2NyaXB0aW9ufSA9ICggbGVuZ3RoICRGb3JtRWxlbWVudHN7RGVzY3JpcHRpb259ICkKICAgICAgICAgICAgICAgID8gIlwkaHRtbC90ZXh0XCQgJEZvcm1FbGVtZW50c3tEZXNjcmlwdGlvbn0iCiAgICAgICAgICAgICAgICA6ICcnOwogICAgICAgIH0KCiAgICAgICAgbXkgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZFN0cmcgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICBQYXJhbSA9PiAnQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkcycsCiAgICAgICAgKTsKICAgICAgICBteSAlQ3VzdG9tZXJVc2VyQ29uZGl0aW9uczsKCiAgICAgICAgaWYgKCRDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRTdHJnKSB7CgogICAgICAgICAgICBGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRGaWVsZCAoIHNwbGl0KCAvLC8sICRDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRTdHJnICkgKSB7CiAgICAgICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGQ7CgogICAgICAgICAgICAgICAgbXkgJVNlbGVjdGlvbnNEYXRhOwogICAgICAgICAgICAgICAgJVNlbGVjdGlvbnNEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5fU2VuZENvbmRpdGlvbkdldEZpZWxkU2VsZWN0aW9ucygKICAgICAgICAgICAgICAgICAgICBGaWVsZE5hbWUgPT4gJEZpZWxkLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBteSBAQ2hlY2tib3hlcyA9ICRQYXJhbU9iamVjdC0+R2V0QXJyYXkoCiAgICAgICAgICAgICAgICAgICAgUGFyYW0gPT4gIiR7RmllbGR9Q2hlY2tib3giLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBDb25kaXRpb25zID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSgKICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAkRmllbGQsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgQENvbmRpdGlvbkFycmF5OwoKICAgICAgICAgICAgICAgIGZvciBteSAkQ291bnQgKCAwIC4uICggc2NhbGFyIEBDb25kaXRpb25zIC0gMSApICkgewoKICAgICAgICAgICAgICAgICAgICBteSAkTmVnYXRpb247CiAgICAgICAgICAgICAgICAgICAgaWYgKCVTZWxlY3Rpb25zRGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICAkTmVnYXRpb24gPSAkQ2hlY2tib3hlc1swXSArIDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTmVnYXRpb24gPSAkQ2hlY2tib3hlc1skQ291bnRdICsgMDsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG15ICRSZWdFeHBWYWx1ZSAgICAgID0gJENvbmRpdGlvbnNbJENvdW50XTsKICAgICAgICAgICAgICAgICAgICBteSAlQ29uZGl0aW9uRW50cmllcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgTmVnYXRpb24gICAgPT4gJE5lZ2F0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBSZWdFeHBWYWx1ZSA9PiAkUmVnRXhwVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZXZhbCB7IG15ICRSZWdleCA9IHFyLyRSZWdFeHBWYWx1ZS87IDE7IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAkU2VydmVyRXJyb3J7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uRXJyb3JzfS0+eyRGaWVsZH0tPnskQ291bnR9ID0gJ1NlcnZlckVycm9yJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHB1c2ggQENvbmRpdGlvbkFycmF5LCBcJUNvbmRpdGlvbkVudHJpZXM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJEN1c3RvbWVyVXNlckNvbmRpdGlvbnN7JEZpZWxkfSA9IFxAQ29uZGl0aW9uQXJyYXk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICglQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucykgewoKICAgICAgICAgICAgICAgICRGb3JtRWxlbWVudHN7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30gPSBcJUN1c3RvbWVyVXNlckNvbmRpdGlvbnM7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2F2ZSBpZiBubyBlcnJvcnMKICAgICAgICBpZiAoICElU2VydmVyRXJyb3IgKSB7CiAgICAgICAgICAgIG15ICRTYXZlUmVzdWx0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5VXBkYXRlKAogICAgICAgICAgICAgICAgJUZvcm1FbGVtZW50cywKICAgICAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Qb3B1cENsb3NlKAogICAgICAgICAgICAgICAgVVJMID0+ICJBY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1cnZleUlEPSRTdXJ2ZXlJRDsiLAogICAgICAgICAgICApOwoKICAgICAgICB9CgogICAgICAgICMgcmVsb2FkIGZvcm0gaWYgZXJyb3IKICAgICAgICByZXR1cm4gJFNlbGYtPl9TdXJ2ZXlFZGl0TWFzaygKICAgICAgICAgICAgRm9ybUVsZW1lbnRzID0+IFwlRm9ybUVsZW1lbnRzLAogICAgICAgICAgICBTZXJ2ZXJFcnJvciAgPT4gXCVTZXJ2ZXJFcnJvciwKICAgICAgICAgICAgU3VydmV5SUQgICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgU3VydmV5IEFKQVggcmVxdWVzdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0FKQVhSZXF1ZXN0JyApIHsKCiAgICAgICAgbXkgJEpTT05PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SlNPTicpOwoKICAgICAgICBteSAkRmllbGROYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0ZpZWxkTmFtZScsCiAgICAgICAgKTsKICAgICAgICBteSBAU2VsZWN0ZWRWYWx1ZXMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KAogICAgICAgICAgICBQYXJhbSA9PiAnU2VsZWN0ZWRWYWx1ZXNbXScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVNlbGVjdGlvbnNEYXRhOwogICAgICAgICVTZWxlY3Rpb25zRGF0YSA9ICRTdXJ2ZXlPYmplY3QtPl9TZW5kQ29uZGl0aW9uR2V0RmllbGRTZWxlY3Rpb25zKAogICAgICAgICAgICBGaWVsZE5hbWUgPT4gJEZpZWxkTmFtZSwKICAgICAgICApOwoKICAgICAgICBteSAkSlNPTlN0cmluZyA9ICRKU09OT2JqZWN0LT5FbmNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJycsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCVTZWxlY3Rpb25zRGF0YSkgewogICAgICAgICAgICBteSAkQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc1N0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVTZWxlY3Rpb25zRGF0YSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gIiR7RmllbGROYW1lfVtdIiwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFNpemUgICAgICAgICAgPT4gNiwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZSBXNTBwYycsCiAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+IFxAU2VsZWN0ZWRWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAlSlNPTkRhdGEgPSAoCiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICA9PiBcMSwKICAgICAgICAgICAgICAgIFNlbGVjdEZpZWxkID0+ICRDdXN0b21lclVzZXJDb25kaXRpb25zU3RyZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRKU09OU3RyaW5nID0gJEpTT05PYmplY3QtPkVuY29kZSgKICAgICAgICAgICAgICAgIERhdGEgPT4gXCVKU09ORGF0YSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTlN0cmluZywKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KfQoKc3ViIF9TdXJ2ZXlFZGl0TWFzayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVKU0RhdGE7CgogICAgbXkgJVNlcnZlckVycm9yOwogICAgaWYgKCAkUGFyYW17U2VydmVyRXJyb3J9ICkgewogICAgICAgICVTZXJ2ZXJFcnJvciA9ICV7ICRQYXJhbXtTZXJ2ZXJFcnJvcn0gfTsKICAgIH0KCiAgICBteSAlRm9ybUVsZW1lbnRzOwogICAgaWYgKCAkUGFyYW17Rm9ybUVsZW1lbnRzfSApIHsKICAgICAgICAlRm9ybUVsZW1lbnRzID0gJXsgJFBhcmFte0Zvcm1FbGVtZW50c30gfTsKICAgIH0KCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgVGl0bGUgICAgID0+IFRyYW5zbGF0YWJsZSgnU3VydmV5IEVkaXQnKSwKICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICBCb2R5Q2xhc3MgPT4gJ1BvcHVwJywKICAgICk7CgogICAgbXkgJVF1ZXVlcyAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJyktPkdldEFsbFF1ZXVlcygpOwogICAgbXkgJFF1ZXVlU3RyaW5nID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUXVldWVzLAogICAgICAgIE5hbWUgICAgICAgICA9PiAnUXVldWVzJywKICAgICAgICBTaXplICAgICAgICAgPT4gNiwKICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMCwKICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBTZWxlY3RlZElEICAgPT4gJEZvcm1FbGVtZW50c3tRdWV1ZXN9IHx8ICRQYXJhbXtRdWV1ZXN9LAogICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBjaGVjayBpZiB0aGUgZm9yIHNlbmQgY29uZGl0aW9uIHRpY2tldCB0eXBlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnKSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIHRpY2tldCB0eXBlIGxpc3QKICAgICAgICBteSAlVGlja2V0VHlwZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTGlzdCgpOwoKICAgICAgICAjIGNoZWNrIGlmIGEgdGlja2V0IHR5cGUgaXMgYXZhaWxhYmxlCiAgICAgICAgaWYgKCVUaWNrZXRUeXBlcykgewoKICAgICAgICAgICAgIyBidWlsZCB0aWNrZXQgdHlwZSBzZWxlY3Rpb24KICAgICAgICAgICAgbXkgJFRpY2tldFR5cGVTdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVUaWNrZXRUeXBlcywKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVGlja2V0VHlwZUlEcycsCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNiwKICAgICAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAxLAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDAsCiAgICAgICAgICAgICAgICBTb3J0ICAgICAgICAgPT4gJ0FscGhhbnVtZXJpY1ZhbHVlJywKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAwLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRGb3JtRWxlbWVudHN7VGlja2V0VHlwZUlEc30gfHwgJFBhcmFte1RpY2tldFR5cGVJRHN9LAogICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRUeXBlcycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBUaWNrZXRUeXBlU3RyZyA9PiAkVGlja2V0VHlwZVN0cmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZSBzZW5kIGNvbmRpdGlvbiBzZXJ2aWNlIGNoZWNrIGlzIGVuYWJsZWQKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnKSApIHsKCiAgICAgICAgIyBnZXQgdGhlIHZhbGlkIHNlcnZpY2UgbGlzdAogICAgICAgIG15ICVTZXJ2aWNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgc2VydmljZSBpcyBhdmFpbGFibGUKICAgICAgICBpZiAoJVNlcnZpY2VzKSB7CgogICAgICAgICAgICAjIGJ1aWxkIHNlcnZpY2Ugc2VsZWN0aW9uCiAgICAgICAgICAgIG15ICRTZXJ2aWNlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlU2VydmljZXMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1NlcnZpY2VJRHMnLAogICAgICAgICAgICAgICAgU2l6ZSAgICAgICAgID0+IDYsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAwLAogICAgICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRm9ybUVsZW1lbnRze1NlcnZpY2VJRHN9IHx8ICRQYXJhbXtTZXJ2aWNlSURzfSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVGlja2V0U2VydmljZXMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgU2VydmljZVN0cmcgPT4gJFNlcnZpY2VTdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBzZW5kIGNvbmRpdGlvbiBieSBDdXN0b21lclVzZXIgZmllbGRzLgogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnKSApIHsKCiAgICAgICAgbXkgJUN1c3RvbWVyRmllbGRzQ29uZmlnID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJykgfTsKICAgICAgICBteSBAQ3VzdG9tZXJGaWVsZHM7CgogICAgICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgICAgIENVU1RPTUVSRklFTEQ6CiAgICAgICAgZm9yIG15ICRDdXN0b21lckZpZWxkICggc29ydCBrZXlzICVDdXN0b21lckZpZWxkc0NvbmZpZyApIHsKICAgICAgICAgICAgbmV4dCBDVVNUT01FUkZJRUxEIGlmICEkQ3VzdG9tZXJGaWVsZHNDb25maWd7JEN1c3RvbWVyRmllbGR9OwogICAgICAgICAgICBuZXh0IENVU1RPTUVSRklFTEQgaWYgISRTdXJ2ZXlPYmplY3QtPl9TZW5kQ29uZGl0aW9uQ2hlY2tDdXN0b21lckZpZWxkKCBGaWVsZE5hbWUgPT4gJEN1c3RvbWVyRmllbGQgKTsKCiAgICAgICAgICAgIHB1c2ggQEN1c3RvbWVyRmllbGRzLCAkQ3VzdG9tZXJGaWVsZDsKICAgICAgICB9CgogICAgICAgIGlmIChAQ3VzdG9tZXJGaWVsZHMpIHsKCiAgICAgICAgICAgIG15ICRDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFxAQ3VzdG9tZXJGaWVsZHMsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0N1c3RvbWVyVXNlckNvbmRpdGlvbnMnLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljVmFsdWUnLAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gID0+IDAsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gMSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRKU0RhdGF7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30gPSAkRm9ybUVsZW1lbnRze0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9IHx8ICRQYXJhbXtDdXN0b21lclVzZXJDb25kaXRpb25zfTsKICAgICAgICAgICAgJEpTRGF0YXtDdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnN9ID0gJFNlcnZlckVycm9ye0N1c3RvbWVyVXNlckNvbmRpdGlvbkVycm9yc30gfHwgJyc7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NlbmRDdXN0b21lclVzZXJDb25kaXRpb25zJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHNTdHJnID0+ICRDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzU3RyZywKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJDb25kaXRpb25zICAgICAgICAgICA9PiAkRm9ybUVsZW1lbnRze0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9CiAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRQYXJhbXtDdXN0b21lclVzZXJDb25kaXRpb25zfSwKICAgICAgICAgICAgICAgICAgICBDdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnMgPT4gJFNlcnZlckVycm9ye0N1c3RvbWVyVXNlckNvbmRpdGlvbkVycm9yc30gfHwgJycsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHJpY2ggdGV4dCBlbGVtZW50cwogICAgbXkgJVN1cnZleUVsZW1lbnRzOwoKICAgICRTdXJ2ZXlFbGVtZW50c3tJbnRyb2R1Y3Rpb259ID0gJEZvcm1FbGVtZW50c3tJbnRyb2R1Y3Rpb259IHx8ICRQYXJhbXtJbnRyb2R1Y3Rpb259OwoKICAgICRTdXJ2ZXlFbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fQogICAgICAgID0gJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSB8fCAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gfHwgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6Ok5vdGlmaWNhdGlvbkJvZHknKTsKCiAgICAkU3VydmV5RWxlbWVudHN7RGVzY3JpcHRpb259ID0gJEZvcm1FbGVtZW50c3tEZXNjcmlwdGlvbn0gfHwgJFBhcmFte0Rlc2NyaXB0aW9ufSB8fCAnJzsKCiAgICAjIGxvYWQgcmljaCB0ZXh0IGVkaXRvcgogICAgbXkgJFJpY2hUZXh0RWRpdG9yID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6UmljaFRleHQnKTsKICAgIGlmICgkUmljaFRleHRFZGl0b3IpIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5TZXRSaWNoVGV4dFBhcmFtZXRlcnMoCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNvbnZlcnQgcmVxdWlyZWQgZWxlbWVudHMgdG8gUlRFCiAgICBGSUVMRDoKICAgIGZvciBteSAkU3VydmV5RmllbGQgKCBzb3J0IGtleXMgJVN1cnZleUVsZW1lbnRzICkgewogICAgICAgIG5leHQgRklFTEQgaWYgISRTdXJ2ZXlFbGVtZW50c3skU3VydmV5RmllbGR9OwoKICAgICAgICAjIGNsZWFuIEhUTUwKICAgICAgICBteSAkSFRNTENvbnRlbnQgPQogICAgICAgICAgICAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKCiAgICAgICAgaWYgKCAhJEhUTUxDb250ZW50ICYmICRSaWNoVGV4dEVkaXRvciApIHsKICAgICAgICAgICAgJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleUVsZW1lbnRzeyRTdXJ2ZXlGaWVsZH0sCiAgICAgICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRIVE1MQ29udGVudCAmJiAhJFJpY2hUZXh0RWRpdG9yICkgewogICAgICAgICAgICAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKS0+VG9Bc2NpaSgKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkU3VydmV5RWxlbWVudHN7JFN1cnZleUZpZWxkfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnSW50cm9kdWN0aW9uJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgSW50cm9kdWN0aW9uID0+ICRTdXJ2ZXlFbGVtZW50c3tJbnRyb2R1Y3Rpb259LAogICAgICAgIH0sCiAgICApOwoKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ05vdGlmaWNhdGlvbkJvZHknLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ID0+ICRTdXJ2ZXlFbGVtZW50c3tOb3RpZmljYXRpb25Cb2R5fSwKICAgICAgICB9LAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdJbnRlcm5hbERlc2NyaXB0aW9uJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJFN1cnZleUVsZW1lbnRze0Rlc2NyaXB0aW9ufSwKICAgICAgICB9LAogICAgKTsKCiAgICAjIGdlbmVyYXRlcyBnZW5lcmljIGVycm9ycyBmb3IgSmF2YVNjcmlwdAogICAgZm9yIG15ICROZWVkZWRJdGVtICgKICAgICAgICBxdyggVGl0bGUgSW50cm9kdWN0aW9uIERlc2NyaXB0aW9uIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkgKQogICAgICAgICkKICAgIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJpY0Vycm9yJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBJdGVtTmFtZSA9PiAkTmVlZGVkSXRlbSAuICdFcnJvcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKCBzb3J0IGtleXMgJVNlcnZlckVycm9yICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdHZW5lcmljU2VydmVyRXJyb3InLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEl0ZW1OYW1lID0+ICRJdGVtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdKU0RhdGEnLAogICAgICAgIFZhbHVlID0+IFwlSlNEYXRhLAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5RWRpdCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBRdWV1ZVN0cmluZyAgICAgICAgPT4gJFF1ZXVlU3RyaW5nLAogICAgICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgPT4gJEZvcm1FbGVtZW50c3tOb3RpZmljYXRpb25TZW5kZXJ9CiAgICAgICAgICAgICAgICB8fCAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfQogICAgICAgICAgICAgICAgfHwgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6Ok5vdGlmaWNhdGlvblNlbmRlcicpLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICRGb3JtRWxlbWVudHN7Tm90aWZpY2F0aW9uU3ViamVjdH0KICAgICAgICAgICAgICAgIHx8ICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fQogICAgICAgICAgICAgICAgfHwgJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6Ok5vdGlmaWNhdGlvblN1YmplY3QnKSwKICAgICAgICAgICAgJVNlcnZlckVycm9yLAogICAgICAgICAgICAlRm9ybUVsZW1lbnRzLAogICAgICAgIH0sCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleUVkaXRRdWVzdGlvbnM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJUdldFBhcmFtOwogICAgZm9yIG15ICRLZXkgKHF3KFN1cnZleUlEIFF1ZXN0aW9uSUQgQW5zd2VySUQpKSB7CiAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJEtleSApOwogICAgfQoKICAgIG15ICRTdXJ2ZXlFeGlzdHMgPSAnbm8nOwogICAgaWYgKCAkR2V0UGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRTdXJ2ZXlFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdTdXJ2ZXknCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkUXVlc3Rpb25FeGlzdHMgPSAnbm8nOwogICAgaWYgKCAkR2V0UGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJFF1ZXN0aW9uRXhpc3RzID0gJFN1cnZleU9iamVjdC0+RWxlbWVudEV4aXN0cygKICAgICAgICAgICAgRWxlbWVudElEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdRdWVzdGlvbicKICAgICAgICApOwogICAgfQoKICAgIG15ICRBbnN3ZXJFeGlzdHMgPSAnbm8nOwogICAgaWYgKCAkR2V0UGFyYW17QW5zd2VySUR9ICkgewogICAgICAgICRBbnN3ZXJFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJEdldFBhcmFte0Fuc3dlcklEfSwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdBbnN3ZXInCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIGFkZAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1F1ZXN0aW9uQWRkJyApIHsKCiAgICAgICAgbXkgJFF1ZXN0aW9uICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlF1ZXN0aW9uIiApOwogICAgICAgIG15ICRUeXBlICAgICAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJUeXBlIiApOwogICAgICAgIG15ICRBbnN3ZXJSZXF1aXJlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdBbnN3ZXJSZXF1aXJlZCcgKTsKCiAgICAgICAgaWYgKCAkQW5zd2VyUmVxdWlyZWQgJiYgJEFuc3dlclJlcXVpcmVkIGVxICdObycgKSB7CiAgICAgICAgICAgICRBbnN3ZXJSZXF1aXJlZCA9IDA7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQW5zd2VyUmVxdWlyZWQgPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgaWYgKCRRdWVzdGlvbikgewogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgICAgICAgICAgICAgIFN1cnZleUlEICAgICAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbiAgICAgICA9PiAkUXVlc3Rpb24sCiAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICA9PiAkVHlwZSwKICAgICAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+ICRBbnN3ZXJSZXF1aXJlZCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Tb3J0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZXJ2ZXJFcnJvcntRdWVzdGlvbn0gPSAxOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uT3ZlcnZpZXcoCiAgICAgICAgICAgIFN1cnZleUlEICAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFNlcnZlckVycm9yID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIGRlbGV0ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1F1ZXN0aW9uRGVsZXRlJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgYW5kIHF1ZXN0aW9uIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25EZWxldGUoCiAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgKTsKICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvblNvcnQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249U3VydmV5RWRpdDtTdXJ2ZXlJRD0kR2V0UGFyYW17U3VydmV5SUR9I1F1ZXN0aW9uIiwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcXVlc3Rpb24gdXAKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvblVwJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgYW5kIHF1ZXN0aW9uIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Tb3J0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICk7CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25VcCgKICAgICAgICAgICAgU3VydmV5SUQgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1TdXJ2ZXlFZGl0O1N1cnZleUlEPSRHZXRQYXJhbXtTdXJ2ZXlJRH0jUXVlc3Rpb24iLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBxdWVzdGlvbiBkb3duCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUXVlc3Rpb25Eb3duJyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgYW5kIHF1ZXN0aW9uIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IG9yIHF1ZXN0aW9uIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Tb3J0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICk7CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Eb3duKAogICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVN1cnZleUVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfSNRdWVzdGlvbiIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHF1ZXN0aW9uIGVkaXQKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdRdWVzdGlvbkVkaXQnICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBhbmQgcXVlc3Rpb24gZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkgb3IgcXVlc3Rpb24hJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uRWRpdCgKICAgICAgICAgICAgU3VydmV5SUQgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcXVlc3Rpb24gc2F2ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1F1ZXN0aW9uU2F2ZScgKSB7CgogICAgICAgIG15ICRRdWVzdGlvbiAgICAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdRdWVzdGlvbicgKTsKICAgICAgICBteSAkQW5zd2VyUmVxdWlyZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQW5zd2VyUmVxdWlyZWQnICk7CgogICAgICAgIGlmICggJEFuc3dlclJlcXVpcmVkICYmICRBbnN3ZXJSZXF1aXJlZCBlcSAnTm8nICkgewogICAgICAgICAgICAkQW5zd2VyUmVxdWlyZWQgPSAwOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEFuc3dlclJlcXVpcmVkID0gMTsKICAgICAgICB9CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGFuZCBxdWVzdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgaWYgKCRRdWVzdGlvbikgewogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvblVwZGF0ZSgKICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgIFN1cnZleUlEICAgICAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbiAgICAgICA9PiAkUXVlc3Rpb24sCiAgICAgICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAkQW5zd2VyUmVxdWlyZWQsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9NYXNrUXVlc3Rpb25FZGl0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VydmVyRXJyb3J7UXVlc3Rpb25TZXJ2ZXJFcnJvcn0gPSAnU2VydmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uRWRpdCgKICAgICAgICAgICAgU3VydmV5SUQgICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgUXVlc3Rpb25JRCAgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBTZXJ2ZXJFcnJvciA9PiBcJVNlcnZlckVycm9yLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgYWRkCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQW5zd2VyQWRkJyApIHsKCiAgICAgICAgbXkgJEFuc3dlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJBbnN3ZXIiICk7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGFuZCBxdWVzdGlvbiBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBxdWVzdGlvbiEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAlU2VydmVyRXJyb3I7CiAgICAgICAgaWYgKCAkQW5zd2VyIHx8ICRBbnN3ZXIgZXEgJzAnICkgewogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJBZGQoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgIEFuc3dlciAgICAgPT4gJEFuc3dlciwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uRWRpdCgKICAgICAgICAgICAgICAgIFN1cnZleUlEICAgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlcnZlckVycm9ye0Fuc3dlclNlcnZlckVycm9yfSA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFNlbGYtPl9NYXNrUXVlc3Rpb25FZGl0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEICA9PiAkR2V0UGFyYW17UXVlc3Rpb25JRH0sCiAgICAgICAgICAgIFNlcnZlckVycm9yID0+IFwlU2VydmVyRXJyb3IsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFuc3dlciBkZWxldGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGVsc2lmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBbnN3ZXJEZWxldGUnICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSwgcXVlc3Rpb24gYW5kIGFuc3dlciBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnIHx8ICRBbnN3ZXJFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJEZWxldGUoCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBBbnN3ZXJJRCAgID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgKTsKICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJTb3J0KAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+CiAgICAgICAgICAgICAgICAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPSRHZXRQYXJhbXtTdXJ2ZXlJRH07UXVlc3Rpb25JRD0kR2V0UGFyYW17UXVlc3Rpb25JRH0jQW5zd2VyIiwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgYW5zd2VyIHVwCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQW5zd2VyVXAnICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSwgcXVlc3Rpb24gYW5kIGFuc3dlciBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnIHx8ICRBbnN3ZXJFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJTb3J0KAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICApOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlclVwKAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAkR2V0UGFyYW17QW5zd2VySUR9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4KICAgICAgICAgICAgICAgICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfTtRdWVzdGlvbklEPSRHZXRQYXJhbXtRdWVzdGlvbklEfSNBbnN3ZXIiLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgZG93bgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlckRvd24nICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSwgcXVlc3Rpb24gYW5kIGFuc3dlciBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJFF1ZXN0aW9uRXhpc3RzIG5lICdZZXMnIHx8ICRBbnN3ZXJFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5LCBxdWVzdGlvbiBvciBhbnN3ZXIhJyksCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJTb3J0KAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICApOwogICAgICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlckRvd24oCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBBbnN3ZXJJRCAgID0+ICRHZXRQYXJhbXtBbnN3ZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtTdXJ2ZXlJRD0kR2V0UGFyYW17U3VydmV5SUR9O1F1ZXN0aW9uSUQ9JEdldFBhcmFte1F1ZXN0aW9uSUR9I0Fuc3dlciIsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIGFuc3dlciBlZGl0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQW5zd2VyRWRpdCcgKSB7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5LCBxdWVzdGlvbiBhbmQgYW5zd2VyIGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUXVlc3Rpb25FeGlzdHMgbmUgJ1llcycgfHwgJEFuc3dlckV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+IFRyYW5zbGF0YWJsZSgnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXksIHF1ZXN0aW9uIG9yIGFuc3dlciEnKSwKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJFNlbGYtPl9NYXNrQW5zd2VyRWRpdCgKICAgICAgICAgICAgU3VydmV5SUQgICA9PiAkR2V0UGFyYW17U3VydmV5SUR9LAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VySUQgICA9PiAkR2V0UGFyYW17QW5zd2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBhbnN3ZXIgc2F2ZQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Fuc3dlclNhdmUnICkgewoKICAgICAgICBteSAkQW5zd2VyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIkFuc3dlciIgKTsKCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXksIHF1ZXN0aW9uIGFuZCBhbnN3ZXIgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnIHx8ICRRdWVzdGlvbkV4aXN0cyBuZSAnWWVzJyB8fCAkQW5zd2VyRXhpc3RzIG5lICdZZXMnICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gVHJhbnNsYXRhYmxlKCdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSwgcXVlc3Rpb24gb3IgYW5zd2VyIScpLAogICAgICAgICAgICAgICAgV2l0aEhlYWRlciA9PiAneWVzJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgICAgICBpZiAoICRBbnN3ZXIgfHwgJEFuc3dlciBlcSAnMCcgKSB7CiAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlclVwZGF0ZSgKICAgICAgICAgICAgICAgIEFuc3dlcklEICAgPT4gJEdldFBhcmFte0Fuc3dlcklEfSwKICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJEdldFBhcmFte1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgQW5zd2VyICAgICA9PiAkQW5zd2VyLAogICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PgogICAgICAgICAgICAgICAgICAgICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1RdWVzdGlvbkVkaXQ7U3VydmV5SUQ9JEdldFBhcmFte1N1cnZleUlEfTtRdWVzdGlvbklEPSRHZXRQYXJhbXtRdWVzdGlvbklEfSNBbnN3ZXIiCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VydmVyRXJyb3J7QW5zd2VyU2VydmVyRXJyb3J9ID0gJ1NldmVyRXJyb3InOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRTZWxmLT5fTWFza0Fuc3dlckVkaXQoCiAgICAgICAgICAgIFN1cnZleUlEICAgID0+ICRHZXRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgID0+ICRHZXRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgQW5zd2VySUQgICAgPT4gJEdldFBhcmFte0Fuc3dlcklEfSwKICAgICAgICAgICAgU2VydmVyRXJyb3IgPT4gXCVTZXJ2ZXJFcnJvciwKICAgICAgICApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcXVlc3Rpb24gb3ZlcnZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggISRHZXRQYXJhbXtTdXJ2ZXlJRH0gKSB7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIFN1cnZleUlEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgTWVzc2FnZSAgICA9PiBUcmFuc2xhdGFibGUoJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IScpLAogICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuICRTZWxmLT5fTWFza1F1ZXN0aW9uT3ZlcnZpZXcoCiAgICAgICAgU3VydmV5SUQgPT4gJEdldFBhcmFte1N1cnZleUlEfSwKICAgICk7Cn0KCnN1YiBfTWFza1F1ZXN0aW9uT3ZlcnZpZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAlU2VydmVyRXJyb3I7CiAgICBpZiAoICRQYXJhbXtTZXJ2ZXJFcnJvcn0gKSB7CiAgICAgICAgJVNlcnZlckVycm9yID0gJXsgJFBhcmFte1NlcnZlckVycm9yfSB9OwogICAgfQoKICAgIG15ICRPdXRwdXQ7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBTdXJ2ZXlJRCBpcyBnaXZlbiEnKSwKICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICk7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKAogICAgICAgIFRpdGxlICAgICA9PiBUcmFuc2xhdGFibGUoJ1N1cnZleSBFZGl0IFF1ZXN0aW9ucycpLAogICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgKTsKCiAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICMgZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIHRoZSBzdXJ2ZXkKICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICk7CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnU3VydmV5RWRpdFF1ZXN0aW9ucycsCiAgICAgICAgRGF0YSA9PiBcJVN1cnZleSwKICAgICk7CgogICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICk7CgogICAgaWYgKCAkU3VydmV5e1N0YXR1c30gJiYgJFN1cnZleXtTdGF0dXN9IGVxICdOZXcnICkgewoKICAgICAgICBteSAkQXJyYXlIYXNoUmVmID0gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICAgICA9PiAnWWVzTm8nLAogICAgICAgICAgICAgICAgVmFsdWUgICAgPT4gVHJhbnNsYXRhYmxlKCdZZXMvTm8nKSwKICAgICAgICAgICAgICAgIFNlbGVjdGVkID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdSYWRpbycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ1JhZGlvIChMaXN0KScpLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ2hlY2tib3gnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdDaGVja2JveCAoTGlzdCknKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ1RleHRhcmVhJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnVGV4dGFyZWEnKSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ05QUycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ05ldCBQcm9tb3RlciBTY29yZScpLAogICAgICAgICAgICB9LAogICAgICAgIF07CgogICAgICAgIG15ICRTZWxlY3Rpb25UeXBlID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gJEFycmF5SGFzaFJlZiwKICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAnVHlwZScsCiAgICAgICAgICAgIElEICAgICAgICAgICAgPT4gJ1R5cGUnLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICdZZXMvTm8nLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdRdWVzdGlvbiBUeXBlJyksCiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgJEFycmF5SGFzaFJlZiA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJ1llcycsCiAgICAgICAgICAgICAgICBWYWx1ZSAgICA9PiBUcmFuc2xhdGFibGUoJ1llcycpLAogICAgICAgICAgICAgICAgU2VsZWN0ZWQgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ05vJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICAgICAgfQogICAgICAgIF07CgogICAgICAgIG15ICRBbnN3ZXJSZXF1aXJlZFNlbGVjdCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgID0+ICRBcnJheUhhc2hSZWYsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJ0Fuc3dlclJlcXVpcmVkJywKICAgICAgICAgICAgSUQgICAgICAgICAgICA9PiAnQW5zd2VyUmVxdWlyZWQnLAogICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICdZZXMnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFF1ZXN0aW9uRXJyb3JDbGFzcyA9ICcnOwogICAgICAgIGlmICggJFNlcnZlckVycm9ye1F1ZXN0aW9ufSApIHsKICAgICAgICAgICAgJFF1ZXN0aW9uRXJyb3JDbGFzcyA9ICdTZXJ2ZXJFcnJvcic7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5QWRkUXVlc3Rpb24nLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFN1cnZleUlEICAgICAgICAgICAgID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25UeXBlICAgICAgICA9PiAkU2VsZWN0aW9uVHlwZSwKICAgICAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkU2VsZWN0ID0+ICRBbnN3ZXJSZXF1aXJlZFNlbGVjdCwKICAgICAgICAgICAgICAgIFF1ZXN0aW9uRXJyb3JDbGFzcyAgID0+ICRRdWVzdGlvbkVycm9yQ2xhc3MsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBzY2FsYXIgQExpc3QgKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5UXVlc3Rpb25zVGFibGUnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTdXJ2ZXlTdGF0dXNDb2x1bW4nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5RGVsZXRlQ29sdW1uJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChATGlzdCkgewogICAgICAgICAgICAgICAgbXkgJEFuc3dlckNvdW50ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyQ291bnQoCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJENsYXNzOwogICAgICAgICAgICAgICAgbXkgJENsYXNzVXA7CiAgICAgICAgICAgICAgICBteSAkQ2xhc3NEb3duOwoKICAgICAgICAgICAgICAgIGlmICggISRDb3VudGVyICkgewogICAgICAgICAgICAgICAgICAgICRDbGFzc1VwID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRDb3VudGVyID09ICQjTGlzdCApIHsKICAgICAgICAgICAgICAgICAgICAkQ2xhc3NEb3duID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU3RhdHVzID0gVHJhbnNsYXRhYmxlKCdDb21wbGV0ZScpOwoKICAgICAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1JhZGlvJyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRBbnN3ZXJDb3VudCA8IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzcyAgPSAnV2FybmluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0dXMgPSBUcmFuc2xhdGFibGUoJ0luY29tcGxldGUnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdDaGVja2JveCcgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQW5zd2VyQ291bnQgPCAxICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3MgID0gJ1dhcm5pbmcnOwogICAgICAgICAgICAgICAgICAgICAgICAkU3RhdHVzID0gVHJhbnNsYXRhYmxlKCdJbmNvbXBsZXRlJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnTlBTJyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRBbnN3ZXJDb3VudCA8IDIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzcyAgPSAnV2FybmluZyc7CiAgICAgICAgICAgICAgICAgICAgICAgICRTdGF0dXMgPSBUcmFuc2xhdGFibGUoJ0luY29tcGxldGUnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEFuc3dlclJlcXVpcmVkID0gJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9ID8gJ1llcycgOiAnTm8nOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc1JvdycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzICAgICAgICAgPT4gJFN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gJEFuc3dlclJlcXVpcmVkLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgICA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzVXAgICAgICAgID0+ICRDbGFzc1VwLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0Rvd24gICAgICA9PiAkQ2xhc3NEb3duLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU3VydmV5UXVlc3Rpb25zRGVsZXRlQnV0dG9uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRRdWVzdGlvbiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleU5vUXVlc3Rpb25zU2F2ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA9PiA1LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc1RhYmxlJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwogICAgICAgIG15ICRDb3VudGVyOwogICAgICAgIGZvciBteSAkUXVlc3Rpb24gKEBMaXN0KSB7CgogICAgICAgICAgICBteSAkQ2xhc3NVcDsKICAgICAgICAgICAgbXkgJENsYXNzRG93bjsKCiAgICAgICAgICAgIGlmICggISRDb3VudGVyICkgewogICAgICAgICAgICAgICAgJENsYXNzVXAgPSAnRGlzYWJsZWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRDb3VudGVyICYmICRDb3VudGVyID09ICQjTGlzdCApIHsKICAgICAgICAgICAgICAgICRDbGFzc0Rvd24gPSAnRGlzYWJsZWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQW5zd2VyUmVxdWlyZWQgPSAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0gPyAnWWVzJyA6ICdObyc7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1N1cnZleVF1ZXN0aW9uc1NhdmVkJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICBBbnN3ZXJSZXF1aXJlZCA9PiAkQW5zd2VyUmVxdWlyZWQsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NVcCAgICAgICAgPT4gJENsYXNzVXAsCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NEb3duICAgICAgPT4gJENsYXNzRG93biwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQ291bnRlcisrOwogICAgICAgIH0KICAgIH0KCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfTWFza1F1ZXN0aW9uRWRpdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgIGlmICggJFBhcmFte1NlcnZlckVycm9yfSApIHsKICAgICAgICAlU2VydmVyRXJyb3IgPSAleyAkUGFyYW17U2VydmVyRXJyb3J9IH07CiAgICB9CgogICAgbXkgJE91dHB1dDsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSAgICAgPT4gVHJhbnNsYXRhYmxlKCdRdWVzdGlvbiBFZGl0JyksCiAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICApOwoKICAgICMgZ2V0IHN1cnZleSBvYmplY3QKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICBTdXJ2ZXlJRCA9PiAkUGFyYW17U3VydmV5SUR9LAogICAgKTsKICAgIG15ICVRdWVzdGlvbiA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uR2V0KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gJFBhcmFte1F1ZXN0aW9uSUR9LAogICAgKTsKCiAgICBteSAkQXJyYXlIYXNoUmVmID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ1llcycsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICdObycsCiAgICAgICAgICAgIFZhbHVlID0+IFRyYW5zbGF0YWJsZSgnTm8nKSwKICAgICAgICB9CiAgICBdOwoKICAgIGlmICggJFF1ZXN0aW9ue0Fuc3dlclJlcXVpcmVkfSApIHsKICAgICAgICAkQXJyYXlIYXNoUmVmLT5bMF17U2VsZWN0ZWR9ID0gMTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRBcnJheUhhc2hSZWYtPlsxXXtTZWxlY3RlZH0gPSAxOwogICAgfQoKICAgIG15ICRBbnN3ZXJSZXF1aXJlZFNlbGVjdCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICAgPT4gJEFycmF5SGFzaFJlZiwKICAgICAgICBOYW1lICAgICAgICAgID0+ICdBbnN3ZXJSZXF1aXJlZCcsCiAgICAgICAgSUQgICAgICAgICAgICA9PiAnQW5zd2VyUmVxdWlyZWQnLAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJ1llcycsCiAgICAgICAgVHJhbnNsYXRpb24gICA9PiAxLAogICAgICAgIENsYXNzICAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgICMgcHJpbnQgdGhlIG1haW4gYm9keQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0JywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWRTZWxlY3QgPT4gJEFuc3dlclJlcXVpcmVkU2VsZWN0LAogICAgICAgICAgICAlUXVlc3Rpb24sCiAgICAgICAgICAgICVTZXJ2ZXJFcnJvciwKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoICRRdWVzdGlvbntUeXBlfSBlcSAnWWVzTm8nICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdRdWVzdGlvbkVkaXRUYWJsZScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUXVlc3Rpb25FZGl0WWVzbm8nLAogICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICRRdWVzdGlvbntUeXBlfSBlcSAnUmFkaW8nIHx8ICRRdWVzdGlvbntUeXBlfSBlcSAnQ2hlY2tib3gnIHx8ICRRdWVzdGlvbntUeXBlfSBlcSAnTlBTJyApIHsKCiAgICAgICAgbXkgJFR5cGUgPSAkUXVlc3Rpb257VHlwZX07CiAgICAgICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJMaXN0KAogICAgICAgICAgICBRdWVzdGlvbklEID0+ICRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICApOwogICAgICAgIGlmICggc2NhbGFyIEBMaXN0ICkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdRdWVzdGlvbkVkaXRUYWJsZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRTdXJ2ZXl7U3RhdHVzfSBlcSAnTmV3JyApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdRdWVzdGlvbkVkaXRUYWJsZURlbGV0ZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgICAgICAgICAgZm9yIG15ICRBbnN3ZXIyIChATGlzdCkgewogICAgICAgICAgICAgICAgICAgICRBbnN3ZXIyLT57U3VydmV5SUR9ID0gJFBhcmFte1N1cnZleUlEfTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJENsYXNzVXA7CiAgICAgICAgICAgICAgICAgICAgbXkgJENsYXNzRG93bjsKCiAgICAgICAgICAgICAgICAgICAgIyBkaXNhYmxlIHVwIGFjdGlvbiBvbiBmaXJzdCByb3cKICAgICAgICAgICAgICAgICAgICBpZiAoICEkQ291bnRlciApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENsYXNzVXAgPSAnRGlzYWJsZWQnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBkaXNhYmxlIGRvd24gYWN0aW9uIG9uIGxhc3Qgcm93CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ291bnRlciA9PSAkI0xpc3QgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzc0Rvd24gPSAnRGlzYWJsZWQnOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gIlF1ZXN0aW9uRWRpdCIgLiAkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRBbnN3ZXIyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzVXAgICA9PiAkQ2xhc3NVcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzRG93biA9PiAkQ2xhc3NEb3duLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1F1ZXN0aW9uRWRpdCcgLiAkVHlwZSAuICdEZWxldGUnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRBbnN3ZXIyLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdRdWVzdGlvbkVkaXRBZGRBbnN3ZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUXVlc3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICVTZXJ2ZXJFcnJvciwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIG15ICRDb3VudGVyOwogICAgICAgICAgICAgICAgZm9yIG15ICRBbnN3ZXIyIChATGlzdCkgewogICAgICAgICAgICAgICAgICAgICRBbnN3ZXIyLT57U3VydmV5SUR9ID0gJFBhcmFte1N1cnZleUlEfTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJENsYXNzVXA7CiAgICAgICAgICAgICAgICAgICAgbXkgJENsYXNzRG93bjsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJENvdW50ZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDbGFzc1VwID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIGlmICggJENvdW50ZXIgJiYgJENvdW50ZXIgPT0gJCNMaXN0ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2xhc3NEb3duID0gJ0Rpc2FibGVkJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJRdWVzdGlvbkVkaXQiIC4gJFR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskQW5zd2VyMn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc1VwICAgPT4gJENsYXNzVXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc0Rvd24gPT4gJENsYXNzRG93biwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnTm9BbnN3ZXJzU2F2ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA9PiAzLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdRdWVzdGlvbkVkaXRBZGRBbnN3ZXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7JVF1ZXN0aW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRRdWVzdGlvbntUeXBlfSBlcSAnVGV4dGFyZWEnICkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdRdWVzdGlvbkVkaXRUZXh0QXJlYScsCiAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgKTsKICAgIH0KICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zJywKICAgICAgICBEYXRhICAgICAgICAgPT4geyVQYXJhbX0sCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5Gb290ZXIoCiAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIF9NYXNrQW5zd2VyRWRpdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVTZXJ2ZXJFcnJvcjsKICAgIGlmICggJFBhcmFte1NlcnZlckVycm9yfSApIHsKICAgICAgICAlU2VydmVyRXJyb3IgPSAleyAkUGFyYW17U2VydmVyRXJyb3J9IH07CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkT3V0cHV0OwogICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSAgICAgPT4gVHJhbnNsYXRhYmxlKCdBbnN3ZXIgRWRpdCcpLAogICAgICAgIFR5cGUgICAgICA9PiAnU21hbGwnLAogICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgKTsKCiAgICAjIGdldCBzdXJ2ZXkgb2JqZWN0CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgIG15ICVBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJHZXQoCiAgICAgICAgQW5zd2VySUQgPT4gJFBhcmFte0Fuc3dlcklEfSwKICAgICk7CiAgICAkQW5zd2Vye1N1cnZleUlEfSA9ICRQYXJhbXtTdXJ2ZXlJRH07CgogICAgbXkgJVF1ZXN0aW9uID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25HZXQoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAkUGFyYW17UXVlc3Rpb25JRH0sCiAgICApOwogICAgJFBhcmFte1F1ZXN0aW9ufSA9ICRRdWVzdGlvbntRdWVzdGlvbn07CgogICAgIyBwcmludCB0aGUgbWFpbiB0YWJsZS4KICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0Fuc3dlckVkaXQnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlQW5zd2VyLAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICVTZXJ2ZXJFcnJvciwKICAgICAgICB9LAogICAgKTsKCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5RWRpdFF1ZXN0aW9ucycsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgIFR5cGUgPT4gJ1NtYWxsJywKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleU92ZXJ2aWV3OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgcXcoVHJhbnNsYXRhYmxlKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29tbW9uIG9iamVjdHMKICAgICV7JFNlbGZ9ID0gJVBhcmFtOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc2hvdyBvdmVydmlldwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKICAgICMgZ2V0IHNlc3Npb24gb2JqZWN0CiAgICBteSAkU2Vzc2lvbk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpOwoKICAgICMgc3RvcmUgbGFzdCBzY3JlZW4sIHVzZWQgZm9yIGJhY2stbGlua3MKICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgKTsKCiAgICAjIHN0b3JlIGxhc3Qgc2NyZWVuIG92ZXJ2aWV3CiAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgS2V5ICAgICAgID0+ICdMYXN0U2NyZWVuT3ZlcnZpZXcnLAogICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e1JlcXVlc3RlZFVSTH0sCiAgICApOwoKICAgICMgZ2V0IGNvbmZpZyBvZiBmcm9udGVuZCBtb2R1bGUKICAgIG15ICRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIlN1cnZleTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgICMgZ2V0IHNvcnRpbmcgcGFyYW1ldGVycwogICAgbXkgJFNvcnRCeSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTb3J0QnknICkKICAgICAgICB8fCAkQ29uZmlnLT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ051bWJlcic7CgogICAgIyBnZXQgb3JkZXJpbmcgcGFyYW1ldGVycwogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKQogICAgICAgIHx8ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKCiAgICAjIGludmVzdGlnYXRlIHJlZnJlc2gKICAgIG15ICRSZWZyZXNoID0gJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9ID8gNjAgKiAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX0gOiB1bmRlZjsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSAgID0+IFRyYW5zbGF0YWJsZSgnT3ZlcnZpZXcnKSwKICAgICAgICBSZWZyZXNoID0+ICRSZWZyZXNoLAogICAgKTsKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhcigpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgQ2hhbmdlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCgogICAgIyBpbml0IHN1cnZleSBzZWFyY2gKICAgIG15ICVTdXJ2ZXlTZWFyY2g7CgogICAgIyBnZXQgdXNlciBvYmplY3QKICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIGdldCBmaWx0ZXJzIHN0b3JlZCBpbiB0aGUgdXNlciBwcmVmZXJlbmNlcwogICAgbXkgJVByZWZlcmVuY2VzID0gJFVzZXJPYmplY3QtPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHN0b3JlZCBzdXJ2ZXkgc2VhcmNoCiAgICBteSAkU3RvcmVkU3VydmV5U2VhcmNoID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKS0+RGVjb2RlKAogICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2Vze1N1cnZleVNlYXJjaH0sCiAgICApOwoKICAgICMgbWVyZ2Ugc3RvcmVkIHN1cnZleSBzZWFyY2ggaWYgd2UgaGF2ZSBvbmUKICAgIGlmICgkU3RvcmVkU3VydmV5U2VhcmNoKSB7CiAgICAgICAgJVN1cnZleVNlYXJjaCA9ICV7JFN0b3JlZFN1cnZleVNlYXJjaH07CiAgICB9CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0NoYW5nZScgKSB7CgogICAgICAgICMgZ2V0IGZ1bGx0ZXh0IHNlYXJjaAogICAgICAgICRTdXJ2ZXlTZWFyY2h7V2hhdH0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRnVsbHRleHQnICkgfHwgJyc7CgogICAgICAgICMgZ2V0IHN0YXRlcwogICAgICAgIG15IEBTdGF0ZXMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnU3RhdGVzJyApOwogICAgICAgICRTdXJ2ZXlTZWFyY2h7U3RhdGVzfSA9IFxAU3RhdGVzOwoKICAgICAgICAjIGdldCBjcmVhdGUgdGltZQogICAgICAgIGlmICggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1RpbWVTZWFyY2hUeXBlJyApIGVxICdUaW1lU2xvdCcgKSB7CgogICAgICAgICAgICAkU3VydmV5U2VhcmNoe1RpbWVTbG90Q2hlY2tlZH0gICAgICA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICAgICAgICAgICRTdXJ2ZXlTZWFyY2h7Tm9SZXN0cmljdGlvbkNoZWNrZWR9ID0gJyc7CgogICAgICAgICAgICBteSAkU3VydmV5Q3JlYXRlVGltZVN0YXJ0WWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3VydmV5Q3JlYXRlVGltZVN0YXJ0WWVhcicgKTsKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdGFydE1vbnRoID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N1cnZleUNyZWF0ZVRpbWVTdGFydE1vbnRoJyApOwogICAgICAgICAgICBteSAkU3VydmV5Q3JlYXRlVGltZVN0YXJ0RGF5ICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3VydmV5Q3JlYXRlVGltZVN0YXJ0RGF5JyApOwoKICAgICAgICAgICAgbXkgJFN1cnZleUNyZWF0ZVRpbWVTdG9wWWVhciAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3VydmV5Q3JlYXRlVGltZVN0b3BZZWFyJyApOwogICAgICAgICAgICBteSAkU3VydmV5Q3JlYXRlVGltZVN0b3BNb250aCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdXJ2ZXlDcmVhdGVUaW1lU3RvcE1vbnRoJyApOwogICAgICAgICAgICBteSAkU3VydmV5Q3JlYXRlVGltZVN0b3BEYXkgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdXJ2ZXlDcmVhdGVUaW1lU3RvcERheScgKTsKCiAgICAgICAgICAgICRTdXJ2ZXlTZWFyY2h7Q3JlYXRlVGltZU5ld2VyRGF0ZX0KICAgICAgICAgICAgICAgID0gIiRTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRZZWFyLSRTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRNb250aC0kU3VydmV5Q3JlYXRlVGltZVN0YXJ0RGF5IDAwOjAwOjAwIjsKCiAgICAgICAgICAgICRTdXJ2ZXlTZWFyY2h7Q3JlYXRlVGltZU9sZGVyRGF0ZX0KICAgICAgICAgICAgICAgID0gIiRTdXJ2ZXlDcmVhdGVUaW1lU3RvcFllYXItJFN1cnZleUNyZWF0ZVRpbWVTdG9wTW9udGgtJFN1cnZleUNyZWF0ZVRpbWVTdG9wRGF5IDIzOjU5OjU5IjsKCiAgICAgICAgICAgICRTdXJ2ZXlTZWFyY2h7U3VydmV5Q3JlYXRlVGltZVN0YXJ0fSA9IHsKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdGFydFllYXIgID0+ICRTdXJ2ZXlDcmVhdGVUaW1lU3RhcnRZZWFyLAogICAgICAgICAgICAgICAgU3VydmV5Q3JlYXRlVGltZVN0YXJ0TW9udGggPT4gJFN1cnZleUNyZWF0ZVRpbWVTdGFydE1vbnRoLAogICAgICAgICAgICAgICAgU3VydmV5Q3JlYXRlVGltZVN0YXJ0RGF5ICAgPT4gJFN1cnZleUNyZWF0ZVRpbWVTdGFydERheSwKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgICRTdXJ2ZXlTZWFyY2h7U3VydmV5Q3JlYXRlVGltZVN0b3B9ID0gewogICAgICAgICAgICAgICAgU3VydmV5Q3JlYXRlVGltZVN0b3BZZWFyICA9PiAkU3VydmV5Q3JlYXRlVGltZVN0b3BZZWFyLAogICAgICAgICAgICAgICAgU3VydmV5Q3JlYXRlVGltZVN0b3BNb250aCA9PiAkU3VydmV5Q3JlYXRlVGltZVN0b3BNb250aCwKICAgICAgICAgICAgICAgIFN1cnZleUNyZWF0ZVRpbWVTdG9wRGF5ICAgPT4gJFN1cnZleUNyZWF0ZVRpbWVTdG9wRGF5LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFN1cnZleVNlYXJjaHtUaW1lU2xvdENoZWNrZWR9ICAgICAgPSAnJzsKICAgICAgICAgICAgJFN1cnZleVNlYXJjaHtOb1Jlc3RyaWN0aW9uQ2hlY2tlZH0gPSAnY2hlY2tlZD0iY2hlY2tlZCInOwogICAgICAgIH0KCiAgICAgICAgIyBzdG9yZSBsYXN0IG92ZXJ2aWV3IHNjcmVlbgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICdBY3Rpb249QWdlbnRTdXJ2ZXlPdmVydmlldycsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKS0+RW5jb2RlKAogICAgICAgICAgICBEYXRhID0+IFwlU3VydmV5U2VhcmNoLAogICAgICAgICk7CgogICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICdTdXJ2ZXlTZWFyY2gnLAogICAgICAgICAgICBWYWx1ZSAgPT4gJFZhbHVlLAogICAgICAgICk7CgogICAgfQoKICAgICMgZ2V0IHN1cnZleSBsaXN0CiAgICBteSBAU3VydmV5SURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5TdXJ2ZXlTZWFyY2goCiAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiBbJFNvcnRCeV0sCiAgICAgICAgT3JkZXJCeURpcmVjdGlvbiA9PiBbJE9yZGVyQnldLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICVTdXJ2ZXlTZWFyY2gKICAgICk7CgogICAgIyBmaW5kIG91dCB3aGljaCBjb2x1bW5zIHNob3VsZCBiZSBzaG93bgogICAgbXkgQFNob3dDb2x1bW5zOwogICAgaWYgKCAkQ29uZmlnLT57U2hvd0NvbHVtbnN9ICkgewoKICAgICAgICAjIGdldCBhbGwgcG9zc2libGUgY29sdW1ucyBmcm9tIGNvbmZpZwogICAgICAgIG15ICVQb3NzaWJsZUNvbHVtbiA9ICV7ICRDb25maWctPntTaG93Q29sdW1uc30gfTsKCiAgICAgICAgIyBnZXQgdGhlIGNvbHVtbiBuYW1lcyB0aGF0IHNob3VsZCBiZSBzaG93bgogICAgICAgIENPTFVNTk5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lICggc29ydCBrZXlzICVQb3NzaWJsZUNvbHVtbiApIHsKICAgICAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkUG9zc2libGVDb2x1bW57JE5hbWV9OwogICAgICAgICAgICBwdXNoIEBTaG93Q29sdW1ucywgJE5hbWU7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRlZmF1bHQgcGFyYW1ldGVycwogICAgbXkgJEZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CiAgICBteSAkVmlldyAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgICB8fCAnJzsKCiAgICAjIHNob3cgdGhlIGxpc3QKICAgIG15ICRMaW5rUGFnZSA9CiAgICAgICAgJ0ZpbHRlcj0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnO1NvcnRCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICkKICAgICAgICAuICc7T3JkZXJCeT0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkT3JkZXJCeSApCiAgICAgICAgLiAnOyc7CiAgICBteSAkTGlua1NvcnQgPQogICAgICAgICdGaWx0ZXI9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJzsnOwogICAgbXkgJExpbmtGaWx0ZXIgPQogICAgICAgICdTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7JzsKCiAgICAjIHNob3cgc3VydmV5IGxpc3QKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+U3VydmV5TGlzdFNob3coCiAgICAgICAgU3VydmV5SURzICAgID0+IFxAU3VydmV5SURzLAogICAgICAgIFRvdGFsICAgICAgICA9PiBzY2FsYXIgQFN1cnZleUlEcywKICAgICAgICBWaWV3ICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgRmlsdGVyTGluayAgID0+ICRMaW5rRmlsdGVyLAogICAgICAgIFRpdGxlTmFtZSAgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ092ZXJ2aWV3JyksCiAgICAgICAgVGl0bGVWYWx1ZSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU3VydmV5JyksCiAgICAgICAgRW52ICAgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICAgID0+ICRMaW5rU29ydCwKICAgICAgICBTaG93Q29sdW1ucyAgPT4gXEBTaG93Q29sdW1ucywKICAgICAgICBTb3J0QnkgICAgICAgPT4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU29ydEJ5ICksCiAgICAgICAgT3JkZXJCeSAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKSwKICAgICAgICBPdXRwdXQgICAgICAgPT4gMSwKICAgICAgICBTdXJ2ZXlTZWFyY2ggPT4gXCVTdXJ2ZXlTZWFyY2gsCiAgICApOwoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKCk7CiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleVN0YXRzOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJTdXJ2ZXk6OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3QKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRHcm91cE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKTsKCiAgICBteSAkU3VydmV5SUQgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlN1cnZleUlEIiApICB8fCAnJzsKICAgIG15ICRSZXF1ZXN0SUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiUmVxdWVzdElEIiApIHx8ICcnOwoKICAgIG15ICRTdXJ2ZXlFeGlzdHMgPSAnbm8nOwogICAgaWYgKCRTdXJ2ZXlJRCkgewogICAgICAgICRTdXJ2ZXlFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICBFbGVtZW50ICAgPT4gJ1N1cnZleScKICAgICAgICApOwogICAgfQoKICAgIG15ICRSZXF1ZXN0RXhpc3RzID0gJ25vJzsKICAgIGlmICgkUmVxdWVzdElEKSB7CiAgICAgICAgJFJlcXVlc3RFeGlzdHMgPSAkU3VydmV5T2JqZWN0LT5FbGVtZW50RXhpc3RzKAogICAgICAgICAgICBFbGVtZW50SUQgPT4gJFJlcXVlc3RJRCwKICAgICAgICAgICAgRWxlbWVudCAgID0+ICdSZXF1ZXN0JwogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdGF0cwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKCAhJFNlbGYtPntTdWJhY3Rpb259ICkgewoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgKSB7CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+Tm9QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgTWVzc2FnZSAgICA9PiAnWW91IGhhdmUgbm8gcGVybWlzc2lvbiBmb3IgdGhpcyBzdXJ2ZXkhJywKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFRpdGxlICAgICA9PiAnU3RhdHMgT3ZlcnZpZXcnLAogICAgICAgICAgICBUeXBlICAgICAgPT4gJ1NtYWxsJywKICAgICAgICAgICAgQm9keUNsYXNzID0+ICdQb3B1cCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBBZ2VudFN1cnZleVN0YXRzCiAgICAgICAgbXkgJFNob3dEZWxldGVBcnJheSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3VydmV5U3RhdHM6OlNob3dEZWxldGUnKTsKICAgICAgICBteSAkU2hvd0RlbGV0ZSAgICAgID0gMDsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNob3dEZWxldGVBcnJheSkgKSB7CgogICAgICAgICAgICAjIGdldCB1c2VyIGdyb3Vwcywgd2hlcmUgdGhlIHVzZXIgaGFzIHRoZSBydyBwcml2aWxlZ2UKICAgICAgICAgICAgbXkgJUdyb3VwcyA9ICRHcm91cE9iamVjdC0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHJldmVyc2UgZ3JvdXBzCiAgICAgICAgICAgICVHcm91cHMgPSByZXZlcnNlICVHcm91cHM7CgogICAgICAgICAgICBpZiAoIGdyZXAgeyAkR3JvdXBzeyRffSB9IEB7JFNob3dEZWxldGVBcnJheX0gKSB7CiAgICAgICAgICAgICAgICAkU2hvd0RlbGV0ZSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJpbnQgdGhlIG1haW4gdGFibGUuCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1N0YXRzJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlU3VydmV5LAogICAgICAgICAgICAgICAgU2hvd0RlbGV0ZSA9PiAkU2hvd0RlbGV0ZSwKICAgICAgICAgICAgICAgIH0KICAgICAgICApOwogICAgICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+Vm90ZUxpc3QoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwoKICAgICAgICBteSAkVGlja2V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcpOwoKICAgICAgICBteSAkQ291bnQgICAgID0gMDsKICAgICAgICBteSAkTGFzdEluZGV4ID0gc2NhbGFyIEBMaXN0IC0gMTsKCiAgICAgICAgZm9yIG15ICRWb3RlIChATGlzdCkgewogICAgICAgICAgICBteSAkQ291bnRQbHVzICA9ICRDb3VudCArIDE7CiAgICAgICAgICAgIG15ICRDb3VudE1pbnVzID0gJENvdW50IC0gMTsKICAgICAgICAgICAgaWYgKCAkQ291bnQgIT0gMCApIHsKICAgICAgICAgICAgICAgICRWb3RlLT57UHJldn0gPSAkTGlzdFskQ291bnRNaW51c10tPntSZXF1ZXN0SUR9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJENvdW50ICE9ICRMYXN0SW5kZXggKSB7CiAgICAgICAgICAgICAgICAkVm90ZS0+e05leHR9ID0gJExpc3RbJENvdW50UGx1c10tPntSZXF1ZXN0SUR9OwogICAgICAgICAgICB9CiAgICAgICAgICAgICRWb3RlLT57U3VydmV5SUR9ID0gJFN1cnZleUlEOwogICAgICAgICAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFZvdGUtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWb3RlLT57VGlja2V0TnVtYmVyfSA9ICRUaWNrZXR7VGlja2V0TnVtYmVyfTsKICAgICAgICAgICAgJFZvdGUtPntTaG93RGVsZXRlfSAgID0gJFNob3dEZWxldGU7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhdHNWb3RlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gJFZvdGUsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRTdXJ2ZXlTdGF0cycsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICApOwoKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigKICAgICAgICAgICAgVHlwZSA9PiAnU21hbGwnLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgc3RhdHMgZGV0YWlscwogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1N0YXRzRGV0YWlsJyApIHsKICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlRpY2tldE51bWJlciIgKTsKCiAgICAgICAgbXkgKCAkUHJldiwgJE5leHQsICVSZXN1bHRzICk7CgogICAgICAgICMgY2hlY2sgaWYgc3VydmV5IGV4aXN0cwogICAgICAgIGlmICggJFN1cnZleUV4aXN0cyBuZSAnWWVzJyB8fCAkUmVxdWVzdEV4aXN0cyBuZSAnWWVzJyApIHsKCiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5Ob1Blcm1pc3Npb24oCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgID0+ICdZb3UgaGF2ZSBubyBwZXJtaXNzaW9uIGZvciB0aGlzIHN1cnZleSBvciBzdGF0cyBkZXRhaWwhJywKICAgICAgICAgICAgICAgIFdpdGhIZWFkZXIgPT4gJ3llcycsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgIFRpdGxlICAgICA9PiAnU3RhdHMgRGV0YWlsJywKICAgICAgICAgICAgVHlwZSAgICAgID0+ICdTbWFsbCcsCiAgICAgICAgICAgIEJvZHlDbGFzcyA9PiAnUG9wdXAnLAogICAgICAgICk7CgogICAgICAgIG15ICVTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICApOwoKICAgICAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTdGF0c0RldGFpbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVN1cnZleSwKICAgICAgICAgICAgICAgIFRpY2tldE51bWJlciA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgR2V0IFN1cnZleSB2b3RlIGxpc3QuCiAgICAgICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgICAgICMgR2V0IHBhcmFtZXRlcnMgZm9yIHVybCAocHJldmlvdXMgYW5kIG5leHQgdm90ZSBhbmQgdGhlaXIgdGlja2V0IG51bWJlcikuCiAgICAgICAgbXkgJENvdW50ICAgICA9IDA7CiAgICAgICAgbXkgJExhc3RJbmRleCA9IHNjYWxhciBATGlzdCAtIDE7CgogICAgICAgIGZvciBteSAkUmVzdWx0Vm90ZSAoQExpc3QpIHsKCiAgICAgICAgICAgICNGaW5kcyB2b3RlIHRoYXQgaXMgdmlld2VkLgogICAgICAgICAgICBpZiAoICRSZXN1bHRWb3RlLT57UmVxdWVzdElEfSA9PSAkUmVxdWVzdElEICkgewogICAgICAgICAgICAgICAgbXkgJENvdW50UGx1cyAgPSAkQ291bnQgKyAxOwogICAgICAgICAgICAgICAgbXkgJENvdW50TWludXMgPSAkQ291bnQgLSAxOwoKICAgICAgICAgICAgICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFJlc3VsdFZvdGUtPntUaWNrZXRJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFJlc3VsdHN7VGlja2V0TnVtYmVyfSA9ICRUaWNrZXR7VGlja2V0TnVtYmVyfTsKCiAgICAgICAgICAgICAgICBpZiAoICRDb3VudCAhPSAwICkgewogICAgICAgICAgICAgICAgICAgICRQcmV2ID8gJFJlc3VsdHN7UHJldn0gPSAkUHJldiA6ICRSZXN1bHRze1ByZXZ9ID0gJExpc3RbJENvdW50TWludXNdLT57UmVxdWVzdElEfTsKICAgICAgICAgICAgICAgICAgICAkUmVzdWx0c3tQcmV2VGlja2V0TnVtYmVyfSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldE51bWJlckxvb2t1cCgKICAgICAgICAgICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJExpc3RbJENvdW50TWludXNdLT57VGlja2V0SUR9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRDb3VudCAhPSAkTGFzdEluZGV4ICkgewogICAgICAgICAgICAgICAgICAgICROZXh0ID8gJFJlc3VsdHN7TmV4dH0gPSAkTmV4dCA6ICRSZXN1bHRze05leHR9ID0gJExpc3RbJENvdW50UGx1c10tPntSZXF1ZXN0SUR9OwogICAgICAgICAgICAgICAgICAgICRSZXN1bHRze05leHRUaWNrZXROdW1iZXJ9ID0gJFRpY2tldE9iamVjdC0+VGlja2V0TnVtYmVyTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBUaWNrZXRJRCA9PiAkTGlzdFskQ291bnRQbHVzXS0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05hdkFycm93cycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICAgICAgJVJlc3VsdHMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CiAgICAgICAgZm9yIG15ICRRdWVzdGlvbiAoQFF1ZXN0aW9uTGlzdCkgewoKICAgICAgICAgICAgbXkgJENsYXNzID0gJyc7CiAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgICRDbGFzcyA9ICdUZXh0YXJlYSc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRSZXF1aXJlZFRleHQgPSAnJzsKICAgICAgICAgICAgaWYgKCAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICAkQ2xhc3MgLj0gJyBNYW5kYXRvcnknOwogICAgICAgICAgICAgICAgJFJlcXVpcmVkVGV4dCA9ICcqICc7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhdHNEZXRhaWxRdWVzdGlvbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15IEBBbnN3ZXJzOwogICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycgfHwgJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ0NoZWNrYm94JyB8fCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnTlBTJyApIHsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0OwogICAgICAgICAgICAgICAgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0KAogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RJRCAgPT4gJFJlcXVlc3RJRCwKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkUm93IChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgIG15ICVBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlcklEID0+ICRSb3ctPntWb3RlVmFsdWV9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbXkgJURhdGE7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRBbnN3ZXJ7QW5zd2VyfTsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBAQW5zd2VycywgXCVEYXRhICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnWWVzTm8nIHx8ICRRdWVzdGlvbi0+e1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CiAgICAgICAgICAgICAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICAgICAgICAgICAgICAgICAgUmVxdWVzdElEICA9PiAkUmVxdWVzdElELAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICVEYXRhOwogICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRMaXN0WzBdLT57Vm90ZVZhbHVlfTsKCiAgICAgICAgICAgICAgICAjIGNsZWFuIEhUTUwKICAgICAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyAmJiAkRGF0YXtBbnN3ZXJ9ICkgewogICAgICAgICAgICAgICAgICAgICREYXRhe0Fuc3dlcn0gPX4gc3tcQVwkaHRtbFwvdGV4dFwkXHMoLiopfXskMX14bXM7CiAgICAgICAgICAgICAgICAgICAgJERhdGF7QW5zd2VyfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICAgICAgICAgIFRleHQgICAgICAgICAgID0+ICREYXRhe0Fuc3dlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxSZXN1bHRNb2RlID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkRGF0YXtBbnN3ZXJ9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJERhdGF7QW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcHVzaCggQEFuc3dlcnMsIFwlRGF0YSApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciBteSAkUm93IChAQW5zd2VycykgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnU3RhdHNEZXRhaWxBbnN3ZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRSb3d9LAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRTdXJ2ZXlTdGF0cycsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7JVBhcmFtfSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Rm9vdGVyKAogICAgICAgICAgICBUeXBlID0+ICdTbWFsbCcsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3RhdHNWaWV3JyApIHsKCiAgICAgICAgaWYgKCAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU3VibWl0RGVsZXRlJyApICkgewoKICAgICAgICAgICAgIyBnZXQgc3VydmV5IGlkCiAgICAgICAgICAgIG15ICRTdXJ2ZXlJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdXJ2ZXlJRCcgKTsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBzdGF0cyBkZWxldGUga2V5cyBhbmQgdGFyZ2V0IG9iamVjdAogICAgICAgICAgICBteSBAUmVxdWVzdERlbGV0ZUlkZW50aWZpZXIgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KAogICAgICAgICAgICAgICAgUGFyYW0gPT4gJ1JlcXVlc3REZWxldGVJZGVudGlmaWVyJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZGVsZXRlIHZvdGUgZGF0YSBhbmQgcmVxdWVzdCBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgIGZvciBteSAkUmVxdWVzdElEIChAUmVxdWVzdERlbGV0ZUlkZW50aWZpZXIpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSB2b3RlIGRhdGEKICAgICAgICAgICAgICAgIG15ICRWb3RlRGVsZXRlID0gJFN1cnZleU9iamVjdC0+Vm90ZURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0SUQgPT4gJFJlcXVlc3RJRCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBkZWxldGUgcmVxdWVzdAogICAgICAgICAgICAgICAgbXkgJFJlcXVlc3REZWxldGUgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0RGVsZXRlKAogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RJRCA9PiAkUmVxdWVzdElELAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWRpcmVjdCB0byBzdXJ2ZXkgc3RhdHMKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KAogICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn07U3VydmV5SUQ9JFN1cnZleUlEIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpBZ2VudFN1cnZleVpvb207Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGNvbW1vbiBvYmplY3RzCiAgICAleyRTZWxmfSA9ICVQYXJhbTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJFN1cnZleUlEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gIlN1cnZleUlEIiApIHx8ICcnOwoKICAgIG15ICVKU0RhdGE7CgogICAgbXkgJFN1cnZleUV4aXN0cyA9ICdubyc7CiAgICBpZiAoJFN1cnZleUlEKSB7CiAgICAgICAgJFN1cnZleUV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgICAgIEVsZW1lbnRJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIEVsZW1lbnQgICA9PiAnU3VydmV5JwogICAgICAgICk7CiAgICB9CgogICAgIyB2aWV3IGF0dGFjaG1lbnQgZm9yIEhUTUwgZW1haWwKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdIVE1MVmlldycgKSB7CgogICAgICAgICMgZ2V0IHBhcmFtcwogICAgICAgIG15ICRTdXJ2ZXlGaWVsZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICJTdXJ2ZXlGaWVsZCIgKTsKCiAgICAgICAgIyBuZWVkZWQgcGFyYW1zCiAgICAgICAgZm9yIG15ICROZWVkZWQgKHF3KCBTdXJ2ZXlJRCBTdXJ2ZXlGaWVsZCApKSB7CiAgICAgICAgICAgIGlmICggISROZWVkZWQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZGVkIFBhcmFtOiAkTmVlZGVkISIsCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICRTdXJ2ZXlGaWVsZCBuZSAnSW50cm9kdWN0aW9uJyAmJiAkU3VydmV5RmllbGQgbmUgJ0Rlc2NyaXB0aW9uJyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBTdXJ2ZXlGaWVsZCBQYXJhbTogJFN1cnZleUZpZWxkISIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiBzdXJ2ZXkgZXhpc3RzCiAgICAgICAgaWYgKCAkU3VydmV5RXhpc3RzIG5lICdZZXMnICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIFN1cnZleUlEOiAkU3VydmV5SUQhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbGwgYXR0cmlidXRlcyBvZiB0aGUgc3VydmV5CiAgICAgICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgogICAgICAgIGlmICggJFN1cnZleXskU3VydmV5RmllbGR9ICkgewoKICAgICAgICAgICAgIyBjbGVhbiBIVE1MIGFuZCBjb252ZXJ0IHRoZSBGaWVsZCBpbiBIVE1MIChcbiAtLT48YnI+KQogICAgICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPX4gc3tcQVwkaHRtbFwvdGV4dFwkXHMoLiopfXskMX14bXM7CiAgICAgICAgICAgICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSA9ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoCiAgICAgICAgICAgICAgICBUZXh0ICAgICAgICAgICA9PiAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0sCiAgICAgICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IEhUTUwgdXRpbHMgb2JqZWN0CiAgICAgICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKCiAgICAgICAgIyBjb252ZXJ0IHRleHQgYXJlYSBmaWVsZHMgdG8gQVNDSUkKICAgICAgICAkU3VydmV5eyRTdXJ2ZXlGaWVsZH0gPSAkSFRNTFV0aWxzT2JqZWN0LT5Ub0FzY2lpKAogICAgICAgICAgICBTdHJpbmcgPT4gJFN1cnZleXskU3VydmV5RmllbGR9LAogICAgICAgICk7CgogICAgICAgICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgICAgIFN0cmluZyAgPT4gJFN1cnZleXskU3VydmV5RmllbGR9LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJFN1cnZleXskU3VydmV5RmllbGR9LAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgc3RhdHVzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU3VydmV5U3RhdHVzJyApIHsKCiAgICAgICAgIyBDaGFsbGVuZ2UgdG9rZW4gY2hlY2sgZm9yIHdyaXRlIGFjdGlvbi4KICAgICAgICAkTGF5b3V0T2JqZWN0LT5DaGFsbGVuZ2VUb2tlbkNoZWNrKCk7CgogICAgICAgIG15ICROZXdTdGF0dXMgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiTmV3U3RhdHVzIiApOwoKICAgICAgICBteSAkQWNjZXNzID0gMDsKICAgICAgICBteSAkR3JvdXBzRm9yQ2hhbmdlU3RhdHVzCiAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpDaGFuZ2VTdXJ2ZXlTdGF0dXNHcm91cHMnKTsKICAgICAgICBteSAlVXNlckdyb3VwcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpLT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgVHlwZSAgID0+ICdydycsCiAgICAgICAgKTsKICAgICAgICAlVXNlckdyb3VwcyA9IHJldmVyc2UgJVVzZXJHcm91cHM7CgogICAgICAgICMgSWYgY29uZmlnIGFycmF5IGlzIGVtcHR5LCBncm91cCBjYW4gY2hhbmdlIHN1cnZleSBzdGF0dXMuIE90aGVyd2lzZSwgY2hlY2tpbmcgcGVybWlzc2lvbnMuCiAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCRHcm91cHNGb3JDaGFuZ2VTdGF0dXMpICkgewogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICBHUk9VUFM6CiAgICAgICAgICAgIGZvciBteSAkU3VydmV5R3JvdXAgKCBAeyRHcm91cHNGb3JDaGFuZ2VTdGF0dXN9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkVXNlckdyb3Vwc3skU3VydmV5R3JvdXB9ICkgewogICAgICAgICAgICAgICAgICAgICRBY2Nlc3MgPSAxOwogICAgICAgICAgICAgICAgICAgIGxhc3QgR1JPVVBTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgICAgICBpZiAoICRTdXJ2ZXlFeGlzdHMgbmUgJ1llcycgfHwgJEFjY2VzcyA9PSAwICkgewoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPk5vUGVybWlzc2lvbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgICAgPT4gJ1lvdSBoYXZlIG5vIHBlcm1pc3Npb24gZm9yIHRoaXMgc3VydmV5IScsCiAgICAgICAgICAgICAgICBXaXRoSGVhZGVyID0+ICd5ZXMnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgYSBuZXcgc3RhdHVzCiAgICAgICAgbXkgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgICAgICAgICAgU3VydmV5SUQgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgTmV3U3RhdHVzID0+ICROZXdTdGF0dXMsCiAgICAgICAgKTsKICAgICAgICBteSAkTWVzc2FnZSA9ICcnOwogICAgICAgIGlmICggZGVmaW5lZCgkU3RhdHVzU2V0KSAmJiAkU3RhdHVzU2V0IGVxICdOb1F1ZXN0aW9uJyApIHsKICAgICAgICAgICAgJE1lc3NhZ2UgPSAnO01lc3NhZ2U9Tm9RdWVzdGlvbic7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggZGVmaW5lZCgkU3RhdHVzU2V0KSAmJiAkU3RhdHVzU2V0IGVxICdJbmNvbXBsZXRlUXVlc3Rpb24nICkgewogICAgICAgICAgICAkTWVzc2FnZSA9ICc7TWVzc2FnZT1JbmNvbXBsZXRlUXVlc3Rpb24nOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoIGRlZmluZWQoJFN0YXR1c1NldCkgJiYgJFN0YXR1c1NldCBlcSAnU3RhdHVzU2V0JyApIHsKICAgICAgICAgICAgJE1lc3NhZ2UgPSAnO01lc3NhZ2U9U3RhdHVzU2V0JzsKICAgICAgICB9CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEJE1lc3NhZ2UiLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBzdXJ2ZXkgem9vbQogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwoKICAgICMgZ2V0IHBhcmFtcwogICAgbXkgJE1lc3NhZ2UgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAiTWVzc2FnZSIgKTsKCiAgICAjIGNoZWNrIGlmIHN1cnZleSBleGlzdHMKICAgIGlmICggISRTdXJ2ZXlJRCB8fCAkU3VydmV5RXhpc3RzIG5lICdZZXMnICkgewogICAgICAgICRNZXNzYWdlID0gJztNZXNzYWdlPU5vU3VydmV5SUQnOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgIE9QID0+ICJBY3Rpb249QWdlbnRTdXJ2ZXlPdmVydmlldyRNZXNzYWdlIiwKICAgICAgICApOwogICAgfQoKICAgICMgb3V0cHV0IGhlYWRlcgogICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICBUaXRsZSA9PiAnU3VydmV5JywKICAgICk7CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAjIG91dHB1dCBtZXNzYWdlcyBpZiBzdGF0dXMgd2FzIGNoYW5nZWQKICAgIGlmICggZGVmaW5lZCgkTWVzc2FnZSkgJiYgJE1lc3NhZ2UgZXEgJ05vUXVlc3Rpb24nICkgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PiAnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBObyBxdWVzdGlvbnMgZGVmaW5lZC4nLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQoJE1lc3NhZ2UpICYmICRNZXNzYWdlIGVxICdJbmNvbXBsZXRlUXVlc3Rpb24nICkgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICBJbmZvICAgICA9PiAnQ2FuXCd0IHNldCBuZXcgc3RhdHVzISBRdWVzdGlvbnMgaW5jb21wbGV0ZS4nLAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQoJE1lc3NhZ2UpICYmICRNZXNzYWdlIGVxICdTdGF0dXNTZXQnICkgewogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Tm90aWZ5KAogICAgICAgICAgICBQcmlvcml0eSA9PiAnTm90aWNlJywKICAgICAgICAgICAgSW5mbyAgICAgPT4gJ1N0YXR1cyBjaGFuZ2VkLicsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBhbGwgYXR0cmlidXRlcyBvZiB0aGUgc3VydmV5CiAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KCBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQgKTsKICAgIG15ICVIVE1MOwoKICAgICMgY2xlYW4gSFRNTCBhbmQgY29udmVydCB0aGUgdGV4dC1hcmVhcyBpbiBIVE1MIChcbiAtLT48YnI+KQogICAgRklFTEQ6CiAgICBmb3IgbXkgJFN1cnZleUZpZWxkIChxdyggSW50cm9kdWN0aW9uIERlc2NyaXB0aW9uICkpIHsKICAgICAgICBuZXh0IEZJRUxEIGlmICEkU3VydmV5eyRTdXJ2ZXlGaWVsZH07CgogICAgICAgICRTdXJ2ZXl7JFN1cnZleUZpZWxkfSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKCiAgICAgICAgaWYgKCQxKSB7CiAgICAgICAgICAgICRIVE1MeyRTdXJ2ZXlGaWVsZH0gPSAxOwogICAgICAgIH0KCiAgICAgICAgJFN1cnZleXskU3VydmV5RmllbGR9ID0gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCgKICAgICAgICAgICAgVGV4dCAgICAgICAgICAgPT4gJFN1cnZleXskU3VydmV5RmllbGR9LAogICAgICAgICAgICBIVE1MUmVzdWx0TW9kZSA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgbnVtYmVycyBvZiByZXF1ZXN0cyBhbmQgdm90ZXMKICAgIG15ICRTZW5kUmVxdWVzdCA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RDb3VudCgKICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgVmFsaWRJRCAgPT4gJ2FsbCcsCiAgICApOwogICAgbXkgJFJlcXVlc3RDb21wbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RDb3VudCgKICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgVmFsaWRJRCAgPT4gMCwKICAgICk7CiAgICAkU3VydmV5e1NlbmRSZXF1ZXN0fSAgICAgPSAkU2VuZFJlcXVlc3Q7CiAgICAkU3VydmV5e1JlcXVlc3RDb21wbGV0ZX0gPSAkUmVxdWVzdENvbXBsZXRlOwoKICAgICMgZ2V0IHNlbGVjdGVkIHF1ZXVlcwogICAgbXkgJVF1ZXVlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpRdWV1ZScpLT5HZXRBbGxRdWV1ZXMoKTsKICAgIG15IEBRdWV1ZUxpc3QgPSBtYXAgeyAkUXVldWVzeyRffSB9IEB7ICRTdXJ2ZXl7UXVldWVzfSB9OwogICAgQFF1ZXVlTGlzdCA9IHNvcnQgeyBsYyAkYSBjbXAgbGMgJGIgfSBAUXVldWVMaXN0OwogICAgbXkgJFF1ZXVlTGlzdFN0cmluZyA9IGpvaW4gcXssIH0sIEBRdWV1ZUxpc3Q7CgogICAgbXkgJE5vUXVldWVNZXNzYWdlID0gJyc7CiAgICBpZiAoICEkUXVldWVMaXN0U3RyaW5nICkgewogICAgICAgICRRdWV1ZUxpc3RTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJy0gTm8gcXVldWUgc2VsZWN0ZWQgLScpOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgJEpTRGF0YXtIVE1MUmljaFRleHRIZWlnaHREZWZhdWx0fSA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpGcm9udGVuZDo6SFRNTFJpY2hUZXh0SGVpZ2h0RGVmYXVsdCcpIHx8IDgwOwogICAgJEpTRGF0YXtIVE1MUmljaFRleHRIZWlnaHRNYXh9ICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpGcm9udGVuZDo6SFRNTFJpY2hUZXh0SGVpZ2h0TWF4JykgICAgIHx8IDI1MDA7CgogICAgIyBwcmludCB0aGUgbWFpbiB0YWJsZS4KICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1N1cnZleVpvb20nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlU3VydmV5LAogICAgICAgICAgICBOb1F1ZXVlTWVzc2FnZSAgPT4gJE5vUXVldWVNZXNzYWdlLAogICAgICAgICAgICBRdWV1ZUxpc3RTdHJpbmcgPT4gJFF1ZXVlTGlzdFN0cmluZywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHRoZSBzZW5kIGNvbmRpdGlvbiB0aWNrZXQgdHlwZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJykgKSB7CgogICAgICAgICMgZ2V0IHNlbGVjdGVkIHRpY2tldCB0eXBlcwogICAgICAgIG15ICVUaWNrZXRUeXBlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUeXBlJyktPlR5cGVMaXN0KCk7CiAgICAgICAgbXkgQFRpY2tldFR5cGVMaXN0ID0gbWFwIHsgJFRpY2tldFR5cGVzeyRffSA/ICRUaWNrZXRUeXBlc3skX30gOiAoKSB9IEB7ICRTdXJ2ZXl7VGlja2V0VHlwZUlEc30gfTsKICAgICAgICBAVGlja2V0VHlwZUxpc3QgPSBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0gQFRpY2tldFR5cGVMaXN0OwogICAgICAgIG15ICRUaWNrZXRUeXBlTGlzdFN0cmluZyA9IGpvaW4gcXssIH0sIEBUaWNrZXRUeXBlTGlzdDsKCiAgICAgICAgaWYgKCAhJFRpY2tldFR5cGVMaXN0U3RyaW5nICkgewogICAgICAgICAgICAkVGlja2V0VHlwZUxpc3RTdHJpbmcgPSAnLSBObyB0aWNrZXQgdHlwZSBzZWxlY3RlZCAtJzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRUeXBlcycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgVGlja2V0VHlwZUxpc3RTdHJpbmcgPT4gJFRpY2tldFR5cGVMaXN0U3RyaW5nLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBpZiB0aGUgc2VuZCBjb25kaXRpb24gc2VydmljZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJykgKSB7CgogICAgICAgICMgZ2V0IHNlbGVjdGVkIHRpY2tldCB0eXBlcwogICAgICAgIG15ICVTZXJ2aWNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyktPlNlcnZpY2VMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICAgICAgbXkgQFNlcnZpY2VMaXN0ID0gbWFwIHsgJFNlcnZpY2VzeyRffSA/ICRTZXJ2aWNlc3skX30gOiAoKSB9IEB7ICRTdXJ2ZXl7U2VydmljZUlEc30gfTsKICAgICAgICBAU2VydmljZUxpc3QgPSBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0gQFNlcnZpY2VMaXN0OwogICAgICAgIG15ICRTZXJ2aWNlTGlzdFN0cmluZyA9IGpvaW4gcXssIH0sIEBTZXJ2aWNlTGlzdDsKCiAgICAgICAgaWYgKCAhJFNlcnZpY2VMaXN0U3RyaW5nICkgewogICAgICAgICAgICAkU2VydmljZUxpc3RTdHJpbmcgPSAnLSBObyB0aWNrZXQgc2VydmljZSBzZWxlY3RlZCAtJzsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdUaWNrZXRTZXJ2aWNlcycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU2VydmljZUxpc3RTdHJpbmcgPT4gJFNlcnZpY2VMaXN0U3RyaW5nLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBydW4gc3VydmV5IG1lbnUgbW9kdWxlcwogICAgbXkgJE1lbnVNb2R1bGVDb25maWcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJE1lbnVNb2R1bGVDb25maWcpICkgewogICAgICAgIG15ICVNZW51cyAgID0gJXskTWVudU1vZHVsZUNvbmZpZ307CiAgICAgICAgbXkgJENvdW50ZXIgPSAwOwogICAgICAgIE1FTlU6CiAgICAgICAgZm9yIG15ICRNZW51ICggc29ydCBrZXlzICVNZW51cyApIHsKCiAgICAgICAgICAgICMgbWVudSBTYXRzRGV0YWlscyBuZWVkcyB0byBoYXZlIGEgY29tcGxldGUgcmVxdWVzdAogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBkZWZpbmVkICRNZW51c3skTWVudX0tPntBY3Rpb259CiAgICAgICAgICAgICAgICAmJiAkTWVudXN7JE1lbnV9LT57QWN0aW9ufSBlcSAnQWdlbnRTdXJ2ZXlTdGF0cycKICAgICAgICAgICAgICAgICYmICEkUmVxdWVzdENvbXBsZXRlCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgTUVOVTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoICRNZW51c3skTWVudX0tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkT2JqZWN0ID0gJE1lbnVzeyRNZW51fS0+e01vZHVsZX0tPm5ldygKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBjbGFzc2VzCiAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9ICkgewoKICAgICAgICAgICAgICAgICAgICBpZiAoICRNZW51c3skTWVudX0tPntUYXJnZXR9IGVxICdQb3BVcCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRNZW51c3skTWVudX0tPntDbGFzc30gPSAnQXNQb3B1cCc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJE1lbnVzeyRNZW51fS0+e1RhcmdldH0gZXEgJ0JhY2snICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWVudXN7JE1lbnV9LT57Q2xhc3N9ID0gJ0hpc3RvcnlCYWNrJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBydW4gbW9kdWxlCiAgICAgICAgICAgICAgICAkQ291bnRlciA9ICRPYmplY3QtPlJ1bigKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgU3VydmV5ICA9PiB7JVN1cnZleX0sCiAgICAgICAgICAgICAgICAgICAgQ291bnRlciA9PiAkQ291bnRlciwKICAgICAgICAgICAgICAgICAgICBDb25maWcgID0+ICRNZW51c3skTWVudX0sCiAgICAgICAgICAgICAgICAgICAgTWVudUlEICA9PiAnTWVudScgLiAkTWVudSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIG91dHB1dCB0aGUgcG9zc2libGUgc3RhdHVzIG1lbnUKICAgIG15ICVOZXdTdGF0dXMgPSAoCiAgICAgICAgQ2hhbmdlU3RhdHVzID0+ICctIENoYW5nZSBTdGF0dXMgLScsCiAgICAgICAgTWFzdGVyICAgICAgID0+ICdNYXN0ZXInLAogICAgICAgIFZhbGlkICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgIEludmFsaWQgICAgICA9PiAnSW52YWxpZCcsCgogICAgKTsKCiAgICBpZiAoICRTdXJ2ZXl7U3RhdHVzfSBlcSAnTmV3JyApIHsKICAgICAgICBkZWxldGUgJE5ld1N0YXR1c3tJbnZhbGlkfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIGRlbGV0ZSAkTmV3U3RhdHVzeyAkU3VydmV5e1N0YXR1c30gfTsKICAgIH0KCiAgICBteSAkTmV3U3RhdHVzU3RyID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgTmFtZSAgICAgICA9PiAnTmV3U3RhdHVzJywKICAgICAgICBJRCAgICAgICAgID0+ICdOZXdTdGF0dXMnLAogICAgICAgIERhdGEgICAgICAgPT4gXCVOZXdTdGF0dXMsCiAgICAgICAgU2VsZWN0ZWRJRCA9PiAnQ2hhbmdlU3RhdHVzJywKICAgICAgICBUaXRsZSAgICAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTmV3IFN0YXR1cycpLAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+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
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpNb2R1bGVzOjpQdWJsaWNTdXJ2ZXk7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7fTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBjb21tb24gb2JqZWN0cwogICAgJXskU2VsZn0gPSAlUGFyYW07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJE91dHB1dDsKCiAgICBteSAlQW5zd2VyczsKICAgIG15ICVFcnJvcnM7CiAgICBteSBAUXVlc3Rpb25MaXN0OwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3QKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CiAgICBteSAkUGFyYW1PYmplY3QgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgcHVibGljIHN1cnZleSB2b3RlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUHVibGljU3VydmV5Vm90ZScgKSB7CiAgICAgICAgbXkgJFB1YmxpY1N1cnZleUtleSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQdWJsaWNTdXJ2ZXlLZXknICk7CgogICAgICAgICMgZ2V0IHN1cnZleSBmcm9tIHB1YmxpYyBrZXkKICAgICAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+UHVibGljU3VydmV5R2V0KAogICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICApOwogICAgICAgIGlmICggJFN1cnZleXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgICAgIEBRdWVzdGlvbkxpc3QgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkxpc3QoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5e1N1cnZleUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkUXVlc3Rpb24gKEBRdWVzdGlvbkxpc3QpIHsKICAgICAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1llc05vJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkUHVibGljU3VydmV5Vm90ZTEgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKAogICAgICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiUHVibGljU3VydmV5Vm90ZTFbJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH1dIgogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICggISRQdWJsaWNTdXJ2ZXlWb3RlMSB8fCAhbGVuZ3RoICRQdWJsaWNTdXJ2ZXlWb3RlMSApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH17J0Fuc3dlciByZXF1aXJlZCd9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9ID0gJFB1YmxpY1N1cnZleVZvdGUxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnUmFkaW8nICkgewogICAgICAgICAgICAgICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlWb3RlMiA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICJQdWJsaWNTdXJ2ZXlWb3RlMlskUXVlc3Rpb24tPntRdWVzdGlvbklEfV0iCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAhJFB1YmxpY1N1cnZleVZvdGUyIHx8ICFsZW5ndGggJFB1YmxpY1N1cnZleVZvdGUyICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfXsnQW5zd2VyIHJlcXVpcmVkJ30gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gPSAkUHVibGljU3VydmV5Vm90ZTI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdDaGVja2JveCcgKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJMaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9CiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRBbnN3ZXIgKEBBbnN3ZXJMaXN0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlWb3RlMyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbSA9PiAiUHVibGljU3VydmV5Vm90ZTNbJEFuc3dlci0+e0Fuc3dlcklEfV0iCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFB1YmxpY1N1cnZleVZvdGUzICYmICRQdWJsaWNTdXJ2ZXlWb3RlMyBlcSAnWWVzJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQHsgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfSwgJEFuc3dlci0+e0Fuc3dlcklEfTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICRRdWVzdGlvbi0+e0Fuc3dlclJlcXVpcmVkfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhZGVmaW5lZCAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSBuZSAnQVJSQVknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIUB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICAkRXJyb3JzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9eydBbnN3ZXIgcmVxdWlyZWQnfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnVGV4dGFyZWEnICkgewogICAgICAgICAgICAgICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlWb3RlNCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICJQdWJsaWNTdXJ2ZXlWb3RlNFskUXVlc3Rpb24tPntRdWVzdGlvbklEfV0iCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiByaWNoIHRleHQgaXMgZW5hYmxlZAogICAgICAgICAgICAgICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQdWJsaWNTdXJ2ZXlWb3RlNCA9ICggbGVuZ3RoICRQdWJsaWNTdXJ2ZXlWb3RlNCApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJcJGh0bWwvdGV4dFwkICRQdWJsaWNTdXJ2ZXlWb3RlNCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogJyc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgJFF1ZXN0aW9uLT57QW5zd2VyUmVxdWlyZWR9CiAgICAgICAgICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAgICAgICAgICggISRQdWJsaWNTdXJ2ZXlWb3RlNCB8fCAhbGVuZ3RoICRQdWJsaWNTdXJ2ZXlWb3RlNCApCiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcnJvcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH17J0Fuc3dlciByZXF1aXJlZCd9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gPSAkUHVibGljU3VydmV5Vm90ZTQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdOUFMnICkgewogICAgICAgICAgICAgICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlWb3RlNSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oCiAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtID0+ICJQdWJsaWNTdXJ2ZXlWb3RlNVskUXVlc3Rpb24tPntRdWVzdGlvbklEfV0iCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUXVlc3Rpb24tPntBbnN3ZXJSZXF1aXJlZH0KICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCAhJFB1YmxpY1N1cnZleVZvdGU1IHx8ICFsZW5ndGggJFB1YmxpY1N1cnZleVZvdGU1ICkKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVycm9yc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfXsnQW5zd2VyIHJlcXVpcmVkJ30gPSAxOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gPSAkUHVibGljU3VydmV5Vm90ZTU7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgSWYgd2UgZGlkbid0IGhhdmUgZXJyb3JzLCBqdXN0IHNhdmUgdGhlIGFuc3dlcnMKICAgICAgICAgICAgaWYgKCAhc2NhbGFyIGtleXMgJUVycm9ycyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkUXVlc3Rpb24gKEBRdWVzdGlvbkxpc3QpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdZZXNObycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY0Fuc3dlclNldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVm90ZVZhbHVlICAgICAgID0+ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY0Fuc3dlclNldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVm90ZVZhbHVlICAgICAgID0+ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdDaGVja2JveCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0KICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHJlZiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSBlcSAnQVJSQVknCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBAeyAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyICggQHsgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEICAgICAgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZvdGVWYWx1ZSAgICAgICA9PiAkQW5zd2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnVGV4dGFyZWEnICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5QdWJsaWNBbnN3ZXJTZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZvdGVWYWx1ZSAgICAgICA9PiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnTlBTJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEICAgICAgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IHN1cnZleSByZXF1ZXN0IGFzIGludmFsaWQKICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUludmFsaWRTZXQoCiAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICdTdXJ2ZXknLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHByaW50IHRoZSBtYWluIHRhYmxlLgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+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+ICdQdWJsaWNBbnN3ZXJZZXNObycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgJVNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbi0+e1R5cGV9IGVxICdSYWRpbycgKSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNBbnN3ZXJSYWRpbycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICV7JFF1ZXN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JUZXh0ID0+ICRFcnJvclRleHQgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICRDbGFzcywKICAgICAgICAgICAgICAgICAgICAgICAgUmVxdWlyZWRUZXh0ID0+ICRSZXF1aXJlZFRleHQsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBteSBAQW5zd2VyTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBmb3IgbXkgJEFuc3dlciAoQEFuc3dlckxpc3QpIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJFNlbGVjdGVkID0gJyc7CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICYmICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IGVxICRBbnN3ZXItPntBbnN3ZXJJRH0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlclJhZGlvYicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskQW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlclNlbGVjdGVkID0+ICRTZWxlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ0NoZWNrYm94JyApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlckNoZWNrYm94JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUXVlc3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIG15IEBBbnN3ZXJMaXN0ID0gJFN1cnZleU9iamVjdC0+QW5zd2VyTGlzdCgKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIGZvciBteSAkQW5zd2VyIChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgIG15ICRTZWxlY3RlZCA9ICcnOwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfQogICAgICAgICAgICAgICAgICAgICAgICAmJiByZWYgJEFuc3dlcnN7ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9IH0gZXEgJ0FSUkFZJwogICAgICAgICAgICAgICAgICAgICAgICAmJiBAeyAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICYmIHNjYWxhciBncmVwIHsgJF8gZXEgJEFuc3dlci0+e0Fuc3dlcklEfSB9CiAgICAgICAgICAgICAgICAgICAgICAgIEB7ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IH0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGVjdGVkID0gJ2NoZWNrZWQ9ImNoZWNrZWQiJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlckNoZWNrYm94YicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskQW5zd2VyfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlclNlbGVjdGVkID0+ICRTZWxlY3RlZCwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uLT57VHlwZX0gZXEgJ1RleHRhcmVhJyApIHsKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICRBbnN3ZXJzeyAkUXVlc3Rpb24tPntRdWVzdGlvbklEfSB9IHx8ICcnOwogICAgICAgICAgICAgICAgJFZhbHVlID1+IHMvXlwkaHRtbFwvdGV4dFwkXHMvLzsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1B1YmxpY0Fuc3dlclRleHRhcmVhJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJXskUXVlc3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvclRleHQgPT4gJEVycm9yVGV4dCB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICBSZXF1aXJlZFRleHQgPT4gJFJlcXVpcmVkVGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHJpY2ggdGV4dCBpcyBlbmFibGVkCiAgICAgICAgICAgICAgICBpZiAoICRMYXlvdXRPYmplY3QtPntCcm93c2VyUmljaFRleHR9ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyU2V0UmljaFRleHRQYXJhbWV0ZXJzKAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb24tPntUeXBlfSBlcSAnTlBTJyApIHsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNBbnN3ZXJOUFMnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAleyRRdWVzdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yVGV4dCA9PiAkRXJyb3JUZXh0IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgICAgIFJlcXVpcmVkVGV4dCA9PiAkUmVxdWlyZWRUZXh0LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgbXkgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJMaXN0KAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgZm9yIG15ICRBbnN3ZXIgKEBBbnN3ZXJMaXN0KSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRTZWxlY3RlZCA9ICcnOwogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZCAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfQogICAgICAgICAgICAgICAgICAgICAgICAmJiAkQW5zd2Vyc3sgJFF1ZXN0aW9uLT57UXVlc3Rpb25JRH0gfSBlcSAkQW5zd2VyLT57QW5zd2VySUR9CiAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTZWxlY3RlZCA9ICdjaGVja2VkPSJjaGVja2VkIic7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdQdWJsaWNBbnN3ZXJOUFNiJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAleyRBbnN3ZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyU2VsZWN0ZWQgPT4gJFNlbGVjdGVkLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUHVibGljU3VydmV5TWVzc2FnZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTWVzc2FnZVR5cGUgICA9PiBUcmFuc2xhdGFibGUoJ1N1cnZleSBFcnJvciEnKSwKICAgICAgICAgICAgICAgIE1lc3NhZ2VIZWFkZXIgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIHN1cnZleSBrZXkuJyksCiAgICAgICAgICAgICAgICBNZXNzYWdlICAgICAgID0+IFRyYW5zbGF0YWJsZSgKICAgICAgICAgICAgICAgICAgICAnVGhlIGluc2VydGVkIHN1cnZleSBrZXkgaXMgaW52YWxpZCwgaWYgeW91IGZvbGxvd2VkIGEgbGluayBtYXliZSB0aGlzIGlzIG9ic29sZXRlIG9yIGJyb2tlbi4nCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ1B1YmxpY1N1cnZleScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgIH0sCiAgICApOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgIHJldHVybiAkT3V0cHV0Owp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6U3VydmV5OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBTdXJ2ZXlMaXN0U2hvdygpCgpSZXR1cm5zIGEgbGlzdCBvZiBzdXJ2ZXlzIGxpc3Qgd2l0aCBwYWdpbmF0aW9uLgoKVGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvIEw8S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dDo6VGlja2V0OjpUaWNrZXRMaXN0U2hvdygpPgppbiBGPEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXQvVGlja2V0LnBtPi4KCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+U3VydmV5TGlzdFNob3coCiAgICAgICAgU3VydmV5SURzICA9PiAkU3VydmV5SURzUmVmLCAgICAgICAgICAgICAgICAgICAgICAjIHRvdGFsIGxpc3Qgb2Ygc3VydmV5cyBpZHMsIHRoYXQgY2FuIGJlIGxpc3RlZAogICAgICAgIFRvdGFsICAgICAgPT4gc2NhbGFyIEB7ICRTdXJ2ZXlJRHNSZWYgfSwgICAgICAgICAgIyB0b3RhbCBudW1iZXIgb2YgbGlzdCBpdGVtcywgY2hhbmdlcyBpbiB0aGlzIGNhc2UKICAgICAgICBWaWV3ICAgICAgID0+ICRTZWxmLT57Vmlld30sICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwsIHRoZSBkZWZhdWx0IHZhbHVlIGlzICdTbWFsbCcKICAgICAgICBGaWx0ZXIgICAgID0+ICdBbGwnLAogICAgICAgIEZpbHRlcnMgICAgPT4gXCVOYXZCYXJGaWx0ZXIsCiAgICAgICAgRmlsdGVyTGluayA9PiAkTGlua0ZpbHRlciwKICAgICAgICBUaXRsZU5hbWUgID0+ICdPdmVydmlldzogU3VydmV5JywKICAgICAgICBUaXRsZVZhbHVlID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICBFbnYgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgPT4gJExpbmtQYWdlLAogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlMaXN0U2hvdyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgdGFrZSBvYmplY3QgcmVmIHRvIGxvY2FsLCByZW1vdmUgaXQgZnJvbSAlUGFyYW0gKHByZXZlbnQgbWVtb3J5IGxlYWspCiAgICBteSAkRW52ID0gJFBhcmFte0Vudn07CiAgICBkZWxldGUgJFBhcmFte0Vudn07CgogICAgbXkgJUpTRGF0YTsKCiAgICAjIGxvb2t1cCBsYXRlc3QgdXNlZCB2aWV3IG1vZGUKICAgIGlmICggISRQYXJhbXtWaWV3fSAmJiAkU2VsZi0+eyAnVXNlclN1cnZleU92ZXJ2aWV3JyAuICRFbnYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFBhcmFte1ZpZXd9ID0gJFNlbGYtPnsgJ1VzZXJTdXJ2ZXlPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgc2V0IGZyb250ZW5kCiAgICBteSAkRnJvbnRlbmQgPSAkUGFyYW17RnJvbnRlbmR9IHx8ICdBZ2VudCc7CgogICAgIyBzZXQgZGVmYXVsdCB2aWV3IG1vZGUgdG8gJ3NtYWxsJwogICAgbXkgJFZpZXcgPSAkUGFyYW17Vmlld30gfHwgJ1NtYWxsJzsKCiAgICAjIHN0b3JlIGxhdGVzdCB2aWV3IG1vZGUKICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICBLZXkgICAgICAgPT4gJ1VzZXJTdXJ2ZXlPdmVydmlldycgLiAkRW52LT57QWN0aW9ufSwKICAgICAgICBWYWx1ZSAgICAgPT4gJFZpZXcsCiAgICApOwoKICAgICMgZ2V0IG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGdldCBiYWNrZW5kIGZyb20gY29uZmlnCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3Jyk7CiAgICBpZiAoICEkQmFja2VuZHMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdOZWVkIGNvbmZpZyBvcHRpb24gU3VydmV5OjpGcm9udGVuZDo6T3ZlcnZpZXcnLAogICAgICAgICk7CiAgICB9CgogICAgIyBjaGVjayBmb3IgaGFzaC1yZWYKICAgIGlmICggcmVmICRCYWNrZW5kcyBuZSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdDb25maWcgb3B0aW9uIFN1cnZleTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3IG5lZWRzIHRvIGJlIGEgSEFTSCByZWYhJywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgZm9yIGNvbmZpZyBrZXkKICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKICAgICAgICByZXR1cm4gJFNlbGYtPkZhdGFsRXJyb3IoCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gIk5vIGNvbmZpZyBvcHRpb24gZm91bmQgZm9yIHRoZSB2aWV3ICckVmlldychIiwKICAgICAgICApOwogICAgfQoKICAgICMgbmF2aWdhdGlvbiBiYXIKICAgIG15ICRTdGFydEhpdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oCiAgICAgICAgUGFyYW0gPT4gJ1N0YXJ0SGl0JywKICAgICkgfHwgMTsKCiAgICAjIGdldCBwZXJzb25hbCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXkgPSAnVXNlclN1cnZleU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CiAgICBteSAkR3JvdXAgICAgICAgICAgICAgICAgICAgPSAnU3VydmV5T3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKCiAgICAjIGNoZWNrIHN0YXJ0IG9wdGlvbiwgaWYgaGlnaGVyIHRoZW4gZWxlbWVudHMgYXZhaWxhYmxlLCBzZXQKICAgICMgaXQgdG8gdGhlIGxhc3Qgb3ZlcnZpZXcgcGFnZSAoVGhhbmtzIHRvIFN0ZWZhbiBTY2htaWR0ISkKICAgIGlmICggJFN0YXJ0SGl0ID4gJFBhcmFte1RvdGFsfSApIHsKICAgICAgICBteSAkUGFnZXMgPSBpbnQoICggJFBhcmFte1RvdGFsfSAvICRQYWdlU2hvd24gKSArIDAuOTk5OTkgKTsKICAgICAgICAkU3RhcnRIaXQgPSAoICggJFBhZ2VzIC0gMSApICogJFBhZ2VTaG93biApICsgMTsKICAgIH0KCiAgICAjIGdldCBkYXRhIHNlbGVjdGlvbgogICAgbXkgJURhdGE7CiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpOwogICAgaWYgKCAkQ29uZmlnICYmICRDb25maWctPnskR3JvdXB9ICYmICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gKSB7CiAgICAgICAgJURhdGEgPSAleyAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9IH07CiAgICB9CgogICAgIyBzZXQgcGFnZSBsaW1pdCBhbmQgYnVpbGQgcGFnZSBuYXZpZ2F0aW9uCiAgICBteSAkTGltaXQgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+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+ICdPdmVydmlld05hdkJhcicsCiAgICAgICAgRGF0YSA9PiB7JVBhcmFtfSwKICAgICk7CgogICAgIyByZXR1cm4gY29udGVudCBpZiBhdmFpbGFibGUKICAgIHJldHVybiAkT3V0cHV0UmF3Owp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU1lbnU6OkdlbmVyaWM7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06Okdyb3VwJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKKTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgVXNlcklEIHBhcmFtCiAgICAkU2VsZi0+e1VzZXJJRH0gPSAkUGFyYW17VXNlcklEfSB8fCBkaWUgIkdvdCBubyBVc2VySUQhIjsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleSEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ3JhbnQgYWNjZXNzIGJ5IGRlZmF1bHQKICAgIG15ICRBY2Nlc3MgPSAxOwoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgZ2V0IGdyb3VwcwogICAgbXkgJEFjdGlvbiAgID0gJFBhcmFte0NvbmZpZ30tPntBY3Rpb259OwogICAgbXkgJEdyb3Vwc1JvID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyktPnskQWN0aW9ufS0+e0dyb3VwUm99IHx8IFtdOwogICAgbXkgJEdyb3Vwc1J3ID0gJENvbmZpZ09iamVjdC0+R2V0KCdGcm9udGVuZDo6TW9kdWxlJyktPnskQWN0aW9ufS0+e0dyb3VwfSB8fCBbXTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgcGVybWlzc2lvbgogICAgaWYgKCAkQWN0aW9uICYmICggQHskR3JvdXBzUm99IHx8IEB7JEdyb3Vwc1J3fSApICkgewoKICAgICAgICAjIGRlbnkgYWNjZXNzIGJ5IGRlZmF1bHQsIHdoZW4gdGhlcmUgYXJlIGdyb3VwcyB0byBjaGVjawogICAgICAgICRBY2Nlc3MgPSAwOwoKICAgICAgICAjIGNoZWNrIHJlYWQgb25seSBncm91cHMKICAgICAgICBST0dST1VQOgogICAgICAgIGZvciBteSAkR3JvdXBSbyAoIEB7JEdyb3Vwc1JvfSApIHsKICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkR3JvdXBSbywKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAncm8nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBST0dST1VQIGlmICEkSGFzUGVybWlzc2lvbjsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBST0dST1VQOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayByZWFkIHdyaXRlIGdyb3VwcwogICAgICAgIFJXR1JPVVA6CiAgICAgICAgZm9yIG15ICRSd0dyb3VwICggQHskR3JvdXBzUnd9ICkgewoKICAgICAgICAgICAgbXkgJEhhc1Blcm1pc3Npb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvbkNoZWNrKAogICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEdyb3VwTmFtZSA9PiAkUndHcm91cCwKICAgICAgICAgICAgICAgIFR5cGUgICAgICA9PiAncncnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBSV0dST1VQIGlmICEkSGFzUGVybWlzc2lvbjsKCiAgICAgICAgICAgICMgc2V0IGFjY2VzcwogICAgICAgICAgICAkQWNjZXNzID0gMTsKICAgICAgICAgICAgbGFzdCBSV0dST1VQOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFBhcmFte0NvdW50ZXJ9IGlmICEkQWNjZXNzOwoKICAgICMgb3V0cHV0IG1lbnUgaXRlbQogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnTWVudUl0ZW0nLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICV7ICRQYXJhbXtTdXJ2ZXl9IH0sCiAgICAgICAgICAgICV7ICRQYXJhbXtDb25maWd9IH0sCiAgICAgICAgfSwKICAgICk7CgogICAgJFBhcmFte0NvdW50ZXJ9Kys7CgogICAgcmV0dXJuICRQYXJhbXtDb3VudGVyfTsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU92ZXJ2aWV3OjpTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBVc2VySUQgcGFyYW0KICAgICRTZWxmLT57VXNlcklEfSA9ICRQYXJhbXtVc2VySUR9IHx8IGRpZSAiR290IG5vIFVzZXJJRCEiOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZVNob3duIFN0YXJ0SGl0KSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgbmVlZCBTdXJ2ZXlJRHMKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRHN9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCB0aGUgU3VydmV5SURzIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzdG9yZSB0aGUgU3VydmV5SURzIGxvY2FsbHkKICAgIG15IEBJRHMgPSBAeyAkUGFyYW17U3VydmV5SURzfSB9OwoKICAgICMgY2hlY2sgU2hvd0NvbHVtbnMgcGFyYW1ldGVyCiAgICBteSBAU2hvd0NvbHVtbnM7CiAgICBpZiAoICRQYXJhbXtTaG93Q29sdW1uc30gJiYgcmVmICRQYXJhbXtTaG93Q29sdW1uc30gZXEgJ0FSUkFZJyApIHsKICAgICAgICBAU2hvd0NvbHVtbnMgPSBAeyAkUGFyYW17U2hvd0NvbHVtbnN9IH07CiAgICB9CgogICAgbXkgJE91dHB1dCA9ICcnOwoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgIyBzaG93IHN1cnZleXMgaWYgdGhlcmUgYXJlIHNvbWUKICAgIGlmIChASURzKSB7CgogICAgICAgICMgYnVpbGQgY29sdW1uIGhlYWRlciBibG9ja3MKICAgICAgICAjIGN1cnJlbnRseSBzb3J0aW5nIGlzIG5vdCBpbXBsZW1lbnRlZCBvbiBzdXJ2ZXksIGxlYXZlIHRoZSBjb2RlIGZvciBmdXR1cmUgaW1wbGVtZW50YXRpb24KICAgICAgICBpZiAoQFNob3dDb2x1bW5zKSB7CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uIChAU2hvd0NvbHVtbnMpIHsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSBuZWVkZWQgdmFyaWFibGVzCiAgICAgICAgICAgICAgICBteSAkQ1NTID0gJ092ZXJ2aWV3SGVhZGVyJzsKICAgICAgICAgICAgICAgIG15ICRPcmRlckJ5OwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb3JyZWN0IFNldCBDU1MgY2xhc3MgYW5kIG9yZGVyIGJ5IGxpbmsKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gJiYgKCAkUGFyYW17U29ydEJ5fSBlcSAkQ29sdW1uICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeX0gJiYgKCAkUGFyYW17T3JkZXJCeX0gZXEgJ1VwJyApICkgewogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdEb3duJzsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAnVXAnOwogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICdVcCc7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdXRwdXQgZWFjaCBoZWFkZXIKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uIC4gJ0hlYWRlcicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAkQ291bnRlciA9IDA7CgogICAgICAgICMgZ2V0IHN1cnZleSBvYmplY3QKICAgICAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICAgICBJRDoKICAgICAgICBmb3IgbXkgJElEIChASURzKSB7CiAgICAgICAgICAgICRDb3VudGVyKys7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRDb3VudGVyID49ICRQYXJhbXtTdGFydEhpdH0KICAgICAgICAgICAgICAgICYmICRDb3VudGVyIDwgKCAkUGFyYW17UGFnZVNob3dufSArICRQYXJhbXtTdGFydEhpdH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgIyBnZXQgc3VydmV5IGRhdGEKICAgICAgICAgICAgICAgIG15ICVEYXRhID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkSUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgSUQgaWYgISVEYXRhOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgcmVjb3JkIGJsb2NrCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgYnVpbGQgY29sdW1uIHJlY29yZCBibG9ja3MKICAgICAgICAgICAgICAgIGlmIChAU2hvd0NvbHVtbnMpIHsKICAgICAgICAgICAgICAgICAgICBDT0xVTU46CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBTaG93Q29sdW1ucykgewogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyBsaW5rcyBpZiBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rU3RhcnQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVEYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnIC4gJENvbHVtbiAuICdMaW5rRW5kJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgaWYgdGhlcmUgYXJlIG5vIHN1cnZleXMgdG8gc2hvdywgYSBubyBkYXRhIGZvdW5kIG1lc3NhZ2UgaXMgZGlzcGxheWVkIGluIHRoZSB0YWJsZQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05vRGF0YUZvdW5kTXNnJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBUb3RhbENvbHVtbnMgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgdXNlIHRlbXBsYXRlCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50U3VydmV5T3ZlcnZpZXdTbWFsbCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBUeXBlICAgICAgICA9PiAkU2VsZi0+e1ZpZXdUeXBlfSwKICAgICAgICAgICAgQ29sdW1uQ291bnQgPT4gc2NhbGFyIEBTaG93Q29sdW1ucywKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgY2xhc3M9Ik1haW5Cb3ggQVJJQVJvbGVNYWluIEZvcm1TY3JlZW4gTm9TaWRlYmFyIj4KCiAgICA8aDE+WyUgVHJhbnNsYXRlKCJDcmVhdGUgTmV3IFN1cnZleSIpIHwgaHRtbCAlXTwvaDE+CiAgICA8cCBjbGFzcz0iQXN0ZXJpc2tFeHBsYW5hdGlvbiI+WyUgVHJhbnNsYXRlKCJBbGwgZmllbGRzIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXNrICgqKSBhcmUgbWFuZGF0b3J5LiIpIHwgaHRtbCAlXTwvcD4KCiAgICA8ZGl2IGNsYXNzPSJDb250ZW50Q29sdW1uIj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IlN1cnZleSIgaWQ9IlN1cnZleSIgY2xhc3M9IlZhbGlkYXRlIFByZXZlbnRNdWx0aXBsZVN1Ym1pdHMiPgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlN1cnZleU5ldyIgLz4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMiIGlkPSJDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzIiB2YWx1ZT0iWyUgRGF0YS5DdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzICVdIiAvPgoKICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIj4KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iVGl0bGUiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5UaXRsZVNlcnZlckVycm9yIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIkludHJvZHVjdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iSW50cm9kdWN0aW9uIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkludHJvZHVjdGlvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0RmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IkludHJvZHVjdGlvbiIgbmFtZT0iSW50cm9kdWN0aW9uIiBuYW1lPSJJbnRyb2R1Y3Rpb24iIGNsYXNzPSJSaWNoVGV4dCBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLkludHJvZHVjdGlvblNlcnZlckVycm9yIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU3VydmV5IEludHJvZHVjdGlvbiIpIHwgaHRtbCAlXSIgcm93cz0iMTUiIGNvbHM9IlslIENvbmZpZygiVGlja2V0OjpGcm9udGVuZDo6VGV4dEFyZWFOb3RlIikgJV0iPlslIERhdGEuSW50cm9kdWN0aW9uICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbnRyb2R1Y3Rpb24iKSAlXQoKICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOb3RpZmljYXRpb25TZW5kZXIiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiU2VuZGVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9Ik5vdGlmaWNhdGlvblNlbmRlciIgbmFtZT0iTm90aWZpY2F0aW9uU2VuZGVyIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzUwcGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5Ob3RpZmljYXRpb25TZW5kZXJTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHZhbHVlPSJbJSBEYXRhLk5vdGlmaWNhdGlvblNlbmRlciB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJOb3RpZmljYXRpb25TdWJqZWN0Ij48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlN1YmplY3QiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iTm90aWZpY2F0aW9uU3ViamVjdCIgbmFtZT0iTm90aWZpY2F0aW9uU3ViamVjdCIgdHlwZT0idGV4dCIgY2xhc3M9Ilc1MHBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuTm90aWZpY2F0aW9uU3ViamVjdFNlcnZlckVycm9yIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuTm90aWZpY2F0aW9uU3ViamVjdCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiTm90aWZpY2F0aW9uQm9keSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTm90aWZpY2F0aW9uQm9keSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJCb2R5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iTm90aWZpY2F0aW9uQm9keSIgbmFtZT0iTm90aWZpY2F0aW9uQm9keSIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuTm90aWZpY2F0aW9uQm9keVNlcnZlckVycm9yIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm90aWZpY2F0aW9uIEJvZHkiKSB8IGh0bWwgJV0iIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZSIpICVdIj5bJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHkgfCBodG1sICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOb3RpZmljYXRpb25Cb2R5IikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iUXVldWVzIj5bJSBUcmFuc2xhdGUoIlF1ZXVlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5RdWV1ZVN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFR5cGVzIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJUaWNrZXRUeXBlSURzIj5bJSBUcmFuc2xhdGUoIlRpY2tldCBUeXBlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaWNrZXRUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldFR5cGVzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFNlcnZpY2VzIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSURzIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2VzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNlcnZpY2VTdHJnICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiVGlja2V0U2VydmljZXMiKSAlXQoKClslIFJlbmRlckJsb2NrU3RhcnQoIkludGVybmFsRGVzY3JpcHRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkRlc2NyaXB0aW9uIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkludGVybmFsIERlc2NyaXB0aW9uIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBpZD0iRGVzY3JpcHRpb24iIG5hbWU9IkRlc2NyaXB0aW9uIiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5EZXNjcmlwdGlvblNlcnZlckVycm9yIHwgaHRtbCAlXSIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiSW50ZXJuYWwgRGVzY3JpcHRpb24iKSB8IGh0bWwgJV0iIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZSIpICVdIj5bJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiSW50ZXJuYWxEZXNjcmlwdGlvbiIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJHZW5lcmljRXJyb3IiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlslIERhdGEuSXRlbU5hbWUgfCBodG1sICVdIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJHZW5lcmljRXJyb3IiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiR2VuZXJpY1NlcnZlckVycm9yIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLkl0ZW1OYW1lIHwgaHRtbCAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiR2VuZXJpY1NlcnZlckVycm9yIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNlbmRDdXN0b21lclVzZXJDb25kaXRpb25zIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDdXN0b21lclVzZXJDb25kaXRpb25zIj5bJSBUcmFuc2xhdGUoIkN1c3RvbWVyIGNvbmRpdGlvbnMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIEhpZGRlbiIgaWQ9IlRlbXBsYXRlTGV2ZWwxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJDdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkRhdGFJdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBSZW1vdmVCdXR0b25DdXN0b21lckZpZWxkIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iRXZlbiBMYXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5OZWdhdGU6PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIwIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJDdXN0b21lclVzZXJDb25kaXRpb25zQ2hlY2tib3giIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzUwcGMiIHZhbHVlPSIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoZSBmaWVsZCBuZWVkcyB0byBiZSBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBhIGxpdGVyYWwgd29yZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIFJlbW92ZUJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIEhpZGRlbiI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gQWRkQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24iPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlbmRDdXN0b21lclVzZXJDb25kaXRpb25zIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ3JlYXRlIikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2hlY2stc3F1YXJlLW8iPjwvaT4gWyUgVHJhbnNsYXRlKCJDcmVhdGUiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIFdpZGdldFNpbXBsZSBDb2xsYXBzZWQgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiVGFnIFJlZmVyZW5jZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIllvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdGFncyIpIHwgaHRtbCAlXTo8L3A+CiAgICAgICAgICAgICAgICAgICAgPGRsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfVElDS0VUXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiT3B0aW9ucyBvZiB0aGUgdGlja2V0IGRhdGEiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiZS4gZy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjb2RlPiZsdDtPVFJTX1RJQ0tFVF9UaWNrZXROdW1iZXImZ3Q7LCAmbHQ7T1RSU19USUNLRVRfVGlja2V0SUQmZ3Q7LCAmbHQ7T1RSU19USUNLRVRfUXVldWUmZ3Q7LCAmbHQ7T1RSU19USUNLRVRfU3RhdGUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfQ1VTVE9NRVJfREFUQV8qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk9wdGlvbnMgb2YgdGhlIGN1cnJlbnQgY3VzdG9tZXIgdXNlciBkYXRhIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y29kZT4mbHQ7T1RSU19DVVNUT01FUl9EQVRBX1VzZXJGaXJzdG5hbWUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfQ09ORklHXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ29uZmlnIG9wdGlvbnMiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiZS4gZy4iKSB8IGh0bWwgJV0gPGNvZGU+Jmx0O09UUlNfQ09ORklHX0h0dHBUeXBlJmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJQdWJsaWMgc3VydmV5IGtleSIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJlLiBnLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNvZGU+Jmx0O09UUlNfUHVibGljU3VydmV5S2V5Jmd0OzwvY29kZT4pLgogICAgICAgICAgICAgICAgICAgICAgICA8L2RkPgogICAgICAgICAgICAgICAgICAgIDwvZGw+CgogICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJFeGFtcGxlIHN1cnZleSIpIHwgaHRtbCAlXToKICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIHJvd3M9IjUiIGNvbHM9IjYwIiBuYW1lPSJUbXBTdXJ2ZXkiIGRpc2FibGVkPSJkaXNhYmxlZCI+ClslIFRyYW5zbGF0ZSgiVGhlIGN1cnJlbnQgdGlja2V0IHN0YXRlIGlzIikgfCBodG1sICVdOiAiJmx0O09UUlNfVElDS0VUX1N0YXRlJmd0OyIKClslIFRyYW5zbGF0ZSgiWW91ciBlbWFpbCBhZGRyZXNzIGlzIikgfCBodG1sICVdOiAiJmx0O09UUlNfQ1VTVE9NRVJfVXNlckVtYWlsJmd0OyIKICAgICAgICAgICAgICAgICAgICA8L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJTdXJ2ZXkiIGlkPSJTdXJ2ZXkiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTdXJ2ZXlTYXZlIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkN1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMiIGlkPSJDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzIiB2YWx1ZT0iWyUgRGF0YS5DdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzICVdIiAvPgoKICAgIDxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCBHZW5lcmFsIEluZm8iKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZShDb25maWcoIlN1cnZleTo6SG9vayIpKSB8IGh0bWwgJV1bJSBEYXRhLlN1cnZleU51bWJlciB8IGh0bWwgJV0gLSBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXTwvaDE+CiAgICAgICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICA8cD4KICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KCiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9Ik1hbmRhdG9yeSIgZm9yPSJUaXRsZSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iVGl0bGUiIG5hbWU9IlRpdGxlIiB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzc1cGMgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5UaXRsZVNlcnZlckVycm9yIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnRyb2R1Y3Rpb24iKSAlXQogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iSW50cm9kdWN0aW9uIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkludHJvZHVjdGlvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUmljaFRleHRGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIGlkPSJJbnRyb2R1Y3Rpb24iIG5hbWU9IkludHJvZHVjdGlvbiIgbmFtZT0iSW50cm9kdWN0aW9uIiBjbGFzcz0iUmljaFRleHQgVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5JbnRyb2R1Y3Rpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlN1cnZleSBJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV0iIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZSIpICVdIj5bJSBEYXRhLkludHJvZHVjdGlvbiAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkludHJvZHVjdGlvbiIpICVdCgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTm90aWZpY2F0aW9uU2VuZGVyIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlNlbmRlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iTm90aWZpY2F0aW9uU2VuZGVyIiBuYW1lPSJOb3RpZmljYXRpb25TZW5kZXIiIHR5cGU9InRleHQiIGNsYXNzPSJXNzVwYyBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5vdGlmaWNhdGlvblNlbmRlclNlcnZlckVycm9yIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuTm90aWZpY2F0aW9uU2VuZGVyIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9Ik5vdGlmaWNhdGlvblN1YmplY3QiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiU3ViamVjdCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpZD0iTm90aWZpY2F0aW9uU3ViamVjdCIgbmFtZT0iTm90aWZpY2F0aW9uU3ViamVjdCIgdHlwZT0idGV4dCIgY2xhc3M9Ilc3NXBjIFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuTm90aWZpY2F0aW9uU3ViamVjdFNlcnZlckVycm9yIHwgaHRtbCAlXSIgdmFsdWU9IlslIERhdGEuTm90aWZpY2F0aW9uU3ViamVjdCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIk5vdGlmaWNhdGlvbkJvZHkiKSAlXQogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJNYW5kYXRvcnkiIGZvcj0iTm90aWZpY2F0aW9uQm9keSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJCb2R5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9Ik5vdGlmaWNhdGlvbkJvZHkiIG5hbWU9Ik5vdGlmaWNhdGlvbkJvZHkiIGNsYXNzPSJSaWNoVGV4dCBWYWxpZGF0ZV9SZXF1aXJlZCBbJSBEYXRhLk5vdGlmaWNhdGlvbkJvZHlTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIk5vdGlmaWNhdGlvbiBCb2R5IikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5Ob3RpZmljYXRpb25Cb2R5IHwgaHRtbCAlXTwvdGV4dGFyZWE+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk5vdGlmaWNhdGlvbkJvZHkiKSAlXQoKICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlF1ZXVlcyI+WyUgVHJhbnNsYXRlKCJRdWV1ZXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlF1ZXVlU3RyaW5nICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFR5cGVzIikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IlRpY2tldFR5cGVJRHMiPlslIFRyYW5zbGF0ZSgiVGlja2V0IFR5cGVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5UaWNrZXRUeXBlU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRUeXBlcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJUaWNrZXRTZXJ2aWNlcyIpICVdCiAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTZXJ2aWNlSURzIj5bJSBUcmFuc2xhdGUoIlNlcnZpY2VzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZXJ2aWNlU3RyZyAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJUaWNrZXRTZXJ2aWNlcyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJJbnRlcm5hbERlc2NyaXB0aW9uIikgJV0KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IkRlc2NyaXB0aW9uIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIkludGVybmFsIERlc2NyaXB0aW9uIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSaWNoVGV4dEZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgaWQ9IkRlc2NyaXB0aW9uIiBuYW1lPSJEZXNjcmlwdGlvbiIgY2xhc3M9IlJpY2hUZXh0IFZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuRGVzY3JpcHRpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkludGVybmFsIERlc2NyaXB0aW9uIikgfCBodG1sICVdIiByb3dzPSIxNSIgY29scz0iWyUgQ29uZmlnKCJUaWNrZXQ6OkZyb250ZW5kOjpUZXh0QXJlYU5vdGUiKSAlXSI+WyUgRGF0YS5EZXNjcmlwdGlvbiB8IGh0bWwgJV08L3RleHRhcmVhPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJJbnRlcm5hbERlc2NyaXB0aW9uIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlNlbmRDdXN0b21lclVzZXJDb25kaXRpb25zIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJDdXN0b21lclVzZXJDb25kaXRpb25zIj5bJSBUcmFuc2xhdGUoIkN1c3RvbWVyIGNvbmRpdGlvbnMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0ZpZWxkc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJQbGVhc2UgY2hvb3NlIGEgQ3VzdG9tZXIgcHJvcGVydHkgdG8gYWRkIGEgY29uZGl0aW9uLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIEhpZGRlbiIgaWQ9IlRlbXBsYXRlTGV2ZWwxIj4KICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJDdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkRhdGFJdGVtIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSWNvbiBSZW1vdmVCdXR0b25DdXN0b21lckZpZWxkIj48aSBjbGFzcz0iZmEgZmEtbWludXMtc3F1YXJlLW8iPjwvaT48L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN0cm9uZz48L3N0cm9uZz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iRXZlbiBMYXN0Ij4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5OZWdhdGU6PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIHZhbHVlPSIwIiAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJDdXN0b21lclVzZXJDb25kaXRpb25zQ2hlY2tib3giIHR5cGU9ImNoZWNrYm94IiB2YWx1ZT0iMCIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBjbGFzcz0iVzUwcGMiIHZhbHVlPSIiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoZSBmaWVsZCBuZWVkcyB0byBiZSBhIHZhbGlkIHJlZ3VsYXIgZXhwcmVzc2lvbiBvciBhIGxpdGVyYWwgd29yZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJY29uIFJlbW92ZUJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uIEhpZGRlbiI+PGkgY2xhc3M9ImZhIGZhLW1pbnVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9Ikljb24gQWRkQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24iPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZS1vIj48L2k+PC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlbmRDdXN0b21lclVzZXJDb25kaXRpb25zIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkdlbmVyaWNFcnJvciIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLkl0ZW1OYW1lIHwgaHRtbCAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkdlbmVyaWNFcnJvciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZXJ2ZXJFcnJvciIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJbJSBEYXRhLkl0ZW1OYW1lIHwgaHRtbCAlXSIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlcnZlckVycm9yIikgJV0KCiAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIlVwZGF0ZSIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrLXNxdWFyZS1vIj48L2k+IFslIFRyYW5zbGF0ZSgiVXBkYXRlIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZm9ybT4KPGRpdiBjbGFzcz0iRmllbGQgV2lkZ2V0U2ltcGxlIENvbGxhcHNlZCBTcGFjaW5nIFdpZGdldFNwYWNpbmdSaWdodCI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldEFjdGlvbiBUb2dnbGUiPgogICAgICAgICAgICA8YSBocmVmPSIjIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+CiAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2FyZXQtZG93biI+PC9pPgogICAgICAgICAgICA8L2E+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiVGFnIFJlZmVyZW5jZSIpIHwgaHRtbCAlXTwvaDI+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIllvdSBjYW4gdXNlIHRoZSBmb2xsb3dpbmcgdGFncyIpIHwgaHRtbCAlXTo8L3A+CiAgICAgICAgPGRsPgogICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfVElDS0VUXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiT3B0aW9ucyBvZiB0aGUgdGlja2V0IGRhdGEiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiZS4gZy4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDxjb2RlPiZsdDtPVFJTX1RJQ0tFVF9UaWNrZXROdW1iZXImZ3Q7LCAmbHQ7T1RSU19USUNLRVRfVGlja2V0SUQmZ3Q7LCAmbHQ7T1RSU19USUNLRVRfUXVldWUmZ3Q7LCAmbHQ7T1RSU19USUNLRVRfU3RhdGUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfQ1VTVE9NRVJfREFUQV8qJmd0OzwvY29kZT48L2R0PgogICAgICAgICAgICA8ZGQ+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIk9wdGlvbnMgb2YgdGhlIGN1cnJlbnQgY3VzdG9tZXIgdXNlciBkYXRhIikgfCBodG1sICVdIChbJSBUcmFuc2xhdGUoImUuIGcuIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8Y29kZT4mbHQ7T1RSU19DVVNUT01FUl9EQVRBX1VzZXJGaXJzdG5hbWUmZ3Q7PC9jb2RlPikuCiAgICAgICAgICAgIDwvZGQ+CgogICAgICAgICAgICA8ZHQ+PGNvZGU+Jmx0O09UUlNfQ09ORklHXyomZ3Q7PC9jb2RlPjwvZHQ+CiAgICAgICAgICAgIDxkZD4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQ29uZmlnIG9wdGlvbnMiKSB8IGh0bWwgJV0gKFslIFRyYW5zbGF0ZSgiZS4gZy4iKSB8IGh0bWwgJV0gPGNvZGU+Jmx0O09UUlNfQ09ORklHX0h0dHBUeXBlJmd0OzwvY29kZT4pLgogICAgICAgICAgICA8L2RkPgoKICAgICAgICAgICAgPGR0Pjxjb2RlPiZsdDtPVFJTX1B1YmxpY1N1cnZleUtleSZndDs8L2NvZGU+PC9kdD4KICAgICAgICAgICAgPGRkPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJQdWJsaWMgc3VydmV5IGtleSIpIHwgaHRtbCAlXSAoWyUgVHJhbnNsYXRlKCJlLiBnLiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPGNvZGU+Jmx0O09UUlNfUHVibGljU3VydmV5S2V5Jmd0OzwvY29kZT4pLgogICAgICAgICAgICA8L2RkPgogICAgICAgIDwvZGw+CgogICAgICAgIDxwIGNsYXNzPSJTcGFjaW5nVG9wIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJFeGFtcGxlIHN1cnZleSIpIHwgaHRtbCAlXToKICAgICAgICA8L3A+CiAgICAgICAgPHRleHRhcmVhIHJvd3M9IjUiIGNvbHM9IjYwIiBuYW1lPSJUbXBTdXJ2ZXkiIGRpc2FibGVkPSJkaXNhYmxlZCI+ClslIFRyYW5zbGF0ZSgiVGhlIGN1cnJlbnQgdGlja2V0IHN0YXRlIGlzIikgfCBodG1sICVdOiAiJmx0O09UUlNfVElDS0VUX1N0YXRlJmd0OyIKClslIFRyYW5zbGF0ZSgiWW91ciBlbWFpbCBhZGRyZXNzIGlzIikgfCBodG1sICVdOiAiJmx0O09UUlNfQ1VTVE9NRVJfVXNlckVtYWlsJmd0OyIKICAgICAgICA8L3RleHRhcmVhPgogICAgPC9kaXY+CjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RWRpdFF1ZXN0aW9ucyIpICVdCjxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQgUXVlc3Rpb25zIikgfCBodG1sICVdOiBbJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgfCBodG1sICVdIC0gWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gxPgogICAgICAgIDxwIGNsYXNzPSJBc3Rlcmlza0V4cGxhbmF0aW9uIj5bJSBUcmFuc2xhdGUoIkFsbCBmaWVsZHMgbWFya2VkIHdpdGggYW4gYXN0ZXJpc2sgKCopIGFyZSBtYW5kYXRvcnkuIikgfCBodG1sICVdPC9wPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDwvZGl2PgoKICAgICAgICA8dWwgY2xhc3M9IkJyZWFkQ3J1bWIiPgogICAgICAgICAgICA8bGk+WyUgVHJhbnNsYXRlKCJZb3UgYXJlIGhlcmUiKSB8IGh0bWwgJV06PC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTdXJ2ZXkgUXVlc3Rpb25zIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L2xpPgogICAgICAgIDwvdWw+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlBZGRRdWVzdGlvbiIpICVdCgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b21NZWRpdW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiQWRkIFF1ZXN0aW9uIikgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJTdXJ2ZXlRdWVzdGlvbnMiIGlkPSJTdXJ2ZXlRdWVzdGlvbnMiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlF1ZXN0aW9uQWRkIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwgU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iTWFuZGF0b3J5IiBmb3I9IlF1ZXN0aW9uIj48c3BhbiBjbGFzcz0iTWFya2VyIj4qPC9zcGFuPiBbJSBUcmFuc2xhdGUoIlR5cGUgdGhlIHF1ZXN0aW9uIikgfCBodG1sICVdOiZuYnNwOzwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iUXVlc3Rpb24iIG5hbWU9IlF1ZXN0aW9uIiBjbGFzcz0iVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5RdWVzdGlvbkVycm9yQ2xhc3MgfCBodG1sICVdICIgc2l6ZT0iNjAiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlNlbGVjdGlvblR5cGUgJV0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJRdWVzdGlvbkVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IlF1ZXN0aW9uU2VydmVyRXJyb3IiIGNsYXNzPSJUb29sdGlwRXJyb3JNZXNzYWdlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQW5zd2VyUmVxdWlyZWQiPiBbJSBUcmFuc2xhdGUoIkFuc3dlciByZXF1aXJlZCIpIHwgaHRtbCAlXTombmJzcDs8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFuc3dlclJlcXVpcmVkU2VsZWN0ICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPSJDYWxsRm9yQWN0aW9uIFBsdXMiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQWRkIikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtcGx1cy1zcXVhcmUiPjwvaT4gWyUgVHJhbnNsYXRlKCJBZGQiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5QWRkUXVlc3Rpb24iKSAlXQoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSBRdWVzdGlvbnMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleU5vUXVlc3Rpb25zU2F2ZWQiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBpZD0iU3VydmV5RW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gcXVlc3Rpb25zIHNhdmVkIGZvciB0aGlzIHN1cnZleS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5Tm9RdWVzdGlvbnNTYXZlZCIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlRdWVzdGlvbnNUYWJsZSIpICVdCiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJRdWVzdGlvbiIpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlR5cGUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVN0YXR1c0NvbHVtbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTdGF0dXMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlTdGF0dXNDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiQW5zd2VyIFJlcXVpcmVkIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJEb3duIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlEZWxldGVDb2x1bW4iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5RGVsZXRlQ29sdW1uIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVF1ZXN0aW9uc1NhdmVkIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iID5bJSBEYXRhLlF1ZXN0aW9uIHwgdHJ1bmNhdGUoOTApIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuVHlwZSkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLkFuc3dlclJlcXVpcmVkKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dVcFslIERhdGEuQ2xhc3NVcCB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1RdWVzdGlvblVwO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duWyUgRGF0YS5DbGFzc0Rvd24gfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25Eb3duO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5UXVlc3Rpb25zU2F2ZWQiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5UXVlc3Rpb25zUm93IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIFslIERhdGEuQ2xhc3MgfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPlslIERhdGEuUXVlc3Rpb24gfCB0cnVuY2F0ZSg3MCkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5UeXBlKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5TdGF0dXMpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5BbnN3ZXJSZXF1aXJlZCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBbJSBEYXRhLkNsYXNzVXAgfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25VcDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd0Rvd25bJSBEYXRhLkNsYXNzRG93biB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1RdWVzdGlvbkRvd247U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlRdWVzdGlvbnNEZWxldGVCdXR0b24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIFF1ZXN0aW9uRGVsZXRlIiBocmVmPSIjIiBkYXRhLXF1ZXJ5LXN0cmluZz0iQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRGVsZXRlO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtdHJhc2gtbyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVF1ZXN0aW9uc0RlbGV0ZUJ1dHRvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJTdXJ2ZXlRdWVzdGlvbnNSb3ciKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5UXVlc3Rpb25zVGFibGUiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiV2hlbiB5b3UgZmluaXNoIHRvIGVkaXQgdGhlIHN1cnZleSBxdWVzdGlvbnMganVzdCBjbG9zZSB0aGlzIHNjcmVlbi4iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCBQcmltYXJ5IENhbGxGb3JBY3Rpb24iIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgd2luZG93IikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtdGltZXMiPjwvaT4gWyUgVHJhbnNsYXRlKCJDbG9zZSB0aGlzIHdpbmRvdyIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUVkaXRRdWVzdGlvbnMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0IikgJV0KPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiRWRpdCBRdWVzdGlvbiIpIHwgaHRtbCAlXTogWyUgVHJhbnNsYXRlKERhdGEuUXVlc3Rpb24pIHwgaHRtbCAlXTwvaDE+CiAgICAgICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiQWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV0iID5bJSBUcmFuc2xhdGUoImdvIGJhY2sgdG8gcXVlc3Rpb25zIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDx1bCBjbGFzcz0iQnJlYWRDcnVtYiI+CiAgICAgICAgICAgIDxsaT5bJSBUcmFuc2xhdGUoIllvdSBhcmUgaGVyZSIpIHwgaHRtbCAlXTo8L2xpPgogICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiU3VydmV5IFF1ZXN0aW9ucyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJRdWVzdGlvbjoiKSB8IGh0bWwgJV0gWyUgRGF0YS5RdWVzdGlvbiB8IGh0bWwgJV0KICAgICAgICAgICAgPC9saT4KICAgICAgICA8L3VsPgoKICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkVkaXQgUXVlc3Rpb24iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9IlN1cnZleVF1ZXN0aW9uIiBpZD0iU3VydmV5UXVlc3Rpb24iIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlF1ZXN0aW9uU2F2ZSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJRdWVzdGlvbklEIiB2YWx1ZT0iWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJRdWVzdGlvbiIgY2xhc3M9Ik1hbmRhdG9yeSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJRdWVzdGlvbiIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNjAiIG5hbWU9IlF1ZXN0aW9uIiBpZD0iUXVlc3Rpb24iIHZhbHVlPSJbJSBEYXRhLlF1ZXN0aW9uIHwgaHRtbCAlXSIgY2xhc3M9IlZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuUXVlc3Rpb25TZXJ2ZXJFcnJvciB8IGh0bWwgJV0iIC8+CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iUXVlc3Rpb25FcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiVGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJRdWVzdGlvblNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iQW5zd2VyUmVxdWlyZWQiPiBbJSBUcmFuc2xhdGUoIkFuc3dlciByZXF1aXJlZCIpIHwgaHRtbCAlXTombmJzcDs8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLkFuc3dlclJlcXVpcmVkU2VsZWN0ICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzID0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdHlwZT0ic3VibWl0IiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJTYXZlIikgfCBodG1sICVdIj4gPHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrLXNxdWFyZS1vIj48L2k+IFslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KCiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b21NZWRpdW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiUG9zc2libGUgQW5zd2VycyBGb3IiKSB8IGh0bWwgJV06IFslIFRyYW5zbGF0ZShEYXRhLlR5cGUpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0QWRkQW5zd2VyIikgJV0KICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBuYW1lPSJBbnN3ZXJBZGQiIGlkPSJBbnN3ZXJBZGQiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IkFuc3dlckFkZCIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJRdWVzdGlvbklEIiB2YWx1ZT0iWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWwiPgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJBbnN3ZXIiIGNsYXNzPSJNYW5kYXRvcnkiPjxzcGFuIGNsYXNzPSJNYXJrZXIiPio8L3NwYW4+IFslIFRyYW5zbGF0ZSgiQWRkIEFuc3dlciIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkFuc3dlciIgbmFtZT0iQW5zd2VyIiBzaXplPSI2MCIgY2xhc3M9IlZhbGlkYXRlX1JlcXVpcmVkIFslIERhdGEuQW5zd2VyU2VydmVyRXJyb3IgfCBodG1sICVdICIvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iQ2FsbEZvckFjdGlvbiBQbHVzIiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXSI+IDxzcGFuPjxpIGNsYXNzPSJmYSBmYS1wbHVzLXNxdWFyZSI+PC9pPiBbJSBUcmFuc2xhdGUoIkFkZCIpIHwgaHRtbCAlXTwvYnV0dG9uPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkFuc3dlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9IkFuc3dlclNlcnZlckVycm9yIiBjbGFzcz0iVG9vbHRpcEVycm9yTWVzc2FnZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlRoaXMgZmllbGQgaXMgcmVxdWlyZWQuIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdEFkZEFuc3dlciIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0Fuc3dlcnNTYXZlZCIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wIiBpZD0iU3VydmV5RW1wdHlNZXNzYWdlU21hbGwiPgogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gYW5zd2VycyBzYXZlZCBmb3IgdGhpcyBxdWVzdGlvbi4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiTm9BbnN3ZXJzU2F2ZWQiKSAlXQoKClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFRhYmxlIikgJV0KICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz0iRGF0YVRhYmxlIFNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgICAgIDx0aGVhZD4KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPiBbJSBUcmFuc2xhdGUoIkRlc2NyaXB0aW9uIikgfCBodG1sICVdIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+IFslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV0gPC90aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4gWyUgVHJhbnNsYXRlKCJEb3duIikgfCBodG1sICVdIDwvdGg+ClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFRhYmxlRGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4gWyUgVHJhbnNsYXRlKCJEZWxldGUiKSB8IGh0bWwgJV0gPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlF1ZXN0aW9uRWRpdFRhYmxlRGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgICAgICAgICA8L3RoZWFkPgogICAgICAgICAgICAgICAgICAgIDx0Ym9keT4KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdFJhZGlvIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRWRpdDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPiBbJSBEYXRhLkFuc3dlciB8IHRydW5jYXRlKDkwKSB8IGh0bWwgJV0gPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd1VwWyUgRGF0YS5DbGFzc1VwIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlclVwO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLXVwIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIlVwIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dEb3duWyUgRGF0YS5DbGFzc0Rvd24gfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRG93bjtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRvd24iKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0UmFkaW9EZWxldGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFuc3dlckRlbGV0ZSIgaHJlZj0iIyIgZGF0YS1xdWVyeS1zdHJpbmc9IkFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJEZWxldGU7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRSYWRpb0RlbGV0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRSYWRpbyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXROUFMiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJFZGl0O1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+IFslIERhdGEuQW5zd2VyIHwgdHJ1bmNhdGUoOTApIHwgaHRtbCAlXSA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93VXBbJSBEYXRhLkNsYXNzVXAgfCBodG1sICVdIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyVXA7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd0Rvd25bJSBEYXRhLkNsYXNzRG93biB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJEb3duO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJRdWVzdGlvbkVkaXROUFNEZWxldGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFuc3dlckRlbGV0ZSIgaHJlZj0iIyIgZGF0YS1xdWVyeS1zdHJpbmc9IkFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJEZWxldGU7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRyYXNoLW8iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRGVsZXRlIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXROUFNEZWxldGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0TlBTIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdENoZWNrYm94IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRWRpdDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPlslIERhdGEuQW5zd2VyIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dVcFslIERhdGEuQ2xhc3NVcCB8IGh0bWwgJV0iIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1YmFjdGlvbj1BbnN3ZXJVcDtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdO1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO0Fuc3dlcklEPVslIERhdGEuQW5zd2VySUQgfCB1cmkgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJVcCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93RG93blslIERhdGEuQ2xhc3NEb3duIHwgaHRtbCAlXSIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPUFuc3dlckRvd247U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtBbnN3ZXJJRD1bJSBEYXRhLkFuc3dlcklEIHwgdXJpICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEb3duIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlF1ZXN0aW9uRWRpdENoZWNrYm94RGVsZXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBbnN3ZXJEZWxldGUiIGhyZWY9IiMiIGRhdGEtcXVlcnktc3RyaW5nPSJBY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QW5zd2VyRGVsZXRlO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UXVlc3Rpb25JRD1bJSBEYXRhLlF1ZXN0aW9uSUQgfCB1cmkgJV07QW5zd2VySUQ9WyUgRGF0YS5BbnN3ZXJJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS10cmFzaC1vIj48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJJbnZpc2libGVUZXh0Ij5bJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0Q2hlY2tib3hEZWxldGUiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0Q2hlY2tib3giKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0WWVzbm8iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+IFslIFRyYW5zbGF0ZSgiWWVzIikgfCBodG1sICVdIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IkFzQmxvY2sgQXJyb3dVcERpc2FibGVkIiBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tdXAiPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiVXAiKSB8IGh0bWwgJV08L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd0Rvd25EaXNhYmxlZCIgaHJlZj0iIyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jaGV2cm9uLWRvd24iPjwvaT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRG93biIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICA8L3RyPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+IFslIFRyYW5zbGF0ZSgiTm8iKSB8IGh0bWwgJV0gPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzcz0iQ2VudGVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iQXNCbG9jayBBcnJvd1VwRGlzYWJsZWQiIGhyZWY9IiMiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtY2hldnJvbi11cCI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJVcCIpIHwgaHRtbCAlXTwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGNsYXNzPSJDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJBc0Jsb2NrIEFycm93RG93bkRpc2FibGVkIiBocmVmPSIjIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNoZXZyb24tZG93biI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iSW52aXNpYmxlVGV4dCI+WyUgVHJhbnNsYXRlKCJEb3duIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJRdWVzdGlvbkVkaXRZZXNubyIpICVdCgogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0VGFibGUiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUXVlc3Rpb25FZGl0VGV4dEFyZWEiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3BhY2luZ1RvcCIgaWQ9IlN1cnZleUVtcHR5TWVzc2FnZVNtYWxsIj4KICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlRoaXMgZG9lc24ndCBoYXZlIHNldmVyYWwgYW5zd2VycywgYSB0ZXh0YXJlYSB3aWxsIGJlIGRpc3BsYXllZC4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0VGV4dEFyZWEiKSAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iRm9vdGVyIj4KICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB2YWx1ZT0iWyUgVHJhbnNsYXRlKCJHbyBiYWNrIikgfCBodG1sICVdIj48c3Bhbj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtbGVmdCI+PC9pPiBbJSBUcmFuc2xhdGUoIkdvIGJhY2siKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgPC9mb3JtPgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUXVlc3Rpb25FZGl0IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIkFuc3dlckVkaXQiKSAlXQo8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgZW5jdHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIgbmFtZT0iQW5zd2VyRWRpdCIgaWQ9IkFuc3dlckVkaXQiIGNsYXNzPSJWYWxpZGF0ZSBQcmV2ZW50TXVsdGlwbGVTdWJtaXRzIj4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJBbnN3ZXJTYXZlIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQW5zd2VySUQiIHZhbHVlPSJbJSBEYXRhLkFuc3dlcklEIHwgaHRtbCAlXSIgLz4KICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlF1ZXN0aW9uSUQiIHZhbHVlPSJbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdIiAvPgogICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgIDxkaXYgY2xhc3M9IkxheW91dFBvcHVwIEFSSUFSb2xlTWFpbiI+CgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxoMT5bJSBUcmFuc2xhdGUoIkVkaXQgQW5zd2VyIikgfCBodG1sICVdOiBbJSBEYXRhLkFuc3dlciB8IGh0bWwgJV0gPC9oMT4KICAgICAgICAgICAgPHAgY2xhc3M9IkFzdGVyaXNrRXhwbGFuYXRpb24iPlslIFRyYW5zbGF0ZSgiQWxsIGZpZWxkcyBtYXJrZWQgd2l0aCBhbiBhc3RlcmlzayAoKikgYXJlIG1hbmRhdG9yeS4iKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgIDxwPgogICAgICAgICAgICAgICAgPGEgY2xhc3M9IkNhbmNlbENsb3NlUG9wdXAiIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiQ2FuY2VsICYgY2xvc2UiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIm9yIikgfCBodG1sICVdCiAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249UXVlc3Rpb25FZGl0O1F1ZXN0aW9uSUQ9WyUgRGF0YS5RdWVzdGlvbklEIHwgdXJpICVdO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiZ28gYmFjayB0byBlZGl0IHF1ZXN0aW9uIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICA8L3A+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDx1bCBjbGFzcz0iQnJlYWRDcnVtYiI+CiAgICAgICAgICAgICAgICA8bGk+WyUgVHJhbnNsYXRlKCJZb3UgYXJlIGhlcmUiKSB8IGh0bWwgJV06PC9saT4KICAgICAgICAgICAgICAgIDxsaT4KICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTdWJhY3Rpb249QWdlbnRTdXJ2ZXlFZGl0UXVlc3Rpb25zO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiU3VydmV5IFF1ZXN0aW9ucyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVF1ZXN0aW9uRWRpdDtRdWVzdGlvbklEPVslIERhdGEuUXVlc3Rpb25JRCB8IHVyaSAlXTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIlF1ZXN0aW9uOiIpIHwgaHRtbCAlXSBbJSBEYXRhLlF1ZXN0aW9uIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgIDwvbGk+CiAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJBbnN3ZXI6IikgfCBodG1sICVdIFslIERhdGEuQW5zd2VyIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgPC91bD4KCgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiRWRpdCBBbnN3ZXIiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KCiAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UgRml4ZWRMYWJlbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkFuc3dlciIgY2xhc3M9Ik1hbmRhdG9yeSI+PHNwYW4gY2xhc3M9Ik1hcmtlciI+Kjwvc3Bhbj4gWyUgVHJhbnNsYXRlKCJBbnN3ZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI2MCIgaWQ9IkFuc3dlciIgbmFtZT0iQW5zd2VyIiB2YWx1ZT0iWyUgRGF0YS5BbnN3ZXIgfCBodG1sICVdIiBjbGFzcz0iVmFsaWRhdGVfUmVxdWlyZWQgWyUgRGF0YS5BbnN3ZXJTZXJ2ZXJFcnJvciB8IGh0bWwgJV0iLz4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBbnN3ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJBbnN3ZXJTZXJ2ZXJFcnJvciIgY2xhc3M9IlRvb2x0aXBFcnJvck1lc3NhZ2UiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WyUgVHJhbnNsYXRlKCJUaGlzIGZpZWxkIGlzIHJlcXVpcmVkLiIpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJGb290ZXIiPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNoZWNrLXNxdWFyZS1vIj48L2k+IFslIFRyYW5zbGF0ZSgiU2F2ZSIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Zvcm0+ClslIFJlbmRlckJsb2NrRW5kKCJBbnN3ZXJFZGl0IikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXIiKSAlXQo8ZGl2IGNsYXNzPSJPdmVydmlld0JveCBBUklBUm9sZU1haW4gWyUgRGF0YS5WaWV3IHwgaHRtbCAlXSI+CiAgICA8aDE+WyUgRGF0YS5UaXRsZU5hbWUgfCBodG1sICVdOiBbJSBEYXRhLlRpdGxlVmFsdWUgfCBodG1sICVdPC9oMT4KCiAgICBbJSBEYXRhLkRhdGFJblRoZU1pZGRsZSAlXQoKICAgIDxkaXYgY2xhc3M9Ik92ZXJ2aWV3Q29udHJvbCIgaWQ9Ik92ZXJ2aWV3Q29udHJvbCI+CiAgICAgICAgPGRpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udHJvbFJvdyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVyIikgJV0KICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iVGFicyI+ClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyRmlsdGVySXRlbVNlbGVjdGVkIikgJV0KICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9IkFjdGl2ZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkZpbHRlckxpbmsgJV1GaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTxzcGFuPlslIERhdGEuQ291bnQgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtbJSBEYXRhLkZpbHRlckxpbmsgJV1GaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTxzcGFuPlslIERhdGEuQ291bnQgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWROb3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhckZpbHRlckl0ZW1TcGxpdCIpICVdCiAgICAgICAgICAgICAgICAgICAgLQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU3BsaXQiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtIikgJV0KICAgICAgICAgICAgICAgIDwvdWw+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhckZpbHRlciIpICVdCgogICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJUYWJzIj4KICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJTdXJ2ZXlTZWFyY2giIGhyZWY9IiMiPlslIFRyYW5zbGF0ZSgiU3VydmV5IG92ZXJ2aWV3IG9wdGlvbnMiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KICAgICAgICAgICAgICAgIDwvdWw+CgogICAgICAgICAgICAgICAgPGRpdiBpZD0iU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lciIgY2xhc3M9IkhpZGRlbiI+CiAgICAgICAgICAgICAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGlkPSJTdXJ2ZXlPdmVydmlld1NldHRpbmdzRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWdlbnRTdXJ2ZXlPdmVydmlldyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJDaGFuZ2UiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGZpZWxkc2V0IGNsYXNzPSJUYWJsZUxpa2UiPgoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkZ1bGx0ZXh0IiBpZD0iTGFiZWxGdWxsdGV4dCI+WyUgVHJhbnNsYXRlKCJGdWxsdGV4dCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJGdWxsdGV4dCIgdmFsdWU9IlslIERhdGEuRnVsbHRleHQgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iIHN0eWxlPSJ3aWR0aDogNTAwcHgiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIlNlYXJjaGVzIGluIHRoZSBhdHRyaWJ1dGVzIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sIE5vdGlmaWNhdGlvblNlbmRlciwgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keSwgb3ZlcnJpZGluZyBvdGhlciBhdHRyaWJ1dGVzIHdpdGggdGhlIHNhbWUgbmFtZS4iKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3A+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJTdGF0ZXMiIGlkPSJMYWJlbFN0YXRlcyIgPlslIFRyYW5zbGF0ZSgiU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN0YXRlU3RyICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTdXJ2ZXkgQ3JlYXRlIFRpbWUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTm8gdGltZSBzZXR0aW5ncyIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iICBpZD0iTm9UaW1lU2V0IiBuYW1lPSJUaW1lU2VhcmNoVHlwZSIgdmFsdWU9IiIgWyUgRGF0YS5TdXJ2ZXlTZWFyY2guTm9SZXN0cmljdGlvbkNoZWNrZWQgfCBodG1sICVdIFslIERhdGEuaXRlbSgiVGltZVNlYXJjaFR5cGU6Ok5vbmUiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik5vVGltZVNldCI+WyUgVHJhbnNsYXRlKCJObyByZXN0cmljdGlvbiIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRGF0ZSByYW5nZSIpIHwgaHRtbCAlXSIgdHlwZT0icmFkaW8iIGlkPSJEYXRlUmFuZ2UiIG5hbWU9IlRpbWVTZWFyY2hUeXBlIiB2YWx1ZT0iVGltZVNsb3QiIFslIERhdGEuU3VydmV5U2VhcmNoLlRpbWVTbG90Q2hlY2tlZCB8IGh0bWwgJV0gWyUgRGF0YS5pdGVtKCJUaW1lU2VhcmNoVHlwZTo6VGltZVNsb3QiKSAlXSAvPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkRhdGVSYW5nZSI+WyUgVHJhbnNsYXRlKCJPbmx5IHN1cnZleXMgY3JlYXRlZCBiZXR3ZWVuIikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlN1cnZleUNyZWF0ZVRpbWVTdGFydCAlXSBbJSBUcmFuc2xhdGUoImFuZCIpIHwgaHRtbCAlXSBbJSBEYXRhLlN1cnZleUNyZWF0ZVRpbWVTdG9wICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iQ29udGV4dEZ1bmN0aW9ucyI+CiAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJDb250ZXh0U2V0dGluZ3MiPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjIiBpZD0iU2hvd0NvbnRleHRTZXR0aW5nc0RpYWxvZyIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiU2V0dGluZ3MiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jb2ciPjwvaT48c3Bhbj5bJSBUcmFuc2xhdGUoIlNldHRpbmdzIikgfCBodG1sICVdPC9zcGFuPjwvYT4KICAgICAgICAgICAgICAgICAgICA8L2xpPgogICAgICAgICAgICAgICAgPC91bD4KCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSJDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIiIGNsYXNzPSJIaWRkZW4iPgogICAgICAgICAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0IiBpZD0iQ29udGV4dFNldHRpbmdzRGlhbG9nIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iQWdlbnRQcmVmZXJlbmNlcyIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJVcGRhdGUiLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iR3JvdXAiIHZhbHVlPSJbJSBEYXRhLkdyb3VwIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJSZWRpcmVjdFVSTCIgdmFsdWU9IlslIERhdGEuUmVxdWVzdGVkVVJMIHwgaHRtbCAlXSIvPgogICAgICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJbJSBEYXRhLlByZWZlcmVuY2VzS2V5IHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKCJNYXguIHNob3duIHN1cnZleXMgcGVyIHBhZ2UiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlBhZ2VTaG93blN0cmluZyAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgPC9mb3JtPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJDb250ZXh0U2V0dGluZ3MiKSAlXQoKICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJPdmVydmlld0FjdGlvbnMiPgogICAgICAgICAgICAgICAgICAgIFslIERhdGEuQWN0aW9uUm93ICVdCiAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJPdmVydmlld1pvb20iPgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGVTZWxlY3RlZCIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iQWN0aXZlIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJbJSBEYXRhLk5hbWUgfCBodG1sICVdIiBuYW1lPSJPdmVydmlld0NvbnRyb2wiIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO0ZpbHRlcj1bJSBEYXRhLkZpbHRlciB8IHVyaSAlXTtWaWV3PVslIERhdGEuVmlldyB8IHVyaSAlXTtbJSBEYXRhLkxpbmtGaWx0ZXIgJV0iIHRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5OYW1lKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZShEYXRhLk5hbWVTaG9ydCkgfCBodG1sICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhclZpZXdNb2RlU2VsZWN0ZWQiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iWyUgRGF0YS5OYW1lIHwgaHRtbCAlXSIgbmFtZT0iT3ZlcnZpZXdDb250cm9sIiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtGaWx0ZXI9WyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV07Vmlldz1bJSBEYXRhLlZpZXcgfCB1cmkgJV07WyUgRGF0YS5MaW5rRmlsdGVyICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoRGF0YS5OYW1lU2hvcnQpIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgogICAgICAgICAgICAgICAgICAgICAgICA8L2xpPgpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJWaWV3TW9kZU5vdFNlbGVjdGVkIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TmF2QmFyVmlld01vZGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9IlBhZ2luYXRpb24iPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld05hdkJhclBhZ2VOYXZCYXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlJlc3VsdExvbmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TaXRlTmF2QmFyTG9uZyAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiT3ZlcnZpZXdOYXZCYXJQYWdlTmF2QmFyIikgJV0KICAgICAgICAgICAgICAgICAgICA8L3NwYW4+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXJMZWZ0Ij48L2Rpdj4KICAgICAgICAgICAgICAgIDwvZGl2PgojIHNvcnQgb3JkZXIgYmFyIGlmIG5lZWRlZAogICAgICAgICAgICAgICAgWyUgRGF0YS5Tb3J0T3JkZXJCYXIgJV0KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJPdmVydmlld05hdkJhciIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCjxkaXYgaWQ9Ik92ZXJ2aWV3Qm9keSIgY2xhc3M9Ik92ZXJ2aWV3IFRpY2tldExpc3QiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOb0RhdGFGb3VuZE1zZyIpICVdCiAgICA8ZGl2IGlkPSJFbXB0eU1lc3NhZ2VTbWFsbCI+CiAgICAgICAgWyUgVHJhbnNsYXRlKCJObyBkYXRhIGZvdW5kLiIpIHwgaHRtbCAlXQogICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOb0RhdGFGb3VuZE1zZyIpICVdCgogICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiIGVuY3R5cGU9Im11bHRpcGFydC9mb3JtLWRhdGEiIG5hbWU9Im1hdHJpeCI+CiAgICAgICAgPHRhYmxlIGNsYXNzPSJUYWJsZVNtYWxsIj4KICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgPHRyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXJIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iTnVtYmVyIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1OdW1iZXI7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZShDb25maWcoIlN1cnZleTo6SG9vayIpKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlckhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFRpdGxlSGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9IlRpdGxlIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1UaXRsZTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJUaXRsZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkVGl0bGVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRJbnRyb2R1Y3Rpb25IZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iSW50cm9kdWN0aW9uIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1JbnRyb2R1Y3Rpb247T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiSW50cm9kdWN0aW9uIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRJbnRyb2R1Y3Rpb25IZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREZXNjcmlwdGlvbkhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJEZXNjcmlwdGlvbiBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9RGVzY3JpcHRpb247T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiRGVzY3JpcHRpb24iKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZERlc2NyaXB0aW9uSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTm90aWZpY2F0aW9uU2VuZGVySGVhZGVyIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3M9Ik5vdGlmaWNhdGlvblNlbmRlciBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9Tm90aWZpY2F0aW9uU2VuZGVyO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIk5vdGlmaWNhdGlvbiBTZW5kZXIiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvblNlbmRlckhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5vdGlmaWNhdGlvblN1YmplY3RIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iTm90aWZpY2F0aW9uU3ViamVjdCBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9Tm90aWZpY2F0aW9uU3ViamVjdDtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJOb3RpZmljYXRpb24gU3ViamVjdCIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTm90aWZpY2F0aW9uU3ViamVjdEhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE5vdGlmaWNhdGlvbkJvZHlIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iTm90aWZpY2F0aW9uQm9keSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9Tm90aWZpY2F0aW9uQm9keTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJOb3RpZmljYXRpb24gQm9keSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTm90aWZpY2F0aW9uQm9keUhlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFN0YXR1c0hlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJTdGF0dXMgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PVN0YXR1cztPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJTdGF0dXMiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFN0YXR1c0hlYWRlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENyZWF0ZVRpbWVIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ3JlYXRlVGltZSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9Q3JlYXRlVGltZTtPcmRlckJ5PVslIERhdGEuT3JkZXJCeSB8IHVyaSAlXSI+WyUgVHJhbnNsYXRlKCJDcmVhdGVkIikgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvdGg+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDcmVhdGVUaW1lSGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3JlYXRlQnlIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0aCBjbGFzcz0iQ3JlYXRlQnkgWyUgRGF0YS5DU1MgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U29ydEJ5PUNyZWF0ZUJ5O09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkNyZWF0ZWQgYnkiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENyZWF0ZUJ5SGVhZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ2hhbmdlVGltZUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDaGFuZ2VUaW1lIFslIERhdGEuQ1NTIHwgaHRtbCAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1NvcnRCeT1DaGFuZ2VUaW1lO09yZGVyQnk9WyUgRGF0YS5PcmRlckJ5IHwgdXJpICVdIj5bJSBUcmFuc2xhdGUoIkNoYW5nZWQiKSB8IGh0bWwgJV08L2E+CiAgICAgICAgICAgICAgICAgICAgPC90aD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZVRpbWVIZWFkZXIiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDaGFuZ2VCeUhlYWRlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDaGFuZ2VCeSBbJSBEYXRhLkNTUyB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249WyUgRW52KCJBY3Rpb24iKSAlXTtTb3J0Qnk9Q2hhbmdlQnk7T3JkZXJCeT1bJSBEYXRhLk9yZGVyQnkgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCBCeSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgICAgICAgICA8L3RoPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2hhbmdlQnlIZWFkZXIiKSAlXQogICAgICAgICAgICAgICAgPC90cj4KICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgPHRib2R5PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmQiKSAlXQogICAgICAgICAgICAgICAgPHRyIGNsYXNzPSJNYXN0ZXJBY3Rpb24gWyUgSUYgRGF0YS5TdGF0dXMgPT0gJ0ludmFsaWQnICVdSW52YWxpZFslIEVORCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZE51bWJlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXJMaW5rU3RhcnQiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV0iIHRpdGxlPSJbJSBEYXRhLlN1cnZleU51bWJlciB8IHVyaSAlXSIgY2xhc3M9Ik1hc3RlckFjdGlvbkxpbmsiPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyTGlua1N0YXJ0IikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuU3VydmV5TnVtYmVyIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROdW1iZXJMaW5rRW5kIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTnVtYmVyTGlua0VuZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFRpdGxlIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuVGl0bGUgfCBodG1sICVdIj5bJSBEYXRhLlRpdGxlIHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRUaXRsZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZEludHJvZHVjdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkludHJvZHVjdGlvbiB8IGh0bWwgJV0iPlslIERhdGEuSW50cm9kdWN0aW9uIHwgdHJ1bmNhdGUoNDApIHwgaHRtbCAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRJbnRyb2R1Y3Rpb24iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmREZXNjcmlwdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLkRlc2NyaXB0aW9uIHwgaHRtbCAlXSI+WyUgRGF0YS5EZXNjcmlwdGlvbiB8IHRydW5jYXRlKDQwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkRGVzY3JpcHRpb24iKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROb3RpZmljYXRpb25TZW5kZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLk5vdGlmaWNhdGlvblNlbmRlciB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTm90aWZpY2F0aW9uU2VuZGVyIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkTm90aWZpY2F0aW9uU3ViamVjdCIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHRpdGxlPSJbJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3QgfCBodG1sICVdIj5bJSBEYXRhLk5vdGlmaWNhdGlvblN1YmplY3QgfCB0cnVuY2F0ZSg0MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZE5vdGlmaWNhdGlvblN1YmplY3QiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmROb3RpZmljYXRpb25Cb2R5IikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgdGl0bGU9IlslIERhdGEuTm90aWZpY2F0aW9uQm9keSB8IGh0bWwgJV0iPlslIERhdGEuTm90aWZpY2F0aW9uQm9keSB8IHRydW5jYXRlKDQwKSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkTm90aWZpY2F0aW9uQm9keSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZFN0YXR1cyIpICVdCiAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlslIFRyYW5zbGF0ZShEYXRhLlN0YXR1cykgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZFN0YXR1cyIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENyZWF0ZVRpbWUiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNyZWF0ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXTwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvdGQ+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmRDcmVhdGVUaW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiUmVjb3JkQ3JlYXRlQnkiKSAlXQogICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5bJSBEYXRhLkNyZWF0ZVVzZXJGdWxsbmFtZSB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ3JlYXRlQnkiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJSZWNvcmRDaGFuZ2VUaW1lIikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5DaGFuZ2VUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8L3RkPgpbJSBSZW5kZXJCbG9ja0VuZCgiUmVjb3JkQ2hhbmdlVGltZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlJlY29yZENoYW5nZUJ5IikgJV0KICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+WyUgRGF0YS5DaGFuZ2VVc2VyRnVsbG5hbWUgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPC90ZD4KWyUgUmVuZGVyQmxvY2tFbmQoIlJlY29yZENoYW5nZUJ5IikgJV0KICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJSZWNvcmQiKSAlXQogICAgICAgICAgICA8L3Rib2R5PgogICAgICAgIDwvdGFibGU+CiAgICA8L2Zvcm0+CjwvZGl2Pgo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRzIikgJV0KPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiU3RhdHMgT3ZlcnZpZXcgb2YiKSB8IGh0bWwgJV0gOiBbJSBUcmFuc2xhdGUoQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSkgfCBodG1sICVdWyUgRGF0YS5TdXJ2ZXlOdW1iZXIgJV0gLSBbJSBEYXRhLlRpdGxlICVdIDwvaDE+CiAgICAgICAgPHA+CiAgICAgICAgICAgIDxhIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIiBocmVmPSIjIj5bJSBUcmFuc2xhdGUoIkNhbmNlbCAmIGNsb3NlIikgfCBodG1sICVdPC9hPgogICAgICAgIDwvcD4KICAgIDwvZGl2PgogICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CgogICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgIDxoMj48L2gyPgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIFNwYWNpbmdCb3R0b21NZWRpdW0iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiUmVxdWVzdHMgVGFibGUiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlN0YXRzVmlldyIgLz4KICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iU3VydmV5SUQiIHZhbHVlPSJbJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9IkRhdGFUYWJsZSI+CiAgICAgICAgICAgICAgICAgICAgPHRoZWFkPgogICAgICAgICAgICAgICAgICAgICAgICA8dHI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBJRiBEYXRhLlNob3dEZWxldGUgPT0gMSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGNsYXNzPSJDaGVja2JveCBDZW50ZXIiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz0iQ2hlY2tib3giIHR5cGU9ImNoZWNrYm94IiBpZD0iU2VsZWN0QWxsUmVxdWVzdHMiIG5hbWU9IlNlbGVjdEFsbFJlcXVlc3RzIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QgYWxsIHJlcXVlc3RzIikgfCBodG1sICVdIiBhdXRvY29tcGxldGU9Im9mZiIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBFTkQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBUcmFuc2xhdGUoIkRldGFpbHMiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJTZW5kIFRpbWUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJWb3RlIFRpbWUiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQiKSB8IGh0bWwgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+CiAgICAgICAgICAgICAgICAgICAgPC90aGVhZD4KICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRzVm90ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIElGIERhdGEuU2hvd0RlbGV0ZSA9PSAxICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNoZWNrYm94IE5vblRleHRDb250ZW50IENlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPSJDaGVja2JveCIgdHlwZT0iY2hlY2tib3giIG5hbWU9IlJlcXVlc3REZWxldGVJZGVudGlmaWVyIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWxlY3QgdGhpcyByZXF1ZXN0IikgfCBodG1sICVdIiB2YWx1ZT0iWyUgRGF0YS5SZXF1ZXN0SUQgfCBodG1sICVdIiAgYXV0b2NvbXBsZXRlPSJvZmYiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3M9IkNlbnRlciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9IlNlZURldGFpbHMgQXNCbG9jayIgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVslIEVudigiQWN0aW9uIikgJV07U3ViYWN0aW9uPVN0YXRzRGV0YWlsO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UmVxdWVzdElEPVslIERhdGEuUmVxdWVzdElEIHwgdXJpICVdO1RpY2tldE51bWJlcj1bJSBEYXRhLlRpY2tldE51bWJlciB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1zZWFyY2gtcGx1cyI+PC9pPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5bJSBUcmFuc2xhdGUoIlNlZSBEZXRhaWxzIikgfCBodG1sICVdPC9zcGFuPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5TZW5kVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVm90ZVRpbWUgfCBMb2NhbGl6ZSgiVGltZUxvbmciKSAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iTGlua1pvb21WaWV3IEFzQmxvY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1BZ2VudFRpY2tldFpvb207VGlja2V0SUQ9WyUgRGF0YS5UaWNrZXRJRCB8IHVyaSAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuVGlja2V0TnVtYmVyIHwgaHRtbCAlXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+ClslIFJlbmRlckJsb2NrRW5kKCJTdGF0c1ZvdGUiKSAlXQogICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+CiAgICAgICAgICAgICAgICA8L3RhYmxlPgogICAgICAgICAgICBbJSBJRiBEYXRhLlNob3dEZWxldGUgPT0gMSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJTcGFjaW5nVG9wU21hbGwiPgogICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iUHJpbWFyeSBDYWxsRm9yQWN0aW9uIiB0eXBlPSJzdWJtaXQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSBzdGF0cyIpIHwgaHRtbCAlXSI+PHNwYW4+WyUgVHJhbnNsYXRlKCJEZWxldGUgc3RhdHMiKSB8IGh0bWwgJV08L3NwYW4+PC9idXR0b24+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJtaXREZWxldGUiIHZhbHVlPSJbJSBUcmFuc2xhdGUoIkRlbGV0ZSIpIHwgaHRtbCAlXSIgLz4KICAgICAgICAgICAgWyUgRU5EICVdCiAgICAgICAgPC9mb3JtPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICA8L2Rpdj4KCiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJDYW5jZWxDbG9zZVBvcHVwIFByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiQ2xvc2UgdGhpcyB3aW5kb3ciKSB8IGh0bWwgJV0iPjxzcGFuPjxpIGNsYXNzPSJmYSBmYS10aW1lcyI+PC9pPiBbJSBUcmFuc2xhdGUoIkNsb3NlIHRoaXMgd2luZG93IikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgPC9kaXY+CjwvZGl2PgoKWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN0YXRzRGV0YWlsIikgJV0KPGRpdiBjbGFzcz0iTGF5b3V0UG9wdXAgQVJJQVJvbGVNYWluIj4KICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiU3VydmV5IFN0YXQgRGV0YWlscyIpIHwgaHRtbCAlXSA6IFslIENvbmZpZygiVGlja2V0OjpIb29rIikgJV1bJSBDb25maWcoIlRpY2tldDo6SG9va0RpdmlkZXIiKSAlXVslIERhdGEuVGlja2V0TnVtYmVyICVdIDogWyUgQ29uZmlnKCJTdXJ2ZXk6Okhvb2siKSAlXVslIERhdGEuU3VydmV5TnVtYmVyICVdIC0gWyUgRGF0YS5UaXRsZSAlXSA6ICA8L2gxPgogICAgICAgIDxwPgogICAgICAgICAgICA8YSBjbGFzcz0iQ2FuY2VsQ2xvc2VQb3B1cCIgaHJlZj0iIyI+WyUgVHJhbnNsYXRlKCJDYW5jZWwgJiBjbG9zZSIpIHwgaHRtbCAlXTwvYT4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJvciIpIHwgaHRtbCAlXQogICAgICAgICAgICA8YSBjbGFzcz0iSGlzdG9yeUJhY2siIGhyZWY9IlslIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1bJSBFbnYoIkFjdGlvbiIpICVdO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV0iPlslIFRyYW5zbGF0ZSgiZ28gYmFjayB0byBzdGF0cyBvdmVydmlldyIpIHwgaHRtbCAlXTwvYT4KICAgICAgICA8L3A+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgoKICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDI+PC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkRldGFpbHMiKSB8IGh0bWwgJV08L2gyPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOYXZBcnJvd3MiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iTmF2aWdhdGlvbiI+CiAgICAgICAgICAgICAgICAgICAgPHNwYW4gWyUgSUYgIURhdGEuUHJldiAlXWNsYXNzPSJEaXNhYmxlZCJbJSBFTkQgJV1bJSBJRiAhRGF0YS5OZXh0ICVdc3R5bGU9Im1hcmdpbi1yaWdodDogMTdweDsiWyUgRU5EICVdIGNsYXNzPSJTdXJ2ZXlBcnJvdyBTdXJ2ZXlBcnJvd0xlZnQiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlByZXZpb3VzIHZvdGUiKSB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRTdXJ2ZXlTdGF0cztTdWJhY3Rpb249U3RhdHNEZXRhaWw7U3VydmV5SUQ9WyUgRGF0YS5TdXJ2ZXlJRCB8IHVyaSAlXTtSZXF1ZXN0SUQ9WyUgRGF0YS5QcmV2IHwgdXJpICVdO1RpY2tldE51bWJlcj1bJSBEYXRhLlByZXZUaWNrZXROdW1iZXIgfCB1cmkgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1sZWZ0Ij48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvc3Bhbj4KICAgICAgICAgICAgICAgICAgICA8c3BhbiBbJSBJRiAhRGF0YS5OZXh0ICVdY2xhc3M9IkRpc2FibGVkIlslIEVORCAlXSBjbGFzcz0iU3VydmV5QXJyb3cgU3VydmV5QXJyb3dSaWdodCIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiTmV4dCB2b3RlIikgfCBodG1sICVdIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5U3RhdHM7U3ViYWN0aW9uPVN0YXRzRGV0YWlsO1N1cnZleUlEPVslIERhdGEuU3VydmV5SUQgfCB1cmkgJV07UmVxdWVzdElEPVslIERhdGEuTmV4dCB8IHVyaSAlXTtUaWNrZXROdW1iZXI9WyUgRGF0YS5OZXh0VGlja2V0TnVtYmVyIHwgdXJpICVdIj48aSBjbGFzcz0iZmEgZmEtY2FyZXQtcmlnaHQiPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPgogICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOYXZBcnJvd3MiKSAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiU3RhdHNEZXRhaWxRdWVzdGlvbiIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJbJSBEYXRhLkNsYXNzICVdIj5bJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uIHwgaHRtbCAlXTo8L2xhYmVsPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdGF0c0RldGFpbEFuc3dlciIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgWyUgRGF0YS5DbGFzcyAlXSI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQW5zd2VyICVdCiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3RhdHNEZXRhaWxBbnN3ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRzRGV0YWlsUXVlc3Rpb24iKSAlXQogICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IkZvb3RlciI+CiAgICAgICAgPGZvcm0gYWN0aW9uPSJbJSBFbnYoIkNHSUhhbmRsZSIpICVdIiBtZXRob2Q9InBvc3QiPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJBY3Rpb24iIHZhbHVlPSJbJSBFbnYoIkFjdGlvbiIpICVdIiAvPgogICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdXJ2ZXlJRCIgdmFsdWU9IlslIERhdGEuU3VydmV5SUQgfCBodG1sICVdIiAvPgogICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9IlByaW1hcnkgQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiR28gYmFjayIpIHwgaHRtbCAlXSI+PHNwYW4+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWxlZnQiPjwvaT4gWyUgVHJhbnNsYXRlKCJHbyBiYWNrIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPgogICAgICAgIDwvZm9ybT4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlN0YXRzRGV0YWlsIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVpvb20iKSAlXQo8ZGl2IGNsYXNzPSJNYWluQm94IEFyaWFSb2xlTWFpbiBMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckZpcnN0Ij4KICAgIDxkaXYgY2xhc3M9IkNsZWFyTGVmdCI+PC9kaXY+CiAgICA8ZGl2IGNsYXNzPSJIZWFkbGluZSI+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZShDb25maWcoIlN1cnZleTo6SG9vayIpKSB8IGh0bWwgJV1bJSBEYXRhLlN1cnZleU51bWJlciB8IGh0bWwgJV0gLSBbJSBEYXRhLlRpdGxlIHwgaHRtbCAlXTwvaDE+CiAgICA8L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJMYXlvdXRGaXhlZFNpZGViYXIgU2lkZWJhckxhc3QiPgogICAgICAgIDxkaXYgY2xhc3M9IlNpZGViYXJDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUiPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJTdXJ2ZXkgSW5mb3JtYXRpb24iKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ3JlYXRlVGltZSB8IExvY2FsaXplKCJUaW1lU2hvcnQiKSAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ3JlYXRlZCBieSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuQ3JlYXRlVXNlckZ1bGxuYW1lIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiQ2hhbmdlZCIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiID5bJSBEYXRhLkNoYW5nZVRpbWUgfCBMb2NhbGl6ZSgiVGltZVNob3J0IikgJV08L3A+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJDaGFuZ2VkIGJ5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPSJWYWx1ZSI+WyUgRGF0YS5DaGFuZ2VVc2VyRnVsbG5hbWUgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+WyUgVHJhbnNsYXRlKCJTdGF0dXMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBUcmFuc2xhdGUoRGF0YS5TdGF0dXMpIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CgogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iVGFibGVMaWtlIEZpeGVkTGFiZWxTbWFsbCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlNlbnQgcmVxdWVzdHMiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPHAgY2xhc3M9IlZhbHVlIj5bJSBEYXRhLlNlbmRSZXF1ZXN0IHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiUmVjZWl2ZWQgc3VydmV5cyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iVmFsdWUiPlslIERhdGEuUmVxdWVzdENvbXBsZXRlIHwgaHRtbCAlXTwvcD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+CgogICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnRDb2x1bW4iPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250cm9sUm93Ij4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFkZGl0aW9uYWxJbmZvcm1hdGlvbiI+CiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyI+CiAgICAgICAgICAgICAgICA8dWwgY2xhc3M9IkFjdGlvbnMiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNZW51SXRlbSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1bJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSIgaWQ9IlslIERhdGEuTWVudUlEIHwgaHRtbCAlXSIgY2xhc3M9IlslIERhdGEuQ2xhc3MgfCBodG1sICVdIiBbJSBEYXRhLkxpbmtQYXJhbSAlXSB0aXRsZT0iWyUgVHJhbnNsYXRlKERhdGEuRGVzY3JpcHRpb24pIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTmFtZSkgfCBodG1sICVdPC9hPgogICAgICAgICAgICAgICAgICAgIDwvbGk+ClslIFJlbmRlckJsb2NrRW5kKCJNZW51SXRlbSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleVN0YXR1cyIpICVdCiAgICAgICAgICAgICAgICAgICAgPGxpPgogICAgICAgICAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgY2xhc3M9IkFjdGlvbkZvcm0iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1YmFjdGlvbiIgdmFsdWU9IlN1cnZleVN0YXR1cyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlN1cnZleUlEIiB2YWx1ZT0iWyUgRGF0YS5TdXJ2ZXlJRCB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLk5ld1N0YXR1c1N0ciAlXQogICAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+CiAgICAgICAgICAgICAgICAgICAgPC9saT4KWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleVN0YXR1cyIpICVdCiAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSBTcGFjaW5nVG9wIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU3VydmV5IERldGFpbHMiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlRhYmxlTGlrZSBGaXhlZExhYmVsU21hbGwiPgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiTnVtYmVyIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIj5bJSBEYXRhLlN1cnZleU51bWJlciB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgoKICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGl0bGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPlslIERhdGEuVGl0bGUgfCB0cnVuY2F0ZSg4MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD5bJSBUcmFuc2xhdGUoIlF1ZXVlcyIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZCIgdGl0bGU9IlslIERhdGEuUXVldWVMaXN0U3RyaW5nIHwgaHRtbCAlXSI+WyUgRGF0YS5RdWV1ZUxpc3RTdHJpbmcgfCB0cnVuY2F0ZSg4MCkgfCBodG1sICVdIFslIERhdGEuTm9RdWV1ZU1lc3NhZ2UgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFR5cGVzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGlja2V0IFR5cGVzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIiB0aXRsZT0iWyUgRGF0YS5UaWNrZXRUeXBlTGlzdFN0cmluZyB8IGh0bWwgJV0iPlslIERhdGEuVGlja2V0VHlwZUxpc3RTdHJpbmcgfCB0cnVuY2F0ZSg4MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldFR5cGVzIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlRpY2tldFNlcnZpY2VzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPlslIFRyYW5zbGF0ZSgiVGlja2V0IFNlcnZpY2VzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkIiB0aXRsZT0iWyUgRGF0YS5TZXJ2aWNlTGlzdFN0cmluZyB8IGh0bWwgJV0iPlslIERhdGEuU2VydmljZUxpc3RTdHJpbmcgfCB0cnVuY2F0ZSg4MCkgfCBodG1sICVdPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlRpY2tldFNlcnZpY2VzIikgJV0KCiAgICAgICAgICAgICAgICAgICAgPC9maWVsZHNldD4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlN1cnZleUJsb2NrIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIFNwYWNpbmdUb3AiIGlkPSJbJSBEYXRhLlN1cnZleUZpZWxkICVdQmxvY2siPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRBY3Rpb24gVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgdXJpICVdIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTaG93IG9yIGhpZGUgdGhlIGNvbnRlbnQiKSB8IGh0bWwgJV0iPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1yaWdodCI+PC9pPjxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+PC9hPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoRGF0YS5UaXRsZSkgfCBodG1sICVdPC9oMj4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkJvZHlIVE1MIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8aWZyYW1lIHdpZHRoPSIxMDAlIiBmcmFtZWJvcmRlcj0iMCIgaWQ9IklmcmFtZVN1cnZleVslIERhdGEuU3VydmV5RmllbGQgfCBodG1sICVdIiBvbmxvYWQ9IlN1cnZleS5BZ2VudC5TdXJ2ZXlab29tLklmcmFtZUF1dG9IZWlnaHQoJCgnI0lmcmFtZVN1cnZleVslIERhdGEuU3VydmV5RmllbGQgfCBodG1sICVdJykpOyIgc3JjPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1YmFjdGlvbj1IVE1MVmlldztTdXJ2ZXlJRD1bJSBEYXRhLlN1cnZleUlEIHwgaHRtbCAlXTtTdXJ2ZXlGaWVsZD1bJSBEYXRhLlN1cnZleUZpZWxkIHwgaHRtbCAlXTsiPgogICAgICAgICAgICAgICAgICAgICAgICA8L2lmcmFtZT4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkJvZHlIVE1MIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiQm9keVBsYWluIikgJV0KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iVGV4dGFyZWEiPlslIFRyYW5zbGF0ZShEYXRhLkxhYmVsKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQgVGV4dGFyZWEiPlslIERhdGEuQ29udGVudCB8IGh0bWwgJV08L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrRW5kKCJCb2R5UGxhaW4iKSAlXQogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5QmxvY2siKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQZXJtaXNzaW9uU3RhdFJlc3VsdHMiKSAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJXaWRnZXRTaW1wbGUgU3BhY2luZ1RvcCBTcGFjaW5nQm90dG9tTWVkaXVtIj4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0QWN0aW9uIFRvZ2dsZSI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiMiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNob3cgb3IgaGlkZSB0aGUgY29udGVudCIpIHwgaHRtbCAlXSI+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+PGkgY2xhc3M9ImZhIGZhLWNhcmV0LWRvd24iPjwvaT48L2E+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZSgiU3VydmV5IFJlc3VsdHMgR3JhcGgiKSB8IGh0bWwgJV08L2gyPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KClslIFJlbmRlckJsb2NrU3RhcnQoIk5vU3RhdFJlc3VsdHMiKSAlXQogICAgICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiTm8gc3RhdCByZXN1bHRzLiIpIHwgaHRtbCAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiTm9TdGF0UmVzdWx0cyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlFZGl0U3RhdHMiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiU3VydmV5RWRpdFN0YXRzUXVlc3Rpb24iKSAlXQogICAgICAgICAgICAgICAgICAgIDxmaWVsZHNldCBjbGFzcz0iU3BhY2luZ1RvcCBTdXJ2ZXlHcmFwaHMiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiIgdGl0bGU9IlslIERhdGEuUXVlc3Rpb24gJV0iID5bJSBEYXRhLlF1ZXN0aW9uIHwgdHJ1bmNhdGUoMTAwKSB8IGh0bWwgJV06IDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTdXJ2ZXlFZGl0U3RhdHNBbnN3ZXIiKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJBbnN3ZXIiPlslIFRyYW5zbGF0ZShEYXRhLkFuc3dlcikgfCBodG1sICVdPC9kaXY+CgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlHcmFwaCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlHcmFwaENvbnRhaW5lciI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iU3VydmV5R3JhcGhCYXIiIHN0eWxlPSJ3aWR0aDpbJSBEYXRhLkFuc3dlclBlcmNlbnRUYWJsZSB8IGh0bWwgJV0lOyI+PC9kaXYgPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzcz0iU3VydmV5R3JhcGhMZXllbmQiPlslIERhdGEuQW5zd2VyUGVyY2VudCB8IGh0bWwgJV0lPC9wPgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5RWRpdFN0YXRzQW5zd2VyIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5RWRpdFN0YXRzUXVlc3Rpb24iKSAlXQoKWyUgUmVuZGVyQmxvY2tFbmQoIlN1cnZleUVkaXRTdGF0cyIpICVdCiAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQZXJtaXNzaW9uU3RhdFJlc3VsdHMiKSAlXQogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiU3VydmV5Wm9vbSIpICVdCg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1N1cnZleSIpICVdCjxkaXYgY2xhc3M9IkNvbnRlbnQgQVJJQVJvbGVNYWluIiBpZD0iTWFpbkJveCI+CiAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSIpIHwgaHRtbCAlXTogWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gyPgogICAgPC9kaXY+CgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNUaWNrZXQiKSAlXQogICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2siPgogICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrSGVhZGVyIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJUaWNrZXQiKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgWyUgQ29uZmlnKCJUaWNrZXQ6Okhvb2siKSB8IGh0bWwgJV1bJSBDb25maWcoIlRpY2tldDo6SG9va0RpdmlkZXIiKSB8IGh0bWwgJV1bJSBEYXRhLlRpY2tldE51bWJlciB8IGh0bWwgJV0gPHNwYW4+Jm1kYXNoOzwvc3Bhbj4gWyUgRGF0YS5UaXRsZSB8IHRydW5jYXRlKDEwMCkgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1RpY2tldCIpICVdCgogICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2siPgogICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrSGVhZGVyIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgWyUgRGF0YS5JbnRyb2R1Y3Rpb24gJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCI+CiAgICAgICAgPGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iQWN0aW9uIiB2YWx1ZT0iWyUgRW52KCJBY3Rpb24iKSAlXSIgLz4KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJQdWJsaWNTdXJ2ZXlWb3RlIiAvPgogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IlB1YmxpY1N1cnZleUtleSIgdmFsdWU9IlslIERhdGEuUHVibGljU3VydmV5S2V5IHwgaHRtbCAlXSIgLz4KICAgICAgICA8ZmllbGRzZXQgY2xhc3M9IlN1cnZleSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrSGVhZGVyIj4KICAgICAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiUGxlYXNlIGFuc3dlciB0aGVzZSBxdWVzdGlvbnMiKSB8IGh0bWwgJV06CiAgICAgICAgICAgIDwvZGl2PgoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljUXVlc3Rpb25zIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb25Db250YWluZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJZZXNObyIpICVdCgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24gWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPiBbJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uICVdIDwvZGl2PgogICAgICAgICAgICAgICAgWyUgRGF0YS5FcnJvclRleHQgJV0KCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icmFkaW8iIGlkPSJQdWJsaWNTdXJ2ZXlWb3RlMVslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1ZZXMiIG5hbWU9IlB1YmxpY1N1cnZleVZvdGUxW1slIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1dIiB2YWx1ZT0iWWVzIiBbJSBEYXRhLlllc1NlbGVjdGVkIHwgaHRtbCAlXSAvPgogICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPSJBbnN3ZXIiIGZvcj0iUHVibGljU3VydmV5Vm90ZTFbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdWWVzIj5bJSBUcmFuc2xhdGUoIlllcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CgogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0iUHVibGljU3VydmV5Vm90ZTFbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdTm8iIG5hbWU9IlB1YmxpY1N1cnZleVZvdGUxW1slIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1dIiB2YWx1ZT0iTm8iICBbJSBEYXRhLk5vU2VsZWN0ZWQgfCBodG1sICVdIC8+CiAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9IkFuc3dlciIgZm9yPSJQdWJsaWNTdXJ2ZXlWb3RlMVslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1ObyI+WyUgVHJhbnNsYXRlKCJObyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNBbnN3ZXJZZXNObyIpICVdCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJSYWRpbyIpICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+IFslIERhdGEuUmVxdWlyZWRUZXh0IHwgaHRtbCAlXVslIERhdGEuUXVlc3Rpb24gJV0gPC9kaXY+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkVycm9yVGV4dCAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNBbnN3ZXJSYWRpb2IiKSAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBpZD0iUHVibGljU3VydmV5Vm90ZTJbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iIG5hbWU9IlB1YmxpY1N1cnZleVZvdGUyW1slIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1dIiB2YWx1ZT0iWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iIFslIERhdGEuQW5zd2VyU2VsZWN0ZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iQW5zd2VyIiBmb3I9IlB1YmxpY1N1cnZleVZvdGUyWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXVslIERhdGEuQW5zd2VySUQgfCBodG1sICVdIj5bJSBEYXRhLkFuc3dlciB8IGh0bWwgJV08L2xhYmVsPgogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyUmFkaW9iIikgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlclJhZGlvIikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY0Fuc3dlckNoZWNrYm94IikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uIFslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4gWyUgRGF0YS5SZXF1aXJlZFRleHQgfCBodG1sICVdWyUgRGF0YS5RdWVzdGlvbiAlXSA8L2Rpdj4KICAgICAgICAgICAgICAgIFslIERhdGEuRXJyb3JUZXh0ICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY0Fuc3dlckNoZWNrYm94YiIpICVdCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJQdWJsaWNTdXJ2ZXlWb3RlM1slIERhdGEuQW5zd2VySUQgfCBodG1sICVdIiBuYW1lPSJQdWJsaWNTdXJ2ZXlWb3RlM1tbJSBEYXRhLkFuc3dlcklEIHwgaHRtbCAlXV0iIHZhbHVlPSJZZXMiIFslIERhdGEuQW5zd2VyU2VsZWN0ZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iQW5zd2VyIiBmb3I9IlB1YmxpY1N1cnZleVZvdGUzWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iPlslIERhdGEuQW5zd2VyIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJQdWJsaWNBbnN3ZXJDaGVja2JveGIiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyQ2hlY2tib3giKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljQW5zd2VyVGV4dGFyZWEiKSAlXQogICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb24gWyUgRGF0YS5DbGFzcyB8IGh0bWwgJV0iPiBbJSBEYXRhLlJlcXVpcmVkVGV4dCB8IGh0bWwgJV1bJSBEYXRhLlF1ZXN0aW9uICVdIDwvZGl2PgogICAgICAgICAgICAgICAgWyUgRGF0YS5FcnJvclRleHQgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJpY2hUZXh0QW5zd2VyWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iPgogICAgICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSB0aXRsZT0iWyUgRGF0YS5RdWVzdGlvbiAlXSIgaWQ9IlJpY2hUZXh0WyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXSIgbmFtZT0iUHVibGljU3VydmV5Vm90ZTRbWyUgRGF0YS5RdWVzdGlvbklEIHwgaHRtbCAlXV0iIGNsYXNzPSJSaWNoVGV4dCBEb250UHJpbnQiIHJvd3M9IjE1IiBjb2xzPSJbJSBDb25maWcoIlRpY2tldDo6RnJvbnRlbmQ6OlRleHRBcmVhTm90ZSIpICVdIj5bJSBEYXRhLlZhbHVlICVdPC90ZXh0YXJlYT4KICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyVGV4dGFyZWEiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljQW5zd2VyTlBTIikgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlF1ZXN0aW9uIFslIERhdGEuQ2xhc3MgfCBodG1sICVdIj4gWyUgRGF0YS5SZXF1aXJlZFRleHQgfCBodG1sICVdWyUgRGF0YS5RdWVzdGlvbiAlXSA8L2Rpdj4KICAgICAgICAgICAgICAgIFslIERhdGEuRXJyb3JUZXh0ICVdClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY0Fuc3dlck5QU2IiKSAlXQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InJhZGlvIiBjbGFzcz0iTlBTIiBpZD0iUHVibGljU3VydmV5Vm90ZTVbJSBEYXRhLlF1ZXN0aW9uSUQgfCBodG1sICVdWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iIG5hbWU9IlB1YmxpY1N1cnZleVZvdGU1W1slIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1dIiB2YWx1ZT0iWyUgRGF0YS5BbnN3ZXJJRCB8IGh0bWwgJV0iIFslIERhdGEuQW5zd2VyU2VsZWN0ZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz0iQW5zd2VyIE5QUyIgZm9yPSJQdWJsaWNTdXJ2ZXlWb3RlNVslIERhdGEuUXVlc3Rpb25JRCB8IGh0bWwgJV1bJSBEYXRhLkFuc3dlcklEIHwgaHRtbCAlXSI+WyUgRGF0YS5BbnN3ZXIgfCBodG1sICVdPC9sYWJlbD4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY0Fuc3dlck5QU2IiKSAlXQpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljQW5zd2VyTlBTIikgJV0KCiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljUXVlc3Rpb25zIikgJV0KICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgIDxkaXYgY2xhc3M9IkFjdGlvblJvdyIgaWQ9IkJvdHRvbUFjdGlvblJvdyI+CiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9IlByaW1hcnkiIHR5cGU9InN1Ym1pdCIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiRmluaXNoIikgfCBodG1sICVdIj4gWyUgVHJhbnNsYXRlKCJGaW5pc2giKSB8IGh0bWwgJV0gPC9idXR0b24+CiAgICAgICAgPC9kaXY+CiAgICA8L2Zvcm0+CjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljU3VydmV5IikgJV0KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1N1cnZleU1lc3NhZ2UiKSAlXQo8ZGl2IGlkPSJNYWluQm94IiBjbGFzcz0iVGlja2V0Q29tcG9zZSBBUklBUm9sZU1haW4iPgogICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICA8ZGl2IGNsYXNzPSJIZWFkZXIiPgogICAgICAgICAgICA8aDI+IFslIFRyYW5zbGF0ZShEYXRhLk1lc3NhZ2VUeXBlKSB8IGh0bWwgJV0gPC9oMj4KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgPGg0PiBbJSBUcmFuc2xhdGUoRGF0YS5NZXNzYWdlSGVhZGVyKSB8IGh0bWwgJV0gPC9oND4KICAgICAgICAgICAgPHAgY2xhc3M9IlNwYWNpbmdUb3AiPgogICAgICAgICAgICAgICAgWyUgVHJhbnNsYXRlKERhdGEuTWVzc2FnZSkgfCBodG1sICVdCiAgICAgICAgICAgIDwvcD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTaG93QW5zd2Vyc0J1dHRvbiIpICVdCiAgICAgICAgICAgIDxmb3JtIGFjdGlvbj0iWyUgRW52KCJDR0lIYW5kbGUiKSAlXSIgbWV0aG9kPSJwb3N0Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iIC8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTaG93Vm90ZURhdGEiIC8+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJQdWJsaWNTdXJ2ZXlLZXkiIHZhbHVlPSJbJSBEYXRhLlB1YmxpY1N1cnZleUtleSB8IGh0bWwgJV0iIC8+CiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgPlslIFRyYW5zbGF0ZSgiU2hvdyBteSBhbnN3ZXJzIikgfCBodG1sICVdPC9idXR0b24+CiAgICAgICAgICAgIDwvZm9ybT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNob3dBbnN3ZXJzQnV0dG9uIikgJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleU1lc3NhZ2UiKSAlXQoKWyUgUmVuZGVyQmxvY2tTdGFydCgiUHVibGljU3VydmV5Vm90ZURhdGEiKSAlXQo8ZGl2IGNsYXNzPSJDb250ZW50IEFSSUFSb2xlTWFpbiIgaWQ9Ik1haW5Cb3giPgogICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICA8aDI+WyUgVHJhbnNsYXRlKCJUaGVzZSBhcmUgeW91ciBhbnN3ZXJzIikgfCBodG1sICVdOjwvaDI+CiAgICA8L2Rpdj4KICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrIj4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiU3VydmV5IFRpdGxlIikgfCBodG1sICVdCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIlN1cnZleSIpIHwgaHRtbCAlXTogWyUgRGF0YS5UaXRsZSB8IGh0bWwgJV08L2gyPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CgogICAgPGRpdiBjbGFzcz0iU3VydmV5QmxvY2siPgogICAgICAgIDxkaXYgY2xhc3M9IlN1cnZleUJsb2NrSGVhZGVyIj4KICAgICAgICAgICAgWyUgVHJhbnNsYXRlKCJJbnRyb2R1Y3Rpb24iKSB8IGh0bWwgJV0KICAgICAgICA8L2Rpdj4KICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgWyUgRGF0YS5JbnRyb2R1Y3Rpb24gJV0KICAgICAgICA8L2Rpdj4KICAgIDwvZGl2PgoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgIDxmaWVsZHNldCBjbGFzcz0iU3VydmV5Ij4KICAgICAgICA8ZGl2IGNsYXNzPSJTdXJ2ZXlCbG9ja0hlYWRlciI+CiAgICAgICAgICAgIFslIFRyYW5zbGF0ZSgiVGhlc2UgYXJlIHlvdXIgYW5zd2VycyIpIHwgaHRtbCAlXToKICAgICAgICA8L2Rpdj4KClslIFJlbmRlckJsb2NrU3RhcnQoIlB1YmxpY1N1cnZleVZvdGVRdWVzdGlvbiIpICVdCiAgICAgICAgPGRpdiBjbGFzcz0iUXVlc3Rpb25Db250YWluZXIiPgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJRdWVzdGlvbiBbJSBEYXRhLkNsYXNzIHwgaHRtbCAlXSI+IFslIERhdGEuUmVxdWlyZWRUZXh0IHwgaHRtbCAlXVslIERhdGEuUXVlc3Rpb24gfCBodG1sICVdOjwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJQdWJsaWNTdXJ2ZXlWb3RlQW5zd2VyIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQW5zd2VyIj4KICAgICAgICAgICAgICAgIFslIERhdGEuQW5zd2VyIHwgaHRtbCAlXQogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUHVibGljU3VydmV5Vm90ZUFuc3dlciIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleVZvdGVRdWVzdGlvbiIpICVdCiAgICA8L2ZpZWxkc2V0Pgo8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIlB1YmxpY1N1cnZleVZvdGVEYXRhIikgJV0K
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpTdXJ2ZXk6OlJlcXVlc3RzRGVsZXRlOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JywKKTsKCnN1YiBDb25maWd1cmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+RGVzY3JpcHRpb24oJ0RlbGV0ZSBzdXJ2ZXkgcmVzdWx0cyAoaW5jbHVkaW5nIHZvdGUgZGF0YSBhbmQgcmVxdWVzdHMpLicpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnZm9yY2UnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJBY3R1YWxseSBkZWxldGUgcmVzdWx0cyBub3cuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDAsCiAgICApOwoKICAgIHJldHVybjsKfQoKc3ViIFByZVJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWxldGVQZXJpb2QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1N1cnZleTo6RGVsZXRlUGVyaW9kJyk7CiAgICBpZiAoICEkRGVsZXRlUGVyaW9kICkgewogICAgICAgIGRpZSAiTm8gZGF5cyBjb25maWd1cmVkIGluIFN1cnZleTo6RGVsZXRlUGVyaW9kLlxuIjsKICAgIH0KCiAgICByZXR1cm47Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkU2VsZi0+UHJpbnQoIjx5ZWxsb3c+UHJvY2Vzc2luZyBwZW5kaW5nIHN1cnZleSByZXN1bHRzLi4uPC95ZWxsb3c+XG5cbiIpOwoKICAgICMgZ2V0IGZvcmNlIG9wdGlvbgogICAgbXkgJEZvcmNlID0gJFNlbGYtPkdldE9wdGlvbignZm9yY2UnKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHN1cnZleSBvYmplY3QKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgIyBnZXQgc3VydmV5IGlkcwogICAgbXkgQFN1cnZleUlEcyA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVNlYXJjaCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICk7CgogICAgIyBnZXQgZGVsZXRlIHBlcmlvZCAoaW4gZGF5cykKICAgIG15ICREZWxldGVQZXJpb2QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1N1cnZleTo6RGVsZXRlUGVyaW9kJyk7CgogICAgbXkgJE9sZGVyRGF0ZVRpbWVPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgKTsKICAgICRPbGRlckRhdGVUaW1lT2JqZWN0LT5TdWJ0cmFjdCgKICAgICAgICBEYXlzID0+ICREZWxldGVQZXJpb2QsCiAgICApOwogICAgJE9sZGVyRGF0ZVRpbWVPYmplY3QtPlNldCgKICAgICAgICBIb3VyICAgPT4gMjMsCiAgICAgICAgTWludXRlID0+IDU5LAogICAgICAgIFNlY29uZCA9PiA1OSwKICAgICk7CiAgICBteSAkUmVxdWVzdENyZWF0ZVRpbWVPbGRlckRhdGUgPSAkT2xkZXJEYXRlVGltZU9iamVjdC0+VG9TdHJpbmcoKTsKCiAgICBteSAkTmV3ZXJEYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICApOwogICAgJE5ld2VyRGF0ZVRpbWVPYmplY3QtPlN1YnRyYWN0KAogICAgICAgIERheXMgPT4gJERlbGV0ZVBlcmlvZCArIDEsCiAgICApOwogICAgJE5ld2VyRGF0ZVRpbWVPYmplY3QtPlNldCgKICAgICAgICBIb3VyICAgPT4gMCwKICAgICAgICBNaW51dGUgPT4gMCwKICAgICAgICBTZWNvbmQgPT4gMCwKICAgICk7CiAgICBteSAkUmVxdWVzdENyZWF0ZVRpbWVOZXdlckRhdGUgPSAkTmV3ZXJEYXRlVGltZU9iamVjdC0+VG9TdHJpbmcoKTsKCiAgICAjIGluaXQgcmVzdWx0IGFycmF5CiAgICBteSBAUmVzdWx0TGlzdDsKCiAgICBmb3IgbXkgJFN1cnZleUlEIChAU3VydmV5SURzKSB7CgogICAgICAgICMgZ2V0IHB1YmxpYyBzdXJ2ZXkga2V5cwogICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXlzID0gJFN1cnZleU9iamVjdC0+UHVibGljU3VydmV5S2V5R2V0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKCiAgICAgICAgUkVRVUVTVDoKICAgICAgICBmb3IgbXkgJFB1YmxpY0tleSAoIEB7JFB1YmxpY1N1cnZleUtleXN9ICkgewoKICAgICAgICAgICAgIyBnZXQgcmVxdWVzdHMKICAgICAgICAgICAgbXkgJVJlcXVlc3REYXRhID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdEdldCgKICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSAgICAgICAgICAgID0+ICRQdWJsaWNLZXksCiAgICAgICAgICAgICAgICBSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSA9PiAkUmVxdWVzdENyZWF0ZVRpbWVPbGRlckRhdGUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNraXAgaWYgd2UgaGF2ZSBubyByZXF1ZXN0IGRhdGEKICAgICAgICAgICAgbmV4dCBSRVFVRVNUIGlmICElUmVxdWVzdERhdGE7CgogICAgICAgICAgICAjIGdldCB2b3RlIGxpc3QKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFNFTEVDVCBzLnRpdGxlLCB0LnRuICwgc3Iuc2VuZF90aW1lLCBzci52b3RlX3RpbWUsIHNyLmNyZWF0ZV90aW1lCiAgICAgICAgICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBzcgogICAgICAgICAgICAgICAgICAgIElOTkVSIEpPSU4gdGlja2V0IHQgT04gdC5pZCA9IHNyLnRpY2tldF9pZAogICAgICAgICAgICAgICAgICAgIElOTkVSIEpPSU4gc3VydmV5IHMgT04gcy5pZCA9IHNyLnN1cnZleV9pZAogICAgICAgICAgICAgICAgICAgIFdIRVJFIHNyLmlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9IF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICAgICAgICAgbXkgJFJlc3VsdCA9IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgJyAnLCAiU3VydmV5OiIgLiAkUm93WzBdIC4gIlx0IiwKICAgICAgICAgICAgICAgICAgICAiVGlja2V0TnVtYmVyOiIgLiAkUm93WzFdIC4gIlx0IiwKICAgICAgICAgICAgICAgICAgICAiU2VuZFRpbWU6IiAuICRSb3dbMl0gLiAiXHQiLAogICAgICAgICAgICAgICAgICAgICJWb3RlVGltZToiIC4gJFJvd1szXSAuICJcdCIsCiAgICAgICAgICAgICAgICAgICAgIkNyZWF0ZVRpbWU6IiAuICRSb3dbNF0gLiAiXHQiCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiJFJlc3VsdFxuIik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkRm9yY2UpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSB2b3RlIGRhdGEKICAgICAgICAgICAgICAgIG15ICRWb3RlRGVsZXRlID0gJFN1cnZleU9iamVjdC0+Vm90ZURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0SUQgPT4gJFJlcXVlc3REYXRhe1JlcXVlc3RJRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZGVsZXRlIHJlcXVlc3QKICAgICAgICAgICAgICAgIG15ICRSZXF1ZXN0RGVsZXRlID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBSZXF1ZXN0SUQgPT4gJFJlcXVlc3REYXRhe1JlcXVlc3RJRH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwogICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpTdXJ2ZXk6OlJlcXVlc3RzU2VuZDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkJhc2VDb21tYW5kKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6REInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN1cnZleScsCik7CgpzdWIgQ29uZmlndXJlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPkRlc2NyaXB0aW9uKCdTZW5kIHBlbmRpbmcgc3VydmV5IHJlcXVlc3RzLicpOwogICAgJFNlbGYtPkFkZE9wdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAnZm9yY2UnLAogICAgICAgIERlc2NyaXB0aW9uID0+ICJBY3R1YWxseSBzZW5kIHRoZSByZXF1ZXN0cyBub3cuIiwKICAgICAgICBSZXF1aXJlZCAgICA9PiAwLAogICAgICAgIEhhc1ZhbHVlICAgID0+IDAsCiAgICApOwoKICAgICRTZWxmLT5BZGRpdGlvbmFsSGVscCg8PCJFT0YiKTsKCiA8eWVsbG93PkNvbmZpZ3VyZSBkZWxheWVkIHJlcXVlc3Qgc2VuZGluZzo8L3llbGxvdz4KCiAgPHllbGxvdz4xLjwveWVsbG93PiBHbyB0byB5b3VyIFN5c0NvbmZpZyAoU3VydmV5LT5Db3JlKSBhbmQgY29uZmlndXJlIDxncmVlbj5TdXJ2ZXk6OlNlbmRJbkhvdXJzQWZ0ZXJDbG9zZTwvZ3JlZW4+IHRvIGEgaGlnaGVyIHZhbHVlIHRoYW4gMAogIDx5ZWxsb3c+Mi48L3llbGxvdz4gQ3JlYXRlIGEgc3VydmV5LCBtYWtlIGl0IG1hc3RlcgogIDx5ZWxsb3c+My48L3llbGxvdz4gQ3JlYXRlIGEgdGlja2V0LCBjbG9zZSBpdAogIDx5ZWxsb3c+NC48L3llbGxvdz4gV2FpdCB0aGUgbmVjZXNzYXJ5IGFtb3VudCBvZiBob3VycyB5b3UgaGFkIGNvbmZpZ3VyZWQKICA8eWVsbG93PjUuPC95ZWxsb3c+IFlvdSBjYW4gZG8gYSBkcnkgcnVuIHRvIGdldCBhIGxpc3Qgb2Ygc3VydmV5IHJlcXVlc3RzIHRoYXQgd291bGQgYmUgc2VudCAoIGRvIG5vdCB1c2UgLS1mb3JjZSApCiAgPHllbGxvdz42LjwveWVsbG93PiBJZiB5b3UncmUgZmluZSB3aXRoIGl0LCBnbyBhZ2FpbiB0byBTeXNDb25maWcgKFN1cnZleS0+RGFlbW9uOjpTY2hlZHVsZXJDcm9uVGFza01hbmFnZXI6OlRhc2spIGFuZCBhY3RpdmF0ZSBkYWVtb24gdGFzayA8Z3JlZW4+IERhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrIyMjU3VydmV5UmVxdWVzdHNTZW5kPC9ncmVlbj4KRU9GCgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFNlbGYtPlByaW50KCI8eWVsbG93PlByb2Nlc3NpbmcgcGVuZGluZyBzdXJ2ZXkgcmVxdWVzdHMuLi48L3llbGxvdz5cblxuIik7CgogICAgbXkgJFNlbmRJbkhvdXJzQWZ0ZXJDbG9zZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU3VydmV5OjpTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnKTsKICAgIGlmICggISRTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UgKSB7CiAgICAgICAgJFNlbGYtPlByaW50KCJObyBob3VycyBjb25maWd1cmVkIGluIFN1cnZleTo6U2VuZEluSG91cnNBZnRlckNsb3NlLlxuIik7CgogICAgICAgICRTZWxmLT5QcmludCgiPGdyZWVuPkRvbmUuPC9ncmVlbj5cbiIpOwogICAgICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPaygpOwogICAgfQoKICAgICMgZ2V0IGZvcmNlIG9wdGlvbgogICAgbXkgJEZvcmNlID0gJFNlbGYtPkdldE9wdGlvbignZm9yY2UnKTsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZmluZCBzdXJ2ZXlfcmVxdWVzdHMgdGhhdCBoYXZlbid0IGJlZW4gc2VudCB5ZXQKICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgdGlja2V0X2lkLCBjcmVhdGVfdGltZSwgcHVibGljX3N1cnZleV9rZXkKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdAogICAgICAgICAgICBXSEVSRSBzZW5kX3RpbWUgSVMgTlVMTAogICAgICAgICAgICBPUkRFUiBCWSBjcmVhdGVfdGltZSBERVNDJywKICAgICk7CgogICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgJFNlbGYtPlByaW50RXJyb3IoIkRCIGVycm9yIGR1cmluZyBhIFByZXBhcmUgZnVuY3Rpb24uXG4iKTsKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3IoKTsKICAgIH0KCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBSZXF1ZXN0TGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFJlcXVlc3RMaXN0LCB7CiAgICAgICAgICAgIElEICAgICAgICAgICAgICA9PiAkUm93WzBdLAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgPT4gJFJvd1sxXSwKICAgICAgICAgICAgQ3JlYXRlVGltZSAgICAgID0+ICRSb3dbMl0sCiAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUm93WzNdLAogICAgICAgIH07CiAgICB9CgogICAgaWYgKCAhQFJlcXVlc3RMaXN0ICkgewogICAgICAgICRTZWxmLT5QcmludCgiXG48Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICAgICAgcmV0dXJuICRTZWxmLT5FeGl0Q29kZU9rKCk7CiAgICB9CgogICAgIyBnZXQgU3lzdGVtVGltZSBpbiBVbml4VGltZQogICAgbXkgJFN5c3RlbVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKS0+VG9FcG9jaCgpOwoKICAgIFJFUVVFU1Q6CiAgICBmb3IgbXkgJFJlcXVlc3QgKEBSZXF1ZXN0TGlzdCkgewoKICAgICAgICBmb3IgbXkgJE5lZWRlZCAocXcoSUQgVGlja2V0SUQgQ3JlYXRlVGltZSkpIHsKICAgICAgICAgICAgaWYgKCAhJFJlcXVlc3QtPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiPHJlZD5FcnJvcjogJE5lZWRlZCBtaXNzaW5nIGluIHNlcnZpY2VfcmVxdWVzdCByb3cuPC9yZWQ+XG4iKTsKICAgICAgICAgICAgICAgIG5leHQgUkVRVUVTVDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjb252ZXJ0IGNyZWF0ZV90aW1lIHRvIHVuaXh0aW1lCiAgICAgICAgbXkgJENyZWF0ZVRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKAogICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgIFN0cmluZyA9PiAkUmVxdWVzdC0+e0NyZWF0ZVRpbWV9LAogICAgICAgICAgICB9LAogICAgICAgICktPlRvU3RyaW5nKCk7CgogICAgICAgICRTZWxmLT5QcmludCgKICAgICAgICAgICAgIiAgUmVxdWVzdElEOiA8eWVsbG93PiRSZXF1ZXN0LT57SUR9PC95ZWxsb3c+XG4gICAtRm9yIFRpY2tldElEOiAkUmVxdWVzdC0+e1RpY2tldElEfVxuIgogICAgICAgICk7CgogICAgICAgICMgZG9uJ3Qgc2VuZCBmb3Igc3VydmV5X3JlcXVlc3RzIHRoYXQgYXJlIHlvdW5nZXIgdGhhbiBDcmVhdGVUaW1lICsgJFNlbmRJTkhvdXJzQWZ0ZXJDbG9zZQogICAgICAgIGlmICggJFNlbmRJbkhvdXJzQWZ0ZXJDbG9zZSAqIDNfNjAwICsgJENyZWF0ZVRpbWUgPiAkU3lzdGVtVGltZSApIHsKICAgICAgICAgICAgJFNlbGYtPlByaW50KAogICAgICAgICAgICAgICAgIiAgIC1Ta2lwcGVkIGJlY2F1c2Ugc2VuZCB0aW1lIHdhc24ndCByZWFjaGVkIHlldC5cblxuIgogICAgICAgICAgICApOwogICAgICAgICAgICBuZXh0IFJFUVVFU1Q7CiAgICAgICAgfQoKICAgICAgICAkU2VsZi0+UHJpbnQoCiAgICAgICAgICAgICIgICAtU2VuZGluZyByZXF1ZXN0Li4uXG4iCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRGb3JjZSkgewogICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+UmVxdWVzdFNlbmQoCiAgICAgICAgICAgICAgICBUcmlnZ2VyU2VuZFJlcXVlc3RzID0+IDEsCiAgICAgICAgICAgICAgICBTdXJ2ZXlSZXF1ZXN0SUQgICAgID0+ICRSZXF1ZXN0LT57SUR9LAogICAgICAgICAgICAgICAgVGlja2V0SUQgICAgICAgICAgICA9PiAkUmVxdWVzdC0+e1RpY2tldElEfSwKICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSAgICAgPT4gJFJlcXVlc3QtPntQdWJsaWNTdXJ2ZXlLZXl9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiICAgIDxyZWQ+RXJyb3Igc2VuZGluZyB0aGUgcmVxdWVzdDwvcmVkPlxuIikKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5QcmludCgiICAgIDxncmVlbj5SZXF1ZXN0IGlzIHNlbnQgc3VjY2Vzc2Z1bGx5LjwvZ3JlZW4+XG4iKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICAkU2VsZi0+UHJpbnQoIlxuIik7CiAgICB9CgogICAgJFNlbGYtPlByaW50KCI8Z3JlZW4+RG9uZS48L2dyZWVuPlxuIik7CiAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlT2soKTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN0YXRzOjpEeW5hbWljOjpTdXJ2ZXlMaXN0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIExpc3Q6OlV0aWwgcXcoIGZpcnN0ICk7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpMYW5ndWFnZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9jaycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlF1ZXVlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6U2VydmljZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlNMQScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN0YXRzJywKICAgICdLZXJuZWw6OlN5c3RlbTo6VGlja2V0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6VHlwZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknLAopOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBHZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aWNrZXQgb2JqZWN0LgogICAgJFNlbGYtPntEeW5hbWljRmllbGR9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgIFZhbGlkICAgICAgPT4gMSwKICAgICAgICBPYmplY3RUeXBlID0+IFsnVGlja2V0J10sCiAgICApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIEdldE9iamVjdE5hbWUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJ1N1cnZleUxpc3QnOwp9CgpzdWIgR2V0T2JqZWN0QmVoYXZpb3VycyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICVCZWhhdmlvdXJzID0gKAogICAgICAgIFByb3ZpZGVzRGFzaGJvYXJkV2lkZ2V0ID0+IDAsCiAgICApOwoKICAgIHJldHVybiAlQmVoYXZpb3VyczsKfQoKc3ViIEdldE9iamVjdEF0dHJpYnV0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIEdldCBuZWVkZWQgb2JqZWN0cy4KICAgIG15ICRMb2NrT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9jaycpOwogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICBteSAlTGltaXQgPSAoCiAgICAgICAgNSAgICAgICAgID0+IDUsCiAgICAgICAgMTAgICAgICAgID0+IDEwLAogICAgICAgIDIwICAgICAgICA9PiAyMCwKICAgICAgICA1MCAgICAgICAgPT4gNTAsCiAgICAgICAgMTAwICAgICAgID0+IDEwMCwKICAgICAgICB1bmxpbWl0ZWQgPT4gVHJhbnNsYXRhYmxlKCd1bmxpbWl0ZWQnKSwKICAgICk7CgogICAgIyBHZXQgU3VydmV5IExpc3QuCiAgICBteSAlU3VydmV5TGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUxpc3QoKTsKCiAgICBteSAlU3VydmV5QXR0cmlidXRlcyA9ICV7ICRTZWxmLT5fU3VydmV5QXR0cmlidXRlcygpIH07CiAgICBteSAlT3JkZXJCeSA9IG1hcCB7ICRfID0+ICRTdXJ2ZXlBdHRyaWJ1dGVzeyRffSB9IGdyZXAgeyAkXyBuZSAnTnVtYmVyJyB9IGtleXMgJVN1cnZleUF0dHJpYnV0ZXM7CgogICAgIyBHZXQgZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdC4KICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICMgUmVtb3ZlIG5vbiBzb3J0YWJsZSAoYW5kIG9yZGVyYWJsZSkgRHluYW1pYyBGaWVsZHMuCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAjIENoZWNrIGlmIGR5bmFtaWMgZmllbGQgaXMgc29ydGFibGUuCiAgICAgICAgbXkgJElzU29ydGFibGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICk7CgogICAgICAgICMgUmVtb3ZlIGR5bmFtaWMgZmllbGRzIGZyb20gdGhlIGxpc3QgaWYgaXMgbm90IHNvcnRhYmxlLgogICAgICAgIGlmICggISRJc1NvcnRhYmxlICkgewogICAgICAgICAgICBkZWxldGUgJE9yZGVyQnl7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9CiAgICAgICAgfQogICAgfQoKICAgIG15ICVTb3J0U2VxdWVuY2UgPSAoCiAgICAgICAgVXAgICA9PiBUcmFuc2xhdGFibGUoJ2FzY2VuZGluZycpLAogICAgICAgIERvd24gPT4gVHJhbnNsYXRhYmxlKCdkZXNjZW5kaW5nJyksCiAgICApOwoKICAgIG15IEBPYmplY3RBdHRyaWJ1dGVzID0gKAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0F0dHJpYnV0ZXMgdG8gYmUgcHJpbnRlZCcpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAwLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdTdXJ2ZXlBdHRyaWJ1dGVzJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnTXVsdGlTZWxlY3RGaWVsZCcsCiAgICAgICAgICAgIFRyYW5zbGF0aW9uICAgICAgPT4gMSwKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJVN1cnZleUF0dHJpYnV0ZXMsCiAgICAgICAgICAgIFNvcnQgICAgICAgICAgICAgPT4gJ0luZGl2aWR1YWxLZXknLAogICAgICAgICAgICBTb3J0SW5kaXZpZHVhbCAgID0+ICRTZWxmLT5fU29ydGVkQXR0cmlidXRlcygpLAoKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1NvcnQgc2VxdWVuY2UnKSwKICAgICAgICAgICAgVXNlQXNYdmFsdWUgICAgICA9PiAwLAogICAgICAgICAgICBVc2VBc1ZhbHVlU2VyaWVzID0+IDEsCiAgICAgICAgICAgIFVzZUFzUmVzdHJpY3Rpb24gPT4gMCwKICAgICAgICAgICAgRWxlbWVudCAgICAgICAgICA9PiAnU29ydFNlcXVlbmNlJywKICAgICAgICAgICAgQmxvY2sgICAgICAgICAgICA9PiAnU2VsZWN0RmllbGQnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgICAgID0+IDEsCiAgICAgICAgICAgIFZhbHVlcyAgICAgICAgICAgPT4gXCVTb3J0U2VxdWVuY2UsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdMaW1pdCcpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdMaW1pdCcsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1NlbGVjdEZpZWxkJywKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAxLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IFwlTGltaXQsCiAgICAgICAgICAgIFNvcnQgICAgICAgICAgICAgPT4gJ0luZGl2aWR1YWxLZXknLAogICAgICAgICAgICBTb3J0SW5kaXZpZHVhbCAgID0+IFsgJzUnLCAnMTAnLCAnMjAnLCAnNTAnLCAnMTAwJywgJ3VubGltaXRlZCcsIF0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdDbG9zZSBUaW1lJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0Nsb3NlVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIFRpbWVTdGFydCA9PiAnVGlja2V0Q2xvc2VUaW1lTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAnVGlja2V0Q2xvc2VUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NyZWF0ZSBUaW1lJyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ0NyZWF0ZVRpbWUnLAogICAgICAgICAgICBUaW1lUGVyaW9kRm9ybWF0ID0+ICdEYXRlSW5wdXRGb3JtYXQnLAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdUaW1lJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICBUaW1lU3RhcnQgPT4gJ1RpY2tldENyZWF0ZVRpbWVOZXdlckRhdGUnLAogICAgICAgICAgICAgICAgVGltZVN0b3AgID0+ICdUaWNrZXRDcmVhdGVUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1NlbmQgVGltZScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdTZW5kVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIFRpbWVTdGFydCA9PiAnUmVxdWVzdFNlbmRUaW1lTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAnUmVxdWVzdFNlbmRUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1ZvdGUgVGltZScpLAogICAgICAgICAgICBVc2VBc1h2YWx1ZSAgICAgID0+IDAsCiAgICAgICAgICAgIFVzZUFzVmFsdWVTZXJpZXMgPT4gMCwKICAgICAgICAgICAgVXNlQXNSZXN0cmljdGlvbiA9PiAxLAogICAgICAgICAgICBFbGVtZW50ICAgICAgICAgID0+ICdWb3RlVGltZScsCiAgICAgICAgICAgIFRpbWVQZXJpb2RGb3JtYXQgPT4gJ0RhdGVJbnB1dEZvcm1hdCcsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1RpbWUnLAogICAgICAgICAgICBWYWx1ZXMgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgIFRpbWVTdGFydCA9PiAnUmVxdWVzdFZvdGVUaW1lTmV3ZXJEYXRlJywKICAgICAgICAgICAgICAgIFRpbWVTdG9wICA9PiAnUmVxdWVzdFZvdGVUaW1lT2xkZXJEYXRlJywKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ1N1cnZleSBMaXN0JyksCiAgICAgICAgICAgIFVzZUFzWHZhbHVlICAgICAgPT4gMCwKICAgICAgICAgICAgVXNlQXNWYWx1ZVNlcmllcyA9PiAwLAogICAgICAgICAgICBVc2VBc1Jlc3RyaWN0aW9uID0+IDEsCiAgICAgICAgICAgIEVsZW1lbnQgICAgICAgICAgPT4gJ1N1cnZleUlEcycsCiAgICAgICAgICAgIEJsb2NrICAgICAgICAgICAgPT4gJ1NlbGVjdEZpZWxkJywKICAgICAgICAgICAgVmFsdWVzICAgICAgICAgICA9PiBcJVN1cnZleUxpc3QsCiAgICAgICAgfSwKCiAgICApOwoKICAgIHJldHVybiBAT2JqZWN0QXR0cmlidXRlczsKfQoKc3ViIEdldFN0YXRUYWJsZVByZXZpZXcgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFNlbGYtPkdldFN0YXRUYWJsZSgKICAgICAgICAlUGFyYW0sCiAgICAgICAgUHJldmlldyA9PiAxLAogICAgKTsKfQoKc3ViIEdldFN0YXRUYWJsZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwogICAgbXkgJVN1cnZleUF0dHJpYnV0ZXMgICAgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte1hWYWx1ZX0tPntTZWxlY3RlZFZhbHVlc30gfTsKICAgIG15ICRTb3J0ZWRBdHRyaWJ1dGVzUmVmID0gJFNlbGYtPl9Tb3J0ZWRBdHRyaWJ1dGVzKCk7CiAgICBteSAkUHJldmlldyAgICAgICAgICAgICA9ICRQYXJhbXtQcmV2aWV3fTsKCiAgICAjIEdldCBuZWVkZWQgb2JqZWN0cy4KICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKICAgICMgQ2hlY2sgaWYgYSBlbnVtZXJhdGlvbiBpcyByZXF1ZXN0ZWQuCiAgICBteSAkQWRkRW51bWVyYXRpb24gPSAwOwogICAgaWYgKCAkU3VydmV5QXR0cmlidXRlc3tOdW1iZXJ9ICkgewogICAgICAgICRBZGRFbnVtZXJhdGlvbiA9IDE7CiAgICAgICAgZGVsZXRlICRTdXJ2ZXlBdHRyaWJ1dGVze051bWJlcn07CiAgICB9CgogICAgIyBTZXQgZGVmYXVsdCB2YWx1ZXMgaWYgbm8gc29ydCBvciBvcmRlciBhdHRyaWJ1dGUgaXMgZ2l2ZW4uCiAgICBteSAkU29ydFJlZiA9IGZpcnN0IHsgJF8tPntFbGVtZW50fSBlcSAnU29ydFNlcXVlbmNlJyB9IEB7ICRQYXJhbXtWYWx1ZVNlcmllc30gfTsKICAgIG15ICRTb3J0ID0gJFNvcnRSZWYgPyAkU29ydFJlZi0+e1NlbGVjdGVkVmFsdWVzfS0+WzBdIDogJ0Rvd24nOwogICAgbXkgJExpbWl0ID0gJFBhcmFte1Jlc3RyaWN0aW9uc30tPntMaW1pdH07CgogICAgJFBhcmFte1Jlc3RyaWN0aW9uc30tPntMaW1pdH0gPSAkTGltaXQgfHwgMTAwXzAwMF8wMDA7CgogICAgIyBGaW5kIG91dCBpZiB0aGUgZXh0ZW5kZWQgdmVyc2lvbiBvZiBUaWNrZXRHZXQgaXMgbmVlZGVkLgogICAgbXkgJEV4dGVuZGVkID0gJFNlbGYtPl9FeHRlbmRlZEF0dHJpYnV0ZXNDaGVjaygKICAgICAgICBTdXJ2ZXlBdHRyaWJ1dGVzID0+IFwlU3VydmV5QXR0cmlidXRlcywKICAgICk7CgogICAgIyBGaW5kIG91dCBpZiBkeW5hbWljIGZpZWxkcyBhcmUgcmVxdWlyZWQuCiAgICBteSAkTmVlZER5bmFtaWNGaWVsZHMgPSAwOwogICAgRFlOQU1JQ0ZJRUxEU05FRURFRDoKICAgIGZvciBteSAkUGFyYW1ldGVyTmFtZSAoIHNvcnQga2V5cyAlU3VydmV5QXR0cmlidXRlcyApIHsKICAgICAgICBpZiAoICRQYXJhbWV0ZXJOYW1lID1+IG17XEEgRHluYW1pY0ZpZWxkXyB9eG1zICkgewogICAgICAgICAgICAkTmVlZER5bmFtaWNGaWVsZHMgPSAxOwogICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRFNORUVERUQ7CiAgICAgICAgfQogICAgfQoKICAgICMgR2V0IGludm9sdmVkIFRpY2tldHMuCiAgICBteSBAVGlja2V0SURzOwogICAgaWYgKCRQcmV2aWV3KSB7CiAgICAgICAgQFRpY2tldElEcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICBSZXN1bHQgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJ3JvJywKICAgICAgICAgICAgTGltaXQgICAgICA9PiAxMCwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQFRpY2tldElEcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldFNlYXJjaCgKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICBSZXN1bHQgICAgID0+ICdBUlJBWScsCiAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJ3JvJywKICAgICAgICAgICAgJXsgJFBhcmFte1Jlc3RyaWN0aW9uc30gfSwKICAgICAgICApOwogICAgfQoKICAgICMgR2V0IHRoZSBzdXJ2ZXkgZGF0YS4KICAgIG15IEBTdXJ2ZXlJRHM7CiAgICBteSBAU3RhdEFycmF5OwoKICAgIEBTdXJ2ZXlJRHMgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTZWFyY2goCiAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgJXsgJFBhcmFte1Jlc3RyaWN0aW9uc30gfSwKICAgICk7CgogICAgU1VSVkVZOgogICAgZm9yIG15ICRTdXJ2ZXlJRCAoQFN1cnZleUlEcykgewoKICAgICAgICAjIENoZWNrIHN1cnZleSByZXN0cmljdGlvbi4KICAgICAgICAjIENhbid0IGRvbmUgYnkgU3VydmV5U2VhcmNoLgogICAgICAgIG5leHQgU1VSVkVZIGlmICRQYXJhbXtSZXN0cmljdGlvbnN9e1N1cnZleUlEc30gJiYgJFBhcmFte1Jlc3RyaWN0aW9uc317U3VydmV5SURzfSBuZSAkU3VydmV5SUQ7CgogICAgICAgICMgR2V0IHB1YmxpYyBzdXJ2ZXkga2V5cy4KICAgICAgICBteSAkUHVibGljU3VydmV5S2V5czsKICAgICAgICBpZiAoJFByZXZpZXcpIHsKICAgICAgICAgICAgJFB1YmxpY1N1cnZleUtleXMgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlLZXlHZXQoCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICAgICBMaW1pdCAgICA9PiAxMCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQdWJsaWNTdXJ2ZXlLZXlzID0gJFN1cnZleU9iamVjdC0+UHVibGljU3VydmV5S2V5R2V0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBHZXQgcmVxdWVzdC4KICAgICAgICBQVUJMSUNLRVk6CiAgICAgICAgZm9yIG15ICRQdWJsaWNLZXkgKCBAeyRQdWJsaWNTdXJ2ZXlLZXlzfSApIHsKCiAgICAgICAgICAgIG15ICVTdXJ2ZXlSZXF1ZXN0ID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdEdldCgKICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljS2V5LAogICAgICAgICAgICAgICAgJXsgJFBhcmFte1Jlc3RyaWN0aW9uc30gfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgU2tpcCBpZiBubyBzdXJ2ZXkgcmVxdWVzdCBkYXRhIGZvdW5kIChlLmcuIHNlbmQgdGltZSBmaWx0ZXIpLgogICAgICAgICAgICBuZXh0IFBVQkxJQ0tFWSBpZiAhSXNIYXNoUmVmV2l0aERhdGEgeyVTdXJ2ZXlSZXF1ZXN0fTsKCiAgICAgICAgICAgICMgU2tpcCBpZiB0aWNrZXQgc3BlY2lmaWMgZmlsdGVycyBhcmUgc2V0LgogICAgICAgICAgICBuZXh0IFBVQkxJQ0tFWSBpZiAhZ3JlcCB7ICRfIGVxICRTdXJ2ZXlSZXF1ZXN0e1RpY2tldElEfSB9IEBUaWNrZXRJRHM7CgogICAgICAgICAgICAjIEdldCBxdWVzdGlvbiBsaXN0LgogICAgICAgICAgICBteSBAUXVlc3Rpb25MaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleVJlcXVlc3R7U3VydmV5SUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQFF1ZXN0aW9uczsKICAgICAgICAgICAgbXkgJVZvdGVSZXN1bHQ7CiAgICAgICAgICAgIFFVRVNUSU9OOgogICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uRGF0YSAoQFF1ZXN0aW9uTGlzdCkgewoKICAgICAgICAgICAgICAgICMgU2tpcCBxdWVzdGlvbiBibG9jayBpZiBubyBzdXJ2ZXkgZmlsdGVyIGlzIHNldC4KICAgICAgICAgICAgICAgIG5leHQgUVVFU1RJT04gaWYgISRQYXJhbXtSZXN0cmljdGlvbnN9e1N1cnZleUlEc307CgogICAgICAgICAgICAgICAgIyBHZXQgdm90ZXMgZm9yIHF1ZXN0aW9uIGFuZCByZXF1ZXN0LgogICAgICAgICAgICAgICAgbXkgQEFuc3dlckxpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlR2V0KAogICAgICAgICAgICAgICAgICAgIFJlcXVlc3RJRCAgPT4gJFN1cnZleVJlcXVlc3R7UmVxdWVzdElEfSwKICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbkRhdGEtPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBQdXNoIHF1ZXN0aW9ucyBpbnRvIGFycmF5IGZvciBsYXRlciB1c2UuCiAgICAgICAgICAgICAgICBwdXNoIEBRdWVzdGlvbnMsICRRdWVzdGlvbkRhdGEtPntRdWVzdGlvbn07CgogICAgICAgICAgICAgICAgIyBMb29wIHRocm91Z2ggdm90ZSBkYXRhIHRvIG1lcmdlIHZvdGVzIGludG8gc3VydmV5IHJlcXVlc3QgaGFzaC4KICAgICAgICAgICAgICAgIGlmIChAQW5zd2VyTGlzdCkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkVm90ZURhdGEgKEBBbnN3ZXJMaXN0KSB7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUXVlc3Rpb25EYXRhLT57VHlwZX0gZXEgJ05QUycKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbkRhdGEtPntUeXBlfSBlcSAnUmFkaW8nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkUXVlc3Rpb25EYXRhLT57VHlwZX0gZXEgJ0NoZWNrYm94JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAlQW5zd2VyID0gJFN1cnZleU9iamVjdC0+QW5zd2VyR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlcklEID0+ICRWb3RlRGF0YS0+e1ZvdGVWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uRGF0YS0+e1R5cGV9IGVxICdDaGVja2JveCcgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb3VudEFuc3dlciA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckNvdW50KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEID0+ICRRdWVzdGlvbkRhdGEtPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIElmIHdlIGhhdmUgb25seSBvbmUgYW5zd2VyIHVzZSBDaGVja2VkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJENvdW50QW5zd2VyID09IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRBbnN3ZXJ7QW5zd2VyfSA9IFRyYW5zbGF0YWJsZSgnQ2hlY2tlZCcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHNjYWxhciBAQW5zd2VyTGlzdCA+IDEgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleVJlcXVlc3R7ICRRdWVzdGlvbkRhdGEtPntRdWVzdGlvbn0gfSAuPSAkQW5zd2Vye0Fuc3dlcn0gLiAiXG4iOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFN1cnZleVJlcXVlc3R7ICRRdWVzdGlvbkRhdGEtPntRdWVzdGlvbn0gfSA9ICRBbnN3ZXJ7QW5zd2VyfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRRdWVzdGlvbkRhdGEtPntUeXBlfSBlcSAnWWVzTm8nIHx8ICRRdWVzdGlvbkRhdGEtPntUeXBlfSBlcSAnVGV4dGFyZWEnICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFF1ZXN0aW9uRGF0YS0+e1R5cGV9IGVxICdUZXh0YXJlYScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFZvdGVEYXRhLT57Vm90ZVZhbHVlfSA9fiBze1xBXCRodG1sXC90ZXh0XCRccyguKil9eyQxfXhtczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVm90ZURhdGEtPntWb3RlVmFsdWV9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFZvdGVEYXRhLT57Vm90ZVZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkU3VydmV5UmVxdWVzdHsgJFF1ZXN0aW9uRGF0YS0+e1F1ZXN0aW9ufSB9ID0gJFZvdGVEYXRhLT57Vm90ZVZhbHVlfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlSZXF1ZXN0eyAkUXVlc3Rpb25EYXRhLT57UXVlc3Rpb259IH0gPSAkVm90ZURhdGEtPntWb3RlVmFsdWV9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFN1cnZleVJlcXVlc3R7ICRRdWVzdGlvbkRhdGEtPntRdWVzdGlvbn0gfSA9ICIgIjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQFJlc3VsdFJvdzsKICAgICAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgICAgIFRpY2tldElEICAgICAgPT4gJFN1cnZleVJlcXVlc3R7VGlja2V0SUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgRXh0ZW5kZWQgICAgICA9PiAkRXh0ZW5kZWQsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+ICROZWVkRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgTWVyZ2UgdGlja2V0IGFuZCBzdXJ2ZXkgcmVxdWVzdCBkYXRhLgogICAgICAgICAgICBteSAlU3VydmV5RGF0YSA9ICggJVN1cnZleVJlcXVlc3QsICVUaWNrZXQgKTsKCiAgICAgICAgICAgICMgR2V0IFN1cnZleSByYXcgZGF0YS4KICAgICAgICAgICAgbXkgJVN1cnZleVJhdyA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICAgICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlSZXF1ZXN0e1N1cnZleUlEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgTWVyZ2UgU3VydmV5VGl0bGUgaW50byBTdXJ2ZXlEYXRhLgogICAgICAgICAgICAkU3VydmV5RGF0YXtTdXJ2ZXlUaXRsZX0gPSAkU3VydmV5UmF3e1RpdGxlfTsKCiAgICAgICAgICAgIEFUVFJJQlVURToKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBAeyRTb3J0ZWRBdHRyaWJ1dGVzUmVmfSApIHsKICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkU3VydmV5QXR0cmlidXRlc3skQXR0cmlidXRlfTsKCiAgICAgICAgICAgICAgICAjIENsZWFuIFN1cnZleURhdGEuCiAgICAgICAgICAgICAgICBpZiAoICEkU3VydmV5RGF0YXskQXR0cmlidXRlfSApIHsKICAgICAgICAgICAgICAgICAgICAkU3VydmV5RGF0YXskQXR0cmlidXRlfSA9ICcnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHB1c2ggQFJlc3VsdFJvdywgJFN1cnZleURhdGF7JEF0dHJpYnV0ZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgTWVyZ2UgcXVlc3Rpb25zIGludG8gcmVzdWx0IHJvdy4KICAgICAgICAgICAgUVVFU1RJT05TOgogICAgICAgICAgICBmb3IgbXkgJFF1ZXN0aW9uIChAUXVlc3Rpb25zKSB7CgogICAgICAgICAgICAgICAgcHVzaCBAUmVzdWx0Um93LCAkU3VydmV5RGF0YXskUXVlc3Rpb259OwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBTdGF0QXJyYXksIFxAUmVzdWx0Um93OwogICAgICAgIH0KICAgIH0KCiAgICBAU3RhdEFycmF5ID0gJFNlbGYtPl9JbmRpdmlkdWFsUmVzdWx0T3JkZXIoCiAgICAgICAgU3RhdEFycmF5ID0+IFxAU3RhdEFycmF5LAogICAgICAgIFNvcnQgICAgICA9PiAkU29ydCwKICAgICAgICBMaW1pdCAgICAgPT4gJExpbWl0LAogICAgKTsKCiAgICByZXR1cm4gQFN0YXRBcnJheTsKfQoKc3ViIEdldEhlYWRlckxpbmUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15ICVTZWxlY3RlZEF0dHJpYnV0ZXMgPSBtYXAgeyAkXyA9PiAxIH0gQHsgJFBhcmFte1hWYWx1ZX0tPntTZWxlY3RlZFZhbHVlc30gfTsKCiAgICBteSAkU3VydmV5QXR0cmlidXRlcyAgICA9ICRTZWxmLT5fU3VydmV5QXR0cmlidXRlcygpOwogICAgbXkgJFNvcnRlZEF0dHJpYnV0ZXNSZWYgPSAkU2VsZi0+X1NvcnRlZEF0dHJpYnV0ZXMoKTsKICAgIG15IEBIZWFkZXJMaW5lOwoKICAgICMgR2V0IGxhbmd1YWdlIG9iamVjdC4KICAgIG15ICRMYW5ndWFnZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6TGFuZ3VhZ2UnKTsKCiAgICAjIEdldCBzdXJ2ZXkgb2JqZWN0LgogICAgbXkgJFN1cnZleU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKCiAgICBBVFRSSUJVVEU6CiAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoIEB7JFNvcnRlZEF0dHJpYnV0ZXNSZWZ9ICkgewogICAgICAgIG5leHQgQVRUUklCVVRFIGlmICEkU2VsZWN0ZWRBdHRyaWJ1dGVzeyRBdHRyaWJ1dGV9OwogICAgICAgIHB1c2ggQEhlYWRlckxpbmUsICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkU3VydmV5QXR0cmlidXRlcy0+eyRBdHRyaWJ1dGV9ICk7CiAgICB9CgogICAgIyBBZGQgcXVlc3Rpb25zLgogICAgIyBPbmx5IGlmIHN1cnZleSByZXN0cmljdGlvbiBpcyBhY3RpdmUuCiAgICAjIEdldCBzdXJ2ZXkgaWRzLgogICAgaWYgKCAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N1cnZleUlEc30gKSB7CgogICAgICAgIG15IEBTdXJ2ZXlJRHMgPSAkUGFyYW17UmVzdHJpY3Rpb25zfS0+e1N1cnZleUlEc307CgogICAgICAgICMgR2V0IHF1ZXN0aW9ucy4KICAgICAgICBteSBAUXVlc3Rpb25zOwogICAgICAgIGZvciBteSAkU3VydmV5SUQgKEBTdXJ2ZXlJRHMpIHsKCiAgICAgICAgICAgIG15IEBMaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZm9yIG15ICRMaXN0IChATGlzdCkgewogICAgICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25zLCAkTGlzdC0+e1F1ZXN0aW9ufTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcHVzaCBASGVhZGVyTGluZSwgQFF1ZXN0aW9uczsKICAgIH0KCiAgICByZXR1cm4gXEBIZWFkZXJMaW5lOwp9CgpzdWIgRXhwb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgSW1wb3J0V3JhcHBlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBcJVBhcmFtOwp9CgpzdWIgX1N1cnZleUF0dHJpYnV0ZXMgewogICAgbXkgJFNlbGYgPSBzaGlmdDsKCiAgICAjIEdldCBjb25maWcgb2JqZWN0LgogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgbXkgJVN1cnZleUF0dHJpYnV0ZXMgPSAoCgogICAgICAgIFRpY2tldE51bWJlciA9PiAnVGlja2V0TnVtYmVyJywKICAgICAgICBTdXJ2ZXlUaXRsZSAgPT4gJ1N1cnZleSBUaXRsZScsCiAgICAgICAgQ3JlYXRlZCAgICAgID0+ICdDcmVhdGUgVGltZScsCiAgICAgICAgQ2xvc2VkICAgICAgID0+ICdDbG9zZSBUaW1lJywKICAgICAgICBTZW5kVGltZSAgICAgPT4gJ1N1cnZleSBTZW5kIFRpbWUnLAogICAgICAgIFZvdGVUaW1lICAgICA9PiAnU3VydmV5IFZvdGUgVGltZScsCiAgICAgICAgUXVldWUgICAgICAgID0+ICdRdWV1ZScsCiAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdDdXN0b21lcklEJywKCiAgICApOwoKICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdUaWNrZXQ6OlNlcnZpY2UnKSApIHsKICAgICAgICAkU3VydmV5QXR0cmlidXRlc3tTZXJ2aWNlfSA9ICdTZXJ2aWNlJzsKICAgIH0KCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAkU3VydmV5QXR0cmlidXRlc3sgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9CiAgICB9CgogICAgcmV0dXJuIFwlU3VydmV5QXR0cmlidXRlczsKfQoKc3ViIF9Tb3J0ZWRBdHRyaWJ1dGVzIHsKICAgIG15ICRTZWxmID0gc2hpZnQ7CgogICAgbXkgQFNvcnRlZEF0dHJpYnV0ZXMgPSBxdygKICAgICAgICBUaWNrZXROdW1iZXIKICAgICAgICBTdXJ2ZXlUaXRsZQogICAgICAgIENyZWF0ZWQKICAgICAgICBDbG9zZWQKICAgICAgICBTZW5kVGltZQogICAgICAgIFZvdGVUaW1lCiAgICAgICAgUXVldWUKICAgICAgICBTZXJ2aWNlCiAgICAgICAgQ3VzdG9tZXJJRAogICAgKTsKCiAgICAjIEN5Y2xlIHRyb3VnaHQgdGhlIER5bmFtaWMgRmllbGRzLgogICAgRFlOQU1JQ0ZJRUxEOgogICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgISREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgIyBBZGQgZHluYW1pYyBmaWVsZCBhdHRyaWJ1dGUuCiAgICAgICAgcHVzaCBAU29ydGVkQXR0cmlidXRlcywgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgfQoKICAgIHJldHVybiBcQFNvcnRlZEF0dHJpYnV0ZXM7Cn0KCnN1YiBfRXh0ZW5kZWRBdHRyaWJ1dGVzQ2hlY2sgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSBARXh0ZW5kZWRBdHRyaWJ1dGVzID0gcXcoCiAgICAgICAgQ2xvc2VkCiAgICApOwoKICAgIEFUVFJJQlVURToKICAgIGZvciBteSAkQXR0cmlidXRlIChARXh0ZW5kZWRBdHRyaWJ1dGVzKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJFBhcmFte1N1cnZleUF0dHJpYnV0ZXN9eyRBdHRyaWJ1dGV9OwogICAgfQoKICAgIHJldHVybjsKfQoKc3ViIF9JbmRpdmlkdWFsUmVzdWx0T3JkZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKICAgIG15IEBVbnNvcnRlZCA9IEB7ICRQYXJhbXtTdGF0QXJyYXl9IH07CgogICAgbXkgQFNvcnRlZCA9IHNvcnQgeyAkYSA8PT4gJGIgfSBAVW5zb3J0ZWQ7CgogICAgIyBNYWtlIGEgcmV2ZXJzZSBzb3J0IGlmIG5lZWRlZC4KICAgIGlmICggJFBhcmFte1NvcnR9IGVxICdEb3duJyApIHsKICAgICAgICBAU29ydGVkID0gcmV2ZXJzZSBAU29ydGVkOwogICAgfQoKICAgICMgVGFrZSBjYXJlIGFib3V0IHRoZSBsaW1pdC4KICAgIGlmICggJFBhcmFte0xpbWl0fSAmJiAkUGFyYW17TGltaXR9IG5lICd1bmxpbWl0ZWQnICkgewogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgQFNvcnRlZCA9IGdyZXAgeyArKyRDb3VudCA8PSAkUGFyYW17TGltaXR9IH0gQFNvcnRlZDsKICAgIH0KCiAgICByZXR1cm4gQFNvcnRlZDsKfQoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBEaWdlc3Q6Ok1ENTsKdXNlIE1haWw6OkFkZHJlc3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6QW5zd2VyCiAgICBLZXJuZWw6OlN5c3RlbTo6U3VydmV5OjpRdWVzdGlvbgogICAgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UmVxdWVzdAogICAgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6Vm90ZQopOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDdXN0b21lclVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RW5jb2RlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SlNPTicsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN1cnZleSAtIHN1cnZleSBsaWIKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIHN1cnZleSBmdW5jdGlvbnMuIEUuIGcuIHRvIGFkZCBzdXJ2ZXkgb3IgYW5kIGZ1bmN0aW9ucy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgZ2V0IGxpa2UgZXNjYXBlIHN0cmluZyBuZWVkZWQgZm9yIHNvbWUgZGF0YWJhc2VzIChlLmcuIG9yYWNsZSkKICAgICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+R2V0RGF0YWJhc2VGdW5jdGlvbignTGlrZUVzY2FwZVN0cmluZycpOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIFN1cnZleUFkZCgpCgp0byBhZGQgYSBuZXcgc3VydmV5CgogICAgbXkgJFN1cnZleUlEID0gJFN1cnZleU9iamVjdC0+U3VydmV5QWRkKAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgID0+ICdBIFRpdGxlJywKICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgICAgID0+ICdUaGUgaW50cm9kdWN0aW9uIG9mIHRoZSBzdXJ2ZXknLAogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgICAgPT4gJ1RoZSBpbnRlcm5hbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3VydmV5JywKICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgICAgID0+ICdxdWFsaXR5QGV4YW1wbGUuY29tJywKICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ICAgID0+ICdIZWxwIHVzIHdpdGggeW91ciBmZWVkYmFjayEnLAogICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgICAgPT4gJ0RlYXIgY3VzdG9tZXIuLi4nLAogICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgICAgPT4gWzIsIDUsIDldLCAgIyAob3B0aW9uYWwpIHN1cnZleSBpcyB2YWxpZCBmb3IgdGhlc2UgcXVldWVzCiAgICAgICAgVGlja2V0VHlwZUlEcyAgICAgICAgICA9PiBbMSwgMiwgM10sICAjIChvcHRpb25hbCkgc3VydmV5IGlzIHZhbGlkIGZvciB0aGVzZSB0aWNrZXQgdHlwZXMKICAgICAgICBTZXJ2aWNlSURzICAgICAgICAgICAgID0+IFsxLCAyLCAzXSwgICMgKG9wdGlvbmFsKSBzdXJ2ZXkgaXMgdmFsaWQgZm9yIHRoZXNlIHNlcnZpY2VzCiAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyA9PiB7CiAgICAgICAgICAgICdVc2VyRmlyc3RuYW1lJyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aW9uJyA9PiAwLAogICAgICAgICAgICAgICAgICAgICdSZWdFeHBWYWx1ZScgPT4gJ15NaScKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aW9uJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICdSZWdFeHBWYWx1ZScgPT4gJ15LYScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgIH0sICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlBZGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAoCiAgICAgICAgcXcoCiAgICAgICAgVXNlcklEIFRpdGxlIEludHJvZHVjdGlvbiBEZXNjcmlwdGlvbgogICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBidWlsZCBzZW5kIGNvbmRpdGlvbiBzdHJpbmcKICAgIG15ICRTZW5kQ29uZGl0aW9uU3RyZyA9ICRTZWxmLT5fQnVpbGRTZW5kQ29uZGl0aW9uU3RyZyglUGFyYW0pOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBpbnNlcnQgYSBuZXcgc3VydmV5CiAgICBteSAkU3RhdHVzID0gJ05ldyc7CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gc3VydmV5ICh0aXRsZSwgaW50cm9kdWN0aW9uLCBkZXNjcmlwdGlvbiwgbm90aWZpY2F0aW9uX3NlbmRlciwKICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbl9zdWJqZWN0LCBub3RpZmljYXRpb25fYm9keSwgc3RhdHVzLCBzZW5kX2NvbmRpdGlvbnMsIGNyZWF0ZV90aW1lLCBjcmVhdGVfYnksCiAgICAgICAgICAgICAgICBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5ICkKICAgICAgICAgICAgVkFMVUVTICggPywgPywgPywgPywgPywgPywgPywgPywgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbCiAgICAgICAgICAgIFwkUGFyYW17VGl0bGV9LCAgICAgICAgICAgICAgXCRQYXJhbXtJbnRyb2R1Y3Rpb259LCAgICAgICAgXCRQYXJhbXtEZXNjcmlwdGlvbn0sCiAgICAgICAgICAgIFwkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSwgXCRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSwgXCRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSwKICAgICAgICAgICAgXCRTdGF0dXMsIFwkU2VuZENvbmRpdGlvblN0cmcsIFwkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgXCRQYXJhbXtVc2VySUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBpZCBvZiB0aGUgc3VydmV5CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgV0hFUkUgdGl0bGUgPSA/CiAgICAgICAgICAgICAgICBBTkQgaW50cm9kdWN0aW9uID0gPwogICAgICAgICAgICAgICAgQU5EIGRlc2NyaXB0aW9uID0gPwogICAgICAgICAgICBPUkRFUiBCWSBpZCBERVNDJywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17VGl0bGV9LCBcJFBhcmFte0ludHJvZHVjdGlvbn0sIFwkUGFyYW17RGVzY3JpcHRpb259LCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFN1cnZleUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFN1cnZleUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIHNldCB0aGUgc3VydmV5IG51bWJlcgogICAgbXkgJFN1cnZleU51bWJlciA9ICRTdXJ2ZXlJRCArIDEwMDAwOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgU0VUIHN1cnZleW51bWJlciA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlOdW1iZXIsIFwkU3VydmV5SUQsIF0sCiAgICApOwoKICAgIHJldHVybiAkU3VydmV5SUQgaWYgISRQYXJhbXtRdWV1ZXN9OwogICAgcmV0dXJuICRTdXJ2ZXlJRCBpZiByZWYgJFBhcmFte1F1ZXVlc30gbmUgJ0FSUkFZJzsKCiAgICAjIGluc2VydCBuZXcgc3VydmV5LXF1ZXVlIHJlbGF0aW9ucwogICAgJFNlbGYtPlN1cnZleVF1ZXVlU2V0KAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICBRdWV1ZUlEcyA9PiAkUGFyYW17UXVldWVzfSwKICAgICk7CgogICAgcmV0dXJuICRTdXJ2ZXlJRDsKfQoKPWhlYWQyIFN1cnZleUdldCgpCgp0byBnZXQgYWxsIGF0dHJpYnV0ZXMgb2YgYSBzdXJ2ZXkKCiAgICBteSAlU3VydmV5ID0gJFN1cnZleU9iamVjdC0+U3VydmV5R2V0KAogICAgICAgIFN1cnZleUlEID0+IDEyMywKICAgICk7CgpSZXR1cm5zOgogICAgJVN1cnZleSA9ICgKICAgICAgICAiQ2hhbmdlQnkiID0+IDEsCiAgICAgICAgIkNoYW5nZVRpbWUiID0+ICIyMDE3LTA4LTMwIDExOjI2OjQxIiwKICAgICAgICAiQ2hhbmdlVXNlckZpcnN0bmFtZSIgPT4gIkpvaG4iLAogICAgICAgICJDaGFuZ2VVc2VyRnVsbG5hbWUiID0+ICJKb2huIERvZSIsCiAgICAgICAgIkNoYW5nZVVzZXJMYXN0bmFtZSIgPT4gIkRvZSIsCiAgICAgICAgIkNoYW5nZVVzZXJMb2dpbiIgPT4gImpvaG4iLAogICAgICAgICJDcmVhdGVCeSIgPT4gMSwKICAgICAgICAiQ3JlYXRlVGltZSIgPT4gIjIwMTctMDgtMzAgMTE6MjY6NDEiLAogICAgICAgICJDcmVhdGVVc2VyRmlyc3RuYW1lIiA9PiAiSm9obiIsCiAgICAgICAgIkNyZWF0ZVVzZXJGdWxsbmFtZSIgPT4gIkpvaG4gRG9lIiwKICAgICAgICAiQ3JlYXRlVXNlckxhc3RuYW1lIiA9PiAiRG9lIiwKICAgICAgICAiQ3JlYXRlVXNlckxvZ2luIiA9PiAiam9obiIsCiAgICAgICAgIkN1c3RvbWVyVXNlckNvbmRpdGlvbnMiID0+IHsKICAgICAgICAgICAgIlVzZXJMb2dpbiIgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAiTmVnYXRpb24iID0+IDAsCiAgICAgICAgICAgICAgICAiUmVnRXhwVmFsdWUiID0+ICIiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgXQogICAgICAgIH0sCiAgICAgICAgIkN1c3RvbWVyVXNlckNvbmRpdGlvbnNKU09OIiA9PiAie1wiVXNlckxvZ2luXCI6W3tcIlJlZ0V4cFZhbHVlXCI6XCJcIixcIk5lZ2F0aW9uXCI6XCIwXCJ9XX0iLAogICAgICAgICJEZXNjcmlwdGlvbiIgPT4gIlNlbGVuaXVtIERlc2NyaXB0aW9uY3VzdG9tZXIiLAogICAgICAgICJJbnRyb2R1Y3Rpb24iID0+ICJTZWxlbml1bSBJbnRyb2R1Y3Rpb24iLAogICAgICAgICJOb3RpZmljYXRpb25Cb2R5IiA9PiAiRGVhciBDdXN0b21lcixcclxuXHJcblRoYW5rcyBmb3IgdXNpbmcgb3VyIHNlcnZpY2UuIEhlbHAgdXMgdG8gaW1wcm92ZSB1cyBhbmQgb3VyIHNlcnZpY2VzLlxyXG5cclxuUGxlYXNlIGdpdmUgdXMgZmVlZGJhY2sgb24gaG93IHRvIGltcHJvdmUgb3VyIHNlcnZpY2VzOlxyXG5cclxuaHR0cDovL2xvY2FsaG9zdC9vdHJzLWFscGhhL3B1YmxpYy5wbD9BY3Rpb249UHVibGljU3VydmV5O1B1YmxpY1N1cnZleUtleT08T1RSU19QdWJsaWNTdXJ2ZXlLZXk+XHJcblxyXG5UaGFua3MgZm9yIHlvdXIgaGVscCFcclxuXHJcbllvdXIgT1RSUy1UZWFtIiwKICAgICAgICAiTm90aWZpY2F0aW9uU2VuZGVyIiA9PiAicXVhbGl0eVxAZXhhbXBsZS5jb20iLAogICAgICAgICJOb3RpZmljYXRpb25TdWJqZWN0IiA9PiAiSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shIiwKICAgICAgICAiUXVldWVzIiA9PiBbXSwKICAgICAgICAiU2VuZENvbmRpdGlvbnNSYXciID0+ICItLS1cbkN1c3RvbWVyVXNlckNvbmRpdGlvbnM6XG4gIFVzZXJMb2dpbjpcbiAgLSBOZWdhdGlvbjogMFxuICAgIFJlZ0V4cFZhbHVlOiAnJ1xuIiwKICAgICAgICAiU3RhdHVzIiA9PiAiTmV3IiwKICAgICAgICAiU3VydmV5SUQiID0+IDQ5LAogICAgICAgICJTdXJ2ZXlOdW1iZXIiID0+IDEwMDQ5LAogICAgICAgICJUaXRsZSIgPT4gIlN1cnZleSB0aXRsZSIsCiAgICApOgoKPWN1dAoKc3ViIFN1cnZleUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIGEgc3VydmV5CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHN1cnZleW51bWJlciwgdGl0bGUsIGludHJvZHVjdGlvbiwgZGVzY3JpcHRpb24sIG5vdGlmaWNhdGlvbl9zZW5kZXIsCiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25fc3ViamVjdCwgbm90aWZpY2F0aW9uX2JvZHksIHN0YXR1cywgc2VuZF9jb25kaXRpb25zLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5LAogICAgICAgICAgICAgICAgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieQogICAgICAgICAgICBGUk9NIHN1cnZleQogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICVEYXRhOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CgogICAgICAgICREYXRhe1N1cnZleUlEfSAgICAgICAgICAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtTdXJ2ZXlOdW1iZXJ9ICAgICAgICA9ICRSb3dbMV07CiAgICAgICAgJERhdGF7VGl0bGV9ICAgICAgICAgICAgICAgPSAkUm93WzJdOwogICAgICAgICREYXRhe0ludHJvZHVjdGlvbn0gICAgICAgID0gJFJvd1szXTsKICAgICAgICAkRGF0YXtEZXNjcmlwdGlvbn0gICAgICAgICA9ICRSb3dbNF07CiAgICAgICAgJERhdGF7Tm90aWZpY2F0aW9uU2VuZGVyfSAgPSAkUm93WzVdOwogICAgICAgICREYXRhe05vdGlmaWNhdGlvblN1YmplY3R9ID0gJFJvd1s2XTsKICAgICAgICAkRGF0YXtOb3RpZmljYXRpb25Cb2R5fSAgICA9ICRSb3dbN107CiAgICAgICAgJERhdGF7U3RhdHVzfSAgICAgICAgICAgICAgPSAkUm93WzhdOwogICAgICAgICREYXRhe1NlbmRDb25kaXRpb25zUmF3fSAgID0gJFJvd1s5XTsKICAgICAgICAkRGF0YXtDcmVhdGVUaW1lfSAgICAgICAgICA9ICRSb3dbMTBdOwogICAgICAgICREYXRhe0NyZWF0ZUJ5fSAgICAgICAgICAgID0gJFJvd1sxMV07CiAgICAgICAgJERhdGF7Q2hhbmdlVGltZX0gICAgICAgICAgPSAkUm93WzEyXTsKICAgICAgICAkRGF0YXtDaGFuZ2VCeX0gICAgICAgICAgICA9ICRSb3dbMTNdOwogICAgfQoKICAgICMgR2V0IFNlbmRDb25kaXRpb24gYXMgaGFzaC4KICAgIG15ICRTZW5kQ29uZGl0aW9ucyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoIERhdGEgPT4gJERhdGF7U2VuZENvbmRpdGlvbnNSYXd9ICkgfHwge307CgogICAgIyBTZXQgZGF0YSBmaWVsZHMgZm9yIHNlbmQgY29uZGl0aW9ucy4KICAgIElURU06CiAgICBmb3IgbXkgJEl0ZW0gKHF3KFRpY2tldFR5cGVJRHMgU2VydmljZUlEcyBDdXN0b21lclVzZXJDb25kaXRpb25zKSkgewoKICAgICAgICBuZXh0IElURU0KICAgICAgICAgICAgaWYgKCAhSXNBcnJheVJlZldpdGhEYXRhKCAkU2VuZENvbmRpdGlvbnMtPnskSXRlbX0gKSAmJiAhSXNIYXNoUmVmV2l0aERhdGEoICRTZW5kQ29uZGl0aW9ucy0+eyRJdGVtfSApICk7CgogICAgICAgICREYXRheyRJdGVtfSA9ICRTZW5kQ29uZGl0aW9ucy0+eyRJdGVtfTsKICAgIH0KCiAgICBpZiAoICREYXRhe0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9ICkgewogICAgICAgICREYXRhe0N1c3RvbWVyVXNlckNvbmRpdGlvbnNKU09OfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyktPkVuY29kZSgKICAgICAgICAgICAgRGF0YSA9PiAkRGF0YXtDdXN0b21lclVzZXJDb25kaXRpb25zfSwKICAgICAgICApOwogICAgfQoKICAgIGlmICggISVEYXRhICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBTdXJ2ZXlJRCAkUGFyYW17U3VydmV5SUR9ISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgc2V0IGRlZmF1bHQgdmFsdWVzCiAgICAkRGF0YXtOb3RpZmljYXRpb25TZW5kZXJ9ICB8fD0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6Ok5vdGlmaWNhdGlvblNlbmRlcicpOwogICAgJERhdGF7Tm90aWZpY2F0aW9uU3ViamVjdH0gfHw9ICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpOb3RpZmljYXRpb25TdWJqZWN0Jyk7CiAgICAkRGF0YXtOb3RpZmljYXRpb25Cb2R5fSAgICB8fD0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6Ok5vdGlmaWNhdGlvbkJvZHknKTsKCiAgICAjIGdldCBxdWV1ZXMKICAgICREYXRhe1F1ZXVlc30gPSAkU2VsZi0+U3VydmV5UXVldWVHZXQoCiAgICAgICAgU3VydmV5SUQgPT4gJFBhcmFte1N1cnZleUlEfSwKICAgICk7CgogICAgIyBhZGRlZCBDcmVhdGVCeQogICAgaWYgKCAhJFBhcmFte1B1YmxpY30gKSB7CgogICAgICAgICMgZ2V0IHVzZXIgb2JqZWN0CiAgICAgICAgbXkgJFVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgICAgICBteSAlQ3JlYXRlVXNlckluZm8gPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkRGF0YXtDcmVhdGVCeX0sCiAgICAgICAgICAgIENhY2hlZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJERhdGF7Q3JlYXRlVXNlckxvZ2lufSAgICAgPSAkQ3JlYXRlVXNlckluZm97VXNlckxvZ2lufTsKICAgICAgICAkRGF0YXtDcmVhdGVVc2VyRmlyc3RuYW1lfSA9ICRDcmVhdGVVc2VySW5mb3tVc2VyRmlyc3RuYW1lfTsKICAgICAgICAkRGF0YXtDcmVhdGVVc2VyTGFzdG5hbWV9ICA9ICRDcmVhdGVVc2VySW5mb3tVc2VyTGFzdG5hbWV9OwogICAgICAgICREYXRhe0NyZWF0ZVVzZXJGdWxsbmFtZX0gID0gJENyZWF0ZVVzZXJJbmZve1VzZXJGdWxsbmFtZX07CgogICAgICAgICMgYWRkZWQgQ2hhbmdlQnkKICAgICAgICBteSAlQ2hhbmdlVXNlckluZm8gPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkRGF0YXtDaGFuZ2VCeX0sCiAgICAgICAgICAgIENhY2hlZCA9PiAxLAogICAgICAgICk7CiAgICAgICAgJERhdGF7Q2hhbmdlVXNlckxvZ2lufSAgICAgPSAkQ2hhbmdlVXNlckluZm97VXNlckxvZ2lufTsKICAgICAgICAkRGF0YXtDaGFuZ2VVc2VyRmlyc3RuYW1lfSA9ICRDaGFuZ2VVc2VySW5mb3tVc2VyRmlyc3RuYW1lfTsKICAgICAgICAkRGF0YXtDaGFuZ2VVc2VyTGFzdG5hbWV9ICA9ICRDaGFuZ2VVc2VySW5mb3tVc2VyTGFzdG5hbWV9OwogICAgICAgICREYXRhe0NoYW5nZVVzZXJGdWxsbmFtZX0gID0gJENoYW5nZVVzZXJJbmZve1VzZXJGdWxsbmFtZX07CiAgICB9CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aGVhZDIgU3VydmV5VXBkYXRlKCkKCnRvIHVwZGF0ZSBhbiBleGlzdGluZyBzdXJ2ZXkKCiAgICAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlVcGRhdGUoCiAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgIFN1cnZleUlEICAgICAgICAgICAgPT4gNCwKICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICdBIFRpdGxlJywKICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdUaGUgaW50cm9kdWN0aW9uIG9mIHRoZSBzdXJ2ZXknLAogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1RoZSBpbnRlcm5hbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3VydmV5JywKICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdxdWFsaXR5QGV4YW1wbGUuY29tJywKICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdIZWxwIHVzIHdpdGggeW91ciBmZWVkYmFjayEnLAogICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ0RlYXIgY3VzdG9tZXIuLi4nLAogICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzIsIDUsIDldLCAgIyAob3B0aW9uYWwpIHN1cnZleSBpcyB2YWxpZCBmb3IgdGhlc2UgcXVldWVzCiAgICAgICAgVGlja2V0VHlwZUlEcyAgICAgICA9PiBbMSwgMiwgM10sICAjIChvcHRpb25hbCkgc3VydmV5IGlzIHZhbGlkIGZvciB0aGVzZSB0aWNrZXQgdHlwZXMKICAgICAgICBTZXJ2aWNlSURzICAgICAgICAgID0+IFsxLCAyLCAzXSwgICMgKG9wdGlvbmFsKSBzdXJ2ZXkgaXMgdmFsaWQgZm9yIHRoZXNlIHNlcnZpY2VzCiAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyA9PiB7CiAgICAgICAgICAgICdVc2VyRmlyc3RuYW1lJyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aW9uJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICdSZWdFeHBWYWx1ZScgPT4gJ15NaScKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJ05lZ2F0aW9uJyA9PiAxLAogICAgICAgICAgICAgICAgICAgICdSZWdFeHBWYWx1ZScgPT4gJ15LYScKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICBdLAogICAgICAgIH0sICMgKG9wdGlvbmFsKQogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAoCiAgICAgICAgcXcoCiAgICAgICAgVXNlcklEIFN1cnZleUlEIFRpdGxlIEludHJvZHVjdGlvbiBEZXNjcmlwdGlvbgogICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciBOb3RpZmljYXRpb25TdWJqZWN0IE5vdGlmaWNhdGlvbkJvZHkKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBxdWV1ZXMKICAgIGlmICggJFBhcmFte1F1ZXVlc30gJiYgcmVmICRQYXJhbXtRdWV1ZXN9IG5lICdBUlJBWScgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdRdWV1ZXMgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UuJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBzZXQgZGVmYXVsdCB2YWx1ZQogICAgJFBhcmFte1F1ZXVlc30gfHw9IFtdOwoKICAgICMgYnVpbGQgc2VuZCBjb25kaXRpb24gc3RyaW5nCiAgICBteSAkU2VuZENvbmRpdGlvblN0cmcgPSAkU2VsZi0+X0J1aWxkU2VuZENvbmRpdGlvblN0cmcoJVBhcmFtKTsKCiAgICAjIHVwZGF0ZSB0aGUgc3VydmV5CiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgIFNFVCB0aXRsZSA9ID8sIGludHJvZHVjdGlvbiA9ID8sIGRlc2NyaXB0aW9uID0gPywgbm90aWZpY2F0aW9uX3NlbmRlciA9ID8sCiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25fc3ViamVjdCA9ID8sIG5vdGlmaWNhdGlvbl9ib2R5ID0gPywgc2VuZF9jb25kaXRpb25zID0gPywgY2hhbmdlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcCwKICAgICAgICAgICAgICAgIGNoYW5nZV9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtUaXRsZX0sICAgICAgICAgICAgICBcJFBhcmFte0ludHJvZHVjdGlvbn0sICAgICAgICBcJFBhcmFte0Rlc2NyaXB0aW9ufSwKICAgICAgICAgICAgXCRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9LCBcJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9LCBcJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9LAogICAgICAgICAgICBcJFNlbmRDb25kaXRpb25TdHJnLCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17U3VydmV5SUR9LAogICAgICAgIF0sCiAgICApOwoKICAgICMgaW5zZXJ0IG5ldyBzdXJ2ZXktcXVldWUgcmVsYXRpb25zCiAgICByZXR1cm4gJFNlbGYtPlN1cnZleVF1ZXVlU2V0KAogICAgICAgIFN1cnZleUlEID0+ICRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgUXVldWVJRHMgPT4gJFBhcmFte1F1ZXVlc30sCiAgICApOwp9Cgo9aGVhZDIgU3VydmV5TGlzdCgpCgp0byBnZXQgYSBhcnJheSBsaXN0IG9mIGFsbCBzdXJ2ZXkgaXRlbXMKCiAgICBteSAlU3VydmV5TGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUxpc3QoKTsKClJlc3VsdDoKICAgICVTdXJ2ZXlMaXN0ID0gKAogICAgICAgIDQ3ID0+ICJTdXJ2ZXkgdGl0bGUiLAogICAgICAgIC4uLgogICAgKTsKCj1jdXQKCnN1YiBTdXJ2ZXlMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBzdXJ2ZXkgbGlzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCB0aXRsZQogICAgICAgICAgICBGUk9NIHN1cnZleQogICAgICAgICAgICBPUkRFUiBCWSBpZCBBU0MnLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHRzCiAgICBteSAlU3VydmV5czsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRTdXJ2ZXlzeyAkUm93WzBdIH0gPSAkUm93WzFdOwogICAgfQoKICAgIHJldHVybiAlU3VydmV5czsKfQoKPWhlYWQyIFN1cnZleVNlYXJjaCgpCgpzZWFyY2ggaW4gc3VydmV5cwoKICAgIG15IEBJRHMgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTZWFyY2goCgogICAgICAgIE51bWJlciAgICAgICAgICAgICAgPT4gJzEzNCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICdzb21lIHRpdGxlJywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnc29tZSBpbnRyb2R1Y3Rpb24nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ3NvbWUgZGVzY3JpcHRpb24nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKICAgICAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICd1c2VyQGRvbWFpbicsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAnc29tZSBub3RpZmljYXRpb24gc3ViamVjdCcsICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ3NvbWUgbm90aWZpY2F0aW9uIGJvZHknLCAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgIyBpcyBzZWFyY2hpbmcgaW4gTnVtYmVyLCBUaXRsZSwgSW50cm9kdWN0aW9uLCBEZXNjcmlwdGlvbiwgTm90aWZpY2F0aW9uU2VuZGVyLAogICAgICAgICMgTm90aWZpY2F0aW9uU3ViamVjdCBhbmQgTm90aWZpY2F0aW9uQm9keQogICAgICAgIFdoYXQgICA9PiAnc29tZSB0ZXh0JywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkKCiAgICAgICAgU3RhdHVzID0+ICdzb21lIHN0YXR1cycsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQoKICAgICAgICBDcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBDcmVhdGVUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTAxLTMxIDEyOjAwOjAwJywKICAgICAgICBDcmVhdGVCeSAgICAgICAgICAgID0+ICcxMjMnLCAgICAgICAgICAgICNVc2VySUQKICAgICAgICBDaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICcyMDEyLTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBDaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICcyMDEyLTEyLTMxIDEyOjAwOjAwJywKICAgICAgICBDaGFuZ2VCeSAgICAgICAgICAgID0+ICcxMjMnLCAgICAgICAgICAgICNVc2VySUQKCiAgICAgICAgT3JkZXJCeSA9PiBbICdTdXJ2ZXlJRCcsICdUaXRsZScgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgIyBkZWZhdWx0OiBbICdTdXJ2ZXlJRCcgXSwKICAgICAgICAjICgpU3VydmV5SUQsIE51bWJlciwgVGl0bGUsIEludHJvZHVjdGlvbiwgRGVzY3JpcHRpb24sCiAgICAgICAgIyBOb3RpZmljYXRpb25TZW5kZXIsIE5vdGlmaWNhdGlvblN1YmplY3QsIE5vdGlmaWNhdGlvbkJvZHksCiAgICAgICAgIyBTdGF0dXMsIENyZWF0ZVRpbWUsIENyZWF0ZUJ5LCBDaGFuZ2VUaW1lLCBDaGFuZ2VCeSkKCiAgICAgICAgIyBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciBPcmRlckJ5OgogICAgICAgICMgVGhlIE9yZGVyQnlEaXJlY3Rpb24gY2FuIGJlIHNwZWNpZmllZCBmb3IgZWFjaCBPcmRlckJ5IGF0dHJpYnV0ZS4KICAgICAgICAjIFRoZSBwYWlyaW5nIGlzIG1hZGUgYnkgdGhlIGFycmF5IGluZGV4ZXMuCgogICAgICAgIE9yZGVyQnlEaXJlY3Rpb24gPT4gWyAnRG93bicsICdVcCcgXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgICMgZGVmYXVsdDogWyAnRG93bicgXQogICAgICAgICMgKERvd24gfCBVcCkKCiAgICAgICAgTGltaXQgICAgID0+IDE1MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpCiAgICAgICAgVXNlcklEICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFN1cnZleVNlYXJjaCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVXNlcklEISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgdmVyaWZ5IHRoYXQgYWxsIHBhc3NlZCBhcnJheSBwYXJhbWV0ZXJzIGNvbnRhaW4gYW4gYXJyYXkgcmVmZXJlbmNlCiAgICBBUkdVTUVOVDoKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9yZGVyQnkgT3JkZXJCeURpcmVjdGlvbikpIHsKCiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJFBhcmFteyRBcmd1bWVudH0gfHw9IFtdOwoKICAgICAgICAgICAgbmV4dCBBUkdVTUVOVDsKICAgICAgICB9CgogICAgICAgIGlmICggcmVmICRQYXJhbXskQXJndW1lbnR9IG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkQXJndW1lbnQgbXVzdCBiZSBhbiBhcnJheSByZWZlcmVuY2UhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgb3JkZXIgdGFibGUKICAgIG15ICVPcmRlckJ5VGFibGUgPSAoCgogICAgICAgICMgU3VydmV5IGl0ZW0gYXR0cmlidXRlcwogICAgICAgIFN1cnZleUlEICAgICAgICAgICAgPT4gJ3MuaWQnLAogICAgICAgIE51bWJlciAgICAgICAgICAgICAgPT4gJ3Muc3VydmV5bnVtYmVyJywKICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICdzLnRpdGxlJywKICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdzLmludHJvZHVjdGlvbicsCiAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAncy5kZXNjcmlwdGlvbicsCiAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncy5ub3RpZmljYXRpb25fc2VuZGVyJywKICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ID0+ICdzLm5vdGlmaWNhdGlvbl9zdWJqZWN0JywKICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdzLm5vdGlmaWNhdGlvbl9ib2R5JywKICAgICAgICBTdGF0dXMgICAgICAgICAgICAgID0+ICdzLnN0YXR1cycsCiAgICAgICAgQ3JlYXRlVGltZSAgICAgICAgICA9PiAncy5jcmVhdGVfdGltZScsCiAgICAgICAgQ3JlYXRlQnkgICAgICAgICAgICA9PiAncy5jcmVhdGVfYnknLAogICAgICAgIENoYW5nZVRpbWUgICAgICAgICAgPT4gJ3MuY2hhbmdlX3RpbWUnLAogICAgICAgIENoYW5nZUJ5ICAgICAgICAgICAgPT4gJ3MuY2hhbmdlX2J5JywKICAgICk7CgogICAgIyBjaGVjayBpZiBPcmRlckJ5IGNvbnRhaW5zIG9ubHkgdW5pcXVlIHZhbGlkIHZhbHVlcwogICAgbXkgJU9yZGVyQnlTZWVuOwogICAgZm9yIG15ICRPcmRlckJ5ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSB7CgogICAgICAgIGlmICggISRPcmRlckJ5IHx8ICEkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSB8fCAkT3JkZXJCeVNlZW57JE9yZGVyQnl9ICkgewoKICAgICAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeSBjb250YWlucyBpbnZhbGlkIHZhbHVlICckT3JkZXJCeScgIgogICAgICAgICAgICAgICAgICAgIC4gJ29yIHRoZSB2YWx1ZSBpcyB1c2VkIG1vcmUgdGhhbiBvbmNlIScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICAjIHJlbWVtYmVyIHRoZSB2YWx1ZSB0byBjaGVjayBpZiBpdCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlCiAgICAgICAgJE9yZGVyQnlTZWVueyRPcmRlckJ5fSA9IDE7CgogICAgfQoKICAgICMgY2hlY2sgaWYgT3JkZXJCeURpcmVjdGlvbiBhcnJheSBjb250YWlucyBvbmx5ICdVcCcgb3IgJ0Rvd24nCiAgICBESVJFQ1RJT046CiAgICBmb3IgbXkgJERpcmVjdGlvbiAoIEB7ICRQYXJhbXtPcmRlckJ5RGlyZWN0aW9ufSB9ICkgewoKICAgICAgICAjIG9ubHkgJ1VwJyBvciAnRG93bicgYWxsb3dlZAogICAgICAgIG5leHQgRElSRUNUSU9OIGlmICREaXJlY3Rpb24gZXEgJ1VwJzsKICAgICAgICBuZXh0IERJUkVDVElPTiBpZiAkRGlyZWN0aW9uIGVxICdEb3duJzsKCiAgICAgICAgIyBmb3VuZCBhbiBlcnJvcgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiT3JkZXJCeURpcmVjdGlvbiBjYW4gb25seSBjb250YWluICdVcCcgb3IgJ0Rvd24nISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgYXNzZW1ibGUgdGhlIE9SREVSIEJZIGNsYXVzZQogICAgbXkgQFNRTE9yZGVyQnk7CiAgICBteSBAT3JkZXJCeUZpZWxkczsKICAgIG15ICRDb3VudCA9IDA7CiAgICBmb3IgbXkgJE9yZGVyQnkgKCBAeyAkUGFyYW17T3JkZXJCeX0gfSApIHsKCiAgICAgICAgIyBzZXQgdGhlIGRlZmF1bHQgb3JkZXIgZGlyZWN0aW9uCiAgICAgICAgbXkgJERpcmVjdGlvbiA9ICdERVNDJzsKCiAgICAgICAgIyBhZGQgdGhlIGdpdmVuIG9yZGVyIGRpcmVjdGlvbgogICAgICAgIGlmICggJFBhcmFte09yZGVyQnlEaXJlY3Rpb259LT5bJENvdW50XSApIHsKICAgICAgICAgICAgaWYgKCAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0tPlskQ291bnRdIGVxICdVcCcgKSB7CiAgICAgICAgICAgICAgICAkRGlyZWN0aW9uID0gJ0FTQyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUGFyYW17T3JkZXJCeURpcmVjdGlvbn0tPlskQ291bnRdIGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICREaXJlY3Rpb24gPSAnREVTQyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYWRkIFNRTAogICAgICAgIHB1c2ggQFNRTE9yZGVyQnksICAgICIkT3JkZXJCeVRhYmxleyRPcmRlckJ5fSAkRGlyZWN0aW9uIjsKICAgICAgICBwdXNoIEBPcmRlckJ5RmllbGRzLCAkT3JkZXJCeVRhYmxleyRPcmRlckJ5fTsKCiAgICAgICAgJENvdW50Kys7CiAgICB9CgogICAgIyBpZiB0aGVyZSBpcyBhIHBvc3NpYmlsaXR5IHRoYXQgdGhlIG9yZGVyaW5nIGlzIG5vdCBkZXRlcm1pbmVkCiAgICAjIHdlIGFkZCBhbiBkZXNjZW5kaW5nIG9yZGVyaW5nIGJ5IGlkCiAgICBpZiAoICFncmVwIHsgJF8gZXEgJ1N1cnZleUlEJyB9ICggQHsgJFBhcmFte09yZGVyQnl9IH0gKSApIHsKICAgICAgICBwdXNoIEBTUUxPcmRlckJ5LCAiJE9yZGVyQnlUYWJsZXtTdXJ2ZXlJRH0gREVTQyI7CiAgICB9CgogICAgIyBTUUwKICAgIG15ICRTUUwgPSAnU0VMRUNUIHMuaWQgJzsKCiAgICAjIGV4dGVuZGVkIFNRTAogICAgbXkgJEV4dCA9ICcnOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBmdWxsLXRleHQgc2VhcmNoCiAgICBpZiAoICRQYXJhbXtXaGF0fSAmJiAkUGFyYW17V2hhdH0gbmUgJyonICkgewoKICAgICAgICAjIGRlZmluZSB0aGUgc2VhcmNoIGZpZWxkcyBmb3IgZnVsbC10ZXh0IHNlYXJjaAogICAgICAgIG15IEBTZWFyY2hGaWVsZHMgPSAoCiAgICAgICAgICAgICdzLnN1cnZleW51bWJlcicsCiAgICAgICAgICAgICdzLnRpdGxlJywKICAgICAgICAgICAgJ3MuaW50cm9kdWN0aW9uJywKICAgICAgICAgICAgJ3MuZGVzY3JpcHRpb24nLAogICAgICAgICAgICAncy5ub3RpZmljYXRpb25fc2VuZGVyJywKICAgICAgICAgICAgJ3Mubm90aWZpY2F0aW9uX3N1YmplY3QnLAogICAgICAgICAgICAncy5ub3RpZmljYXRpb25fYm9keScsCiAgICAgICAgICAgICdzLnN0YXR1cycsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgdGhlIFNRTCBmb3IgdGhlIGZ1bGwtdGV4dCBzZWFyY2gKICAgICAgICAkRXh0IC49ICREQk9iamVjdC0+UXVlcnlDb25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICAgICA9PiBcQFNlYXJjaEZpZWxkcywKICAgICAgICAgICAgVmFsdWUgICAgICAgID0+ICRQYXJhbXtXaGF0fSwKICAgICAgICAgICAgU2VhcmNoUHJlZml4ID0+ICcqJywKICAgICAgICAgICAgU2VhcmNoU3VmZml4ID0+ICcqJywKICAgICAgICApOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgbnVtYmVyCiAgICBpZiAoICRQYXJhbXtOdW1iZXJ9ICkgewogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte051bWJlcn0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgTE9XRVIocy5udW1iZXIpIExJS0UgTE9XRVIoJyIgLiAkUGFyYW17TnVtYmVyfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIHRpdGxlCiAgICBpZiAoICRQYXJhbXtUaXRsZX0gKSB7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9ICJcJSRQYXJhbXtUaXRsZX1cJSI7CiAgICAgICAgJFBhcmFte1RpdGxlfSA9fiBzL1wqLyUvZzsKICAgICAgICAkUGFyYW17VGl0bGV9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtUaXRsZX0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17VGl0bGV9LCAnTGlrZScgKTsKICAgICAgICBpZiAoJEV4dCkgewogICAgICAgICAgICAkRXh0IC49ICcgQU5EJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiIExPV0VSKHMudGl0bGUpIExJS0UgTE9XRVIoJyIgLiAkUGFyYW17VGl0bGV9IC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgaW50cm9kdWN0aW9uCiAgICBpZiAoICRQYXJhbXtJbnRyb2R1Y3Rpb259ICkgewogICAgICAgICRQYXJhbXtJbnRyb2R1Y3Rpb259ID0gIlwlJFBhcmFte0ludHJvZHVjdGlvbn1cJSI7CiAgICAgICAgJFBhcmFte0ludHJvZHVjdGlvbn0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte0ludHJvZHVjdGlvbn0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte0ludHJvZHVjdGlvbn0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17SW50cm9kdWN0aW9ufSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQKICAgICAgICAgICAgLj0gIiBMT1dFUihzLmludHJvZHVjdGlvbikgTElLRSBMT1dFUignIgogICAgICAgICAgICAuICRQYXJhbXtJbnRyb2R1Y3Rpb259CiAgICAgICAgICAgIC4gIicpICRTZWxmLT57TGlrZUVzY2FwZVN0cmluZ30iOwogICAgfQoKICAgICMgc2VhcmNoIGZvciB0aGUgZGVzY3JpcHRpb24KICAgIGlmICggJFBhcmFte0Rlc2NyaXB0aW9ufSApIHsKICAgICAgICAkUGFyYW17RGVzY3JpcHRpb259ID0gIlwlJFBhcmFte0Rlc2NyaXB0aW9ufVwlIjsKICAgICAgICAkUGFyYW17RGVzY3JpcHRpb259ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtEZXNjcmlwdGlvbn0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte0Rlc2NyaXB0aW9ufSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXtEZXNjcmlwdGlvbn0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5kZXNjcmlwdGlvbikgTElLRSBMT1dFUignIgogICAgICAgICAgICAuICRQYXJhbXtEZXNjcmlwdGlvbn0KICAgICAgICAgICAgLiAiJykgJFNlbGYtPntMaWtlRXNjYXBlU3RyaW5nfSI7CiAgICB9CgogICAgIyBzZWFyY2ggZm9yIHRoZSBub3RpZmljYXRpb24gc2VuZGVyCiAgICBpZiAoICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ICkgewogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TZW5kZXJ9ID0gIlwlJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn1cJSI7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0gPX4gcy9cKi8lL2c7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0gPX4gcy8lJS8lL2c7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblNlbmRlcn0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfSwgJ0xpa2UnICk7CiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQKICAgICAgICAgICAgLj0gIiBMT1dFUihzLm5vdGlmaWNhdGlvbl9zZW5kZXIpIExJS0UgTE9XRVIoJyIKICAgICAgICAgICAgLiAkUGFyYW17Tm90aWZpY2F0aW9uU2VuZGVyfQogICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBzdWJqZWN0CiAgICBpZiAoICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSApIHsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0gPSAiXCUkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH1cJSI7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvblN1YmplY3R9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17Tm90aWZpY2F0aW9uU3ViamVjdH0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5ub3RpZmljYXRpb25fc3ViamVjdCkgTElLRSBMT1dFUignIgogICAgICAgICAgICAuICRQYXJhbXtOb3RpZmljYXRpb25TdWJqZWN0fQogICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIG5vdGlmaWNhdGlvbiBib2R5CiAgICBpZiAoICRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSApIHsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gPSAiXCUkUGFyYW17Tm90aWZpY2F0aW9uQm9keX1cJSI7CiAgICAgICAgJFBhcmFte05vdGlmaWNhdGlvbkJvZHl9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fSA9fiBzLyUlLyUvZzsKICAgICAgICAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0gPSAkREJPYmplY3QtPlF1b3RlKCAkUGFyYW17Tm90aWZpY2F0aW9uQm9keX0sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0CiAgICAgICAgICAgIC49ICIgTE9XRVIocy5ub3RpZmljYXRpb25fYm9keSkgTElLRSBMT1dFUignIgogICAgICAgICAgICAuICRQYXJhbXtOb3RpZmljYXRpb25Cb2R5fQogICAgICAgICAgICAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIHN0YXR1cwogICAgaWYgKCAkUGFyYW17U3RhdHVzfSApIHsKICAgICAgICAkUGFyYW17U3RhdHVzfSA9ICJcJSRQYXJhbXtTdGF0dXN9XCUiOwogICAgICAgICRQYXJhbXtTdGF0dXN9ID1+IHMvXCovJS9nOwogICAgICAgICRQYXJhbXtTdGF0dXN9ID1+IHMvJSUvJS9nOwogICAgICAgICRQYXJhbXtTdGF0dXN9ID0gJERCT2JqZWN0LT5RdW90ZSggJFBhcmFte1N0YXR1c30sICdMaWtlJyApOwogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgTE9XRVIocy5zdGF0dXMpIExJS0UgTE9XRVIoJyIgLiAkUGFyYW17U3RhdHVzfSAuICInKSAkU2VsZi0+e0xpa2VFc2NhcGVTdHJpbmd9IjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgbXVsdGlwbGUgc3RhdHVzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1N0YXRlc30gKSApIHsKCiAgICAgICAgbXkgJFN0YXRlcyA9IGpvaW4gJywgJywgbWFwIHtxcSgnJF8nKX0gQHsgJFBhcmFte1N0YXRlc30gfTsKCiAgICAgICAgaWYgKCRFeHQpIHsKICAgICAgICAgICAgJEV4dCAuPSAnIEFORCc7CiAgICAgICAgfQogICAgICAgICRFeHQgLj0gIiBzLnN0YXR1cyBJTiAoJFN0YXRlcykgIjsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIGNyZWF0ZSBieQogICAgaWYgKCAkUGFyYW17Q3JlYXRlQnl9ICkgewogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgcy5jcmVhdGVfYnkgPSAiIC4gJFBhcmFte0NyZWF0ZUJ5fTsKICAgIH0KCiAgICAjIHNlYXJjaCBmb3IgdGhlIGNoYW5nZSBieQogICAgaWYgKCAkUGFyYW17Q2hhbmdlQnl9ICkgewogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQnOwogICAgICAgIH0KICAgICAgICAkRXh0IC49ICIgcy5jaGFuZ2VfYnkgPSAiIC4gJFBhcmFte0NoYW5nZUJ5fTsKICAgIH0KCiAgICAjIHNldCB0aW1lIHBhcmFtcwogICAgbXkgJVRpbWVQYXJhbXMgPSAoCgogICAgICAgICMgdGltZXMgaW4gY2hhbmdlX2l0ZW0KICAgICAgICBDcmVhdGVUaW1lTmV3ZXJEYXRlID0+ICdzLmNyZWF0ZV90aW1lID49JywKICAgICAgICBDcmVhdGVUaW1lT2xkZXJEYXRlID0+ICdzLmNyZWF0ZV90aW1lIDw9JywKICAgICAgICBDaGFuZ2VUaW1lTmV3ZXJEYXRlID0+ICdzLmNoYW5nZV90aW1lID49JywKICAgICAgICBDaGFuZ2VUaW1lT2xkZXJEYXRlID0+ICdzLmNoYW5nZV90aW1lIDw9JywKICAgICk7CgogICAgIyBjaGVjayBhbmQgYWRkIHRpbWUgcGFyYW1zIHRvIFdIRVJFCiAgICBUSU1FUEFSQU06CiAgICBmb3IgbXkgJFRpbWVQYXJhbSAoIHNvcnQga2V5cyAlVGltZVBhcmFtcyApIHsKCiAgICAgICAgbmV4dCBUSU1FUEFSQU0gaWYgISRQYXJhbXskVGltZVBhcmFtfTsKCiAgICAgICAgIyBjaGVjayBmb3JtYXQKICAgICAgICBpZiAoICRQYXJhbXskVGltZVBhcmFtfSAhfiAvXGRcZFxkXGQtKFxkXGR8XGQpLShcZFxkfFxkKSAoXGRcZHxcZCk6KFxkXGR8XGQpOihcZFxkfFxkKS8gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgcGFyYW1ldGVyICRUaW1lUGFyYW0gaGFzIGFuIGludmFsaWQgZGF0ZSBmb3JtYXQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRQYXJhbXskVGltZVBhcmFtfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXskVGltZVBhcmFtfSApOwoKICAgICAgICAjIGFkZCB0aW1lIHBhcmFtZXRlciB0byBXSEVSRQogICAgICAgIGlmICgkRXh0KSB7CiAgICAgICAgICAgICRFeHQgLj0gJyBBTkQgJzsKICAgICAgICB9CiAgICAgICAgJEV4dCAuPSAiJFRpbWVQYXJhbXN7JFRpbWVQYXJhbX0gJyRQYXJhbXskVGltZVBhcmFtfSciOwogICAgfQoKICAgICMgYWRkIFdIRVJFIHN0YXRlbWVudAogICAgaWYgKCRFeHQpIHsKICAgICAgICAkRXh0ID0gJyBXSEVSRSAnIC4gJEV4dDsKICAgIH0KCiAgICAjIGFkZCB0aGUgT1JERVIgQlkgY2xhdXNlCiAgICBpZiAoQFNRTE9yZGVyQnkpIHsKICAgICAgICAkRXh0IC49ICdPUkRFUiBCWSAnOwogICAgICAgICRFeHQgLj0gam9pbiAnLCAnLCBAU1FMT3JkZXJCeTsKICAgICAgICAkRXh0IC49ICcgJzsKICAgICAgICBpZiAoQE9yZGVyQnlGaWVsZHMpIHsKICAgICAgICAgICAgJFNRTCAuPSAnLCAnIC4gam9pbiAnLCAnLCBAT3JkZXJCeUZpZWxkczsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgZXh0ZW5kZWQgU1FMCiAgICAkU1FMIC49ICcgRlJPTSBzdXJ2ZXkgcyAnOwogICAgJFNRTCAuPSAkRXh0OwoKICAgICMgYXNrIGRhdGFiYXNlCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBMaXN0LCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBATGlzdDsKfQoKPWhlYWQyIFN1cnZleVN0YXR1c1NldCgpCgp0byBzZXQgYSBuZXcgc3VydmV5IHN0YXR1cyAoVmFsaWQsIEludmFsaWQsIE1hc3RlcikKCiAgICAkU3RhdHVzU2V0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5U3RhdHVzU2V0KAogICAgICAgIFN1cnZleUlEICA9PiAxMjMsCiAgICAgICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCiAgICApOwoKPWN1dAoKc3ViIFN1cnZleVN0YXR1c1NldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdXJ2ZXlJRCBOZXdTdGF0dXMpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGN1cnJlbnQgc3RhdHVzCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1Qgc3RhdHVzCiAgICAgICAgICAgIEZST00gc3VydmV5CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFN0YXR1cyA9ICcnOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFN0YXR1cyA9ICRSb3dbMF07CiAgICB9CgogICAgIyB0aGUgY3VycmVudCBzdGF0dXMKICAgIGlmICggJFN0YXR1cyBlcSAnTmV3JyB8fCAkU3RhdHVzIGVxICdJbnZhbGlkJyApIHsKCiAgICAgICAgIyBnZXQgdGhlIHF1ZXN0aW9uIGlkcwogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICBteSAkUXVlc3Q7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgICRRdWVzdCA9ICRSb3dbMF07CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJ05vUXVlc3Rpb24nIGlmICEkUXVlc3Q7CgogICAgICAgIG15ICVRdWVzdGlvblR5cGUgPSAoCiAgICAgICAgICAgIFJhZGlvICAgID0+ICdSYWRpbycsCiAgICAgICAgICAgIENoZWNrYm94ID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgIE5QUyAgICAgID0+ICdOUFMnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGFsbCBxdWVzdGlvbnMgKHR5cGUgcmFkaW8sIGNoZWNrLWJveCBhbmQgTlBTKQogICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgU0VMRUNUIGlkLCBxdWVzdGlvbl90eXBlCiAgICAgICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPwogICAgICAgICAgICAgICAgICAgIEFORCAocXVlc3Rpb25fdHlwZSA9ID8gT1IgcXVlc3Rpb25fdHlwZSA9ID8gT1IgcXVlc3Rpb25fdHlwZSA9ID8pJywKICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5SUR9LCBcJFF1ZXN0aW9uVHlwZXtSYWRpb30sIFwkUXVlc3Rpb25UeXBle0NoZWNrYm94fSwgXCRRdWVzdGlvblR5cGV7TlBTfSwgXSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICBteSBAUXVlc3Rpb25JRHM7CiAgICAgICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgICAgIG15IEBRdWVzdGlvbklEID0gKAogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIElEICAgPT4gJFJvd1swXSwKICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICRSb3dbMV0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCggQFF1ZXN0aW9uSURzLCBAUXVlc3Rpb25JRCApOwogICAgICAgIH0KCiAgICAgICAgZm9yIG15ICRRdWVzdGlvbklEIChAUXVlc3Rpb25JRHMpIHsKCiAgICAgICAgICAgICMgZ2V0IGFsbCBhbnN3ZXIgaWRzIG9mIGEgcXVlc3Rpb24KICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFNFTEVDVCBDT1VOVChpZCkKICAgICAgICAgICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgICAgICAgICBXSEVSRSBxdWVzdGlvbl9pZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCAgPT4gWyBcJFF1ZXN0aW9uSUQtPntJRH0gXSwKICAgICAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgICAgICAgICAgbXkgJENvdW50ZXI7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJENvdW50ZXIgPSAkUm93WzBdOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRRdWVzdGlvbklELT57VHlwZX0gZXEgJ1JhZGlvJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAnSW5jb21wbGV0ZVF1ZXN0aW9uJyBpZiAkQ291bnRlciA8IDI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkUXVlc3Rpb25JRC0+e1R5cGV9IGVxICdDaGVja2JveCcgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJ0luY29tcGxldGVRdWVzdGlvbicgaWYgJENvdW50ZXIgPCAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJFF1ZXN0aW9uSUQtPntUeXBlfSBlcSAnTlBTJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAnSW5jb21wbGV0ZVF1ZXN0aW9uJyBpZiAkQ291bnRlciA8IDI7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc2V0IG5ldyBzdGF0dXMKICAgICAgICBpZiAoICRQYXJhbXtOZXdTdGF0dXN9IGVxICdNYXN0ZXInICkgewogICAgICAgICAgICBteSAkVmFsaWRTdGF0dXMgPSAnVmFsaWQnOwogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgICAgICAgICBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIHN0YXR1cyA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkVmFsaWRTdGF0dXMsIFwkUGFyYW17TmV3U3RhdHVzfSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgfQogICAgICAgIGlmICggJFBhcmFte05ld1N0YXR1c30gZXEgJ1ZhbGlkJyB8fCAkUGFyYW17TmV3U3RhdHVzfSBlcSAnTWFzdGVyJyApIHsKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5IFNFVCBzdGF0dXMgPSA/CiAgICAgICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05ld1N0YXR1c30sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICdTdGF0dXNTZXQnOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggJFN0YXR1cyBlcSAnVmFsaWQnICkgewoKICAgICAgICAjIHNldCBzdGF0dXMgTWFzdGVyCiAgICAgICAgaWYgKCAkUGFyYW17TmV3U3RhdHVzfSBlcSAnTWFzdGVyJyApIHsKCiAgICAgICAgICAgICMgc2V0IGFueSAnTWFzdGVyJyBzdXJ2ZXkgdG8gJ1ZhbGlkJwogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgICAgICAgICBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIHN0YXR1cyA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkU3RhdHVzLCBcJFBhcmFte05ld1N0YXR1c30sIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHNldCAnTWFzdGVyJyB0byBnaXZlbiBzdXJ2ZXkKICAgICAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5CiAgICAgICAgICAgICAgICAgICAgU0VUIHN0YXR1cyA9ID8KICAgICAgICAgICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TmV3U3RhdHVzfSwgXCRQYXJhbXtTdXJ2ZXlJRH0sIF0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJ1N0YXR1c1NldCc7CiAgICAgICAgfQoKICAgICAgICAjIHNldCBzdGF0dXMgSW52YWxpZAogICAgICAgIGVsc2lmICggJFBhcmFte05ld1N0YXR1c30gZXEgJ0ludmFsaWQnICkgewogICAgICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgICAgIFVQREFURSBzdXJ2ZXkKICAgICAgICAgICAgICAgICAgICBTRVQgc3RhdHVzID0gPwogICAgICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtOZXdTdGF0dXN9LCBcJFBhcmFte1N1cnZleUlEfSwgXSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybiAnU3RhdHVzU2V0JzsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTdGF0dXMgZXEgJ01hc3RlcicgKSB7CgogICAgICAgICMgc2V0IHN0YXR1cyBWYWxpZAogICAgICAgIGlmICggJFBhcmFte05ld1N0YXR1c30gZXEgJ1ZhbGlkJyB8fCAkUGFyYW17TmV3U3RhdHVzfSBlcSAnSW52YWxpZCcgKSB7CiAgICAgICAgICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleQogICAgICAgICAgICAgICAgICAgIFNFVCBzdGF0dXMgPSA/CiAgICAgICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte05ld1N0YXR1c30sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICdTdGF0dXNTZXQnOwogICAgICAgIH0KICAgIH0KfQoKPWhlYWQyIFN1cnZleVF1ZXVlR2V0KCkKCmdldCBhIHN1cnZleV9xdWV1ZSByZWxhdGlvbiBhcyBhbiBhcnJheSByZWZlcmVuY2UKCm15ICRRdWV1ZXNSZWYgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlRdWV1ZUdldCgKICAgIFN1cnZleUlEID0+IDMsCik7Cgo9Y3V0CgpzdWIgU3VydmV5UXVldWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBxdWV1ZSBpZHMgZnJvbSBkYXRhYmFzZQogICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBxdWV1ZV9pZAogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWV1ZQogICAgICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/CiAgICAgICAgICAgIE9SREVSIEJZIHF1ZXVlX2lkIEFTQycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQFF1ZXVlTGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQFF1ZXVlTGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gXEBRdWV1ZUxpc3Q7Cn0KCj1oZWFkMiBTdXJ2ZXlRdWV1ZVNldCgpCgphZGQgYSBzdXJ2ZXlfcXVldWUgcmVsYXRpb24KCm15ICRSZXN1bHQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlRdWV1ZVNldCgKICAgIFN1cnZleUlEID0+IDMsCiAgICBRdWV1ZUlEcyA9PiBbMSwgN10sCik7Cgo9Y3V0CgpzdWIgU3VydmV5UXVldWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgUXVldWVJRHMpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyByZW1vdmUgYWxsIGV4aXN0aW5nIHJlbGF0aW9ucwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIERFTEVURSBGUk9NIHN1cnZleV9xdWV1ZQogICAgICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0gXSwKICAgICk7CgogICAgIyBhZGQgYWxsIHN1cnZleV9xdWV1ZSByZWxhdGlvbnMgdG8gZGF0YWJhc2UKICAgIGZvciBteSAkUXVldWVJRCAoIEB7ICRQYXJhbXtRdWV1ZUlEc30gfSApIHsKCiAgICAgICAgIyBhZGQgc3VydmV5X3F1ZXVlIHJlbGF0aW9uIHRvIGRhdGFiYXNlCiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgSU5TRVJUIElOVE8gc3VydmV5X3F1ZXVlIChzdXJ2ZXlfaWQsIHF1ZXVlX2lkKQogICAgICAgICAgICAgICAgVkFMVUVTICg/LCA/KScsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSwgXCRRdWV1ZUlELCBdLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBQdWJsaWNTdXJ2ZXlLZXlHZXQoKQoKZ2V0IGFsbCBwdWJsaWMgc3VydmV5IGtleXMgYXMgYW4gYXJyYXkgcmVmZXJlbmNlCgpteSAkUHVibGljU3VydmV5S2V5c1JlZiA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUtleUdldCgKICAgIFN1cnZleUlEID0+IDMsCiAgICBMaW1pdCAgICA9PiAxLCAjIG9wdGlvbmFsCik7Cgo9Y3V0CgpzdWIgUHVibGljU3VydmV5S2V5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBwcmVwYXJlIFNRTAogICAgbXkgJFNRTCAgICAgID0gJ1NFTEVDVCBwdWJsaWNfc3VydmV5X2tleSBGUk9NIHN1cnZleV9yZXF1ZXN0ICc7CiAgICBteSAkU1FMV2hlcmUgPSAiV0hFUkUgc3VydmV5X2lkID0gJFBhcmFte1N1cnZleUlEfSI7CgogICAgJFNRTCAuPSAkU1FMV2hlcmU7CgogICAgIyBnZXQgcXVldWUgaWRzIGZyb20gZGF0YWJhc2UKICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgICA9PiAkU1FMLAogICAgICAgIExpbWl0ID0+ICRQYXJhbXtMaW1pdH0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQFB1YmxpY1N1cnZleUtleUxpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBwdXNoIEBQdWJsaWNTdXJ2ZXlLZXlMaXN0LCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBcQFB1YmxpY1N1cnZleUtleUxpc3Q7Cn0KCj1oZWFkMiBQdWJsaWNTdXJ2ZXlHZXQoKQoKdG8gZ2V0IGFsbCBwdWJsaWMgYXR0cmlidXRlcyBvZiBhIHN1cnZleQoKICAgIG15ICVQdWJsaWNTdXJ2ZXkgPSAkU3VydmV5T2JqZWN0LT5QdWJsaWNTdXJ2ZXlHZXQoCiAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAnQXc1ZGUzWGY1cUEnLAogICAgICAgICAgICBJbnZhbGlkICAgICAgICAgPT4gMSwgIyBvcHRpb25hbCB0byBrbm93IGlmIG9uZSBrZXkgd2FzIGFscmVhZHkgdXNlZC4KICAgICk7Cgo9Y3V0CgpzdWIgUHVibGljU3VydmV5R2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggIWRlZmluZWQgJFBhcmFte1B1YmxpY1N1cnZleUtleX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRTUUwgPSAnCiAgICAgICAgU0VMRUNUIHN1cnZleV9pZAogICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QKICAgICAgICBXSEVSRSBwdWJsaWNfc3VydmV5X2tleSA9ID8nOwoKICAgIG15ICRWYWxpZFN0cmcgPSAnIEFORCB2YWxpZF9pZCA9IDEnOwoKICAgICMgaWYgbm90IGludmFsaWQgc2hvdyBqdXN0IHZhbGlkIGtleXMKICAgIGlmICggJFBhcmFte0ludmFsaWR9ICkgewogICAgICAgICRWYWxpZFN0cmcgPSAnIEFORCB2YWxpZF9pZCA9IDAnOwogICAgfQogICAgJFNRTCAuPSAkVmFsaWRTdHJnOwoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcmVxdWVzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTCwKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UHVibGljU3VydmV5S2V5fSBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFN1cnZleUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFN1cnZleUlEID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gKCkgaWYgISRTdXJ2ZXlJRDsKCiAgICAjIGdldCBzdXJ2ZXkKICAgIG15ICRNYXN0ZXJTdGF0dXMgPSAnTWFzdGVyJzsKICAgIG15ICRWYWxpZFN0YXR1cyAgPSAnVmFsaWQnOwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzdXJ2ZXludW1iZXIsIHRpdGxlLCBpbnRyb2R1Y3Rpb24KICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgKHN0YXR1cyA9ID8gT1Igc3RhdHVzID0gPyknLAogICAgICAgIEJpbmQgID0+IFsgXCRTdXJ2ZXlJRCwgXCRNYXN0ZXJTdGF0dXMsIFwkVmFsaWRTdGF0dXMsIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICREYXRhe1N1cnZleUlEfSAgICAgPSAkUm93WzBdOwogICAgICAgICREYXRhe1N1cnZleU51bWJlcn0gPSAkUm93WzFdOwogICAgICAgICREYXRhe1RpdGxlfSAgICAgICAgPSAkUm93WzJdOwogICAgICAgICREYXRhe0ludHJvZHVjdGlvbn0gPSAkUm93WzNdOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIFB1YmxpY1N1cnZleUludmFsaWRTZXQoKQoKdG8gc2V0IGEgcmVxdWVzdCBpbnZhbGlkCgogICAgJFN1cnZleU9iamVjdC0+UHVibGljU3VydmV5SW52YWxpZFNldCgKICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJ2FWa2RFODJEdzJxdzZlckNkYScsCiAgICApOwoKPWN1dAoKc3ViIFB1YmxpY1N1cnZleUludmFsaWRTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1B1YmxpY1N1cnZleUtleX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHJlcXVlc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZAogICAgICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgICAgIFdIRVJFIHB1YmxpY19zdXJ2ZXlfa2V5ID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1B1YmxpY1N1cnZleUtleX0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRSZXF1ZXN0SUQ7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkUmVxdWVzdElEID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRSZXF1ZXN0SUQ7CgogICAgIyB1cGRhdGUgcmVxdWVzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcmVxdWVzdAogICAgICAgICAgICBTRVQgdmFsaWRfaWQgPSAwLCB2b3RlX3RpbWUgPSBjdXJyZW50X3RpbWVzdGFtcAogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFJlcXVlc3RJRCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIEVsZW1lbnRFeGlzdHMoKQoKZXhpc3RzIGFuIHN1cnZleS0sIHF1ZXN0aW9uLSwgYW5zd2VyLSBvciByZXF1ZXN0LWVsZW1lbnQKCiAgICBteSAkRWxlbWVudEV4aXN0cyA9ICRTdXJ2ZXlPYmplY3QtPkVsZW1lbnRFeGlzdHMoCiAgICAgICAgSUQgPT4gMTIzLCAgICAgICAgICAgIyBTdXJ2ZXlJRCwgUXVlc3Rpb25JRCwgQW5zd2VySUQsIFJlcXVlc3RJRAogICAgICAgIEVsZW1lbnQgPT4gJ1N1cnZleScgICMgU3VydmV5LCBRdWVzdGlvbiwgQW5zd2VyLCBSZXF1ZXN0CiAgICApOwoKPWN1dAoKc3ViIEVsZW1lbnRFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoRWxlbWVudElEIEVsZW1lbnQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVMb29rdXBUYWJsZSA9ICgKICAgICAgICBTdXJ2ZXkgICA9PiAnc3VydmV5JywKICAgICAgICBRdWVzdGlvbiA9PiAnc3VydmV5X3F1ZXN0aW9uJywKICAgICAgICBBbnN3ZXIgICA9PiAnc3VydmV5X2Fuc3dlcicsCiAgICAgICAgUmVxdWVzdCAgPT4gJ3N1cnZleV9yZXF1ZXN0JywKICAgICk7CgogICAgbXkgJFRhYmxlID0gJExvb2t1cFRhYmxleyAkUGFyYW17RWxlbWVudH0gfTsKICAgIGlmICggISRUYWJsZSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkVsZW1lbnQ6ICckUGFyYW17RWxlbWVudH0nIGlzIG5vdCB2YWxpZCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkU1FMID0gJwogICAgICAgICAgICBTRUxFQ1QgQ09VTlQoaWQpCiAgICAgICAgICAgIEZST00gJzsKICAgICRTUUwgLj0gJFRhYmxlOwogICAgJFNRTCAuPSAnIFdIRVJFIGlkID0gPyc7CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IGVsZW1lbnQKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0VsZW1lbnRJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRFbGVtZW50RXhpc3RzID0gJ05vJzsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIGlmICggJFJvd1swXSApIHsKICAgICAgICAgICAgJEVsZW1lbnRFeGlzdHMgPSAnWWVzJzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRFbGVtZW50RXhpc3RzOwp9Cgo9aGVhZDIgR2V0UmljaFRleHREb2N1bWVudENvbXBsZXRlKCkKCmdldCBzb21lIHRleHQgcmVhZHkgdG8gc2hvdyBhcyByaWNoLXRleHQgYXR0YWNobWVudCBpbi1saW5lCgogICAgbXkgJFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSA9ICRTdXJ2ZXlPYmplY3QtPkdldFJpY2hUZXh0RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICBUZXh0ID0+ICRSaWNoVGV4dCwKICAgICk7Cgo9Y3V0CgpzdWIgR2V0UmljaFRleHREb2N1bWVudENvbXBsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFRleHQpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50IHBhcmFtZXRlciEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNsZWFuIEhUTUwgc3RyaW5nCiAgICBteSAkVGV4dCA9ICRQYXJhbXtUZXh0fTsKICAgICRUZXh0ID1+IHN7XEFcJGh0bWxcL3RleHRcJFxzKC4qKX17JDF9eG1zOwoKICAgICMgZ2V0IGRvY3VtZW50IGNvbXBsZXRlCiAgICBteSAkSFRNTERvY3VtZW50Q29tcGxldGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgU3RyaW5nICA9PiAkVGV4dCwKICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICApOwoKICAgIHJldHVybiAkSFRNTERvY3VtZW50Q29tcGxldGU7Cn0KCj1oZWFkMiBfQnVpbGRTZW5kQ29uZGl0aW9uU3RyZygpCgpidWlsZCBzZW5kIGNvbmRpdGlvbiBzdHJpbmcgd2l0aCB0aGUgc2luZ2xlIGl0ZW1zCgogICAgbXkgJVNlbmRDb25kaXRpb25zID0gJFN1cnZleU9iamVjdC0+X0J1aWxkU2VuZENvbmRpdGlvblN0cmcoCiAgICAgICAgVGlja2V0VHlwZUlEcyAgICAgICAgICA9PiBbMSwgMiwgM10sICMgKG9wdGlvbmFsKQogICAgICAgIFNlcnZpY2VJRHMgICAgICAgICAgICAgPT4gWzEsIDIsIDNdLCAjIChvcHRpb25hbCkKICAgICAgICBDdXN0b21lclVzZXJDb25kaXRpb25zID0+IHsKICAgICAgICAgICAgJ1VzZXJGaXJzdG5hbWUnID0+IFsKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnTmVnYXRpb24nID0+IDEsCiAgICAgICAgICAgICAgICAgICAgJ1JlZ0V4cFZhbHVlJyA9PiAnXk1pJwogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAnTmVnYXRpb24nID0+IDEsCiAgICAgICAgICAgICAgICAgICAgJ1JlZ0V4cFZhbHVlJyA9PiAnXkthJwogICAgICAgICAgICAgICAgfQogICAgICAgICAgIF0sCiAgICAgICAgfSwgIyAob3B0aW9uYWwpCiAgICApOwoKPWN1dAoKc3ViIF9CdWlsZFNlbmRDb25kaXRpb25TdHJnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBidWlsZCBzZW5kIGNvbmRpdGlvbiBoYXNoCiAgICBteSAlU2VuZENvbmRpdGlvbnM7CgogICAgSVRFTToKICAgIGZvciBteSAkSXRlbSAocXcoVGlja2V0VHlwZUlEcyBTZXJ2aWNlSURzIEN1c3RvbWVyVXNlckNvbmRpdGlvbnMpKSB7CiAgICAgICAgbmV4dCBJVEVNIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICYmICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFteyRJdGVtfSApICk7CgogICAgICAgICRTZW5kQ29uZGl0aW9uc3skSXRlbX0gPSAkUGFyYW17JEl0ZW19OwogICAgfQoKICAgICMgZHVtcCBzZW5kIGNvbmRpdGlvbnMgYXMgc3RyaW5nCiAgICBteSAkU2VuZENvbmRpdGlvblN0cmcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5EdW1wKCBEYXRhID0+IFwlU2VuZENvbmRpdGlvbnMgKTsKCiAgICAjIE1ha2Ugc3VyZSB0aGUgcmVzdWx0aW5nIHN0cmluZyBoYXMgdGhlIFVURi04IGZsYWcuIFlBTUwgb25seSBzZXRzIGl0IGlmCiAgICAjICAgcGFydCBvZiB0aGUgZGF0YSBhbHJlYWR5IGhhZCBpdC4KICAgIHV0Zjg6OnVwZ3JhZGUoJFNlbmRDb25kaXRpb25TdHJnKTsKCiAgICByZXR1cm4gJFNlbmRDb25kaXRpb25TdHJnOwp9Cgo9aGVhZDIgX1NlbmRDb25kaXRpb25DaGVja0N1c3RvbWVyRmllbGQoKQoKVGhpcyBmdW5jdGlvbiBjb2xsZWN0cyBzb21lIGZpZWxkIGNvbmZpZyBpbmZvcm1hdGlvbiBmcm9tIHRoZSBjdXN0b21lciB1c2VyIG1hcC4KSW4gT1RSUyA2LCB0aGVyZSBpcyBhIGZ1bmN0aW9uIGluIHRoZSBDdXN0b21lclVzZXIucG0gdGhhdCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkISEhCgogICAgbXkgJUZpZWxkQ29uZmlnID0gJFN1cnZleU9iamVjdC0+X1NlbmRDb25kaXRpb25DaGVja0N1c3RvbWVyRmllbGQoCiAgICAgICAgRmllbGROYW1lID0+ICdVc2VyRW1haWwnLAogICAgICAgIFNvdXJjZSAgICA9PiAnQ3VzdG9tZXJVc2VyJywgIyBvcHRpb25hbAogICAgKTsKClJldHVybnMgb25lIGZpZWxkIGNvbmZpZyBpbmZvcm1hdGlvbi4KCiAgICAlRmllbGRDb25maWcgPSAoCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAnRW1haWwnLAogICAgICAgIERhdGFiYXNlRmllbGQgPT4gJ2VtYWlsJywKICAgICAgICBTdG9yYWdlVHlwZSAgID0+ICd2YXInLAogICAgKTsKCj1jdXQKCnN1YiBfU2VuZENvbmRpdGlvbkNoZWNrQ3VzdG9tZXJGaWVsZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggISRQYXJhbXtGaWVsZE5hbWV9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCBGaWVsZE5hbWUhIgogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDdXN0b21lclVzZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyk7CgogICAgU09VUkNFOgogICAgZm9yIG15ICRDb3VudCAoICcnLCAxIC4uIDEwICkgewogICAgICAgIG5leHQgU09VUkNFIGlmICEkQ3VzdG9tZXJVc2VyT2JqZWN0LT57IkN1c3RvbWVyVXNlciRDb3VudCJ9OwogICAgICAgIG5leHQgU09VUkNFIGlmICRQYXJhbXtTb3VyY2V9ICYmICRQYXJhbXtTb3VyY2V9IG5lICJDdXN0b21lclVzZXIkQ291bnQiOwoKICAgICAgICAjIFNlYXJjaCB0aGUgcmlnaHQgZmllbGQgYW5kIHJldHVybiB0aGUgbGFiZWwuCiAgICAgICAgRU5UUlk6CiAgICAgICAgZm9yIG15ICRFbnRyeSAoIEB7ICRDdXN0b21lclVzZXJPYmplY3QtPnsiQ3VzdG9tZXJVc2VyJENvdW50In0tPntDdXN0b21lclVzZXJNYXB9LT57TWFwfSB9ICkgewogICAgICAgICAgICBuZXh0IEVOVFJZIGlmICRQYXJhbXtGaWVsZE5hbWV9IG5lICRFbnRyeS0+WzBdOwoKICAgICAgICAgICAgbXkgJUZpZWxkQ29uZmlnID0gKAogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkRW50cnktPlsxXSwKICAgICAgICAgICAgICAgIERhdGFiYXNlRmllbGQgPT4gJEVudHJ5LT5bMl0sCiAgICAgICAgICAgICAgICBTdG9yYWdlVHlwZSAgID0+ICRFbnRyeS0+WzVdLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICVGaWVsZENvbmZpZzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuOwp9Cgo9aGVhZDIgX1NlbmRDb25kaXRpb25HZXRGaWVsZFNlbGVjdGlvbnMoKQoKUmV0dXJucyB0aGUgc2VsZWN0aW9ucyBmb3IgdGhlIGdpdmVuIGZpZWxkIChtZXJnZWQgZnJvbSBhbGwgc291cmNlcykuCkluIE9UUlMgNiwgdGhlcmUgaXMgYSBmdW5jdGlvbiBpbiB0aGUgQ3VzdG9tZXJVc2VyLnBtIHRoYXQgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCEhIQoKICAgIG15ICVTZWxlY3Rpb25zRGF0YSA9ICRTdXJ2ZXlPYmplY3QtPl9TZW5kQ29uZGl0aW9uR2V0RmllbGRTZWxlY3Rpb25zKAogICAgICAgIEZpZWxkTmFtZSA9PiAnVXNlckVtYWlsJywKICAgICk7Cgo9Y3V0CgpzdWIgX1NlbmRDb25kaXRpb25HZXRGaWVsZFNlbGVjdGlvbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICEkUGFyYW17RmllbGROYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgRmllbGROYW1lISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwoKICAgIG15ICVTZWxlY3Rpb25zRGF0YTsKCiAgICBDT1VOVDoKICAgIGZvciBteSAkQ291bnQgKCAnJywgMSAuLiAxMCApIHsKICAgICAgICBuZXh0IENPVU5UIGlmICEkQ3VzdG9tZXJVc2VyT2JqZWN0LT57IkN1c3RvbWVyVXNlciRDb3VudCJ9OwogICAgICAgIG5leHQgQ09VTlQKICAgICAgICAgICAgaWYgISRDdXN0b21lclVzZXJPYmplY3QtPnsiQ3VzdG9tZXJVc2VyJENvdW50In0tPntDdXN0b21lclVzZXJNYXB9LT57U2VsZWN0aW9uc30tPnsgJFBhcmFte0ZpZWxkTmFtZX0gfTsKCiAgICAgICAgJVNlbGVjdGlvbnNEYXRhID0gKAogICAgICAgICAgICAlU2VsZWN0aW9uc0RhdGEsCiAgICAgICAgICAgICV7ICRDdXN0b21lclVzZXJPYmplY3QtPnsiQ3VzdG9tZXJVc2VyJENvdW50In0tPntDdXN0b21lclVzZXJNYXB9LT57U2VsZWN0aW9uc30tPnsgJFBhcmFte0ZpZWxkTmFtZX0gfSB9CiAgICAgICAgKTsKICAgIH0KCiAgICAjIE1ha2Ugc3VyZSB0aGUgZW5jb2Rpbmcgc3RhbXAgaXMgc2V0LgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJVNlbGVjdGlvbnNEYXRhICkgewogICAgICAgICRTZWxlY3Rpb25zRGF0YXskS2V5fSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpFbmNvZGUnKS0+RW5jb2RlSW5wdXQoICRTZWxlY3Rpb25zRGF0YXskS2V5fSApOwogICAgfQoKICAgIHJldHVybiAlU2VsZWN0aW9uc0RhdGE7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6QW5zd2VyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpTdXJ2ZXk6OkFuc3dlciAtIHN1YiBtb2R1bGUgb2YgS2VybmVsOjpTeXN0ZW06OlN1cnZleQoKPWhlYWQxIFNZTk9QU0lTCgpBbGwgc3VydmV5IGFuc3dlciBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIEFuc3dlckFkZCgpCgp0byBhZGQgYSBuZXcgYW5zd2VyIHRvIGEgcXVlc3Rpb24KCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckFkZCgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICBRdWVzdGlvbklEID0+IDEwLAogICAgICAgIEFuc3dlciA9PiAnVGhlIEFuc3dlcicsCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlckFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhVc2VySUQgUXVlc3Rpb25JRCBBbnN3ZXIpKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgaW5zZXJ0IGFuc3dlcgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBJTlNFUlQgSU5UTyBzdXJ2ZXlfYW5zd2VyIChxdWVzdGlvbl9pZCwgYW5zd2VyLCBwb3NpdGlvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwKICAgICAgICAgICAgICAgIGNoYW5nZV90aW1lLCBjaGFuZ2VfYnkpCiAgICAgICAgICAgIFZBTFVFUyAoID8sID8sIDI1NSwgY3VycmVudF90aW1lc3RhbXAsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/KScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUGFyYW17QW5zd2VyfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0sIF0sCiAgICApOwp9Cgo9aGVhZDIgQW5zd2VyRGVsZXRlKCkKCnRvIGRlbGV0ZSBhIGFuc3dlciBmcm9tIGEgcXVlc3Rpb24KCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckRlbGV0ZSgKICAgICAgICBRdWVzdGlvbklEID0+IDEwLAogICAgICAgIEFuc3dlcklEID0+IDQsCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlckRlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhRdWVzdGlvbklEIEFuc3dlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWxldGUgYW5zd2VyCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIERFTEVURSBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtBbnN3ZXJJRH0sIFwkUGFyYW17UXVlc3Rpb25JRH0sIF0sCiAgICApOwp9Cgo9aGVhZDIgQW5zd2VyR2V0KCkKCnRvIGdldCBhbGwgYXR0cmlidXRlcyBvZiBhIGFuc3dlcgoKICAgIG15ICVBbnN3ZXIgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJHZXQoCiAgICAgICAgQW5zd2VySUQgPT4gMTIzCiAgICApOwoKcmV0dXJuczoKCiAgICAlQW5zd2VyID0gKAogICAgICAgIEFuc3dlcklEICAgPT4gMSwKICAgICAgICBRdWVzdGlvbklEID0+IDIsCiAgICAgICAgQW5zd2VyICAgICA9PiBDaGVja0JveE9uZSwKICAgICAgICBQb3NpdGlvbiAgID0+IDI1NSwKICAgICAgICBDcmVhdGVUaW1lID0+ICcyMDE3LTAxLTAxIDEyOjAwOjAwJywKICAgICAgICBDcmVhdGVCeSAgID0+IDEsCiAgICAgICAgQ2hhbmdlVGltZSA9PiAnMjAxNy0wMS0wMSAxMjowMDowMCcsCiAgICAgICAgQ2hhbmdlQnkgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0Fuc3dlcklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUXVlc3Rpb25JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFuc3dlcgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBxdWVzdGlvbl9pZCwgYW5zd2VyLCBwb3NpdGlvbiwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieQogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17QW5zd2VySUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlRGF0YTsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICREYXRhe0Fuc3dlcklEfSAgID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtRdWVzdGlvbklEfSA9ICRSb3dbMV07CiAgICAgICAgJERhdGF7QW5zd2VyfSAgICAgPSAkUm93WzJdOwogICAgICAgICREYXRhe1Bvc2l0aW9ufSAgID0gJFJvd1szXTsKICAgICAgICAkRGF0YXtDcmVhdGVUaW1lfSA9ICRSb3dbNF07CiAgICAgICAgJERhdGF7Q3JlYXRlQnl9ICAgPSAkUm93WzVdOwogICAgICAgICREYXRhe0NoYW5nZVRpbWV9ID0gJFJvd1s2XTsKICAgICAgICAkRGF0YXtDaGFuZ2VCeX0gICA9ICRSb3dbN107CiAgICB9CgogICAgcmV0dXJuICVEYXRhOwp9Cgo9aGVhZDIgQW5zd2VyVXBkYXRlKCkKCnRvIHVwZGF0ZSBhbiBleGlzdGluZyBhbnN3ZXIKCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlclVwZGF0ZSgKICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICBBbnN3ZXJJRCA9PiA2LAogICAgICAgIFF1ZXN0aW9uSUQgPT4gNCwKICAgICAgICBBbnN3ZXIgPT4gJ1RoZSBBbnN3ZXInLAogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoVXNlcklEIEFuc3dlcklEIFF1ZXN0aW9uSUQgQW5zd2VyKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHVwZGF0ZSBhbnN3ZXIKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgU0VUIGFuc3dlciA9ID8sIGNoYW5nZV90aW1lID0gY3VycmVudF90aW1lc3RhbXAsIGNoYW5nZV9ieSA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtBbnN3ZXJ9LCBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17QW5zd2VySUR9LCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgKTsKfQoKPWhlYWQyIEFuc3dlckxpc3QoKQoKdG8gZ2V0IGEgYXJyYXkgbGlzdCBvZiBhbGwgYW5zd2VyIGl0ZW1zCgogICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJMaXN0KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMQogICAgKTsKCnJldHVybnM6CgogICAgQExpc3QgPSAoCiAgICAgICAgewogICAgICAgICAgICBBbnN3ZXJJRCAgID0+IDEsCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgPT4gMiwKICAgICAgICAgICAgQW5zd2VyICAgICA9PiAnVGhlIEFuc3dlcicsCiAgICAgICAgfSwKICAgICAgICAuLi4KICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyTGlzdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17UXVlc3Rpb25JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFF1ZXN0aW9uSUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBhbnN3ZXIgbGlzdAogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBxdWVzdGlvbl9pZCwgYW5zd2VyCiAgICAgICAgICAgIEZST00gc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBXSEVSRSBxdWVzdGlvbl9pZCA9ID8KICAgICAgICAgICAgT1JERVIgQlkgcG9zaXRpb24nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlRGF0YTsKICAgICAgICAkRGF0YXtBbnN3ZXJJRH0gICA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7UXVlc3Rpb25JRH0gPSAkUm93WzFdOwogICAgICAgICREYXRhe0Fuc3dlcn0gICAgID0gJFJvd1syXTsKCiAgICAgICAgcHVzaCBATGlzdCwgXCVEYXRhOwogICAgfQoKICAgIHJldHVybiBATGlzdDsKfQoKPWhlYWQyIEFuc3dlclNvcnQoKQoKdG8gc29ydCBhbGwgYW5zd2VycyBmcm9tIGEgcXVlc3Rpb24KCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlclNvcnQoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBBbnN3ZXJTb3J0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtRdWVzdGlvbklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUXVlc3Rpb25JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IGFuc3dlciBsaXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPwogICAgICAgICAgICBPUkRFUiBCWSBwb3NpdGlvbicsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0gXSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSBATGlzdDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQExpc3QsICRSb3dbMF07CiAgICB9CgogICAgbXkgJENvdW50ZXIgPSAxOwogICAgZm9yIG15ICRBbnN3ZXJJRCAoQExpc3QpIHsKCiAgICAgICAgIyB1cGRhdGUgcG9zaXRpb24KICAgICAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgICAgICBVUERBVEUgc3VydmV5X2Fuc3dlcgogICAgICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ291bnRlciwgXCRBbnN3ZXJJRCBdLAogICAgICAgICk7CgogICAgICAgICRDb3VudGVyKys7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBBbnN3ZXJVcCgpCgp0byBtb3ZlIGEgYW5zd2VyIHVwCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5BbnN3ZXJVcCgKICAgICAgICBRdWVzdGlvbklEID0+IDQsCiAgICAgICAgQW5zd2VySUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyVXAgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUXVlc3Rpb25JRCBBbnN3ZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBwb3NpdGlvbgogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17QW5zd2VySUR9LCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFBvc2l0aW9uOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFBvc2l0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgJFBvc2l0aW9uIDwgMjsKCiAgICBteSAkUG9zaXRpb25VcCA9ICRQb3NpdGlvbiAtIDE7CgogICAgIyBnZXQgYW5zd2VyCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPyBBTkQgcG9zaXRpb24gPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUG9zaXRpb25VcCwgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRBbnN3ZXJJRERvd247CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkQW5zd2VySUREb3duID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRBbnN3ZXJJRERvd247CgogICAgIyB1cGRhdGUgcG9zaXRpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBVUERBVEUgc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBTRVQgcG9zaXRpb24gPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUG9zaXRpb24sIFwkQW5zd2VySUREb3duLCBdLAogICAgKTsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfYW5zd2VyCiAgICAgICAgICAgIFNFVCBwb3NpdGlvbiA9ID8KICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQb3NpdGlvblVwLCBcJFBhcmFte0Fuc3dlcklEfSwgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBBbnN3ZXJEb3duKCkKCnRvIG1vdmUgYSBhbnN3ZXIgZG93bgoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+QW5zd2VyRG93bigKICAgICAgICBRdWVzdGlvbklEID0+IDQsCiAgICAgICAgQW5zd2VySUQgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQW5zd2VyRG93biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhRdWVzdGlvbklEIEFuc3dlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHBvc2l0aW9uCiAgICAgICAgICAgIEZST00gc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBXSEVSRSBpZCA9ID8KICAgICAgICAgICAgICAgIEFORCBxdWVzdGlvbl9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtBbnN3ZXJJRH0sIFwkUGFyYW17UXVlc3Rpb25JRH0sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUG9zaXRpb247CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkUG9zaXRpb24gPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJFBvc2l0aW9uOwoKICAgIG15ICRQb3NpdGlvbkRvd24gPSAkUG9zaXRpb24gKyAxOwoKICAgICMgZ2V0IGFuc3dlcgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X2Fuc3dlcgogICAgICAgICAgICBXSEVSRSBxdWVzdGlvbl9pZCA9ID8KICAgICAgICAgICAgICAgIEFORCBwb3NpdGlvbiA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSwgXCRQb3NpdGlvbkRvd24sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQW5zd2VySURVcDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRBbnN3ZXJJRFVwID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRBbnN3ZXJJRFVwOwoKICAgICMgdXBkYXRlIHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uLCBcJEFuc3dlcklEVXAsIF0sCiAgICApOwoKICAgICMgdXBkYXRlIHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uRG93biwgXCRQYXJhbXtBbnN3ZXJJRH0sIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQW5zd2VyQ291bnQoKQoKdG8gY291bnQgYWxsIGFuc3dlcnMgb2YgYSBxdWVzdGlvbgoKICAgIG15ICRDb3VudEFuc3dlciA9ICRTdXJ2ZXlPYmplY3QtPkFuc3dlckNvdW50KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMTIzCiAgICApOwoKPWN1dAoKc3ViIEFuc3dlckNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtRdWVzdGlvbklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUXVlc3Rpb25JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY291bnQgYW5zd2VycwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIENPVU5UKGlkKQogICAgICAgICAgICBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRDb3VudEFuc3dlcjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDb3VudEFuc3dlciA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuICRDb3VudEFuc3dlcjsKfQoKPWhlYWQyIFB1YmxpY0Fuc3dlclNldCgpCgp0byBzYXZlIGEgcHVibGljIHZvdGUKCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlB1YmxpY0Fuc3dlclNldCgKICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJ2FWa2RFODJEdzJxdzZlckNkYScsCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgICAgIFZvdGVWYWx1ZSA9PiAnVGhlIFZhbHVlJywKICAgICk7Cgo9Y3V0CgpzdWIgUHVibGljQW5zd2VyU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFB1YmxpY1N1cnZleUtleSBRdWVzdGlvbklEIFZvdGVWYWx1ZSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCByZXF1ZXN0CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdAogICAgICAgICAgICBXSEVSRSBwdWJsaWNfc3VydmV5X2tleSA9ID8KICAgICAgICAgICAgICAgIEFORCB2YWxpZF9pZCA9IDEnLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUmVxdWVzdElEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlcXVlc3RJRCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkUmVxdWVzdElEOwoKICAgICMgUHJldmVudCB0byB3cml0ZSBzb21ldGhpbmcgdGhhdCBvcmFjbGUgc3RvcmUgYXMgTlVMTCBpbiBkYXRhYmFzZS4KICAgICMgU2VlIGJ1ZyAjOTU3NS4KICAgIGlmICggKCAkREJPYmplY3QtPnsnREI6OlR5cGUnfSBlcSAnb3JhY2xlJyApICYmICggJFBhcmFte1ZvdGVWYWx1ZX0gZXEgJycgKSApIHsKICAgICAgICAkUGFyYW17Vm90ZVZhbHVlfSA9IDA7CiAgICB9CgogICAgIyBpbnNlcnQgdm90ZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV92b3RlIChyZXF1ZXN0X2lkLCBxdWVzdGlvbl9pZCwgdm90ZV92YWx1ZSwgY3JlYXRlX3RpbWUpCiAgICAgICAgICAgIFZBTFVFUyAoID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wKScsCiAgICAgICAgQmluZCA9PiBbIFwkUmVxdWVzdElELCBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBhcmFte1ZvdGVWYWx1ZX0sIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgoxOwoKPWhlYWQxIFRFUk1TIEFORCBDT05ESVRJT05TCgpUaGlzIHNvZnR3YXJlIGlzIHBhcnQgb2YgdGhlIE9UUlMgcHJvamVjdCAoTDxodHRwOi8vb3Rycy5vcmcvPikuCgpUaGlzIHNvZnR3YXJlIGNvbWVzIHdpdGggQUJTT0xVVEVMWSBOTyBXQVJSQU5UWS4gRm9yIGRldGFpbHMsIHNlZQp0aGUgZW5jbG9zZWQgZmlsZSBDT1BZSU5HIGZvciBsaWNlbnNlIGluZm9ybWF0aW9uIChBR1BMKS4gSWYgeW91CmRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBMPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9hZ3BsLnR4dD4uCgo9Y3V0Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UXVlc3Rpb247Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UXVlc3Rpb24gLSBzdWIgbW9kdWxlIG9mIEtlcm5lbDo6U3lzdGVtOjpTdXJ2ZXkKCj1oZWFkMSBTWU5PUFNJUwoKQWxsIHN1cnZleSBxdWVzdGlvbiBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIFF1ZXN0aW9uQWRkKCkKCnRvIGFkZCBhIG5ldyBxdWVzdGlvbiB0byBhIHN1cnZleQoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgU3VydmV5SUQgPT4gMTAsCiAgICAgICAgUXVlc3Rpb24gPT4gJ1RoZSBRdWVzdGlvbicsCiAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwgIyBvciAwCiAgICAgICAgVHlwZSA9PiAnUmFkaW8nLAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvbkFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhVc2VySUQgU3VydmV5SUQgUXVlc3Rpb24gVHlwZSkpIHsKICAgICAgICBpZiAoICFkZWZpbmVkICRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICEkUGFyYW17UXVlc3Rpb259OwoKICAgICMgaW5zZXJ0IGEgbmV3IHF1ZXN0aW9uCiAgICAjIGlmIHdlIGRpZG4ndCBnZXQgYW4gQW5zd2VyIFBhcmFtZXRlciAoZS5nLiBqdXN0IHVuZGVmaW5lZCkKICAgICMgb3IgaXQgd2FzIHNvbWV0aGluZyBlbHNlIHRoYW4gMCBvciAxCiAgICAjIHdlIGFzc3VtZSBpdCdzIGEgcmVxdWlyZWQgYW5zd2VyCiAgICBpZiAoCiAgICAgICAgIWRlZmluZWQgJFBhcmFte0Fuc3dlclJlcXVpcmVkfQogICAgICAgIHx8CiAgICAgICAgKCAkUGFyYW17QW5zd2VyUmVxdWlyZWR9IG5lICcwJyAmJiAkUGFyYW17QW5zd2VyUmVxdWlyZWR9IG5lICcxJyApCiAgICAgICAgKQogICAgewogICAgICAgICRQYXJhbXtBbnN3ZXJSZXF1aXJlZH0gPSAxOwogICAgfQoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgSU5TRVJUIElOVE8gc3VydmV5X3F1ZXN0aW9uIChzdXJ2ZXlfaWQsIHF1ZXN0aW9uLCBxdWVzdGlvbl90eXBlLCBwb3NpdGlvbiwKICAgICAgICAgICAgICAgIGFuc3dlcl9yZXF1aXJlZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieSkKICAgICAgICAgICAgVkFMVUVTICg/LCA/LCA/LCAyNTUsID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICBcJFBhcmFte1N1cnZleUlEfSwgXCRQYXJhbXtRdWVzdGlvbn0sIFwkUGFyYW17VHlwZX0sIFwkUGFyYW17QW5zd2VyUmVxdWlyZWR9LAogICAgICAgICAgICBcJFBhcmFte1VzZXJJRH0sIFwkUGFyYW17VXNlcklEfSwKICAgICAgICBdLAogICAgKTsKfQoKPWhlYWQyIFF1ZXN0aW9uRGVsZXRlKCkKCnRvIGRlbGV0ZSBhIHF1ZXN0aW9uIGZyb20gYSBzdXJ2ZXkKCiAgICBteSAkU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uRGVsZXRlKAogICAgICAgIFN1cnZleUlEID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMCwKICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25EZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoU3VydmV5SUQgUXVlc3Rpb25JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBkZWxldGUgYWxsIGFuc3dlcnMgb2YgYSBxdWVzdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIERFTEVURSBGUk9NIHN1cnZleV9hbnN3ZXIKICAgICAgICAgICAgV0hFUkUgcXVlc3Rpb25faWQgPSA/JywKICAgICAgICBCaW5kID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSB0aGUgcXVlc3Rpb24KICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBERUxFVEUgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17UXVlc3Rpb25JRH0sIFwkUGFyYW17U3VydmV5SUR9LCBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFF1ZXN0aW9uR2V0KCkKCnRvIGdldCBhbGwgYXR0cmlidXRlcyBvZiBhIHF1ZXN0aW9uCgogICAgbXkgJVF1ZXN0aW9uID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25HZXQoCiAgICAgICAgUXVlc3Rpb25JRCA9PiAxMjMKICAgICk7CgpyZXR1cm5zOgoKICAgICVRdWVzdGlvbiA9ICgKICAgICAgICBRdWVzdGlvbklEICAgICA9PiAxLAogICAgICAgIFN1cnZleUlEICAgICAgID0+IDIsCiAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJ1F1ZXN0aW9uJywKICAgICAgICBUeXBlICAgICAgICAgICA9PiAnWWVzTm8nLAogICAgICAgIFBvc2l0aW9uICAgICAgID0+IDEyLAogICAgICAgIEFuc3dlclJlcXVpcmVkID0+IDEsCiAgICAgICAgQ3JlYXRlVGltZSAgICAgPT4gJzIwMTctMDEtMDEgMTI6MDA6MDAnLAogICAgICAgIENyZWF0ZUJ5ICAgICAgID0+IDEsCiAgICAgICAgQ2hhbmdlVGltZSAgICAgPT4gJzIwMTctMDEtMDEgMTI6MDA6MDAnLAogICAgICAgIENoYW5nZUJ5ICAgICAgID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtRdWVzdGlvbklEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgUXVlc3Rpb25JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHF1ZXN0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQsIHN1cnZleV9pZCwgcXVlc3Rpb24sIHF1ZXN0aW9uX3R5cGUsIHBvc2l0aW9uLCBhbnN3ZXJfcmVxdWlyZWQsIGNyZWF0ZV90aW1lLAogICAgICAgICAgICAgICAgY3JlYXRlX2J5LCBjaGFuZ2VfdGltZSwgY2hhbmdlX2J5CiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlRGF0YTsKCiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkRGF0YXtRdWVzdGlvbklEfSAgICAgPSAkUm93WzBdOwogICAgICAgICREYXRhe1N1cnZleUlEfSAgICAgICA9ICRSb3dbMV07CiAgICAgICAgJERhdGF7UXVlc3Rpb259ICAgICAgID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtUeXBlfSAgICAgICAgICAgPSAkUm93WzNdOwogICAgICAgICREYXRhe1Bvc2l0aW9ufSAgICAgICA9ICRSb3dbNF07CiAgICAgICAgJERhdGF7QW5zd2VyUmVxdWlyZWR9ID0gJFJvd1s1XTsKICAgICAgICAkRGF0YXtDcmVhdGVUaW1lfSAgICAgPSAkUm93WzZdOwogICAgICAgICREYXRhe0NyZWF0ZUJ5fSAgICAgICA9ICRSb3dbN107CiAgICAgICAgJERhdGF7Q2hhbmdlVGltZX0gICAgID0gJFJvd1s4XTsKICAgICAgICAkRGF0YXtDaGFuZ2VCeX0gICAgICAgPSAkUm93WzldOwogICAgfQoKICAgIHJldHVybiAlRGF0YTsKfQoKPWhlYWQyIFF1ZXN0aW9uVXBkYXRlKCkKCnRvIHVwZGF0ZSBhbiBleGlzdGluZyBxdWVzdGlvbgoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25VcGRhdGUoCiAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgICAgIFN1cnZleUlEID0+IDMsCiAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gJzEnLCAjIG9yICcwJwogICAgICAgIFF1ZXN0aW9uID0+ICdUaGUgUXVlc3Rpb24nLAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvblVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhVc2VySUQgUXVlc3Rpb25JRCBTdXJ2ZXlJRCBRdWVzdGlvbikpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRBbnN3ZXJSZXF1aXJlZCA9IDE7CiAgICBpZiAoCiAgICAgICAgZGVmaW5lZCAkUGFyYW17QW5zd2VyUmVxdWlyZWR9CiAgICAgICAgJiYgKCAkUGFyYW17QW5zd2VyUmVxdWlyZWR9IGVxICcxJyB8fCAkUGFyYW17QW5zd2VyUmVxdWlyZWR9IGVxICcwJyApCiAgICAgICAgKQogICAgewogICAgICAgICRBbnN3ZXJSZXF1aXJlZCA9ICRQYXJhbXtBbnN3ZXJSZXF1aXJlZH07CiAgICB9CgogICAgIyB1cGRhdGUgcXVlc3Rpb24KICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBTRVQgcXVlc3Rpb24gPSA/LCBhbnN3ZXJfcmVxdWlyZWQgPSA/LCBjaGFuZ2VfdGltZSA9IGN1cnJlbnRfdGltZXN0YW1wLAogICAgICAgICAgICAgICAgY2hhbmdlX2J5ID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8KICAgICAgICAgICAgICAgIEFORCBzdXJ2ZXlfaWQgPSA/JywKICAgICAgICBCaW5kID0+IFsKICAgICAgICAgICAgXCRQYXJhbXtRdWVzdGlvbn0sIFwkQW5zd2VyUmVxdWlyZWQsIFwkUGFyYW17VXNlcklEfSwgXCRQYXJhbXtRdWVzdGlvbklEfSwKICAgICAgICAgICAgXCRQYXJhbXtTdXJ2ZXlJRH0sCiAgICAgICAgXSwKICAgICk7Cn0KCj1oZWFkMiBRdWVzdGlvbkxpc3QoKQoKdG8gZ2V0IGEgYXJyYXkgbGlzdCBvZiBhbGwgcXVlc3Rpb24gaXRlbXMKCiAgICBteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxCiAgICApOwoKcmV0dXJuczoKICAgIEBMaXN0ID0gKAogICAgICAgIHsKICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgPT4gMTIzLCwKICAgICAgICAgICAgU3VydmV5SUQgICAgICAgPT4gMTIzLAogICAgICAgICAgICBRdWVzdGlvbiAgICAgICA9PiAnUXVlc3Rpb24nCiAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICdZZXNObycsCiAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+IDEsCiAgICAgICAgfSwKICAgICAgICAuLi4KICAgICk7Cgo9Y3V0CgpzdWIgUXVlc3Rpb25MaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtTdXJ2ZXlJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFN1cnZleUlEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgYWxsIHF1ZXN0aW9ucyBvZiBhIHN1cnZleQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCBzdXJ2ZXlfaWQsIHF1ZXN0aW9uLCBxdWVzdGlvbl90eXBlLCBhbnN3ZXJfcmVxdWlyZWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPwogICAgICAgICAgICBPUkRFUiBCWSBwb3NpdGlvbicsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlRGF0YTsKICAgICAgICAkRGF0YXtRdWVzdGlvbklEfSAgICAgPSAkUm93WzBdOwogICAgICAgICREYXRhe1N1cnZleUlEfSAgICAgICA9ICRSb3dbMV07CiAgICAgICAgJERhdGF7UXVlc3Rpb259ICAgICAgID0gJFJvd1syXTsKICAgICAgICAkRGF0YXtUeXBlfSAgICAgICAgICAgPSAkUm93WzNdOwogICAgICAgICREYXRhe0Fuc3dlclJlcXVpcmVkfSA9ICRSb3dbNF0gfHwgMDsKCiAgICAgICAgcHVzaCBATGlzdCwgXCVEYXRhOwogICAgfQoKICAgIHJldHVybiBATGlzdDsKfQoKPWhlYWQyIFF1ZXN0aW9uU29ydCgpCgp0byBzb3J0IGFsbCBxdWVzdGlvbnMgZnJvbSBhIHN1cnZleQoKICAgIG15ICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25Tb3J0KAogICAgICAgIFN1cnZleUlEID0+IDEsCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uU29ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17U3VydmV5SUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBTdXJ2ZXlJRCEnCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgYWxsIHF1ZXN0aW9uIG9mIGEgc3VydmV5IChzb3J0ZWQgYnkgcG9zaXRpb24pCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPwogICAgICAgICAgICBPUkRFUiBCWSBwb3NpdGlvbicsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICApOwoKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgcHVzaCBATGlzdCwgJFJvd1swXTsKICAgIH0KCiAgICBteSAkQ291bnRlciA9IDE7CiAgICBmb3IgbXkgJFF1ZXN0aW9uSUQgKEBMaXN0KSB7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICAgICAgV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ291bnRlciwgXCRRdWVzdGlvbklEIF0sCiAgICAgICAgKTsKCiAgICAgICAgJENvdW50ZXIrKzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIFF1ZXN0aW9uVXAoKQoKdG8gbW92ZSBhIHF1ZXN0aW9uIHVwCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvblVwKAogICAgICAgIFN1cnZleUlEID0+IDEsCiAgICAgICAgUXVlc3Rpb25JRCA9PiA0LAogICAgKTsKCj1jdXQKCnN1YiBRdWVzdGlvblVwIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFN1cnZleUlEIFF1ZXN0aW9uSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgcG9zaXRpb24KICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgV0hFUkUgaWQgPSA/CiAgICAgICAgICAgICAgICBBTkQgc3VydmV5X2lkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1F1ZXN0aW9uSUR9LCBcJFBhcmFte1N1cnZleUlEfSwgXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRQb3NpdGlvbiA9IDA7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkUG9zaXRpb24gPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAkUG9zaXRpb24gPCAyOwoKICAgIG15ICRQb3NpdGlvblVwID0gJFBvc2l0aW9uIC0gMTsKCiAgICAjIGdldCBxdWVzdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgICAgIEFORCBwb3NpdGlvbiA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtTdXJ2ZXlJRH0sIFwkUG9zaXRpb25VcCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFF1ZXN0aW9uSUREb3duOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFF1ZXN0aW9uSUREb3duID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gaWYgISRRdWVzdGlvbklERG93bjsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uLCBcJFF1ZXN0aW9uSUREb3duLCBdLAogICAgKTsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uVXAsIFwkUGFyYW17UXVlc3Rpb25JRH0sIF0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgUXVlc3Rpb25Eb3duKCkKCnRvIG1vdmUgYSBxdWVzdGlvbiBkb3duCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkRvd24oCiAgICAgICAgU3VydmV5SUQgPT4gMSwKICAgICAgICBRdWVzdGlvbklEID0+IDQsCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uRG93biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhTdXJ2ZXlJRCBRdWVzdGlvbklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIHBvc2l0aW9uCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uCiAgICAgICAgICAgIFdIRVJFIGlkID0gPwogICAgICAgICAgICAgICAgQU5EIHN1cnZleV9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSwgXCRQYXJhbXtTdXJ2ZXlJRH0sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUG9zaXRpb247CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkUG9zaXRpb24gPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBpZiAhJFBvc2l0aW9uOwoKICAgIG15ICRQb3NpdGlvbkRvd24gPSAkUG9zaXRpb24gKyAxOwoKICAgICMgZ2V0IHF1ZXN0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgV0hFUkUgc3VydmV5X2lkID0gPwogICAgICAgICAgICAgICAgQU5EIHBvc2l0aW9uID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1N1cnZleUlEfSwgXCRQb3NpdGlvbkRvd24sIF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkUXVlc3Rpb25JRFVwOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFF1ZXN0aW9uSURVcCA9ICRSb3dbMF07CiAgICB9CgogICAgcmV0dXJuIGlmICEkUXVlc3Rpb25JRFVwOwoKICAgICMgdXBkYXRlIHBvc2l0aW9uCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBTRVQgcG9zaXRpb24gPSA/CiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUG9zaXRpb24sIFwkUXVlc3Rpb25JRFVwLCBdLAogICAgKTsKCiAgICAjIHVwZGF0ZSBwb3NpdGlvbgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFVQREFURSBzdXJ2ZXlfcXVlc3Rpb24KICAgICAgICAgICAgU0VUIHBvc2l0aW9uID0gPwogICAgICAgICAgICBXSEVSRSBpZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBvc2l0aW9uRG93biwgXCRQYXJhbXtRdWVzdGlvbklEfSwgXSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBRdWVzdGlvbkNvdW50KCkKCnRvIGNvdW50IGFsbCBxdWVzdGlvbnMgb2YgYSBzdXJ2ZXkKCiAgICBteSAkQ291bnRRdWVzdGlvbiA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQ291bnQoCiAgICAgICAgU3VydmV5SUQgPT4gMTIzCiAgICApOwoKPWN1dAoKc3ViIFF1ZXN0aW9uQ291bnQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGNvdW50IHF1ZXN0aW9ucwogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIENPVU5UKGlkKQogICAgICAgICAgICBGUk9NIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICBXSEVSRSBzdXJ2ZXlfaWQgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17U3VydmV5SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAkQ291bnRRdWVzdGlvbjsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRDb3VudFF1ZXN0aW9uID0gJFJvd1swXTsKICAgIH0KCiAgICByZXR1cm4gJENvdW50UXVlc3Rpb247Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6UmVxdWVzdDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6U3VydmV5OjpSZXF1ZXN0IC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6U3VydmV5Cgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBzdXJ2ZXkgcmVxdWVzdCBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIFJlcXVlc3RHZXQoKQoKdG8gZ2V0IGFuIGFycmF5IGxpc3Qgb2YgcmVxdWVzdCBlbGVtZW50cwoKICAgIG15ICVSZXF1ZXN0RGF0YSA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RHZXQoCiAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICdBdzVkZTNYZjVxQScsCgogICAgICAgIFJlcXVlc3RTZW5kVGltZU5ld2VyRGF0ZSAgICA9PiAnMjAxMi0wMS0wMSAxMjowMDowMCcsICAgIyAob3B0aW9uYWwpCiAgICAgICAgUmVxdWVzdFNlbmRUaW1lT2xkZXJEYXRlICAgID0+ICcyMDEyLTAxLTMxIDEyOjAwOjAwJywgICAjIChvcHRpb25hbCkKICAgICAgICBSZXF1ZXN0Vm90ZVRpbWVOZXdlckRhdGUgICAgPT4gJzIwMTItMDEtMDEgMTI6MDA6MDAnLCAgICMgKG9wdGlvbmFsKQogICAgICAgIFJlcXVlc3RWb3RlVGltZU9sZGVyRGF0ZSAgICA9PiAnMjAxMi0xMi0zMSAxMjowMDowMCcsICAgIyAob3B0aW9uYWwpCiAgICAgICAgUmVxdWVzdENyZWF0ZVRpbWVOZXdlckRhdGUgID0+ICcyMDEyLTAxLTAxIDEyOjAwOjAwJywgICAjIChvcHRpb25hbCkKICAgICAgICBSZXF1ZXN0Q3JlYXRlVGltZU9sZGVyRGF0ZSAgPT4gJzIwMTItMTItMzEgMTI6MDA6MDAnLCAgICMgKG9wdGlvbmFsKQogICAgKTsKCnJldHVybnM6CgogICAgJVJlcXVlc3REYXRhID0gKAogICAgICAgIFJlcXVlc3RJRCAgICAgICA9PiAxMjMsCiAgICAgICAgVGlja2V0SUQgICAgICAgID0+IDEyMywKICAgICAgICBTdXJ2ZXlJRCAgICAgICAgPT4gMTIzLAogICAgICAgIFZhbGlkSUQgICAgICAgICA9PiAxLAogICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAnYjRjMTQ1NTI5MTkwMThiNTFlYzc5MmM5YjgxMmI2OTEnLAogICAgICAgIFNlbmRUbyAgICAgICAgICA9PiAnbWFpbEBsb2NhbGhvc3QuY29tJywKICAgICAgICBTZW5kVGltZSAgICAgICAgPT4gJzIwMTctMDEtMDEgMTI6MDA6MDAnLAogICAgICAgIFZvdGVUaW1lICAgICAgICA9PiAnMjAxNy0wMS0wMiAxMjowMDowMCcsCiAgICApOwoKPWN1dAoKc3ViIFJlcXVlc3RHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1B1YmxpY1N1cnZleUtleX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFB1YmxpY1N1cnZleUtleSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgcHJlcGFyZSBzcWwKICAgIG15ICRTUUxTZWxlY3QgPSAnU0VMRUNUIGlkLCB0aWNrZXRfaWQsIHN1cnZleV9pZCwgdmFsaWRfaWQsIHB1YmxpY19zdXJ2ZXlfa2V5LCBzZW5kX3RvLCBzZW5kX3RpbWUsIHZvdGVfdGltZSc7CiAgICBteSAkU1FMRnJvbSAgID0gJyBGUk9NIHN1cnZleV9yZXF1ZXN0JzsKICAgIG15ICRTUUxXaGVyZSAgPSAiIFdIRVJFIHB1YmxpY19zdXJ2ZXlfa2V5ID0gJyRQYXJhbXtQdWJsaWNTdXJ2ZXlLZXl9JyI7CgogICAgIyBzZXQgdGltZSBwYXJhbXMKICAgIG15ICVUaW1lUGFyYW1zID0gKAoKICAgICAgICBSZXF1ZXN0U2VuZFRpbWVOZXdlckRhdGUgICA9PiAnc2VuZF90aW1lID49JywKICAgICAgICBSZXF1ZXN0U2VuZFRpbWVPbGRlckRhdGUgICA9PiAnc2VuZF90aW1lIDw9JywKICAgICAgICBSZXF1ZXN0Vm90ZVRpbWVOZXdlckRhdGUgICA9PiAndm90ZV90aW1lID49JywKICAgICAgICBSZXF1ZXN0Vm90ZVRpbWVPbGRlckRhdGUgICA9PiAndm90ZV90aW1lIDw9JywKICAgICAgICBSZXF1ZXN0Q3JlYXRlVGltZU5ld2VyRGF0ZSA9PiAnY3JlYXRlX3RpbWUgPj0nLAogICAgICAgIFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlID0+ICdjcmVhdGVfdGltZSA8PScsCiAgICApOwoKICAgICMgY2hlY2sgYW5kIGFkZCB0aW1lIHBhcmFtcyB0byBXSEVSRQogICAgVElNRVBBUkFNOgogICAgZm9yIG15ICRUaW1lUGFyYW0gKCBzb3J0IGtleXMgJVRpbWVQYXJhbXMgKSB7CgogICAgICAgIG5leHQgVElNRVBBUkFNIGlmICEkUGFyYW17JFRpbWVQYXJhbX07CgogICAgICAgICMgY2hlY2sgZm9ybWF0CiAgICAgICAgaWYgKCAkUGFyYW17JFRpbWVQYXJhbX0gIX4gbXsgXEEgXGRcZFxkXGQtXGRcZC1cZFxkIFxzIFxkXGQ6XGRcZDpcZFxkIFx6IH14bXMgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgcGFyYW1ldGVyICRUaW1lUGFyYW0gaGFzIGFuIGludmFsaWQgZGF0ZSBmb3JtYXQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICRQYXJhbXskVGltZVBhcmFtfSA9ICREQk9iamVjdC0+UXVvdGUoICRQYXJhbXskVGltZVBhcmFtfSApOwoKICAgICAgICAjIGFkZCB0aW1lIHBhcmFtZXRlciB0byBXSEVSRQogICAgICAgICRTUUxXaGVyZSAuPSAiIEFORCAkVGltZVBhcmFtc3skVGltZVBhcmFtfSAnJFBhcmFteyRUaW1lUGFyYW19JyI7CiAgICB9CgogICAgbXkgJFNRTCA9ICRTUUxTZWxlY3QgLj0gJFNRTEZyb207CiAgICAkU1FMIC49ICRTUUxXaGVyZTsKCiAgICAjIGdldCByZXF1ZXN0IGxpc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgIyBmZXRjaCB0aGUgcmVzdWx0CiAgICBteSAlUmVxdWVzdERhdGE7CgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFJlcXVlc3REYXRhe1JlcXVlc3RJRH0gICAgICAgPSAkUm93WzBdOwogICAgICAgICRSZXF1ZXN0RGF0YXtUaWNrZXRJRH0gICAgICAgID0gJFJvd1sxXTsKICAgICAgICAkUmVxdWVzdERhdGF7U3VydmV5SUR9ICAgICAgICA9ICRSb3dbMl07CiAgICAgICAgJFJlcXVlc3REYXRhe1ZhbGlkSUR9ICAgICAgICAgPSAkUm93WzNdOwogICAgICAgICRSZXF1ZXN0RGF0YXtQdWJsaWNTdXJ2ZXlLZXl9ID0gJFJvd1s0XTsKICAgICAgICAkUmVxdWVzdERhdGF7U2VuZFRvfSAgICAgICAgICA9ICRSb3dbNV07CiAgICAgICAgJFJlcXVlc3REYXRhe1NlbmRUaW1lfSAgICAgICAgPSAkUm93WzZdOwogICAgICAgICRSZXF1ZXN0RGF0YXtWb3RlVGltZX0gICAgICAgID0gJFJvd1s3XTsKICAgIH0KCiAgICByZXR1cm4gJVJlcXVlc3REYXRhOwp9Cgo9aGVhZDIgUmVxdWVzdFNlbmQoKQoKdG8gc2VuZCBhIHJlcXVlc3QgdG8gYSBjdXN0b21lciAoaWYgbWFzdGVyIHN1cnZleSBpcyBzZXQpCgogICAgbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0U2VuZCgKICAgICAgICBUaWNrZXRJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIFJlcXVlc3RTZW5kIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtUaWNrZXRJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFRpY2tldElEIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IHN5c3RlbSB0aW1lCiAgICBteSAkU3lzdGVtVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpLT5Ub0Vwb2NoKCk7CgogICAgIyBjcmVhdGUgUHVibGljU3VydmV5S2V5CiAgICBteSAkUHVibGljU3VydmV5S2V5OwogICAgaWYgKCAhJFBhcmFte1B1YmxpY1N1cnZleUtleX0gKSB7CiAgICAgICAgbXkgJE1ENSA9IERpZ2VzdDo6TUQ1LT5uZXcoKTsKICAgICAgICAkTUQ1LT5hZGQoICRTeXN0ZW1UaW1lIC4gaW50KCByYW5kKDk5OTk5OTk5OSkgKSApOwogICAgICAgICRQdWJsaWNTdXJ2ZXlLZXkgPSAkTUQ1LT5oZXhkaWdlc3QoKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRQdWJsaWNTdXJ2ZXlLZXkgPSAkUGFyYW17UHVibGljU3VydmV5S2V5fTsKICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZmluZCBtYXN0ZXIgc3VydmV5CiAgICBteSAkU3RhdHVzID0gJ01hc3Rlcic7CiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1QgaWQKICAgICAgICAgICAgRlJPTSBzdXJ2ZXkKICAgICAgICAgICAgV0hFUkUgc3RhdHVzID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFN0YXR1cyBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFN1cnZleUlEOwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJFN1cnZleUlEID0gJFJvd1swXTsKICAgIH0KCiAgICAjIHJldHVybiwgbm8gbWFzdGVyIHN1cnZleSBmb3VuZAogICAgcmV0dXJuIGlmICEkU3VydmV5SUQ7CgogICAgIyBnZXQgdGhlIHN1cnZleQogICAgbXkgJVN1cnZleSA9ICRTZWxmLT5TdXJ2ZXlHZXQoCiAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgKTsKICAgIG15ICRTdWJqZWN0ID0gJFN1cnZleXtOb3RpZmljYXRpb25TdWJqZWN0fTsKICAgIG15ICRCb2R5ICAgID0gJFN1cnZleXtOb3RpZmljYXRpb25Cb2R5fTsKCiAgICAjIGZpeCBuZXcgbGluZXMKICAgICRCb2R5ID1+IHMvKFxuXHJ8XHJcclxufFxyXG4pL1xuL2c7CgogICAgIyBnZXQgdGlja2V0IG9iamVjdAogICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAjIHRpY2tldCBkYXRhCiAgICBteSAlVGlja2V0ID0gJFRpY2tldE9iamVjdC0+VGlja2V0R2V0KAogICAgICAgIFRpY2tldElEICAgICAgPT4gJFBhcmFte1RpY2tldElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgICMgY2hlY2sgaWYgdGlja2V0IGlzIGluIGEgc2VuZCBxdWV1ZQogICAgaWYgKCAkU3VydmV5e1F1ZXVlc30gJiYgcmVmICRTdXJ2ZXl7UXVldWVzfSBlcSAnQVJSQVknICYmIEB7ICRTdXJ2ZXl7UXVldWVzfSB9ICkgewogICAgICAgIG15ICRGb3VuZDsKCiAgICAgICAgUVVFVUU6CiAgICAgICAgZm9yIG15ICRRdWV1ZUlEICggQHsgJFN1cnZleXtRdWV1ZXN9IH0gKSB7CiAgICAgICAgICAgIG5leHQgUVVFVUUgaWYgJFRpY2tldHtRdWV1ZUlEfSAhPSAkUXVldWVJRDsKICAgICAgICAgICAgJEZvdW5kID0gMTsKICAgICAgICAgICAgbGFzdCBRVUVVRTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBpZiAhJEZvdW5kOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgaWYgdGhlIGZvciBzZW5kIGNvbmRpdGlvbiB0aWNrZXQgdHlwZSBjaGVjayBpcyBlbmFibGVkCiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJykgKSB7CgogICAgICAgICMgY2hlY2sgaWYgdGlja2V0IGlzIGluIGEgc2VuZCB0aWNrZXQgdHlwZSBpZAogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU3VydmV5e1RpY2tldFR5cGVJRHN9ICkgKSB7CgogICAgICAgICAgICByZXR1cm4gaWYgISRUaWNrZXR7VHlwZUlEfTsKCiAgICAgICAgICAgIG15ICRGb3VuZDsKCiAgICAgICAgICAgIFRJQ0tFVFRZUEU6CiAgICAgICAgICAgIGZvciBteSAkVGlja2V0VHlwZUlEICggQHsgJFN1cnZleXtUaWNrZXRUeXBlSURzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBUSUNLRVRUWVBFIGlmICRUaWNrZXR7VHlwZUlEfSAhPSAkVGlja2V0VHlwZUlEOwogICAgICAgICAgICAgICAgJEZvdW5kID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgVElDS0VUVFlQRTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGlmICEkRm91bmQ7CiAgICAgICAgfQogICAgfQoKICAgICMgY2hlY2sgaWYgdGhlIHNlbmQgY29uZGl0aW9uIHNlcnZpY2UgY2hlY2sgaXMgZW5hYmxlZAogICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScpICkgewoKICAgICAgICAjIGNoZWNrIGlmIHRpY2tldCBpcyBpbiBhIHNlbmQgc2VydmljZQogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkU3VydmV5e1NlcnZpY2VJRHN9ICkgKSB7CgogICAgICAgICAgICByZXR1cm4gaWYgISRUaWNrZXR7U2VydmljZUlEfTsKCiAgICAgICAgICAgIG15ICRGb3VuZDsKCiAgICAgICAgICAgIFNFUlZJQ0U6CiAgICAgICAgICAgIGZvciBteSAkU2VydmljZUlEICggQHsgJFN1cnZleXtTZXJ2aWNlSURzfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBTRVJWSUNFIGlmICRUaWNrZXR7U2VydmljZUlEfSAhPSAkU2VydmljZUlEOwogICAgICAgICAgICAgICAgJEZvdW5kID0gMTsKICAgICAgICAgICAgICAgIGxhc3QgU0VSVklDRTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGlmICEkRm91bmQ7CiAgICAgICAgfQogICAgfQoKICAgIG15ICVDdXN0b21lclVzZXI7CiAgICBpZiAoICRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICVDdXN0b21lclVzZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJyktPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgIFVzZXIgPT4gJFRpY2tldHtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIGlmICRDb25maWdPYmplY3QtPkdldCgnU3VydmV5OjpTZW5kT25seVRvUmVhbEN1c3RvbWVyJykgJiYgISRDdXN0b21lclVzZXJ7VXNlckN1c3RvbWVySUR9OwogICAgfQoKICAgICMgQ2hlY2sgaWYgdGhlIHNlbmQgY29uZGl0aW9uIGJ5IGN1c3RvbWVydXNlciBmaWVsZHMgY2hlY2sgaXMgZW5hYmxlZC4KICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJykgKSB7CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoICRTdXJ2ZXl7Q3VzdG9tZXJVc2VyQ29uZGl0aW9uc30gKSApIHsKCiAgICAgICAgICAgICMgQ2hlY2sgaXMgYWN0aXZlICsgZGVmaW5lZCwgYnV0IHRoZXJlIGlzIG5vIGN1c3RvbWVyLgogICAgICAgICAgICByZXR1cm4gaWYgISRUaWNrZXR7Q3VzdG9tZXJVc2VySUR9OwoKICAgICAgICAgICAgbXkgJFJlc3VsdHMgPSAnJzsKCiAgICAgICAgICAgIEFUVFJJQlVURToKICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJXsgJFN1cnZleXtDdXN0b21lclVzZXJDb25kaXRpb25zfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBBVFRSSUJVVEUgaWYgISRBdHRyaWJ1dGU7CgogICAgICAgICAgICAgICAgbXkgQENvbmRpdGlvbnMgPSBAeyAkU3VydmV5e0N1c3RvbWVyVXNlckNvbmRpdGlvbnN9LT57JEF0dHJpYnV0ZX0gfTsKICAgICAgICAgICAgICAgIG5leHQgQVRUUklCVVRFIGlmICFAQ29uZGl0aW9uczsKCiAgICAgICAgICAgICAgICBteSAkUmVzdWx0ID0gJyc7CgogICAgICAgICAgICAgICAgQ09ORElUSU9OOgogICAgICAgICAgICAgICAgZm9yIG15ICRDb25kaXRpb24gKEBDb25kaXRpb25zKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgISRDb25kaXRpb247CgogICAgICAgICAgICAgICAgICAgIG15ICRSZWdFeHBWYWx1ZSA9ICRDb25kaXRpb24tPntSZWdFeHBWYWx1ZX07CiAgICAgICAgICAgICAgICAgICAgbXkgJE5lZ2F0aW9uICAgID0gJENvbmRpdGlvbi0+e05lZ2F0aW9ufTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJElzTWF0Y2hlZCA9ICggJEN1c3RvbWVyVXNlcnskQXR0cmlidXRlfSA9fiBteyRSZWdFeHBWYWx1ZX1pICk7CgogICAgICAgICAgICAgICAgICAgIGlmICgkTmVnYXRpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgJElzTWF0Y2hlZCA9ICEkSXNNYXRjaGVkOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBDb21iaW5lIGNvbmRpdGlvbnMgZm9yIHRoaXMgZmllbGQgYnkgT1IuCiAgICAgICAgICAgICAgICAgICAgaWYgKCRJc01hdGNoZWQpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRSZXN1bHQgLj0gJzEgfHwgJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRSZXN1bHQgLj0gJzAgfHwgJzsKCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRSZXN1bHQgPSBzdWJzdHIgJFJlc3VsdCwgMCwgLTQ7CgogICAgICAgICAgICAgICAgIyBDb21iaW5lIGFsbCBjb25kaXRpb25zIGJ5IEFORC4KICAgICAgICAgICAgICAgICRSZXN1bHRzIC49ICIoJHtSZXN1bHR9KSAmJiAiOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkUmVzdWx0cyA9IHN1YnN0ciAkUmVzdWx0cywgMCwgLTQ7CgogICAgICAgICAgICAjIEJsb2NrIHN1cnZleSBlbWFpbCBpZiBjb25kaXRpb25zIGV2YWx1YXRlcyB0byBmYWxzZS4KICAgICAgICAgICAgcmV0dXJuIGlmICFldmFsKCRSZXN1bHRzKTsgICAgIyMgbm8gY3JpdGljCiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkRGF0YSAoIHNvcnQga2V5cyAlVGlja2V0ICkgewogICAgICAgIGlmICggZGVmaW5lZCAkVGlja2V0eyREYXRhfSApIHsKICAgICAgICAgICAgJFN1YmplY3QgPX4gcy88T1RSU19USUNLRVRfJERhdGE+LyRUaWNrZXR7JERhdGF9L2dpOwogICAgICAgICAgICAkQm9keSA9fiBzLzxPVFJTX1RJQ0tFVF8kRGF0YT4vJFRpY2tldHskRGF0YX0vZ2k7CgogICAgICAgICAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAgICAgICAgICRCb2R5ID1+IHMvJmx0O09UUlNfVElDS0VUXyREYXRhJmd0Oy8kVGlja2V0eyREYXRhfS9nOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNsZWFudXAKICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfVElDS0VUXy4rPz4vLS9naTsKICAgICRCb2R5ID1+IHMvPE9UUlNfVElDS0VUXy4rPz4vLS9naTsKCiAgICAjIHJlcGxhY2UgY29uZmlnIG9wdGlvbnMKICAgICRTdWJqZWN0ID1+IHN7PE9UUlNfQ09ORklHXyguKz8pPn17JENvbmZpZ09iamVjdC0+R2V0KCQxKX1lZ3g7CiAgICAkQm9keSA9fiBzezxPVFJTX0NPTkZJR18oLis/KT59eyRDb25maWdPYmplY3QtPkdldCgkMSl9ZWd4OwoKICAgICMgZmlsdGVyIGZvciBuZXcgcmljaCB0ZXh0IGNvbnRlbnQKICAgICRCb2R5ID1+IHN7Jmx0O09UUlNfQ09ORklHXyguKz8pJmd0O317JENvbmZpZ09iamVjdC0+R2V0KCQxKX1lZ3g7CgogICAgIyBjbGVhbnVwCiAgICAkU3ViamVjdCA9fiBzLzxPVFJTX0NPTkZJR18uKz8+Ly0vZ2k7CiAgICAkQm9keSA9fiBzLzxPVFJTX0NPTkZJR18uKz8+Ly0vZ2k7CgogICAgIyBmaWx0ZXIgZm9yIG5ldyByaWNoIHRleHQgY29udGVudAogICAgJEJvZHkgPX4gcy8mbHQ7T1RSU19DT05GSUdfLis/Jmd0Oy8tL2dpOwoKICAgICMgZ2V0IGN1c3RvbWVyIGRhdGEgYW5kIHJlcGxhY2UgaXQgd2l0aCA8T1RSU19DVVNUT01FUl9EQVRBXy4uLgogICAgaWYgKCVDdXN0b21lclVzZXIpIHsKCiAgICAgICAgIyByZXBsYWNlIGN1c3RvbWVyIHN0dWZmIHdpdGggdGFncwogICAgICAgIENVU1RPTUVSOgogICAgICAgIGZvciBteSAkRGF0YSAoIHNvcnQga2V5cyAlQ3VzdG9tZXJVc2VyICkgewogICAgICAgICAgICBuZXh0IENVU1RPTUVSIGlmICEkQ3VzdG9tZXJVc2VyeyREYXRhfTsKCiAgICAgICAgICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfQ1VTVE9NRVJfREFUQV8kRGF0YT4vJEN1c3RvbWVyVXNlcnskRGF0YX0vZ2k7CiAgICAgICAgICAgICRCb2R5ID1+IHMvPE9UUlNfQ1VTVE9NRVJfREFUQV8kRGF0YT4vJEN1c3RvbWVyVXNlcnskRGF0YX0vZ2k7CgogICAgICAgICAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAgICAgICAgICRCb2R5ID1+IHMvJmx0O09UUlNfQ1VTVE9NRVJfREFUQV8kRGF0YSZndDsvJEN1c3RvbWVyVXNlcnskRGF0YX0vZ2k7CiAgICAgICAgfQogICAgfQoKICAgICMgY2xlYW51cCBhbGwgbm90IG5lZWRlZCA8T1RSU19DVVNUT01FUl9EQVRBXyB0YWdzCiAgICAkU3ViamVjdCA9fiBzLzxPVFJTX0NVU1RPTUVSX0RBVEFfLis/Pi8tL2dpOwogICAgJEJvZHkgPX4gcy88T1RSU19DVVNUT01FUl9EQVRBXy4rPz4vLS9naTsKCiAgICAjIGZpbHRlciBmb3IgbmV3IHJpY2ggdGV4dCBjb250ZW50CiAgICAkQm9keSA9fiBzLyZsdDtPVFJTX0NVU1RPTUVSX0RBVEFfLis/Jmd0Oy8tL2dpOwoKICAgICMgcmVwbGFjZSBrZXkKICAgICRTdWJqZWN0ID1+IHMvPE9UUlNfUHVibGljU3VydmV5S2V5Pi8kUHVibGljU3VydmV5S2V5L2dpOwogICAgJEJvZHkgPX4gcy88T1RSU19QdWJsaWNTdXJ2ZXlLZXk+LyRQdWJsaWNTdXJ2ZXlLZXkvZ2k7CgogICAgIyBmaWx0ZXIgZm9yIG5ldyByaWNoIHRleHQgY29udGVudAogICAgJEJvZHkgPX4gcy8mbHQ7T1RSU19QdWJsaWNTdXJ2ZXlLZXkmZ3Q7LyRQdWJsaWNTdXJ2ZXlLZXkvZ2k7CgogICAgIyBHZXQgcmVxdWVzdCByZWNpcGllbnQuCiAgICBteSAkVG8gPSAkU2VsZi0+X0dldFJlcXVlc3RSZWNpcGllbnQoCiAgICAgICAgVXNlckVtYWlsID0+ICRDdXN0b21lclVzZXJ7VXNlckVtYWlsfSAvLyAnJywKICAgICAgICBUaWNrZXRJRCA9PiAkUGFyYW17VGlja2V0SUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRUbzsKCiAgICAjIGNoZWNrIGlmIG5vdCBzdXJ2ZXkgc2hvdWxkIGJlIHNlbmQKICAgIG15ICRTZW5kTm9TdXJ2ZXlSZWdFeHAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6U2VuZE5vU3VydmV5UmVnRXhwJyk7CgogICAgcmV0dXJuIGlmICRTZW5kTm9TdXJ2ZXlSZWdFeHAgJiYgJFRvID1+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+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1N1cnZleTo6Tm90aWZpY2F0aW9uUmVjaXBpZW50QmxhY2tsaXN0Jyk7CiAgICBpZiAoCiAgICAgICAgZGVmaW5lZCAkUmVjaXBpZW50QmxhY2tsaXN0CiAgICAgICAgJiYgcmVmICRSZWNpcGllbnRCbGFja2xpc3QgZXEgJ0FSUkFZJwogICAgICAgICYmIEB7JFJlY2lwaWVudEJsYWNrbGlzdH0KICAgICAgICApCiAgICB7CiAgICAgICAgZm9yIG15ICRSZWNpcGllbnQgKCBAeyRSZWNpcGllbnRCbGFja2xpc3R9ICkgewogICAgICAgICAgICByZXR1cm4gaWYgZGVmaW5lZCAkUmVjaXBpZW50ICYmIGxlbmd0aCAkUmVjaXBpZW50ICYmICRUbyBlcSBsYyAkUmVjaXBpZW50OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJFRvOwp9CgoxOwoKPWVuZCBJbnRlcm5hbDoKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlN1cnZleTo6Vm90ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6U3VydmV5OjpWb3RlIC0gc3ViIG1vZHVsZSBvZiBLZXJuZWw6OlN5c3RlbTo6U3VydmV5Cgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBzdXJ2ZXkgdm90ZSBmdW5jdGlvbnMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIFZvdGVHZXQoKQoKdG8gZ2V0IGFsbCBhdHRyaWJ1dGVzIG9mIGEgdm90ZQoKICAgIG15IEBWb3RlID0gJFN1cnZleU9iamVjdC0+Vm90ZUdldCgKICAgICAgICBSZXF1ZXN0SUQgPT4gMTMsCiAgICAgICAgUXVlc3Rpb25JRCA9PiAyMwogICAgKTsKCnJldHVybnM6CgogICAgQFZvdGUgPSAoCiAgICAgICAgewogICAgICAgICAgICBSZXF1ZXN0SUQgPT4gMTIzLAogICAgICAgICAgICBWb3RlVmFsdWUgPT4gJ1llcycsCiAgICAgICAgfSwKICAgICAgICAuLi4KICAgICk7Cgo9Y3V0CgpzdWIgVm90ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhSZXF1ZXN0SUQgUXVlc3Rpb25JRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgIyBnZXQgdm90ZQogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICcKICAgICAgICAgICAgU0VMRUNUIGlkLCB2b3RlX3ZhbHVlCiAgICAgICAgICAgIEZST00gc3VydmV5X3ZvdGUKICAgICAgICAgICAgV0hFUkUgcmVxdWVzdF9pZCA9ID8KICAgICAgICAgICAgICAgIEFORCBxdWVzdGlvbl9pZCA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1JlcXVlc3RJRH0sIFwkUGFyYW17UXVlc3Rpb25JRH0sIF0sCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgQExpc3Q7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICBteSAlRGF0YTsKICAgICAgICAkRGF0YXtSZXF1ZXN0SUR9ID0gJFJvd1swXTsKICAgICAgICAkRGF0YXtWb3RlVmFsdWV9ID0gJFJvd1sxXSB8fCAnLSc7CgogICAgICAgIHB1c2ggQExpc3QsIFwlRGF0YTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1oZWFkMiBWb3RlTGlzdCgpCgp0byBnZXQgYSBhcnJheSBsaXN0IG9mIGFsbCB2b3RlIGl0ZW1zCgogICAgbXkgQExpc3QgPSAkU3VydmV5T2JqZWN0LT5Wb3RlTGlzdCgKICAgICAgICBTdXJ2ZXlJRCA9PiAxCiAgICApOwoKcmV0dXJuczoKCiAgICBATGlzdCA9ICgKICAgICAgICB7CiAgICAgICAgICAgIFJlcXVlc3RJRCA9PiAxMjMsCiAgICAgICAgICAgIFRpY2tldElEICA9PiAxMjMsCiAgICAgICAgICAgIFNlbmRUaW1lICA9PiAnMjAxNy0wMS0wMSAxMjowMDowMCcsCiAgICAgICAgICAgIFZvdGVUaW1lICA9PiAnMjAxNy0wMS0wMiAxMjowMDowMCcsCiAgICAgICAgfSwKICAgICAgICAuLi4KICAgICk7Cgo9Y3V0CgpzdWIgVm90ZUxpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1N1cnZleUlEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgU3VydmV5SUQhJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIGdldCB2b3RlIGxpc3QKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgdGlja2V0X2lkLCBzZW5kX3RpbWUsIHZvdGVfdGltZQogICAgICAgICAgICBGUk9NIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgICAgIFdIRVJFIHN1cnZleV9pZCA9ID8KICAgICAgICAgICAgICAgIEFORCB2YWxpZF9pZCA9IDAKICAgICAgICAgICAgT1JERVIgQlkgdm90ZV90aW1lIERFU0MnLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte1N1cnZleUlEfSBdLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15IEBMaXN0OwogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgbXkgJURhdGE7CiAgICAgICAgJERhdGF7UmVxdWVzdElEfSA9ICRSb3dbMF07CiAgICAgICAgJERhdGF7VGlja2V0SUR9ICA9ICRSb3dbMV07CiAgICAgICAgJERhdGF7U2VuZFRpbWV9ICA9ICRSb3dbMl07CiAgICAgICAgJERhdGF7Vm90ZVRpbWV9ICA9ICRSb3dbM107CgogICAgICAgIHB1c2ggQExpc3QsIFwlRGF0YTsKICAgIH0KCiAgICByZXR1cm4gQExpc3Q7Cn0KCj1oZWFkMiBWb3RlQXR0cmlidXRlR2V0KCkKCnRvIGdldCBhbGwgYXR0cmlidXRlcyBvZiBhIHZvdGUKCiAgICBteSAkVm90ZUF0dHJpYnV0ZUNvbnRlbnQgPSAkU3VydmV5T2JqZWN0LT5Wb3RlQXR0cmlidXRlR2V0KAogICAgICAgIFZvdGVJRCA9PiAxMywKICAgICk7CgpyZXR1cm5zOgogICAgJFZvdGVBdHRyaWJ1dGVDb250ZW50ID0gJ1llcyc7Cgo9Y3V0CgpzdWIgVm90ZUF0dHJpYnV0ZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhWb3RlSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgZ2V0IHZvdGUgYXR0cmlidXRlCiAgICByZXR1cm4gaWYgISREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICBTRUxFQ1Qgdm90ZV92YWx1ZQogICAgICAgICAgICBGUk9NIHN1cnZleV92b3RlCiAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte1ZvdGVJRH0gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICAjIGZldGNoIHRoZSByZXN1bHQKICAgIG15ICRWb3RlQXR0cmlidXRlQ29udGVudCA9ICR7ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpIH1bMF07CgogICAgcmV0dXJuICRWb3RlQXR0cmlidXRlQ29udGVudDsKfQoKPWhlYWQyIFZvdGVDb3VudCgpCgp0byBjb3VudCBhbGwgdm90ZXMgb2YgYSBzdXJ2ZXkKCiAgICBteSAkVm90ZUNvdW50ID0gJFN1cnZleU9iamVjdC0+Vm90ZUNvdW50KAogICAgICAgIFF1ZXN0aW9uSUQgPT4gMTIzLAogICAgICAgIFZvdGVWYWx1ZSA9PiAnVGhlIFZhbHVlJywKICAgICk7Cgo9Y3V0CgpzdWIgVm90ZUNvdW50IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFF1ZXN0aW9uSUQgVm90ZVZhbHVlKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY291bnQgdm90ZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBDT1VOVCh2b3RlX3ZhbHVlKQogICAgICAgICAgICBGUk9NIHN1cnZleV92b3RlCiAgICAgICAgICAgIFdIRVJFIHF1ZXN0aW9uX2lkID0gPyBBTkQgdm90ZV92YWx1ZSA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtRdWVzdGlvbklEfSwgXCRQYXJhbXtWb3RlVmFsdWV9LCBdLAogICAgICAgIExpbWl0ID0+IDEsCiAgICApOwoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJFZvdGVDb3VudDsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICRWb3RlQ291bnQgPSAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiAkVm90ZUNvdW50Owp9Cgo9aGVhZDIgVm90ZURlbGV0ZSgpCgpkZWxldGUgdm90ZSBieSByZXF1ZXN0IGlkCgogICAgbXkgJFZvdGVEZWxldGUgPSAkU3VydmV5T2JqZWN0LT5Wb3RlRGVsZXRlKAogICAgICAgIFJlcXVlc3RJRCA9PiAxMjMsCiAgICApOwoKPWN1dAoKc3ViIFZvdGVEZWxldGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUmVxdWVzdElEKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICMgY291bnQgdm90ZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgICA9PiAnREVMRVRFIEZST00gc3VydmV5X3ZvdGUgV0hFUkUgcmVxdWVzdF9pZCA9ID8nLAogICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtSZXF1ZXN0SUR9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9aGVhZDEgVEVSTVMgQU5EIENPTkRJVElPTlMKClRoaXMgc29mdHdhcmUgaXMgcGFydCBvZiB0aGUgT1RSUyBwcm9qZWN0IChMPGh0dHA6Ly9vdHJzLm9yZy8+KS4KClRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCnRoZSBlbmNsb3NlZCBmaWxlIENPUFlJTkcgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24gKEFHUEwpLiBJZiB5b3UKZGlkIG5vdCByZWNlaXZlIHRoaXMgZmlsZSwgc2VlIEw8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0Pi4KCj1jdXQK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6RXZlbnQ6OlN1cnZleVNlbmRSZXF1ZXN0OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN1cnZleScsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhFdmVudCBDb25maWcpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGlmICggISRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgVGlja2V0SUQhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBsb29wIFByb3RlY3Rpb24sIFJlcXVlc3RTZW5kIGNhbGxzIEhpc3RvcnlBZGQKICAgICMgc28gd2UgY2FuJ3QgbGlzdGVuIG9uIEhpc3RvcnlBZGQgRXZlbnRzIGluIG9yZGVyIHRvCiAgICAjIHByZXZlbnQgZGVlcCByZWN1cnNpb24KICAgIHJldHVybiAxIGlmICRQYXJhbXtFdmVudH0gZXEgJ0hpc3RvcnlBZGQnOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CgogICAgIyBnZXQgdGlja2V0IGRhdGEKICAgIG15ICVUaWNrZXQgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRHZXQoCiAgICAgICAgVGlja2V0SUQgPT4gJFBhcmFte0RhdGF9e1RpY2tldElEfSwKICAgICk7CgogICAgcmV0dXJuIDEgaWYgJFRpY2tldHtTdGF0ZVR5cGV9IG5lICdjbG9zZWQnOwoKICAgICMgc2VuZCBhbHNvIHN1cnZleSByZXF1ZXN0IG9uIHRpY2tldCBjcmVhdGlvbiAob24gZmlyc3QgYXJ0aWNsZSkKICAgIGlmICggJFBhcmFte0V2ZW50fSBlcSAnQXJ0aWNsZUNyZWF0ZScgKSB7CgogICAgICAgIG15IEBBcnRpY2xlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QXJ0aWNsZUxpc3QoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtEYXRhfXtUaWNrZXRJRH0sCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuIDEgaWYgc2NhbGFyIEBBcnRpY2xlcyAhPSAxOwogICAgfQoKICAgICMgc2VuZCByZXF1ZXN0CiAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5JyktPlJlcXVlc3RTZW5kKAogICAgICAgIFRpY2tldElEID0+ICRQYXJhbXtEYXRhfS0+e1RpY2tldElEfSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgbmVlZGVkIG9iamVjdHMKbXkgJERCT2JqZWN0ICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKbXkgJENvbmZpZ09iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwpteSAkU3VydmV5T2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKTsKbXkgJFRpY2tldE9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7Cm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpTdXJ2ZXk6OlJlcXVlc3RzRGVsZXRlJyk7CgojIGdldCBoZWxwZXIgb2JqZWN0CiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIGdldCByYW5kb20KbXkgJFJhbmRvbU5hbWUgPSAkSGVscGVyLT5HZXRSYW5kb21JRCgpIC4gJ190ZXN0dXNlcic7CgojIHNldCBjb25maWcKJENvbmZpZ09iamVjdC0+U2V0KAogICAgVmFsaWQgPT4gMSwKICAgIEtleSAgID0+ICdTdXJ2ZXk6OkRlbGV0ZVBlcmlvZCcsCiAgICBWYWx1ZSA9PiA1MCwgICAgICAgICAgICAgICAgICAgICAgICMgb2xkZXIgNTAgZGF5cwopOwoKIyBjcmVhdGUgdGlja2V0Cm15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXRfVGl0bGUnLAogICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICBTdGF0ZSAgICAgICAgPT4gJ2Nsb3NlZCBzdWNjZXNzZnVsJywKICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgIEN1c3RvbWVyVXNlciA9PiAndW5pdHRlc3RAb3Rycy5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkVGlja2V0SUQsCiAgICAnVGlja2V0Q3JlYXRlKCknLAopOwoKIyBhZGQgc3VydmV5Cm15ICRTdXJ2ZXlJRCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUFkZCgKICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJ0EgVGl0bGUnLAogICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnVGhlIGludHJvZHVjdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1RoZSBpbnRlcm5hbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3VydmV5JywKICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3F1YWxpdHlAZXhhbXBsZS5jb20nLAogICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAnSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shJywKICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ0RlYXIgY3VzdG9tZXIuLi4nLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdXJ2ZXlJRCwKICAgICdTdXJ2ZXlBZGQoKScsCik7CgojIGFkZCBxdWVzdGlvbgpteSAkUXVlc3Rpb25JRCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uQWRkKAogICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgIFN1cnZleUlEICAgICAgID0+ICRTdXJ2ZXlJRCwKICAgIFF1ZXN0aW9uICAgICAgID0+ICdUaGUgUXVlc3Rpb24nLAogICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwKICAgIFR5cGUgICAgICAgICAgID0+ICdSYWRpbycsCik7CiRTZWxmLT5UcnVlKAogICAgJFF1ZXN0aW9uSUQsCiAgICAnUXVlc3Rpb25BZGQoKScsCik7CgpteSAkT2xkZXJEYXRlVGltZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwokT2xkZXJEYXRlVGltZU9iamVjdC0+U3VidHJhY3QoCiAgICBEYXlzID0+IDUwLAopOwokT2xkZXJEYXRlVGltZU9iamVjdC0+U2V0KAogICAgSG91ciAgID0+ICcyMycsCiAgICBNaW51dGUgPT4gJzU5JywKICAgIFNlY29uZCA9PiAnNTknLAopOwoKbXkgJFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlID0gJE9sZGVyRGF0ZVRpbWVPYmplY3QtPlRvU3RyaW5nKCk7CgojIGFkZCByZXF1ZXN0cwpmb3IgKCAxIC4uLiAxMCApIHsKCiAgICAjIGluc2VydCBkYXRhCiAgICBteSAkSW5zZXJ0UmVxdWVzdHMgPSAkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV9yZXF1ZXN0ICh0aWNrZXRfaWQsIHN1cnZleV9pZCwgdmFsaWRfaWQsIHB1YmxpY19zdXJ2ZXlfa2V5LAogICAgICAgICAgICAgICAgc2VuZF90bywgc2VuZF90aW1lLCB2b3RlX3RpbWUsIGNyZWF0ZV90aW1lKQogICAgICAgICAgICBWQUxVRVMgKD8sID8sIDEsID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFRpY2tldElELCBcJFN1cnZleUlELCBcJEhlbHBlci0+R2V0UmFuZG9tSUQoKSwgXCRSYW5kb21OYW1lLCBcJFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlIF0sCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEluc2VydFJlcXVlc3RzLAogICAgICAgICJTdXJ2ZXkgcmVxdWVzdHMgYWRkZWQuIiwKICAgICk7Cn0KCiMgaW5pdCByZXF1ZXN0IGlkIGFycmF5CiMgc2VsZWN0IGxhdGVzdCByZXF1ZXN0IGlkcwpteSBAUmVxdWVzdElEczsKCiREQk9iamVjdC0+UHJlcGFyZSgKICAgIFNRTCA9PiAiU0VMRUNUIGlkIEZST00gc3VydmV5X3JlcXVlc3QgV0hFUkUgY3JlYXRlX3RpbWUgPSAnJFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlJyAiLAopOwoKd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICBwdXNoIEBSZXF1ZXN0SURzLCAkUm93WzBdOwp9Cgpmb3IgbXkgJFJlcXVlc3RJRCAoQFJlcXVlc3RJRHMpIHsKCiAgICAjIGluc2VydCBkYXRhCiAgICBteSAkSW5zZXJ0Vm90ZXMgPSAkREJPYmplY3QtPkRvKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIElOU0VSVCBJTlRPIHN1cnZleV92b3RlIChyZXF1ZXN0X2lkLCBxdWVzdGlvbl9pZCwgdm90ZV92YWx1ZSwgY3JlYXRlX3RpbWUpCiAgICAgICAgICAgIFZBTFVFUyAoPywgPywgMSwgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFJlcXVlc3RJRCwgXCRRdWVzdGlvbklELCBcJFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlIF0sCiAgICApOwogICAgJFNlbGYtPlRydWUoCiAgICAgICAgJEluc2VydFZvdGVzLAogICAgICAgICJTdXJ2ZXkgdm90ZXMgYWRkZWQuIiwKICAgICk7Cn0KCiMgaW5pdCB2b3RlIGlkIGFycmF5CiMgc2VsZWN0IGxhdGVzdCB2b3RlIGlkcwpteSBAVm90ZUlEczsKCiREQk9iamVjdC0+UHJlcGFyZSgKICAgIFNRTCA9PiAiU0VMRUNUIGlkIEZST00gc3VydmV5X3ZvdGUgV0hFUkUgY3JlYXRlX3RpbWUgPSAnJFJlcXVlc3RDcmVhdGVUaW1lT2xkZXJEYXRlJyAiLAopOwoKd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICBwdXNoIEBWb3RlSURzLCAkUm93WzBdOwp9CgojIHN0b3JlIGlkcwpteSAlRGVsZXRlZElEcyA9ICgKICAgIFJlcXVlc3RJRHMgPT4gXEBSZXF1ZXN0SURzLAogICAgVm90ZUlEcyAgICA9PiBcQFZvdGVJRHMsCik7CgojIGV4ZWN1dGUgY29tbWFuZApteSAkRXhpdENvZGUgPSAkQ29tbWFuZE9iamVjdC0+RXhlY3V0ZSgnLS1mb3JjZScpOwoKIyBjaGVjayBpZiBkZWxldGUgZG9uZQpmb3IgbXkgJENoZWNrICggc29ydCBrZXlzICVEZWxldGVkSURzICkgewoKICAgIGZvciBteSAkRGVsZXRlZFJlcXVlc3RJRCAoIEB7ICREZWxldGVkSURze1JlcXVlc3RJRHN9IH0gKSB7CgogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIENPVU5UKGlkKSBGUk9NIHN1cnZleV9yZXF1ZXN0IFdIRVJFIGlkID0gPyAiLAogICAgICAgICAgICBCaW5kID0+IFsgXCREZWxldGVkUmVxdWVzdElEIF0KICAgICAgICApOwoKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFJvd1swXSwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAiUmVxdWVzdHMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkRGVsZXRlZFZvdGVJRCAoIEB7ICREZWxldGVkSURze1ZvdGVJRHN9IH0gKSB7CgogICAgICAgICREQk9iamVjdC0+UHJlcGFyZSgKICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIENPVU5UKGlkKSBGUk9NIHN1cnZleV92b3RlIFdIRVJFIGlkID0gPyAiLAogICAgICAgICAgICBCaW5kID0+IFsgXCREZWxldGVkVm90ZUlEIF0KICAgICAgICApOwoKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAgICAgJFJvd1swXSwKICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAiVm90ZXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQp9CgokU2VsZi0+SXMoCiAgICAkRXhpdENvZGUsCiAgICAwLAogICAgIlJlcXVlc3RzIGRlbGV0ZSAtIEV4aXRDb2RlIiwKKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKbXkgQFRlc3RzID0gKAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJObyBQYXJhbXMgJ1NlbmRJbkhvdXJzQWZ0ZXJDbG9zZScgZGlzYWJsZWQiLAogICAgICAgIFBhcmFtcyAgID0+IFtdLAogICAgICAgIENvbmZpZyAgID0+IDAsCiAgICAgICAgRXhpdENvZGUgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgPT4gIldyb25nIFBhcmFtICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGRpc2FibGVkIiwKICAgICAgICBQYXJhbXMgICA9PiBbJy0tdGVzdCddLAogICAgICAgIENvbmZpZyAgID0+IDAsCiAgICAgICAgRXhpdENvZGUgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgPT4gIkZvcmNlIHBhcmFtICdTZW5kSW5Ib3Vyc0FmdGVyQ2xvc2UnIGRpc2FibGVkIiwKICAgICAgICBQYXJhbXMgICA9PiBbJy0tZm9yY2UnXSwKICAgICAgICBDb25maWcgICA9PiAwLAogICAgICAgIEV4aXRDb2RlID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJObyBQYXJhbXMgJ1NlbmRJbkhvdXJzQWZ0ZXJDbG9zZScgZW5hYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gW10sCiAgICAgICAgQ29uZmlnICAgPT4gMSwKICAgICAgICBFeGl0Q29kZSA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICA9PiAiV3JvbmcgUGFyYW0gJ1NlbmRJbkhvdXJzQWZ0ZXJDbG9zZScgZW5hYmxlZCIsCiAgICAgICAgUGFyYW1zICAgPT4gWyctLXRlc3QnXSwKICAgICAgICBDb25maWcgICA9PiAxLAogICAgICAgIEV4aXRDb2RlID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgID0+ICJGb3JjZSBwYXJhbSAnU2VuZEluSG91cnNBZnRlckNsb3NlJyBlbmFibGVkIiwKICAgICAgICBQYXJhbXMgICA9PiBbJy0tZm9yY2UnXSwKICAgICAgICBDb25maWcgICA9PiAxLAogICAgICAgIEV4aXRDb2RlID0+IDAsCiAgICB9LAoKKTsKCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRDb21tYW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpTdXJ2ZXk6OlJlcXVlc3RzU2VuZCcpOwpteSAkQ29uZmlnT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7Cgpmb3IgbXkgJFRlc3QgKEBUZXN0cykgewoKICAgICMgc2V0IGNvbmZpZwogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6U2VuZEluSG91cnNBZnRlckNsb3NlJywKICAgICAgICBWYWx1ZSA9PiAkVGVzdC0+e0NvbmZpZ30sCiAgICApOwoKICAgIG15ICRFeGl0Q29kZSA9ICRDb21tYW5kT2JqZWN0LT5FeGVjdXRlKCBAeyAkVGVzdC0+e1BhcmFtc30gfSApOwoKICAgICRTZWxmLT5JcygKICAgICAgICAkRXhpdENvZGUsCiAgICAgICAgJFRlc3QtPntFeGl0Q29kZX0sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBFeGl0Q29kZSIsCiAgICApOwp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7Cm15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBEbyBub3QgY2hlY2sgZW1haWxzLgokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKIyBHZXQgVGlja2V0IG9iamVjdC4KbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiMgQ3JlYXRlIHNvbWUgdGlja2V0cy4KbXkgJFRpY2tldElEMSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICBDdXN0b21lcklEICAgPT4gJzEyMzQ2NScsCiAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQGV4YW1wbGUuY29tJywKICAgIE93bmVySUQgICAgICA9PiAxLAogICAgVXNlcklEICAgICAgID0+IDEsCik7CiRTZWxmLT5Jc05vdCgKICAgICRUaWNrZXRJRDEsCiAgICB1bmRlZiwKICAgICJUaWNrZXRDcmVhdGUoKSBmb3IgVGlja2V0SUQgJFRpY2tldElEMSIsCik7CgpteSAkVGlja2V0SUQyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgIEN1c3RvbWVySUQgICA9PiAnMTIzNDY1JywKICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgJFRpY2tldElEMiwKICAgIHVuZGVmLAogICAgIlRpY2tldENyZWF0ZSgpIGZvciBUaWNrZXRJRCAkVGlja2V0SUQyIiwKKTsKCm15ICRUaWNrZXRJRDMgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICBUaXRsZSAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgUXVldWUgICAgPT4gJ1JhdycsCiAgICBMb2NrICAgICA9PiAndW5sb2NrJywKICAgIFByaW9yaXR5ID0+ICczIG5vcm1hbCcsCiAgICBTdGF0ZSAgICA9PiAnbmV3JywKICAgIE93bmVySUQgID0+IDEsCiAgICBVc2VySUQgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICAkVGlja2V0SUQzLAogICAgdW5kZWYsCiAgICAiVGlja2V0Q3JlYXRlKCkgZm9yIFRpY2tldElEICRUaWNrZXRJRDMiLAopOwoKbXkgJEFydGljbGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpBcnRpY2xlJyk7CgpteSAkQXJ0aWNsZVBob25lQmFja2VuZE9iamVjdCA9ICRBcnRpY2xlT2JqZWN0LT5CYWNrZW5kRm9yQ2hhbm5lbCgKICAgIENoYW5uZWxOYW1lID0+ICdQaG9uZScsCik7CgojIENyZWF0ZSBhcnRpY2xlcyBmb3IgdGhlIHRpY2tldHMuCm15ICRBcnRpY2xlSUQxID0gJEFydGljbGVQaG9uZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQxLAogICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIEFnZW50IDxhZ2VudEBleGFtcGxlLmNvbT4nLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ3NvbWUgc2hvcnQgZGVzY3JpcHRpb24nLAogICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ0FkZE5vdGUnLAogICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+SXNOb3QoCiAgICAkVGlja2V0SUQzLAogICAgdW5kZWYsCiAgICAiQXJ0aWNsZUNyZWF0ZSgpIGZvciBBcnRpY2xlSUQgJEFydGljbGVJRDEiLAopOwoKbXkgJEFydGljbGVJbnRlcm5hbEJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoCiAgICBDaGFubmVsTmFtZSA9PiAnSW50ZXJuYWwnLAopOwpteSAkQXJ0aWNsZUlEMiA9ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElEMiwKICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnYWdlbnQnLAogICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQWdlbnQgPGFnZW50QGV4YW1wbGUuY29tPicsCiAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdzb21lIHNob3J0IGRlc2NyaXB0aW9uJywKICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdBZGROb3RlJywKICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKKTsKJFNlbGYtPklzTm90KAogICAgJFRpY2tldElEMywKICAgIHVuZGVmLAogICAgIkFydGljbGVDcmVhdGUoKSBmb3IgQXJ0aWNsZUlEICRBcnRpY2xlSUQyIiwKKTsKCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgID0+ICdObyBQYXJhbXMnLAogICAgICAgIFBhcmFtICAgPT4ge30sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnV3JvbmcgVXNlckVNYWlsJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlcicsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICdXcm9uZyBUaWNrZXRJRCcsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQzLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVXNlckVtYWlsJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBob21lLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+ICd1c2VyQGhvbWUuY29tJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1VzZXJFbWFpbCBNdWx0aXBsZScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXIgPHVzZXJAZXhhbXBsZS5jb20+LCBVc2VyMiA8dXNlcjJAaG9tZS5jb20+JywKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgICAgICAgICA9PiAxLAogICAgICAgIEV4cGVjdGVkUmVzdWx0cyA9PiAndXNlcjJAaG9tZS5jb20nLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVGlja2V0SUQgTGFzdCBhcnRpY2xlIGN1c3RvbWVyJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRDEsCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzICAgICAgICAgPT4gMSwKICAgICAgICBFeHBlY3RlZFJlc3VsdHMgPT4gJ2VtYWlsQGV4YW1wbGUuY29tJywKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ1RpY2tldElEIExhc3QgYXJ0aWNsZSBhZ2VudCcsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQyLAogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyAgICAgICAgID0+IDEsCiAgICAgICAgRXhwZWN0ZWRSZXN1bHRzID0+ICdlbWFpbEBleGFtcGxlLmNvbScsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICdVc2VyRW1haWwgKEJsYWNrTGlzdCknLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDx1c2VyQGV4YW1wbGUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWyd1c2VyQGV4YW1wbGUuY29tJ10sCiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICdVc2VyRW1haWwgTXVsdGlwbGUgKEJsYWNrTGlzdCknLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDx1c2VyQGV4YW1wbGUuY29tPiwgVXNlcjIgPHVzZXIyQGV4YW1wbGUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWyd1c2VyMkBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVGlja2V0SUQgTGFzdCBhcnRpY2xlIGN1c3RvbWVyIChCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRDEsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWydlbWFpbEBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVGlja2V0SUQgTGFzdCBhcnRpY2xlIGFnZW50IChCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRDIsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWydlbWFpbEBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ3VjIFVzZXJFbWFpbCAoQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXIgPFVzZXJAZXhhbXBsZS5jb20+JywKICAgICAgICB9LAogICAgICAgIEJsYWNrTGlzdCA9PiBbJ3VzZXJAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgPT4gJ3VjIFVzZXJFbWFpbCBNdWx0aXBsZSAoQmxhY2tMaXN0KScsCiAgICAgICAgUGFyYW0gPT4gewogICAgICAgICAgICBVc2VyRW1haWwgPT4gJ1VzZXIgPHVzZXJAZXhhbXBsZS5jb20+LCBVc2VyMiA8VXNlcjJAZXhhbXBsZS5jb20+JywKICAgICAgICB9LAogICAgICAgIEJsYWNrTGlzdCA9PiBbJ3VzZXIyQGV4YW1wbGUuY29tJ10sCiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICdVc2VyRW1haWwgKHVjIEJsYWNrTGlzdCknLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDx1c2VyQGV4YW1wbGUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWydVc2VyQGV4YW1wbGUuY29tJ10sCiAgICAgICAgU3VjY2VzcyAgID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgID0+ICdVc2VyRW1haWwgTXVsdGlwbGUgKHVjIEJsYWNrTGlzdCknLAogICAgICAgIFBhcmFtID0+IHsKICAgICAgICAgICAgVXNlckVtYWlsID0+ICdVc2VyIDx1c2VyQGV4YW1wbGUuY29tPiwgVXNlcjIgPHVzZXIyQGV4YW1wbGUuY29tPicsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWydVc2VyMkBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVGlja2V0SUQgTGFzdCBhcnRpY2xlIGN1c3RvbWVyICh1YyBCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRDEsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWydlbWFpbEBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAnVGlja2V0SUQgTGFzdCBhcnRpY2xlIGFnZW50ICh1YyBCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRDIsCiAgICAgICAgfSwKICAgICAgICBCbGFja0xpc3QgPT4gWydlbWFpbEBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAndWMgVXNlckVtYWlsICh1YyBCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8VXNlckBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnVXNlckBleGFtcGxlLmNvbSddLAogICAgICAgIFN1Y2Nlc3MgICA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICA9PiAndWMgVXNlckVtYWlsIE11bHRpcGxlICh1YyBCbGFja0xpc3QpJywKICAgICAgICBQYXJhbSA9PiB7CiAgICAgICAgICAgIFVzZXJFbWFpbCA9PiAnVXNlciA8dXNlckBleGFtcGxlLmNvbT4sIFVzZXIyIDxVc2VyMkBleGFtcGxlLmNvbT4nLAogICAgICAgIH0sCiAgICAgICAgQmxhY2tMaXN0ID0+IFsnVXNlcjJAZXhhbXBsZS5jb20nXSwKICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgIH0sCik7CgpteSAkU3VydmV5T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpOwoKVEVTVDoKZm9yIG15ICRUZXN0IChAVGVzdHMpIHsKCiAgICAjIFNldCBibGFja2xpc3QuCiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Tm90aWZpY2F0aW9uUmVjaXBpZW50QmxhY2tsaXN0JywKICAgICAgICBWYWx1ZSA9PiAkVGVzdC0+e0JsYWNrTGlzdH0gLy8gW10sCiAgICApOwoKICAgICMgRXhlY3V0ZSBhY3R1YWwgdGVzdC4KICAgIG15ICRSZWNpcGllbnQgPSAkU3VydmV5T2JqZWN0LT5fR2V0UmVxdWVzdFJlY2lwaWVudCggJXsgJFRlc3QtPntQYXJhbX0gfSApOwoKICAgIGlmICggISRUZXN0LT57U3VjY2Vzc30gKSB7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkUmVjaXBpZW50LAogICAgICAgICAgICB1bmRlZiwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBfR2V0UmVxdWVzdFJlY2lwaWVudCgpIiwKICAgICAgICApOwoKICAgICAgICBuZXh0IFRFU1Q7CiAgICB9CiAgICAkU2VsZi0+SXMoCiAgICAgICAgJFJlY2lwaWVudCwKICAgICAgICAkVGVzdC0+e0V4cGVjdGVkUmVzdWx0c30sCiAgICAgICAgIiRUZXN0LT57TmFtZX0gLSBfR2V0UmVxdWVzdFJlY2lwaWVudCgpIiwKICAgICk7Cgp9CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCiRLZXJuZWw6Ok9NLT5PYmplY3RQYXJhbUFkZCgKICAgICdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicgPT4gewogICAgICAgIFJlc3RvcmVEYXRhYmFzZSA9PiAxLAogICAgfSwKKTsKbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgojIHNldCBzZW5kIHBlcmlvZCB0byBhbHdheXMgc2VuZCBzdXJ2ZXkKJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgVmFsdWUgPT4gMCwKKTsKCiMgc2V0IHNlbmQgcGVyaW9kIHRvIGFsd2F5cyBzZW5kIHN1cnZleQokSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgVmFsdWUgPT4gMCwKKTsKCm15ICRRdWV1ZVJhbmQgPSAnU29tZVF1ZXVlJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7Cm15ICRRdWV1ZUlEICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+UXVldWVBZGQoCiAgICBOYW1lICAgICAgICAgICAgPT4gJFF1ZXVlUmFuZCwKICAgIFZhbGlkSUQgICAgICAgICA9PiAxLAogICAgR3JvdXBJRCAgICAgICAgID0+IDEsCiAgICBTeXN0ZW1BZGRyZXNzSUQgPT4gMSwKICAgIFNhbHV0YXRpb25JRCAgICA9PiAxLAogICAgU2lnbmF0dXJlSUQgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgICAgPT4gMSwKICAgIENvbW1lbnQgICAgICAgICA9PiAnU29tZSBDb21tZW50JywKKTsKCiRTZWxmLT5UcnVlKAogICAgJFF1ZXVlSUQsCiAgICAiUXVldWVBZGQoKSAtICRRdWV1ZVJhbmQsICRRdWV1ZUlEIiwKKTsKCm15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7Cm15ICRTdXJ2ZXlUaXRsZSAgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwpteSAkU3VydmV5SUQgICAgID0gJFN1cnZleU9iamVjdC0+U3VydmV5QWRkKAogICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgVGl0bGUgICAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICBOb3RpZmljYXRpb25TZW5kZXIgID0+ICdzdmlrQGV4YW1wbGUuY29tJywKICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICBOb3RpZmljYXRpb25Cb2R5ICAgID0+ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIEJvZHknLAogICAgUXVldWVzICAgICAgICAgICAgICA9PiBbJFF1ZXVlSURdLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdXJ2ZXlJRCwKICAgICJTdXJ2ZXkgSUQgJFN1cnZleUlEIGlzIGNyZWF0ZWQiLAopOwoKbXkgJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICBRdWVzdGlvbiAgICAgICA9PiAnVGhlIFF1ZXN0aW9uJywKICAgIEFuc3dlclJlcXVpcmVkID0+IDAsCiAgICBUeXBlICAgICAgICAgICA9PiAnVGV4dGFyZWEnLAopOwoKJFNlbGYtPlRydWUoCiAgICAkU3VjY2VzcywKICAgICJRdWVzdGlvbiBpcyBjcmVhdGVkIHN1Y2Nlc3NmdWxseS4iLAopOwoKbXkgQFF1ZXN0aW9uTGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRAopOwoKJFN1Y2Nlc3MgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlTdGF0dXNTZXQoCiAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgTmV3U3RhdHVzID0+ICdNYXN0ZXInCik7CiRTZWxmLT5UcnVlKAogICAgJFN1Y2Nlc3MsCiAgICAiU3VydmV5IHN0YXR1cyBpcyBzZXQgdG8gTWFzdGVyIHN1Y2Nlc3NmdWxseS4iLAopOwoKbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKbXkgJERCT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKbXkgJFRpY2tldElEID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlKAogICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICBRdWV1ZUlEICAgICAgPT4gJFF1ZXVlSUQsCiAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgIEN1c3RvbWVySUQgICA9PiAnMTIzNDY1JywKICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAZXhhbXBsZS5jb20nLAogICAgT3duZXJJRCAgICAgID0+IDEsCiAgICBVc2VySUQgICAgICAgPT4gMSwKKTsKJFNlbGYtPlRydWUoCiAgICAkVGlja2V0SUQsCiAgICAiVGlja2V0Q3JlYXRlKCkgZm9yIFRpY2tldElEICRUaWNrZXRJRCIsCik7CgpteSAkQXJ0aWNsZU9iamVjdCAgICAgICAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKTsKbXkgJEFydGljbGVJbnRlcm5hbEJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoCiAgICBDaGFubmVsTmFtZSA9PiAnUGhvbmUnLAopOwoKbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8ZW1haWxAZXhhbXBsZS5jb20+JywKICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIEFnZW50IDxhZ2VudEBleGFtcGxlLmNvbT4nLAogICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ3NvbWUgc2hvcnQgZGVzY3JpcHRpb24nLAogICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ0FkZE5vdGUnLAogICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAopOwokU2VsZi0+VHJ1ZSgKICAgICRBcnRpY2xlSUQsCiAgICAiQXJ0aWNsZUNyZWF0ZSgpIGZvciBBcnRpY2xlSUQgJEFydGljbGVJRCIsCik7CgokU3VjY2VzcyA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgVGlja2V0SUQgPT4gJFRpY2tldElELAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdWNjZXNzLAogICAgIlJlcXVlc3QgaXMgc2VudCBzdWNjZXNzZnVsbHkuIiwKKTsKCiREQk9iamVjdC0+UHJlcGFyZSgKICAgIFNRTCA9PiAnCiAgICAgICAgU0VMRUNUIHB1YmxpY19zdXJ2ZXlfa2V5CiAgICAgICAgRlJPTSBzdXJ2ZXlfcmVxdWVzdAogICAgICAgIFdIRVJFIHRpY2tldF9pZCA9ID8nLAogICAgQmluZCAgPT4gWyBcJFRpY2tldElEIF0sCiAgICBMaW1pdCA9PiAxLAopOwoKbXkgJFB1YmxpY1N1cnZleUtleTsKd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAkUHVibGljU3VydmV5S2V5ID0gJFJvd1swXTsKfQoKbXkgJFZvdGVzICAgICAgPSAzOwpteSAkQW5zd2VyVGV4dCA9ICdTb21lIGFuc3dlcic7CmZvciBteSAkVGVzdCAoICcnLCAkQW5zd2VyVGV4dCApIHsKICAgIGZvciAoIDEgLi4gJFZvdGVzICkgewogICAgICAgICRTdWNjZXNzID0gJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICBQdWJsaWNTdXJ2ZXlLZXkgPT4gJFB1YmxpY1N1cnZleUtleSwKICAgICAgICAgICAgUXVlc3Rpb25JRCAgICAgID0+ICRRdWVzdGlvbkxpc3RbMF0tPntRdWVzdGlvbklEfSwKICAgICAgICAgICAgVm90ZVZhbHVlICAgICAgID0+ICRUZXN0LAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlB1YmxpYyBhbnN3ZXIgaXMgc2V0IHN1Y2Nlc3NmdWxseS4iLAogICAgICAgICk7CiAgICB9Cn0KCiMKbXkgJFZvdGVWYWx1ZSA9ICcnOwppZiAoICREQk9iamVjdC0+eydEQjo6VHlwZSd9IGVxICdvcmFjbGUnICkgewogICAgJFZvdGVWYWx1ZSA9IDA7Cn0KCm15ICRBbnN3ZXJObyA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVDb3VudCgKICAgIFF1ZXN0aW9uSUQgPT4gJFF1ZXN0aW9uTGlzdFswXS0+e1F1ZXN0aW9uSUR9LAogICAgVm90ZVZhbHVlICA9PiAkVm90ZVZhbHVlLAopOwoKJFNlbGYtPklzKAogICAgJEFuc3dlck5vLAogICAgJFZvdGVzLAogICAgIkFuc3dlck5vIGNvdW50IGlzIGFzIGV4cGVjdGVkLiIsCik7CgpteSAlUmVxdWVzdERhdGEgPSAkU3VydmV5T2JqZWN0LT5SZXF1ZXN0R2V0KAogICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCik7CgpteSBAVm90ZSA9ICRTdXJ2ZXlPYmplY3QtPlZvdGVHZXQoCiAgICBSZXF1ZXN0SUQgID0+ICRSZXF1ZXN0RGF0YXtSZXF1ZXN0SUR9LAogICAgUXVlc3Rpb25JRCA9PiAkUXVlc3Rpb25MaXN0WzBdLT57UXVlc3Rpb25JRH0sCik7CgpteSAkQW5zd2VyVGV4dFZvdGUgPSBzY2FsYXIgZ3JlcCB7ICRfLT57Vm90ZVZhbHVlfSBlcSAkQW5zd2VyVGV4dCB9IEBWb3RlOwoKJFNlbGYtPklzKAogICAgJEFuc3dlclRleHRWb3RlLAogICAgJFZvdGVzLAogICAgIkFuc3dlciBjb3VudCB3aXRoIHNvbWUgdGV4dCBpcyBhcyBleHBlY3RlZC4iLAopOwoKIyBjbGVhbnVwIGlzIGRvbmUgYnkgUmVzdG9yZURhdGFiYXNlLgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIHF3KCRTZWxmKTsKCnVzZSBEYXRhOjpEdW1wZXI7CgokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyBjcmVhdGUgbG9jYWwgY29uZmlnIG9iamVjdApteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiMgc2V0IGNvbmZpZyB0byBub3Qgc2VuZCBlbWFpbHMKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1NlbmRtYWlsTW9kdWxlJywKICAgIFZhbHVlID0+ICdLZXJuZWw6OlN5c3RlbTo6RW1haWw6OkRvTm90U2VuZEVtYWlsJywKKTsKCiMgZGlzYWJsZSBlbWFpbCBjaGVjawokQ29uZmlnT2JqZWN0LT5TZXQoCiAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICBWYWx1ZSA9PiAwLAopOwoKJENvbmZpZ09iamVjdC0+U2V0KAogICAgS2V5ICAgPT4gJ1N1cnZleTo6U2VuZEluSG91cnNBZnRlckNsb3NlJywKICAgIFZhbHVlID0+IDAsCik7CgojIEZyZWV6ZSBUaW1lCiRIZWxwZXJPYmplY3QtPkZpeGVkVGltZVNldCgpOwokU2VsZi0+VHJ1ZSgKICAgIDEsCiAgICAnLS0gU2V0IEZpeGVkIFRpbWUgLS0nLAopOwoKIyBnZXQgdHlwZSBvYmplY3QKbXkgJFR5cGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpOwoKbXkgJFJhbmRvbSA9ICRIZWxwZXJPYmplY3QtPkdldFJhbmRvbU51bWJlcigpOwoKIyBjcmVhdGUgYSB0ZXN0IHR5cGUKbXkgJFRpY2tldFR5cGVJRCA9ICRUeXBlT2JqZWN0LT5UeXBlQWRkKAogICAgTmFtZSAgICA9PiAnVW5pdCBUZXN0IE5ldyBUeXBlJyAuICRSYW5kb20sCiAgICBWYWxpZElEID0+IDEsCiAgICBVc2VySUQgID0+IDEsCik7CgojIGdldCBzZXJ2aWNlIG9iamVjdApteSAkU2VydmljZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZXJ2aWNlJyk7CgojIGNyZWF0ZSBhIHRlc3Qgc2VydmljZQpteSAkU2VydmljZUlEID0gJFNlcnZpY2VPYmplY3QtPlNlcnZpY2VBZGQoCiAgICBOYW1lICAgID0+ICdVbml0IFRlc3QgTmV3IFNlcnZpY2UnIC4gJFJhbmRvbSwKICAgIFZhbGlkSUQgPT4gMSwKICAgIENvbW1lbnQgPT4gJ1VuaXQgVGVzdCBDb21tZW50JywKICAgIFVzZXJJRCAgPT4gMSwKCiAgICAjIFR5cGVJRCBhbmQgQ3JpdGljYWxpdHkgaXMgbmVlZGVkIHRvIHRlc3QgU3VydmV5U2VuZCgpIHRvZ2V0aGVyIHdpdGggSVRTTQogICAgVHlwZUlEICAgICAgPT4gMiwKICAgIENyaXRpY2FsaXR5ID0+ICczIG5vcm1hbCcsCik7CgojIGNyZWF0ZSBhIHRlc3QgY3VzdG9tZXJ1c2VyCm15ICRUZXN0Q3VzdG9tZXJVc2VyMSA9ICRIZWxwZXJPYmplY3QtPlRlc3RDdXN0b21lclVzZXJDcmVhdGUoKTsKbXkgJFRlc3RDdXN0b21lclVzZXIyID0gJEhlbHBlck9iamVjdC0+VGVzdEN1c3RvbWVyVXNlckNyZWF0ZSgpOwoKIyBjcmVhdGUgc3VydmV5Cm15ICVTdXJ2ZXlEYXRhID0gKAogICAgVGl0bGUgICAgICAgICAgICAgICAgICA9PiAnQSBUaXRsZScsCiAgICBJbnRyb2R1Y3Rpb24gICAgICAgICAgID0+ICdUaGUgaW50cm9kdWN0aW9uIG9mIHRoZSBzdXJ2ZXknLAogICAgRGVzY3JpcHRpb24gICAgICAgICAgICA9PiAnVGhlIGludGVybmFsIGRlc2NyaXB0aW9uIG9mIHRoZSBzdXJ2ZXknLAogICAgTm90aWZpY2F0aW9uU2VuZGVyICAgICA9PiAncXVhbGl0eUB1bml0dGVzdC5jb20nLAogICAgTm90aWZpY2F0aW9uU3ViamVjdCAgICA9PiAnSGVscCB1cyB3aXRoIHlvdXIgZmVlZGJhY2shIMOEw5bDnCcsCiAgICBOb3RpZmljYXRpb25Cb2R5ICAgICAgID0+ICdEZWFyIGN1c3RvbWVyLi4uIMOkw7bDvCcsCiAgICBUaWNrZXRUeXBlSURzICAgICAgICAgID0+IFskVGlja2V0VHlwZUlEXSwKICAgIFNlcnZpY2VJRHMgICAgICAgICAgICAgPT4gWyRTZXJ2aWNlSURdLAogICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyA9PiB7CiAgICAgICAgVXNlckZpcnN0bmFtZSA9PiBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5lZ2F0aW9uICAgID0+IDAsCiAgICAgICAgICAgICAgICBSZWdFeHBWYWx1ZSA9PiAkVGVzdEN1c3RvbWVyVXNlcjEsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgIH0sCik7CgojIGdldCBTdXJ2ZXkgb2JqZWN0Cm15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgpteSAkU3VydmV5SUQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlBZGQoCiAgICBVc2VySUQgPT4gMSwKICAgICVTdXJ2ZXlEYXRhLAopOwokU2VsZi0+VHJ1ZSgKICAgICRTdXJ2ZXlJRCwKICAgICJTdXJ2ZXlBZGQoKSIsCik7Cgpmb3IgKCAxIC4uIDMgKSB7CiAgICBteSAkUXVlc3Rpb25BZGQgPSAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKICAgICAgICBRdWVzdGlvbiA9PiAnVGhlIFF1ZXN0aW9uJywKICAgICAgICBUeXBlICAgICA9PiAnUmFkaW8nLAogICAgKTsKfQpteSBATGlzdCA9ICRTdXJ2ZXlPYmplY3QtPlF1ZXN0aW9uTGlzdCgKICAgIFN1cnZleUlEID0+ICRTdXJ2ZXlJRCwKKTsKZm9yIG15ICRRdWVzdGlvbiAoQExpc3QpIHsKICAgIGZvciAoIDEgLi4gMyApIHsKICAgICAgICAkU3VydmV5T2JqZWN0LT5BbnN3ZXJBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgID0+ICRRdWVzdGlvbi0+e1F1ZXN0aW9uSUR9LAogICAgICAgICAgICBBbnN3ZXIgICAgICAgICA9PiAnVGhlIEFuc3dlcicsCiAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+IDEsCiAgICAgICAgKTsKICAgIH0KfQoKbXkgJFN0YXR1c1NldCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleVN0YXR1c1NldCgKICAgIFN1cnZleUlEICA9PiAkU3VydmV5SUQsCiAgICBOZXdTdGF0dXMgPT4gJ01hc3RlcicKKTsKJFNlbGYtPklzKAogICAgJFN0YXR1c1NldCwKICAgICdTdGF0dXNTZXQnLAogICAgIlN1cnZleVN0YXR1c1NldCgpIiwKKTsKCm15ICVTdXJ2ZXlHZXQgPSAkU3VydmV5T2JqZWN0LT5TdXJ2ZXlHZXQoCiAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCik7CgojIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVTdXJ2ZXlHZXQgKSB7CiMgICAgIG5leHQgaWYgIWRlZmluZWQgJFN1cnZleURhdGF7JEtleX07CiMgICAgICRTZWxmLT5JcygKIyAgICAgICAgICRTdXJ2ZXlHZXR7JEtleX0sCiMgICAgICAgICAkU3VydmV5RGF0YXskS2V5fSwKIyAgICAgICAgICJTdXJ2ZXlHZXQoKSIsCiMgICAgICk7CiMgfQoKZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJVN1cnZleURhdGEgKSB7CgogICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICRTdXJ2ZXlHZXR7JEF0dHJpYnV0ZX0sCiAgICAgICAgJFN1cnZleURhdGF7JEF0dHJpYnV0ZX0sCiAgICAgICAgIlN1cnZleUdldCgpIiwKICAgICk7Cn0KCm15IEBUZXN0cyA9ICgKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAnIzEgdHJ5JywKICAgICAgICAnU3VydmV5OjpTZW5kUGVyaW9kJyA9PiAxMDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIENvbW11bmljYXRpb25DaGFubmVsID0+ICdFbWFpbCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gWwogICAgICAgICAgICAxLAogICAgICAgICAgICAwLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICcjMiB0cnknLAogICAgICAgICdTdXJ2ZXk6OlNlbmRQZXJpb2QnID0+IDEwMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPFNPTUVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFJlc3VsdCA9PiBbCiAgICAgICAgICAgIDAsCiAgICAgICAgICAgIDAsCiAgICAgICAgXSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJyMzIHRyeScsCiAgICAgICAgJ1N1cnZleTo6U2VuZFBlcmlvZCcgPT4gMTAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU09NRUB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICcjNCB0cnknLAogICAgICAgIFNsZWVwICAgICAgICAgICAgICAgID0+IDgwLAogICAgICAgICdTdXJ2ZXk6OlNlbmRQZXJpb2QnID0+IDEgLyAyNCAvIDYwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU09NRUB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gWwogICAgICAgICAgICAxLAogICAgICAgICAgICAwLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgID0+ICcjNSB0cnknLAogICAgICAgIFNsZWVwICAgICAgICAgICAgICAgID0+IDIwLAogICAgICAgICdTdXJ2ZXk6OlNlbmRQZXJpb2QnID0+IDEgLyAyNCAvIDYwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU09NRUB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBSZXN1bHQgPT4gWwogICAgICAgICAgICAwLAogICAgICAgICAgICAwLAogICAgICAgIF0sCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICA9PiAnIzYgdHJ5JywKICAgICAgICBUaWNrZXQgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIENvbW11bmljYXRpb25DaGFubmVsID0+ICdFbWFpbCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdNeSBOYW1lJywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgUmVzdWx0ID0+IFsKICAgICAgICAgICAgMCwKICAgICAgICAgICAgMCwKICAgICAgICBdLAogICAgfSwKKTsKCiMgZ2V0IHRpY2tldCBvYmplY3QKbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCmZvciBteSAkVGVzdCAoQFRlc3RzKSB7CgogICAgaWYgKCAkVGVzdC0+eydTdXJ2ZXk6OlNlbmRQZXJpb2QnfSApIHsKICAgICAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgICAgICBWYWx1ZSA9PiAkVGVzdC0+eydTdXJ2ZXk6OlNlbmRQZXJpb2QnfSwKICAgICAgICApOwogICAgfQoKICAgICMgbm8gc2VuZCBjb25kaXRpb24gY2hlY2sgaW4gbm9ybWFsIHRlc3RzCiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScsCiAgICAgICAgVmFsdWUgPT4gMCwKICAgICk7CiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScsCiAgICAgICAgVmFsdWUgPT4gMCwKICAgICk7CiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnLAogICAgICAgIFZhbHVlID0+IDAsCiAgICApOwoKICAgIGlmICggJFRlc3QtPntTbGVlcH0gKSB7CiAgICAgICAgJEhlbHBlck9iamVjdC0+Rml4ZWRUaW1lQWRkU2Vjb25kcyggJFRlc3QtPntTbGVlcH0gKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIi0tIEFkZGVkICRUZXN0LT57U2xlZXB9IFNlY29uZChzKSB0byBGaXhlZCBUaW1lIC0tIiwKICAgICAgICApOwogICAgfQoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICAleyAkVGVzdC0+e1RpY2tldH0gfSwKICAgICk7CgogICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQ2hhbm5lbCgKICAgICAgICBDaGFubmVsTmFtZSA9PiAkVGVzdC0+e0FydGljbGV9LT57Q29tbXVuaWNhdGlvbkNoYW5uZWx9LAogICAgKTsKCiAgICBteSAkQXJ0aWNsZUlEID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAleyAkVGVzdC0+e0FydGljbGV9IH0sCiAgICApOwoKICAgICMgc2VuZCBzdXJ2ZXkgZmlyc3QgdGltZQogICAgbXkgJFJlc3BvbnNlID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdFNlbmQoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgIFRlc3QgICAgID0+ICRUZXN0LT57TmFtZX0sCiAgICApOwoKICAgICMgY2hlY2sgaWYgc3VydmV5IGdvdCBzZW50CiAgICBpZiAoICRUZXN0LT57UmVzdWx0fS0+WzBdICkgewoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlc3BvbnNlLT57U3VjY2Vzc30sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IFJlcXVlc3RTZW5kKCkgLSBzdXJ2ZXkgZ290IHNlbnQiLAogICAgICAgICk7CgogICAgICAgICRSZXNwb25zZS0+e0RhdGF9LT57SGVhZGVyfSA9fiBteyBeIFN1YmplY3Q6IFsgXSAoIC4rPyApIFxuIFxTKzogWyBdIH14bXM7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkMSwKICAgICAgICAgICAgJ0hlbHAgdXMgd2l0aCB5b3VyIGZlZWRiYWNrISA9P1VURi04P1E/PUMzPTg0PUMzPTk2PUMzPTlDPz0nLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSBUZXN0IHNwZWNpYWwgY2hhcmFjdGVycyBpbiBlbWFpbCBzdWJqZWN0IiwKICAgICAgICApOwoKICAgICAgICAjIGRlZmluZSBtYWlsIGJvZHkKICAgICAgICBteSAkTWFpbGJvZHkxID0gPDwnRU5EJzsKVGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4uLgoKLS0tLS0tLS0tLS0tPV9NRVNTQUdFSUQKQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PSJ1dGYtOCIKQ29udGVudC1EaXNwb3NpdGlvbjogaW5saW5lCkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IHF1b3RlZC1wcmludGFibGUKCkRlYXIgY3VzdG9tZXIuLi4gPUMzPUE0PUMzPUI2PUMzPUJDPQoKLS0tLS0tLS0tLS0tPV9NRVNTQUdFSUQKQ29udGVudC1UeXBlOiB0ZXh0L2h0bWw7IGNoYXJzZXQ9InV0Zi04IgpDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmUKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogcXVvdGVkLXByaW50YWJsZQoKPCFET0NUWVBFIGh0bWw+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0zRCJDb250ZW50LVR5cGUiIGNvbnRlbnQ9M0QidGV4PQp0L2h0bWw7IGNoYXJzZXQ9M0R1dGYtOCIvPjwvaGVhZD48Ym9keSBzdHlsZT0zRCJmb250LWZhbWlseTpHZW5ldmEsSGVsdmV0aWM9CmEsQXJpYWwsc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxMnB4OyI+RGVhciBjdXN0b21lci4uLiA9QzM9QTQ9QzM9QjY9QzM9QkM8Lz0KYm9keT48L2h0bWw+PQoKLS0tLS0tLS0tLS0tPV9NRVNTQUdFSUQtLQpFTkQKCiAgICAgICAgIyBjb3B5IG1haWwgYm9keQogICAgICAgIG15ICRNYWlsYm9keTIgPSAkUmVzcG9uc2UtPntEYXRhfS0+e0JvZHl9OwoKICAgICAgICAjIHByZXBhcmUgbWFpbCBib2R5CiAgICAgICAgJE1haWxib2R5MiA9fiBzeyBcZHs4LDEyfSAtIFxkezMsNn0gLSBcZHsxLDN9IH17TUVTU0FHRUlEfXhtc2c7CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJE1haWxib2R5MiwKICAgICAgICAgICAgJE1haWxib2R5MSwKICAgICAgICAgICAgIiRUZXN0LT57TmFtZX0gVGVzdCBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gZW1haWwgYm9keSIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJFJlc3BvbnNlLT57U3VjY2Vzc30sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IFJlcXVlc3RTZW5kKCkgLSBubyBzdXJ2ZXkgZ290IHNlbnQiLAogICAgICAgICk7CiAgICB9CgogICAgIyBzZW5kIHN1cnZleSBzZWNvbmQgdGltZQogICAgJFJlc3BvbnNlID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdFNlbmQoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHN1cnZleSBnb3Qgc2VudAogICAgaWYgKCAkVGVzdC0+e1Jlc3VsdH0tPlsxXSApIHsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlc3BvbnNlLT57U3VjY2Vzc30sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IDIgUmVxdWVzdFNlbmQoKSAtIHN1cnZleSBnb3Qgc2VudCIsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJFJlc3BvbnNlLAogICAgICAgICAgICAiJFRlc3QtPntOYW1lfSAyIFJlcXVlc3RTZW5kKCkgLSBubyBzdXJ2ZXkgZ290IHNlbnQiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJERlbGV0ZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cn0KCm15IEBTZW5kQ29uZGl0aW9uVGVzdHMgPSAoCiAgICB7CiAgICAgICAgTmFtZSA9PiAnU2VuZENvbmRpdGlvbiMxIHdpdGhvdXQgc2VuZCBjb25kaXRpb24gY2hlY2sgKHRpY2tldCB0eXBlIGFuZCBzZXJ2aWNlKScsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgICAgID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgICAgID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnID0+IDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZUlEICAgICAgID0+IDAsCiAgICAgICAgICAgIFNlcnZpY2VJRCAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIENvbW11bmljYXRpb25DaGFubmVsID0+ICdFbWFpbCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnU2VuZENvbmRpdGlvbiMyIHRyeSB3aXRoIGNoZWNrIGZvciB0aWNrZXQgdHlwZScsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgICAgID0+IDEsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgICAgID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnID0+IDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZUlEICAgICAgID0+ICRUaWNrZXRUeXBlSUQsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQ29tbXVuaWNhdGlvbkNoYW5uZWwgPT4gJ0VtYWlsJywKICAgICAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMSwKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgIH0sCiAgICB7CiAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdTZW5kQ29uZGl0aW9uIzMgdHJ5IHdpdGggY2hlY2sgZm9yIHRpY2tldCB0eXBlICh2YWx1ZSBmYWxzZSknLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIENvbW11bmljYXRpb25DaGFubmVsID0+ICdFbWFpbCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnU2VuZENvbmRpdGlvbiM0IHRyeSB3aXRoIGNoZWNrIGZvciBzZXJ2aWNlJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMCwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gJFNlcnZpY2VJRCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1NlbmRDb25kaXRpb24jNSB0cnkgd2l0aCBjaGVjayBmb3Igc2VydmljZSAodmFsdWUgZmFsc2UpJywKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJyAgICAgPT4gMCwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJyAgICAgICAgPT4gMSwKICAgICAgICAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycgPT4gMCwKICAgICAgICBUaWNrZXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICBUaXRsZSAgICAgICAgPT4gJ1NvbWUgVGlja2V0IFRpdGxlJywKICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICBMb2NrICAgICAgICAgPT4gJ3VubG9jaycsCiAgICAgICAgICAgIFByaW9yaXR5ICAgICA9PiAnMyBub3JtYWwnLAogICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ29wZW4nLAogICAgICAgICAgICBDdXN0b21lck5vICAgPT4gJzEyMzQ2NScsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAnY3VzdG9tZXJAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1NlbmRDb25kaXRpb24jNiB0cnkgd2l0aCBjaGVjayBmb3IgdGlja2V0IHR5cGUgYW5kIHNlcnZpY2UnLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAkVGlja2V0VHlwZUlELAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gJFNlcnZpY2VJRCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lID0+ICdTZW5kQ29uZGl0aW9uIzcgdHJ5IHdpdGggY2hlY2sgZm9yIHRpY2tldCB0eXBlIGlkICh2YWx1ZSBmYWxzZSkgYW5kIHNlcnZpY2UnLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAwLAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gJFNlcnZpY2VJRCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lID0+ICdTZW5kQ29uZGl0aW9uIzggdHJ5IHdpdGggY2hlY2sgZm9yIHRpY2tldCB0eXBlIGFuZCBzZXJ2aWNlICh2YWx1ZSBmYWxzZSknLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAxLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiAwLAogICAgICAgIFRpY2tldCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyTm8gICA9PiAnMTIzNDY1JywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICdjdXN0b21lckB1bml0dGVzdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgICAgIFR5cGVJRCAgICAgICA9PiAkVGlja2V0VHlwZUlELAogICAgICAgICAgICBTZXJ2aWNlSUQgICAgPT4gMCwKICAgICAgICB9LAogICAgICAgIEFydGljbGUgPT4gewogICAgICAgICAgICBDb21tdW5pY2F0aW9uQ2hhbm5lbCA9PiAnRW1haWwnLAogICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAxLAogICAgICAgICAgICBTZW5kZXJUeXBlICAgICAgICAgICA9PiAnY3VzdG9tZXInLAogICAgICAgICAgICBGcm9tICAgICAgICAgICAgICAgICA9PiAnU29tZSBDdXN0b21lciA8c29tZUB1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ1NvbWUgVG8gPHRvQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnU29tZSBTdWJqZWN0JywKICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQnLAogICAgICAgICAgICBNZXNzYWdlSUQgICAgICAgICAgICA9PiAnPGFzZGFzZGFzZC4xMjNAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIENvbnRlbnRUeXBlICAgICAgICAgID0+ICd0ZXh0L3BsYWluOyBjaGFyc2V0PUlTTy04ODU5LTE1JywKICAgICAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ093bmVyVXBkYXRlJywKICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIE5vQWdlbnROb3RpZnkgICAgICAgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAwLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lID0+CiAgICAgICAgICAgICdTZW5kQ29uZGl0aW9uIzkgdHJ5IHdpdGggY2hlY2sgZm9yIHRpY2tldCB0eXBlICh2YWx1ZSBmYWxzZSkgYW5kIHNlcnZpY2UgKHZhbHVlIGZhbHNlKScsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgICAgID0+IDEsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgICAgID0+IDEsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnID0+IDAsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJObyAgID0+ICcxMjM0NjUnLAogICAgICAgICAgICBDdXN0b21lclVzZXIgPT4gJ2N1c3RvbWVyQHVuaXR0ZXN0LmNvbScsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZUlEICAgICAgID0+IDAsCiAgICAgICAgICAgIFNlcnZpY2VJRCAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIENvbW11bmljYXRpb25DaGFubmVsID0+ICdFbWFpbCcsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDEsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgICAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgICAgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCAgICAgICA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgeW91IGRvbid0IHdhbnQgdG8gc2VuZCBhZ2VudCBub3RpZmljYXRpb25zCiAgICAgICAgfSwKICAgICAgICBTdWNjZXNzID0+IDAsCiAgICB9LAogICAgewogICAgICAgIE5hbWUgPT4KICAgICAgICAgICAgJ1NlbmRDb25kaXRpb24jMTAgdHJ5IHdpdGggY2hlY2sgZm9yIGZpcnN0bmFtZSBvZiBjdXN0b21lcnVzZXIgLSBtYXRjaCcsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScgICAgID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uU2VydmljZScgICAgICAgID0+IDAsCiAgICAgICAgJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uQ3VzdG9tZXJGaWVsZHMnID0+IHsKICAgICAgICAgICAgVXNlckZpcnN0bmFtZSA9PiAxLAogICAgICAgIH0sCiAgICAgICAgVGlja2V0ID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgID0+ICdTb21lIFRpY2tldCBUaXRsZScsCiAgICAgICAgICAgIFF1ZXVlICAgICAgICA9PiAnUmF3JywKICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICBQcmlvcml0eSAgICAgPT4gJzMgbm9ybWFsJywKICAgICAgICAgICAgU3RhdGUgICAgICAgID0+ICdvcGVuJywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICRUZXN0Q3VzdG9tZXJVc2VyMSwKICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgICAgICAgICBUeXBlSUQgICAgICAgPT4gMCwKICAgICAgICAgICAgU2VydmljZUlEICAgID0+IDAsCiAgICAgICAgfSwKICAgICAgICBBcnRpY2xlID0+IHsKICAgICAgICAgICAgQXJ0aWNsZVR5cGUgICAgPT4gJ2VtYWlsLWV4dGVybmFsJywKICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgPT4gJ2N1c3RvbWVyJywKICAgICAgICAgICAgRnJvbSAgICAgICAgICAgPT4gJ1NvbWUgQ3VzdG9tZXIgPHNvbWVAdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFRvICAgICAgICAgICAgID0+ICdTb21lIFRvIDx0b0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgU3ViamVjdCAgICAgICAgPT4gJ1NvbWUgU3ViamVjdCcsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0JywKICAgICAgICAgICAgTWVzc2FnZUlEICAgICAgPT4gJzxhc2Rhc2Rhc2QuMTIzQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICA9PiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHlvdSBkb24ndCB3YW50IHRvIHNlbmQgYWdlbnQgbm90aWZpY2F0aW9ucwogICAgICAgIH0sCiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgfSwKICAgIHsKICAgICAgICBOYW1lID0+CiAgICAgICAgICAgICdTZW5kQ29uZGl0aW9uIzExIHRyeSB3aXRoIGNoZWNrIGZvciBmaXJzdG5hbWUgb2YgY3VzdG9tZXJ1c2VyIC0gbm8gbWF0Y2gnLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnICAgICAgICA9PiAwLAogICAgICAgICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJyA9PiB7CiAgICAgICAgICAgIFVzZXJGaXJzdG5hbWUgPT4gMSwKICAgICAgICB9LAogICAgICAgIFRpY2tldCA9PiB7CiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAnU29tZSBUaWNrZXQgVGl0bGUnLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnb3BlbicsCiAgICAgICAgICAgIEN1c3RvbWVyVXNlciA9PiAkVGVzdEN1c3RvbWVyVXNlcjIsCiAgICAgICAgICAgIE93bmVySUQgICAgICA9PiAxLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgVHlwZUlEICAgICAgID0+IDAsCiAgICAgICAgICAgIFNlcnZpY2VJRCAgICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgQXJ0aWNsZSA9PiB7CiAgICAgICAgICAgIEFydGljbGVUeXBlICAgID0+ICdlbWFpbC1leHRlcm5hbCcsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgID0+ICdjdXN0b21lcicsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgID0+ICdTb21lIEN1c3RvbWVyIDxzb21lQHVuaXR0ZXN0LmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICA9PiAnU29tZSBUbyA8dG9AdW5pdHRlc3QuY29tPicsCiAgICAgICAgICAgIFN1YmplY3QgICAgICAgID0+ICdTb21lIFN1YmplY3QnLAogICAgICAgICAgICBCb2R5ICAgICAgICAgICA9PiAndGhlIG1lc3NhZ2UgdGV4dCcsCiAgICAgICAgICAgIE1lc3NhZ2VJRCAgICAgID0+ICc8YXNkYXNkYXNkLjEyM0B1bml0dGVzdC5jb20+JywKICAgICAgICAgICAgQ29udGVudFR5cGUgICAgPT4gJ3RleHQvcGxhaW47IGNoYXJzZXQ9SVNPLTg4NTktMTUnLAogICAgICAgICAgICBIaXN0b3J5VHlwZSAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICBIaXN0b3J5Q29tbWVudCA9PiAnU29tZSBmcmVlIHRleHQhJywKICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgPT4gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB5b3UgZG9uJ3Qgd2FudCB0byBzZW5kIGFnZW50IG5vdGlmaWNhdGlvbnMKICAgICAgICB9LAogICAgICAgIFN1Y2Nlc3MgPT4gMCwKICAgIH0sCik7Cgpmb3IgbXkgJFRlc3QgKEBTZW5kQ29uZGl0aW9uVGVzdHMpIHsKCiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6U2VuZFBlcmlvZCcsCiAgICAgICAgVmFsdWUgPT4gJzAnLAogICAgKTsKCiAgICAkQ29uZmlnT2JqZWN0LT5TZXQoCiAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6Q2hlY2tTZW5kQ29uZGl0aW9uVGlja2V0VHlwZScsCiAgICAgICAgVmFsdWUgPT4gJFRlc3QtPnsnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25UaWNrZXRUeXBlJ30sCiAgICApOwoKICAgICRDb25maWdPYmplY3QtPlNldCgKICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25TZXJ2aWNlJywKICAgICAgICBWYWx1ZSA9PiAkVGVzdC0+eydTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblNlcnZpY2UnfSwKICAgICk7CgogICAgJENvbmZpZ09iamVjdC0+U2V0KAogICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJywKICAgICAgICBWYWx1ZSA9PiAkVGVzdC0+eydTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJ30sCiAgICApOwoKICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICAleyAkVGVzdC0+e1RpY2tldH0gfSwKICAgICk7CgogICAgbXkgJEFydGljbGVCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQ2hhbm5lbCgKICAgICAgICBDaGFubmVsTmFtZSA9PiAkVGVzdC0+e0FydGljbGV9LT57Q29tbXVuaWNhdGlvbkNoYW5uZWx9LAogICAgKTsKCiAgICBteSAkQXJ0aWNsZUlEID0gJEFydGljbGVCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAleyAkVGVzdC0+e0FydGljbGV9IH0sCiAgICApOwoKICAgICMgc2VuZCBzdXJ2ZXkgZmlyc3QgdGltZQogICAgbXkgJFJlc3BvbnNlID0gJFN1cnZleU9iamVjdC0+UmVxdWVzdFNlbmQoCiAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgKTsKCiAgICAjIGNoZWNrIGlmIHN1cnZleSBnb3Qgc2VudAogICAgaWYgKCAkVGVzdC0+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlc3BvbnNlLT57U3VjY2Vzc30sCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IFJlcXVlc3RTZW5kKCkgLSBzdXJ2ZXkgZ290IHNlbnQiLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkUmVzcG9uc2UsCiAgICAgICAgICAgICIkVGVzdC0+e05hbWV9IFJlcXVlc3RTZW5kKCkgLSBubyBzdXJ2ZXkgZ290IHNlbnQiLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJERlbGV0ZSA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cn0KCiMgdGVzdCBHZXRSaWNoVGV4dERvY3VtZW50Q29tcGxldGUKewogICAgbXkgJVRleHQ7CgogICAgI3Rlc3RzIGZvciByaWNoIHRleHQKICAgICRUZXh0e1JpY2hUZXh0fSA9IHsKICAgICAgICBJbnB1dCA9PgogICAgICAgICAgICAnJGh0bWwvdGV4dCQgPGVtPlRoaXMgaXMgdGhlIGludHJvZHVjdGlvbiB0byB0aGlzIHN1cnZleSwgaWYgeW91IHdhbnQgdG8gYW5zd2VyIGl0IHlvdSBoYXZlIHRvPGJyIC8+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==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBkbyBub3QgY2hlY2sgUmljaFRleHQKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+IDEsCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvbkN1c3RvbWVyRmllbGRzJywKICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+IDEsCiAgICAgICAgICAgICAgICBVc2VyUGhvbmUgPT4gMSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50U3VydmV5QWRkCiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRTdXJ2ZXlBZGQiKTsKCiAgICAgICAgIyBjaGVjayBwYWdlCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KFRpdGxlIEludHJvZHVjdGlvbiBOb3RpZmljYXRpb25TZW5kZXIgTm90aWZpY2F0aW9uU3ViamVjdCBOb3RpZmljYXRpb25Cb2R5IFF1ZXVlcyBEZXNjcmlwdGlvbikKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbXkgJEVsZW1lbnQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkSUQiLCAnY3NzJyApOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZW5hYmxlZCgpOwogICAgICAgICAgICAkRWxlbWVudC0+aXNfZGlzcGxheWVkKCk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHN1cnZleQogICAgICAgIG15ICRTdXJ2ZXlUaXRsZSA9ICdTdXJ2ZXkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVGl0bGUiLCAgICAgICAgJ2NzcycgKS0+c2VuZF9rZXlzKCRTdXJ2ZXlUaXRsZSk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjSW50cm9kdWN0aW9uIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdTZWxlbml1bSBJbnRyb2R1Y3Rpb24nKTsKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI1F1ZXVlX1NlYXJjaCcpLnZhbCgnMnx8UmF3JykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNEZXNjcmlwdGlvbiIsICdjc3MnICktPnNlbmRfa2V5cygnU2VsZW5pdW0gRGVzY3JpcHRpb24nKTsKCiAgICAgICAgIyBzY3JvbGwKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNDdXN0b21lclVzZXJDb25kaXRpb25zJylbMF0uc2Nyb2xsSW50b1ZpZXcodHJ1ZSk7IiwKICAgICAgICApOwoKICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJcJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnMnKS52YWwoJ1VzZXJMb2dpbicpLmNoYW5nZSgpOyIpOwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0Rlc2NyaXB0aW9uIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCdjdXN0b21lcicpOwoKICAgICAgICAjIFVzZXJMb2dpbgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdDcmVhdGUnXVtcQHR5cGU9J3N1Ym1pdCddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBjaGVjayBmb3IgdGVzdCBjcmVhdGVkIHN1cnZleSB2YWx1ZXMKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRTdXJ2ZXlUaXRsZSApID4gLTEsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgdGl0bGUgaXMgZm91bmQiCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIHN1cnZleQogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICBteSAkU3VydmV5VGl0bGVRdW90ZWQgPSAkREJPYmplY3QtPlF1b3RlKCRTdXJ2ZXlUaXRsZSk7CiAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgaWQgRlJPTSBzdXJ2ZXkgV0hFUkUgdGl0bGUgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5VGl0bGVRdW90ZWQgXQogICAgICAgICk7CiAgICAgICAgbXkgJFN1cnZleUlEOwogICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAkU3VydmV5SUQgPSAkUm93WzBdOwogICAgICAgIH0KCiAgICAgICAgbXkgJVN1cnZleSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5R2V0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKCiMgRGVsZXRlIGtleXMgdGhhdCB3ZSBkb24ndCB3YW50IHRvIGNvbXBhcmUuIE5vdGUgdGhhdCBDdXN0b21lclVzZXJDb25kaXRpb25zSlNPTiBoYXMgc29tZXRpbWVzIGRpZmZlcmVudCBvcmRlciBhbmQgdGhlcmVmb3JlCiMgaXQncyBub3QgZXZhbHVhdGVkLiBBbHNvLCBOb3RpZmljYXRpb25Cb2R5IGNvbnRhaW5zIE9UUlMgbGluaywgd2hpY2ggaXMgZGlmZmVyZW50IGZvciBlYWNoIHN5c3RlbSBhbmQgaXQncyBub3Qgc28gcmVsZXZhbnQgZm9yIHRoZSB0ZXN0LgogICAgICAgIGZvciBteSAkS2V5ICgKICAgICAgICAgICAgcXcoQ3JlYXRlVGltZSBDcmVhdGVCeSBDaGFuZ2VUaW1lIENoYW5nZUJ5IFN1cnZleU51bWJlciBDdXN0b21lclVzZXJDb25kaXRpb25zSlNPTiBOb3RpZmljYXRpb25Cb2R5KQogICAgICAgICAgICApCiAgICAgICAgewoKICAgICAgICAgICAgbXkgJFZhbHVlID0gZGVsZXRlICRTdXJ2ZXl7JEtleX07CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFZhbHVlLAogICAgICAgICAgICAgICAgIk1ha2Ugc3VyZSB0aGF0IHRoZXJlIHdhcyAnJEtleScgZGVmaW5lZCBpbiBTdXJ2ZXkgaGFzaC4iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJUV4cGVjdGVkVmFsdWUgPSAoCiAgICAgICAgICAgICJDaGFuZ2VVc2VyRmlyc3RuYW1lIiAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgIkNoYW5nZVVzZXJGdWxsbmFtZSIgICAgID0+ICIkVGVzdFVzZXJMb2dpbiAkVGVzdFVzZXJMb2dpbiIsCiAgICAgICAgICAgICJDaGFuZ2VVc2VyTGFzdG5hbWUiICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgIkNoYW5nZVVzZXJMb2dpbiIgICAgICAgID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICAgICAiQ3JlYXRlVXNlckZpcnN0bmFtZSIgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDcmVhdGVVc2VyRnVsbG5hbWUiICAgICA9PiAiJFRlc3RVc2VyTG9naW4gJFRlc3RVc2VyTG9naW4iLAogICAgICAgICAgICAiQ3JlYXRlVXNlckxhc3RuYW1lIiAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDcmVhdGVVc2VyTG9naW4iICAgICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgIkN1c3RvbWVyVXNlckNvbmRpdGlvbnMiID0+IHsKICAgICAgICAgICAgICAgICJVc2VyTG9naW4iID0+IFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICJOZWdhdGlvbiIgICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgIlJlZ0V4cFZhbHVlIiA9PiAiIiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgIkRlc2NyaXB0aW9uIiAgICAgICAgID0+ICJTZWxlbml1bSBEZXNjcmlwdGlvbmN1c3RvbWVyIiwKICAgICAgICAgICAgIkludHJvZHVjdGlvbiIgICAgICAgID0+ICJTZWxlbml1bSBJbnRyb2R1Y3Rpb24iLAogICAgICAgICAgICAiTm90aWZpY2F0aW9uU2VuZGVyIiAgPT4gInF1YWxpdHlcQGV4YW1wbGUuY29tIiwKICAgICAgICAgICAgIk5vdGlmaWNhdGlvblN1YmplY3QiID0+ICJIZWxwIHVzIHdpdGggeW91ciBmZWVkYmFjayEiLAogICAgICAgICAgICAiUXVldWVzIiAgICAgICAgICAgICAgPT4gW10sCiAgICAgICAgICAgICJTZW5kQ29uZGl0aW9uc1JhdyIgPT4gIi0tLVxuQ3VzdG9tZXJVc2VyQ29uZGl0aW9uczpcbiAgVXNlckxvZ2luOlxuICAtIE5lZ2F0aW9uOiAwXG4gICAgUmVnRXhwVmFsdWU6ICcnXG4iLAogICAgICAgICAgICAiU3RhdHVzIiAgICAgICAgICAgID0+ICJOZXciLAogICAgICAgICAgICAiU3VydmV5SUQiICAgICAgICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlRpdGxlIiAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzRGVlcGx5KAogICAgICAgICAgICBcJVN1cnZleSwKICAgICAgICAgICAgXCVFeHBlY3RlZFZhbHVlLAogICAgICAgICAgICAnQ2hlY2sgU3VydmV5IGhhc2ggZGVlcGx5LicsCiAgICAgICAgKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5IFdIRVJFIGlkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBkbyBub3QgY2hlY2sgUmljaFRleHQKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnU3VydmV5OjpDaGVja1NlbmRDb25kaXRpb25DdXN0b21lckZpZWxkcycsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAxLAogICAgICAgICAgICAgICAgVXNlclBob25lID0+IDEsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgICAgICAgICA9ICdTdXJ2ZXkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJEludHJvZHVjdGlvbiAgICAgICAgPSAnU3VydmV5IEludHJvZHVjdGlvbic7CiAgICAgICAgbXkgJERlc2NyaXB0aW9uICAgICAgICAgPSAnU3VydmV5IERlc2NyaXB0aW9uJzsKICAgICAgICBteSAkTm90aWZpY2F0aW9uU2VuZGVyICA9ICdxdWFsaXR5QGV4YW1wbGUuY29tJzsKICAgICAgICBteSAkTm90aWZpY2F0aW9uU3ViamVjdCA9ICdTdXJ2ZXkgTm90aWZpY2F0aW9uIFN1YmplY3QnOwogICAgICAgIG15ICROb3RpZmljYXRpb25Cb2R5ICAgID0gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keSc7CgogICAgICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgICAgIG15ICRTdXJ2ZXlJRCA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICAgICA9PiAkSW50cm9kdWN0aW9uLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgICAgID0+ICREZXNjcmlwdGlvbiwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICAgICA9PiAkTm90aWZpY2F0aW9uU2VuZGVyLAogICAgICAgICAgICBOb3RpZmljYXRpb25TdWJqZWN0ICAgID0+ICROb3RpZmljYXRpb25TdWJqZWN0LAogICAgICAgICAgICBOb3RpZmljYXRpb25Cb2R5ICAgICAgID0+ICROb3RpZmljYXRpb25Cb2R5LAogICAgICAgICAgICBRdWV1ZXMgICAgICAgICAgICAgICAgID0+IFsyXSwKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyA9PiB7CiAgICAgICAgICAgICAgICBVc2VyTG9naW4gPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTmVnYXRpb24gICAgPT4gMCwKICAgICAgICAgICAgICAgICAgICAgICAgUmVnRXhwVmFsdWUgPT4gJ0pvaG4nLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICBdLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleVpvb20gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjbGljayBvbiAnRWRpdCBHZW5lcmFsIEluZm8nIGFuZCBzd2l0Y2ggc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWVudTAxMC1FZGl0R2VuZXJhbEluZm8iLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMiApOwogICAgICAgIG15ICRIYW5kbGVzID0gJFNlbGVuaXVtLT5nZXRfd2luZG93X2hhbmRsZXMoKTsKICAgICAgICAkU2VsZW5pdW0tPnN3aXRjaF90b193aW5kb3coICRIYW5kbGVzLT5bMV0gKTsKCiAgICAgICAgIyB3YWl0IHVudGlsIHBhZ2UgaGFzIGxvYWRlZCwgaWYgbmVjZXNzYXJ5CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBKYXZhU2NyaXB0ID0+ICdyZXR1cm4gdHlwZW9mKCQpID09PSAiZnVuY3Rpb24iICYmICQoIiNUaXRsZSIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBnZXQgdGVzdCBwYXJhbXMKICAgICAgICBteSBAVGVzdCA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgID0+ICdUaXRsZScsCiAgICAgICAgICAgICAgICBTdG9yZWQgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICAgICAgRWRpdGVkID0+ICRTdXJ2ZXlUaXRsZSAuICcgZWRpdGVkJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgID0+ICdJbnRyb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgU3RvcmVkID0+ICRJbnRyb2R1Y3Rpb24sCiAgICAgICAgICAgICAgICBFZGl0ZWQgPT4gJEludHJvZHVjdGlvbiAuICcgZWRpdGVkJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgID0+ICdEZXNjcmlwdGlvbicsCiAgICAgICAgICAgICAgICBTdG9yZWQgPT4gJERlc2NyaXB0aW9uLAogICAgICAgICAgICAgICAgRWRpdGVkID0+ICREZXNjcmlwdGlvbiAuICcgZWRpdGVkJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgID0+ICdOb3RpZmljYXRpb25TZW5kZXInLAogICAgICAgICAgICAgICAgU3RvcmVkID0+ICROb3RpZmljYXRpb25TZW5kZXIsCiAgICAgICAgICAgICAgICBFZGl0ZWQgPT4gJE5vdGlmaWNhdGlvblNlbmRlciAuICcgZWRpdGVkJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgID0+ICdOb3RpZmljYXRpb25TdWJqZWN0JywKICAgICAgICAgICAgICAgIFN0b3JlZCA9PiAkTm90aWZpY2F0aW9uU3ViamVjdCwKICAgICAgICAgICAgICAgIEVkaXRlZCA9PiAkTm90aWZpY2F0aW9uU3ViamVjdCAuICcgZWRpdGVkJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgID0+ICdOb3RpZmljYXRpb25Cb2R5JywKICAgICAgICAgICAgICAgIFN0b3JlZCA9PiAkTm90aWZpY2F0aW9uQm9keSwKICAgICAgICAgICAgICAgIEVkaXRlZCA9PiAkTm90aWZpY2F0aW9uQm9keSAuICcgZWRpdGVkJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHRlc3Qgc3VydmV5IHZhbHVlcyBhbmQgZWRpdCB0aGVtCiAgICAgICAgZm9yIG15ICRTdXJ2ZXlTdG9yZWQgKEBUZXN0KSB7CgogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3VydmV5U3RvcmVkLT57SUR9IiwgJ2NzcycgKS0+Z2V0X3ZhbHVlKCksCiAgICAgICAgICAgICAgICAkU3VydmV5U3RvcmVkLT57U3RvcmVkfSwKICAgICAgICAgICAgICAgICIjJFN1cnZleVN0b3JlZC0+e0lEfSBzdG9yZWQgdmFsdWUiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBlZGl0IHZhbHVlCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRTdXJ2ZXlTdG9yZWQtPntJRH0iLCAnY3NzJyApLT5zZW5kX2tleXMoJyBlZGl0ZWQnKTsKICAgICAgICB9CgogICAgICAgICMgVXBkYXRlIGN1c3RvbWVyIHVzZXIgY29uZGl0aW9uLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICJcJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnMnKVswXS5zY3JvbGxJbnRvVmlldyh0cnVlKTsiLAogICAgICAgICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjVXNlckxvZ2luSW5wdXQxIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCcgZWRpdGVkJyk7CgogICAgICAgICMgc3VibWl0IHVwZGF0ZXMgYW5kIHN3aXRjaCBiYWNrIHdpbmRvdwogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2J1dHRvbltcQHZhbHVlPSdVcGRhdGUnXVtcQHR5cGU9J3N1Ym1pdCddIiktPmNsaWNrKCk7CgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggV2luZG93Q291bnQgPT4gMSApOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlswXSApOwoKICAgICAgICAjIGNsaWNrIG9uICdFZGl0IEdlbmVyYWwgSW5mbycgYWdhaW4gYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNZW51MDEwLUVkaXRHZW5lcmFsSW5mbyIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1RpdGxlIikubGVuZ3RoJyApOwoKICAgICAgICAjIGNoZWNrIGVkaXRlZCB2YWx1ZXMKICAgICAgICBmb3IgbXkgJFN1cnZlcnlFZGl0ZWQgKEBUZXN0KSB7CgogICAgICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiMkU3VydmVyeUVkaXRlZC0+e0lEfSIsICdjc3MnICktPmdldF92YWx1ZSgpLAogICAgICAgICAgICAgICAgJFN1cnZlcnlFZGl0ZWQtPntFZGl0ZWR9LAogICAgICAgICAgICAgICAgIiMkU3VydmVyeUVkaXRlZC0+e0lEfSBzdG9yZWQgdmFsdWUiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJVN1cnZleSA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUdldCgKICAgICAgICAgICAgU3VydmV5SUQgPT4gJFN1cnZleUlELAogICAgICAgICk7CgojIERlbGV0ZSBrZXlzIHRoYXQgd2UgZG9uJ3Qgd2FudCB0byBjb21wYXJlLiBOb3RlIHRoYXQgQ3VzdG9tZXJVc2VyQ29uZGl0aW9uc0pTT04gaGFzIHNvbWV0aW1lcyBkaWZmZXJlbnQgb3JkZXIgYW5kIHRoZXJlZm9yZQojIGl0J3Mgbm90IGV2YWx1YXRlZC4KICAgICAgICBmb3IgbXkgJEtleSAocXcoQ3JlYXRlVGltZSBDcmVhdGVCeSBDaGFuZ2VUaW1lIENoYW5nZUJ5IFN1cnZleU51bWJlciBDdXN0b21lclVzZXJDb25kaXRpb25zSlNPTikpIHsKCiAgICAgICAgICAgIG15ICRWYWx1ZSA9IGRlbGV0ZSAkU3VydmV5eyRLZXl9OwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRWYWx1ZSwKICAgICAgICAgICAgICAgICJNYWtlIHN1cmUgdGhhdCB0aGVyZSB3YXMgJyRLZXknIGRlZmluZWQgaW4gU3VydmV5IGhhc2guIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVFeHBlY3RlZFZhbHVlID0gKAogICAgICAgICAgICAiQ2hhbmdlVXNlckZpcnN0bmFtZSIgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyRnVsbG5hbWUiICAgICA9PiAiJFRlc3RVc2VyTG9naW4gJFRlc3RVc2VyTG9naW4iLAogICAgICAgICAgICAiQ2hhbmdlVXNlckxhc3RuYW1lIiAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgICJDaGFuZ2VVc2VyTG9naW4iICAgICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgIkNyZWF0ZVVzZXJGaXJzdG5hbWUiICAgID0+ICdBZG1pbicsCiAgICAgICAgICAgICJDcmVhdGVVc2VyRnVsbG5hbWUiICAgICA9PiAnQWRtaW4gT1RSUycsCiAgICAgICAgICAgICJDcmVhdGVVc2VyTGFzdG5hbWUiICAgICA9PiAnT1RSUycsCiAgICAgICAgICAgICJDcmVhdGVVc2VyTG9naW4iICAgICAgICA9PiAncm9vdEBsb2NhbGhvc3QnLAogICAgICAgICAgICAiQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIgPT4gewogICAgICAgICAgICAgICAgIlVzZXJMb2dpbiIgPT4gWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgIk5lZ2F0aW9uIiAgICA9PiAwLAogICAgICAgICAgICAgICAgICAgICAgICAiUmVnRXhwVmFsdWUiID0+ICJKb2huIGVkaXRlZCIsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICJEZXNjcmlwdGlvbiIgICAgICAgICA9PiAiJERlc2NyaXB0aW9uIGVkaXRlZCIsCiAgICAgICAgICAgICJJbnRyb2R1Y3Rpb24iICAgICAgICA9PiAiJEludHJvZHVjdGlvbiBlZGl0ZWQiLAogICAgICAgICAgICAiTm90aWZpY2F0aW9uQm9keSIgICAgPT4gIiROb3RpZmljYXRpb25Cb2R5IGVkaXRlZCIsCiAgICAgICAgICAgICJOb3RpZmljYXRpb25TZW5kZXIiICA9PiAiJE5vdGlmaWNhdGlvblNlbmRlciBlZGl0ZWQiLAogICAgICAgICAgICAiTm90aWZpY2F0aW9uU3ViamVjdCIgPT4gIiROb3RpZmljYXRpb25TdWJqZWN0IGVkaXRlZCIsCiAgICAgICAgICAgICJRdWV1ZXMiICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgICAgICJTZW5kQ29uZGl0aW9uc1JhdyIgPT4KICAgICAgICAgICAgICAgICItLS1cbkN1c3RvbWVyVXNlckNvbmRpdGlvbnM6XG4gIFVzZXJMb2dpbjpcbiAgLSBOZWdhdGlvbjogMFxuICAgIFJlZ0V4cFZhbHVlOiBKb2huIGVkaXRlZFxuIiwKICAgICAgICAgICAgIlN0YXR1cyIgICA9PiAiTmV3IiwKICAgICAgICAgICAgIlN1cnZleUlEIiA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICJUaXRsZSIgICAgPT4gIiRTdXJ2ZXlUaXRsZSBlZGl0ZWQiLAogICAgICAgICk7CgogICAgICAgICRTZWxmLT5Jc0RlZXBseSgKICAgICAgICAgICAgXCVTdXJ2ZXksCiAgICAgICAgICAgIFwlRXhwZWN0ZWRWYWx1ZSwKICAgICAgICAgICAgJ0NoZWNrIFN1cnZleSBoYXNoIGRlZXBseS4nLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IERCIG9iamVjdAogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIGNsZWFuLXVwIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgZGF0YQogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5X3F1ZXVlIFdIRVJFIHN1cnZleV9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU3VydmV5LVF1ZXVlIGZvciAkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIHN1cnZleQogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5IFdIRVJFIGlkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdXJ2ZXlJRCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAnU3VydmV5IERlc2NyaXB0aW9uJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAncXVhbGl0eUBleGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleU92ZXJ2aWV3IG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3Iik7CgogICAgICAgICMgY2hlY2sgc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgY2hlY2sgZm9yIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkU3VydmV5VGl0bGUiICkgPiAtMSwKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSBpcyBmb3VuZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjbGljayBvbiB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vZGl2W1xAdGl0bGU9JyRTdXJ2ZXlUaXRsZSddIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyB2ZXJpZnkgd2UgYXJlIGluIEFnZW50U3VydmV5Wm9vbSBzY3JlZW4KICAgICAgICBteSAkVVJMQWN0aW9uID0gJFNlbGVuaXVtLT5nZXRfY3VycmVudF91cmwoKTsKICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgIGluZGV4KCAkVVJMQWN0aW9uLCAiQWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiICkgPiAtMSwKICAgICAgICAgICAgMSwKICAgICAgICAgICAgIkxpbmsgZnJvbSBPdmVydmlldyB0byBab29tIHZpZXcgLSBzdWNjZXNzIiwKICAgICAgICApOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50U3VydmV5T3ZlcnZpZXcgb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5T3ZlcnZpZXciKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjU3VydmV5U2VhcmNoJywgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgIG15ICREaWFsb2dGb3VuZCA9ICRTZWxlbml1bS0+V2FpdEZvcigKICAgICAgICAgICAgSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZyIpLmxlbmd0aCcKICAgICAgICApOwoKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJERpYWxvZ0ZvdW5kLAogICAgICAgICAgICAnRGlhbG9nIGRpc3BsYXllZC4nCiAgICAgICAgKTsKCiAgICAgICAgIyBzZW5kIFN1cnZleUlECiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZyBpbnB1dFtuYW1lPSJGdWxsdGV4dCJdJywgJ2NzcycgKS0+c2VuZF9rZXlzKCRTdXJ2ZXlJRCk7CgogICAgICAgICMgbWFrZSBzdXJlIHRoYXQgZm9sbG93aW5nIGZpZWxkcyBhcmUgZGlzcGxheWVkCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZyAjU3RhdGVzX1NlYXJjaCcsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZyAjTm9UaW1lU2V0JywgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICcjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZyAjRGF0ZVJhbmdlJywgICAgICdjc3MnICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAnI0RpYWxvZ0J1dHRvbjEnLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgIG15ICRMaW5rU3VydmV5SUQgPSAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggJy5NYXN0ZXJBY3Rpb25MaW5rJywgJ2NzcycgKS0+Z2V0X2F0dHJpYnV0ZSgnaW5uZXJIVE1MJyk7CiAgICAgICAgbXkgJExpbmtDb250ZW50ID0gJyc7CgogICAgICAgIGlmICggJExpbmtTdXJ2ZXlJRCA9fiBte15ccyooXGQrKVxzKiR9ICkgewogICAgICAgICAgICAkTGlua0NvbnRlbnQgPSAkMTsKICAgICAgICB9CgogICAgICAgICRTZWxmLT5JcygKICAgICAgICAgICAgJExpbmtDb250ZW50LAogICAgICAgICAgICAkU3VydmV5SUQgKyAxMDAwMCwKICAgICAgICAgICAgJ0NyYXRlZCBzdXJ2ZXkgbGluayBmb3VuZC4nCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgREIgb2JqZWN0CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgY2xlYW4tdXAgdGVzdCBjcmVhdGVkIHN1cnZleSBkYXRhCiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXlfcXVldWUgV0hFUkUgc3VydmV5X2lkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICJTdXJ2ZXktUXVldWUgZm9yICRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGRlbGV0ZSB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICJERUxFVEUgRlJPTSBzdXJ2ZXkgV0hFUkUgaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIiRTdXJ2ZXlUaXRsZSBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBkbyBub3QgY2hlY2sgUmljaFRleHQKICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBWYWxpZCA9PiAxLAogICAgICAgICAgICBLZXkgICA9PiAnRnJvbnRlbmQ6OlJpY2hUZXh0JywKICAgICAgICAgICAgVmFsdWUgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHN1cnZleQogICAgICAgIG15ICRTdXJ2ZXlUaXRsZSAgICAgICAgID0gJ1N1cnZleSAnIC4gJEhlbHBlci0+R2V0UmFuZG9tSUQoKTsKICAgICAgICBteSAkSW50cm9kdWN0aW9uICAgICAgICA9ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJzsKICAgICAgICBteSAkRGVzY3JpcHRpb24gICAgICAgICA9ICdTdXJ2ZXkgRGVzY3JpcHRpb24nOwogICAgICAgIG15ICROb3RpZmljYXRpb25TZW5kZXIgID0gJ3F1YWxpdHlAZXhhbXBsZS5jb20nOwogICAgICAgIG15ICROb3RpZmljYXRpb25TdWJqZWN0ID0gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCc7CiAgICAgICAgbXkgJE5vdGlmaWNhdGlvbkJvZHkgICAgPSAnU3VydmV5IE5vdGlmaWNhdGlvbiBCb2R5JzsKCiAgICAgICAgbXkgJFN1cnZleUlEID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN1cnZleScpLT5TdXJ2ZXlBZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICA9PiAkU3VydmV5VGl0bGUsCiAgICAgICAgICAgIEludHJvZHVjdGlvbiAgICAgICAgPT4gJEludHJvZHVjdGlvbiwKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAkRGVzY3JpcHRpb24sCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJE5vdGlmaWNhdGlvblNlbmRlciwKICAgICAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAkTm90aWZpY2F0aW9uU3ViamVjdCwKICAgICAgICAgICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAkTm90aWZpY2F0aW9uQm9keSwKICAgICAgICAgICAgUXVldWVzICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1cnZleUlELAogICAgICAgICAgICAiU3VydmV5IElEICRTdXJ2ZXlJRCBpcyBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc2NyaXB0IGFsaWFzCiAgICAgICAgbXkgJFNjcmlwdEFsaWFzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdTY3JpcHRBbGlhcycpOwoKICAgICAgICAjIG5hdmlnYXRlIHRvIEFnZW50U3VydmV5Wm9vbSBvZiBjcmVhdGVkIHRlc3Qgc3VydmV5CiAgICAgICAgJFNlbGVuaXVtLT5WZXJpZmllZEdldCgiJHtTY3JpcHRBbGlhc31pbmRleC5wbD9BY3Rpb249QWdlbnRTdXJ2ZXlab29tO1N1cnZleUlEPSRTdXJ2ZXlJRCIpOwoKICAgICAgICAjIGNoZWNrIHBhZ2UKICAgICAgICBmb3IgbXkgJElEICgKICAgICAgICAgICAgcXcoTWVudTAwMC1CYWNrIE1lbnUwMTAtRWRpdEdlbmVyYWxJbmZvIE1lbnUwMjAtRWRpdFF1ZXN0aW9ucyBOZXdTdGF0dXMpCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG15ICRFbGVtZW50ID0gJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJElEIiwgJ2NzcycgKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2VuYWJsZWQoKTsKICAgICAgICAgICAgJEVsZW1lbnQtPmlzX2Rpc3BsYXllZCgpOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB0ZXN0IGNyZWF0ZWQgc3VydmV5IHZhbHVlcwogICAgICAgIG15IEBWYWx1ZXMgPSAoICRTdXJ2ZXlUaXRsZSwgJEludHJvZHVjdGlvbiwgJERlc2NyaXB0aW9uICk7CiAgICAgICAgZm9yIG15ICRTdXJ2ZXlDaGVjayAoQFZhbHVlcykgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJFN1cnZleUNoZWNrIiApID4gLTEsCiAgICAgICAgICAgICAgICAiJFN1cnZleUNoZWNrIGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IERCIG9iamVjdAogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIGNsZWFuLXVwIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgZGF0YQogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5X3F1ZXVlIFdIRVJFIHN1cnZleV9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU3VydmV5LVF1ZXVlIGZvciAkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIHN1cnZleQogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5IFdIRVJFIGlkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdXJ2ZXlJRCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAnU3VydmV5IERlc2NyaXB0aW9uJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAnc3Zpa0BleGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleVpvb20gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjbGljayBvbiAnRWRpdCBRdWVzdGlvbnMnIGFuZCBzd2l0Y2ggc2NyZWVuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjTWVudTAyMC1FZGl0UXVlc3Rpb25zIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIFdpbmRvd0NvdW50ID0+IDIgKTsKICAgICAgICBteSAkSGFuZGxlcyA9ICRTZWxlbml1bS0+Z2V0X3dpbmRvd19oYW5kbGVzKCk7CiAgICAgICAgJFNlbGVuaXVtLT5zd2l0Y2hfdG9fd2luZG93KCAkSGFuZGxlcy0+WzFdICk7CgogICAgICAgICMgd2FpdCB1bnRpbCBwYWdlIGhhcyBsb2FkZWQsIGlmIG5lY2Vzc2FyeQogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIjQW5zd2VyUmVxdWlyZWQiKS5sZW5ndGgnICk7CgogICAgICAgICMgY2hlY2sgcGFnZQogICAgICAgIGZvciBteSAkSUQgKAogICAgICAgICAgICBxdyhRdWVzdGlvbiBUeXBlIEFuc3dlclJlcXVpcmVkKQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBteSAkRWxlbWVudCA9ICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiIyRJRCIsICdjc3MnICk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19lbmFibGVkKCk7CiAgICAgICAgICAgICRFbGVtZW50LT5pc19kaXNwbGF5ZWQoKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHRlc3QgcGFyYW1zCiAgICAgICAgbXkgQFRlc3QgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1llc05vUXVlc3Rpb24nLAogICAgICAgICAgICAgICAgVHlwZSA9PiAnWWVzTm8nLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdSYWRpb1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ1JhZGlvJywKICAgICAgICAgICAgICAgIEFuc3dlcjEgPT4gJ1NlbGVuaXVtIG9uZScsCiAgICAgICAgICAgICAgICBBbnN3ZXIyID0+ICdTZWxlbml1bSB0d28nLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgID0+ICdDaGVja2JveFF1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0NoZWNrYm94JywKICAgICAgICAgICAgICAgIEFuc3dlcjEgPT4gJ1NlbGVuaXVtIG9uZScsCiAgICAgICAgICAgICAgICBBbnN3ZXIyID0+ICdTZWxlbml1bSB0d28nLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICdUZXh0YXJlYVF1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRhcmVhJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgICA9PiAnTlBTUXVlc3Rpb24nLAogICAgICAgICAgICAgICAgVHlwZSAgICA9PiAnTlBTJywKICAgICAgICAgICAgICAgIEFuc3dlcjEgPT4gJ1NlbGVuaXVtIG9uZScsCiAgICAgICAgICAgICAgICBBbnN3ZXIyID0+ICdTZWxlbml1bSB0d28nCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBxdWVzdGlvbnMKICAgICAgICBteSAkU3VjY2VzczsKICAgICAgICBmb3IgbXkgJFF1ZXN0aW9ucyAoQFRlc3QpIHsKCiAgICAgICAgICAgICMgYWRkIHF1ZXN0aW9uCiAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI1F1ZXN0aW9uIiwgJ2NzcycgKS0+c2VuZF9rZXlzKCAkUXVlc3Rpb25zLT57TmFtZX0gKTsKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICJcJCgnI1R5cGUnKS52YWwoJyRRdWVzdGlvbnMtPntUeXBlfScpLnRyaWdnZXIoJ3JlZHJhdy5JbnB1dEZpZWxkJykudHJpZ2dlcignY2hhbmdlJyk7IgogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQWRkJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAjIGFkZCBhbnN3ZXJzIGZvciByYWRpbywgY2hlY2stYm94IGFuZCBOUFMgcXVlc3Rpb25zCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRRdWVzdGlvbnMtPntOYW1lfSBlcSAnUmFkaW9RdWVzdGlvbicKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbnMtPntOYW1lfSBlcSAnQ2hlY2tib3hRdWVzdGlvbicKICAgICAgICAgICAgICAgIHx8ICRRdWVzdGlvbnMtPntOYW1lfSBlcSAnTlBTUXVlc3Rpb24nCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBxdWVzdGlvbiBpcyBpbiBpbmNvbXBsZXRlIHN0YXRlCiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfdGV4dCgiLy9kaXZbXEBjbGFzcz0nQ29udGVudCddIiksICdJbmNvbXBsZXRlJyApID4gLTEsCiAgICAgICAgICAgICAgICAgICAgIiRRdWVzdGlvbnMtPntOYW1lfSBpcyBpbmNvbXBsZXRlIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBjbGljayBvbiB0ZXN0IGNyZWF0ZWQgcXVlc3Rpb24KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAkUXVlc3Rpb25zLT57TmFtZX0sICdsaW5rX3RleHQnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNBbnN3ZXIiLCAnY3NzJyApLT5zZW5kX2tleXMoICRRdWVzdGlvbnMtPntBbnN3ZXIxfSApOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0FkZCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiI0Fuc3dlciIsICdjc3MnICktPnNlbmRfa2V5cyggJFF1ZXN0aW9ucy0+e0Fuc3dlcjJ9ICk7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nQWRkJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICAgICAgICAgIyByZXR1cm4gYmFjayB0byBhZGQgcXVlc3Rpb24gc2NyZWVuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nR28gYmFjayddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB2ZXJpZnkgcXVlc3Rpb24gaXMgaW4gY29tcGxldGUgc3RhdGUKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfdGV4dCgiLy9kaXZbXEBjbGFzcz0nQ29udGVudCddIiksICdDb21wbGV0ZScgKSA+IC0xLAogICAgICAgICAgICAgICAgIiRRdWVzdGlvbnMtPntOYW1lfSBpcyBjb21wbGV0ZWQiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBjbGljayBvbiBkZWxldGUgaWNvbgogICAgICAgICAgICBteSAkQ2hlY2tDb25maXJtSlMgPSA8PCJKQVZBU0NSSVBUIjsKKGZ1bmN0aW9uICgpIHsKICAgIHZhciBsYXN0Q29uZmlybSA9IHVuZGVmaW5lZDsKICAgIHdpbmRvdy5jb25maXJtID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHsKICAgICAgICBsYXN0Q29uZmlybSA9IG1lc3NhZ2U7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9Owp9KCkpOwpKQVZBU0NSSVBUCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoJENoZWNrQ29uZmlybUpTKTsKCiAgICAgICAgICAgICMgZGVsZXRlIHRlc3QgcXVlc3Rpb24KICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIuUXVlc3Rpb25EZWxldGUiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuICQoIi5EaWFsb2c6dmlzaWJsZSIpLmxlbmd0aCA9PT0gMDsnICk7CgogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkUXVlc3Rpb25zLT57TmFtZX0gKSA9PSAtMSwKICAgICAgICAgICAgICAgICIkUXVlc3Rpb25zLT57TmFtZX0gaXMgZGVsZXRlZCIsCiAgICAgICAgICAgICk7CgogICAgICAgIH0KCiAgICAgICAgIyBnZXQgREIgb2JqZWN0CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgY2xlYW4tdXAgdGVzdCBjcmVhdGVkIHN1cnZleSBxdWV1ZQogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5X3F1ZXVlIFdIRVJFIHN1cnZleV9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU3VydmV5LVF1ZXVlIGZvciAkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIHN1cnZleQogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5IFdIRVJFIGlkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgdmFycyAocXcoJFNlbGYpKTsKCm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgRG8gbm90IHJlYWxseSBzZW5kIGVtYWlscy4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnU2VuZG1haWxNb2R1bGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAnS2VybmVsOjpTeXN0ZW06OkVtYWlsOjpEb05vdFNlbmRFbWFpbCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBEbyBub3QgY2hlY2sgZW1haWwgYWRkcmVzc2VzIGluIHRoaXMgdGVzdC4KICAgICAgICAkSGVscGVyLT5Db25maWdTZXR0aW5nQ2hhbmdlKAogICAgICAgICAgICBLZXkgICA9PiAnQ2hlY2tFbWFpbEFkZHJlc3NlcycsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgc2VuZCBwZXJpb2QgdG8gemVybyB0byBhbHdheXMgc2VuZCBzdXJ2ZXkuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ1N1cnZleTo6U2VuZFBlcmlvZCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBTZXQgbm8gc2VuZCBjb25kaXRpb24gY2hlY2sgaW4gbm9ybWFsIHRlc3RzLgogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgQ3JlYXRlIHRlc3Qgc3VydmV5LgogICAgICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CiAgICAgICAgbXkgJFN1cnZleVRpdGxlICA9ICdTdXJ2ZXkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJFN1cnZleUlEICAgICA9ICRTdXJ2ZXlPYmplY3QtPlN1cnZleUFkZCgKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgID0+ICRTdXJ2ZXlUaXRsZSwKICAgICAgICAgICAgSW50cm9kdWN0aW9uICAgICAgICA9PiAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIERlc2NyaXB0aW9uICAgICAgICAgPT4gJ1N1cnZleSBEZXNjcmlwdGlvbicsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3F1YWxpdHlAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAnU3VydmV5IE5vdGlmaWNhdGlvbiBTdWJqZWN0JywKICAgICAgICAgICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAnU3VydmV5IE5vdGlmaWNhdGlvbiBCb2R5JywKICAgICAgICAgICAgUXVldWVzICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1cnZleUlELAogICAgICAgICAgICAiU3VydmV5IElEICRTdXJ2ZXlJRCBpcyBjcmVhdGVkIgogICAgICAgICk7CgogICAgICAgICMgQWRkIHF1ZXN0aW9uIHRvIHRlc3Qgc3VydmV5LgogICAgICAgIG15ICRRdWVzdGlvbk5hbWUgPSAnUXVlc3Rpb24gJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgJFN1cnZleU9iamVjdC0+UXVlc3Rpb25BZGQoCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFN1cnZleUlEICAgICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgUXVlc3Rpb24gICAgICAgPT4gJFF1ZXN0aW9uTmFtZSwKICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwKICAgICAgICAgICAgVHlwZSAgICAgICAgICAgPT4gJ1llc05vJywKICAgICAgICApOwoKICAgICAgICAjIEdldCBxdWVzdGlvbiBJRCBmcm9tIHRoZSB0ZXN0IHN1cnZleS4KICAgICAgICBteSBAUXVlc3Rpb25MaXN0ID0gJFN1cnZleU9iamVjdC0+UXVlc3Rpb25MaXN0KAogICAgICAgICAgICBTdXJ2ZXlJRCA9PiAkU3VydmV5SUQsCiAgICAgICAgKTsKICAgICAgICBteSAkUXVlc3Rpb25JRCA9ICRRdWVzdGlvbkxpc3RbMF0tPntRdWVzdGlvbklEfTsKCiAgICAgICAgIyBTZXQgdGVzdCBzdXJ2ZXkgb24gbWFzdGVyIHN0YXR1cy4KICAgICAgICBteSAkU3RhdHVzU2V0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5U3RhdHVzU2V0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgICAgICAgICBOZXdTdGF0dXMgPT4gJ01hc3RlcicsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKICAgICAgICBteSAkREJPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgIG15ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpLT5CYWNrZW5kRm9yQ2hhbm5lbCgKICAgICAgICAgICAgQ2hhbm5lbE5hbWUgPT4gJ0ludGVybmFsJywKICAgICAgICApOwoKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgIG15IEBUaWNrZXROdW1iZXJzOwogICAgICAgIG15IEBUaWNrZXRJRHM7CiAgICAgICAgZm9yIG15ICRDb3VudCAoIDEgLi4gMyApIHsKCiAgICAgICAgICAgICMgQ3JlYXRlIHRlc3QgdGlja2V0LgogICAgICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICAgICAgICAgIG15ICRUaWNrZXRJRCAgICAgPSAkVGlja2V0T2JqZWN0LT5UaWNrZXRDcmVhdGUoCiAgICAgICAgICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE51bWJlciwKICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAiU2VsZW5pdW0gVGVzdCBUaWNrZXQiLAogICAgICAgICAgICAgICAgUXVldWUgICAgICAgID0+ICdSYXcnLAogICAgICAgICAgICAgICAgTG9jayAgICAgICAgID0+ICd1bmxvY2snLAogICAgICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ25ldycsCiAgICAgICAgICAgICAgICBDdXN0b21lcklEICAgPT4gJ1NlbGVuaXVtQ3VzdG9tZXInLAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd0ZXN0QGxvY2FsaG9zdC5jb20nLAogICAgICAgICAgICAgICAgT3duZXJJRCAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCBpcyBjcmVhdGVkIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBUaWNrZXRJRHMsICAgICAkVGlja2V0SUQ7CiAgICAgICAgICAgIHB1c2ggQFRpY2tldE51bWJlcnMsICRUaWNrZXROdW1iZXI7CgogICAgICAgICAgICAjIEFkZCBhcnRpY2xlIHRvIHRlc3QgdGlja2V0LgogICAgICAgICAgICBteSAkQXJ0aWNsZUlEID0gJEFydGljbGVJbnRlcm5hbEJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgICAgICBJc1Zpc2libGVGb3JDdXN0b21lciA9PiAwLAogICAgICAgICAgICAgICAgU2VuZGVyVHlwZSAgICAgICAgICAgPT4gJ2FnZW50JywKICAgICAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEFnZW50IDxlbWFpbEBleGFtcGxlLmNvbT4nLAogICAgICAgICAgICAgICAgVG8gICAgICAgICAgICAgICAgICAgPT4gJ0N1c3RvbWVyPGN1c3RvbWVyLWFAZXhhbXBsZS5jb20+JywKICAgICAgICAgICAgICAgIENjICAgICAgICAgICAgICAgICAgID0+ICdDdXN0b21lcjxjdXN0b21lci1iQGV4YW1wbGUuY29tPicsCiAgICAgICAgICAgICAgICBSZXBseVRvICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXIgQiA8Y3VzdG9tZXItYkBleGFtcGxlLmNvbT4nLAogICAgICAgICAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJ3NvbWUgc2hvcnQgZGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJ3RoZSBtZXNzYWdlIHRleHQgUGVybCBtb2R1bGVzIHByb3ZpZGUgYSByYW5nZSBvZicsCiAgICAgICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgICAgICBIaXN0b3J5VHlwZSAgICAgICAgICA9PiAnT3duZXJVcGRhdGUnLAogICAgICAgICAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gJ1NvbWUgZnJlZSB0ZXh0IScsCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgTm9BZ2VudE5vdGlmeSAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgIENoYXJzZXQgICAgICAgICAgICAgID0+ICd1dGY4JywKICAgICAgICAgICAgICAgIE1pbWVUeXBlICAgICAgICAgICAgID0+ICd0ZXh0L3BsYWluJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAgICAgIkFydGljbGUgSUQgJEFydGljbGVJRCBpcyBjcmVhdGVkIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBTZW5kIHN1cnZleSByZXF1ZXN0LgogICAgICAgICAgICBteSAkUmVxdWVzdCA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkUmVxdWVzdCwKICAgICAgICAgICAgICAgICdTdXJ2ZXkgcmVxdWVzdCBpcyBzZW50JwogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBHZXQgcHVibGljIHN1cnZleSBrZXkgZnJvbSB0ZXN0IHN1cnZleSByZXF1ZXN0LgogICAgICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgcHVibGljX3N1cnZleV9rZXkgRlJPTSBzdXJ2ZXlfcmVxdWVzdCBXSEVSRSBzdXJ2ZXlfaWQgPSA/IEFORCB0aWNrZXRfaWQgPSA/IiwKICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlELCBcJFRpY2tldElEIF0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRQdWJsaWNTdXJ2ZXlLZXk7CiAgICAgICAgICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgICAgICAgICAgJFB1YmxpY1N1cnZleUtleSA9ICRSb3dbMF07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQ3JlYXRlIHB1YmxpYyBhbnN3ZXIgdm90ZXMuCiAgICAgICAgICAgIGlmICggJENvdW50ID09ICcxJyApIHsKCiAgICAgICAgICAgICAgICAjIE5hdmlnYXRlIHRvIHB1YmxpYyBwYWdlIG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkgYW5kIGFkZCBwdWJsaWMgYW5zd2VyIHZpYSBmcm9udGVuZC4KICAgICAgICAgICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9cHVibGljLnBsP0FjdGlvbj1QdWJsaWNTdXJ2ZXk7UHVibGljU3VydmV5S2V5PSRQdWJsaWNTdXJ2ZXlLZXkiKTsKCiAgICAgICAgICAgICAgICAjIFNlbGVjdCAnWWVzJyBhcyBhbiBhbnN3ZXIuCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQHZhbHVlPSdZZXMnXVtcQHR5cGU9J3JhZGlvJ10iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYnV0dG9uW1xAdmFsdWU9J0ZpbmlzaCddW1xAdHlwZT0nc3VibWl0J10iKS0+VmVyaWZpZWRDbGljaygpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIEFkZCBwdWJsaWMgdm90ZSB2aWEgYmFja2VuZC4KICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgIyBTbGVlcCBvbmUgc2Vjb25kIGJldHdlZW4gcHVibGljIGFuc3dlci4KICAgICAgICAgICAgICAgIHNsZWVwIDE7CgogICAgICAgICAgICAgICAgJFN1cnZleU9iamVjdC0+UHVibGljQW5zd2VyU2V0KAogICAgICAgICAgICAgICAgICAgIFB1YmxpY1N1cnZleUtleSA9PiAkUHVibGljU3VydmV5S2V5LAogICAgICAgICAgICAgICAgICAgIFF1ZXN0aW9uSUQgICAgICA9PiAkUXVlc3Rpb25JRCwKICAgICAgICAgICAgICAgICAgICBWb3RlVmFsdWUgICAgICAgPT4gJ1llcycsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPlB1YmxpY1N1cnZleUludmFsaWRTZXQoCiAgICAgICAgICAgICAgICAgICAgUHVibGljU3VydmV5S2V5ID0+ICRQdWJsaWNTdXJ2ZXlLZXksCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIENyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luLgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgTmF2aWdhdGUgdG8gem9vbSBzY3JlZW4gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleS4KICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleVpvb207U3VydmV5SUQ9JFN1cnZleUlEIik7CgogICAgICAgICMgQ2xpY2sgb24gc3VydmV5ICdTdGF0cyBEZXRhaWxzJyBhbmQgc3dpdGNoIHdpbmRvdy4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNZW51MDMwLVN0YXRzRGV0YWlscyIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIFdhaXQgdW50aWwgcG9wdXAgaXMgY29tcGxldGVseSBsb2FkZWQuCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAncmV0dXJuIHR5cGVvZihDb3JlKSA9PSAib2JqZWN0IiAmJiB0eXBlb2YoQ29yZS5BcHApID09ICJvYmplY3QiICYmIENvcmUuQXBwLlBhZ2VMb2FkQ29tcGxldGUnLAogICAgICAgICk7CgogICAgICAgICMgV2FpdCB1bnRpbCBkZXRhaWxzIGFyZSBwcmVzZW50LgogICAgICAgICRTZWxlbml1bS0+V2FpdEZvciggSmF2YVNjcmlwdCA9PiAncmV0dXJuIHR5cGVvZigkKSA9PT0gImZ1bmN0aW9uIiAmJiAkKCIuU2VlRGV0YWlscyIpLmxlbmd0aCcgKTsKCiAgICAgICAgIyBDaGVjayBzY3JlZW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSIsICAgICAgICAgICAgICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0aGVhZCB0ciB0aCIsICdjc3MnICk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICJ0YWJsZSB0Ym9keSB0ciB0ZCIsICdjc3MnICk7CgogICAgICAgICMgVmVyaWZ5IHN0YXRzIGFyZSBwcmVzZW50IGZvciBhbGwgdGlja2V0cy4KICAgICAgICBmb3IgbXkgJFRpY2tldE51bWJlciAoQFRpY2tldE51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFRpY2tldE51bWJlciApID4gLTEsCiAgICAgICAgICAgICAgICAiVGlja2V0IG51bWJlciAkVGlja2V0TnVtYmVyIGlzIGZvdW5kIgogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDbGljayB0byBzZWUgZGV0YWlscyBvZiBzdXJ2ZXkuCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vYVtjb250YWlucyhcQGhyZWYsICdUaWNrZXROdW1iZXI9JFRpY2tldE51bWJlcnNbMl0nICldIiktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgcXVlc3Rpb24gdmFsdWVzLgogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFF1ZXN0aW9uTmFtZSApID4gLTEsCiAgICAgICAgICAgICIkUXVlc3Rpb25OYW1lIGlzIGZvdW5kIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAnWWVzJyApID4gLTEsCiAgICAgICAgICAgICJBbnN3ZXIgJ1llcycgaXMgZm91bmQiCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiAnUHJldmlvdXMgVm90ZScgZXhpc3RzLgogICAgICAgICRTZWxmLT5GYWxzZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgicmV0dXJuIFwkKCcuU3VydmV5QXJyb3dMZWZ0JykubGVuZ3RoIiksCiAgICAgICAgICAgICInUHJldmlvdXMgVm90ZScgaXMgbm90IGZvdW5kIGZvciBmaXJzdCBhbnN3ZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBpZiAnTmV4dCBWb3RlJyBleGlzdHMuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93UmlnaHQnKS5sZW5ndGgiKSwKICAgICAgICAgICAgIidOZXh0IFZvdGUnIGlzIGZvdW5kIGZvciBmaXJzdCBhbnN3ZXIiCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayBvbiB0aGUgJ05leHQgVm90ZScgbGluay4KICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9hW2NvbnRhaW5zKFxAaHJlZiwgJ1RpY2tldE51bWJlcj0kVGlja2V0TnVtYmVyc1sxXScgKV0iKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIENoZWNrIGlmIHRpY2tldCBudW1iZXIgaXMgY29ycmVjdCwgYW5kIGxpbmtzIHRvICdQcmV2aW91cyBWb3RlJyBhbmQgJ05leHQgVm90ZScgZXhpc3QuCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJFRpY2tldE51bWJlcnNbMV0iICkgPiAtMSwKICAgICAgICAgICAgIlRpY2tldCBudW1iZXIgJFRpY2tldE51bWJlcnNbMV0gaXMgZm91bmQiCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93TGVmdCcpLmxlbmd0aCIpLAogICAgICAgICAgICAiJ1ByZXZpb3VzIFZvdGUnIGlzIGZvdW5kIGZvciBzZWNvbmQgYW5zd2VyIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgnLlN1cnZleUFycm93UmlnaHQnKS5sZW5ndGgiKSwKICAgICAgICAgICAgIidOZXh0IFZvdGUnIGlzIGZvdW5kIGZvciBzZWNvbmQgYW5zd2VyIgogICAgICAgICk7CgogICAgICAgICMgR28gdG8gbmV4dCB2b3RlLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2FbY29udGFpbnMoXEBocmVmLCAnVGlja2V0TnVtYmVyPSRUaWNrZXROdW1iZXJzWzBdJyApXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgaWYgdGlja2V0IG51bWJlciBpcyBjb3JyZWN0LCAnUHJldmlvdXMgVm90ZScgZXhpc3RzIGFuZCAnTmV4dCBWb3RlJyBkb2VzIG5vdCBleGlzdC4KICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICIkVGlja2V0TnVtYmVyc1swXSIgKSA+IC0xLAogICAgICAgICAgICAiVGlja2V0IG51bWJlciAkVGlja2V0TnVtYmVyc1swXSBpcyBmb3VuZCIKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5TdXJ2ZXlBcnJvd0xlZnQnKS5sZW5ndGgiKSwKICAgICAgICAgICAgIidQcmV2aW91cyBWb3RlJyBpcyBmb3VuZCBmb3IgdGhpcmQgYW5zd2VyIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPkZhbHNlKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJy5TdXJ2ZXlBcnJvd1JpZ2h0JykubGVuZ3RoIiksCiAgICAgICAgICAgICInTmV4dCBWb3RlJyBpcyBub3QgZm91bmQgZm9yIHRoaXJkIGFuc3dlciIKICAgICAgICApOwoKICAgICAgICAjIERlZmluZSBkYXRhIGZvciBjbGVhbnVwLgogICAgICAgIG15IEBDbGVhbkRhdGEgPSAoCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdRdWV1ZScsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X3F1ZXVlJywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdzdXJ2ZXlfaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnQW5zd2VyJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfYW5zd2VyJywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdxdWVzdGlvbl9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkUXVlc3Rpb25JRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1F1ZXN0aW9uJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcXVlc3Rpb24nLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3N1cnZleV9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdSZXF1ZXN0JywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcmVxdWVzdCcsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnc3VydmV5X2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1ZvdGUnLAogICAgICAgICAgICAgICAgVGFibGUgPT4gJ3N1cnZleV92b3RlJywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdxdWVzdGlvbl9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkUXVlc3Rpb25JRCwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1N1cnZleScsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5JywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdpZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBEZWxldGUgY3JlYXRlZCB0ZXN0IHRpY2tldHMuCiAgICAgICAgbXkgJFN1Y2Nlc3M7CiAgICAgICAgZm9yIG15ICRUaWNrZXRJRCAoQFRpY2tldElEcykgewogICAgICAgICAgICAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAiVGlja2V0SUQgJFRpY2tldElEIGlzIGRlbGV0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIERlbGV0ZSB0ZXN0IHN1cnZleSBkYXRhIGZyb20gREIuCiAgICAgICAgZm9yIG15ICREZWxldGUgKEBDbGVhbkRhdGEpIHsKICAgICAgICAgICAgJFN1Y2Nlc3MgPSAkREJPYmplY3QtPkRvKAogICAgICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gJERlbGV0ZS0+e1RhYmxlfSBXSEVSRSAkRGVsZXRlLT57U1FMSUR9ID0gPyIsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCIkRGVsZXRlLT57SUR9IiBdLAogICAgICAgICAgICApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAgICAgIiREZWxldGUtPntOYW1lfSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdXJ2ZXlJRCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAnU3VydmV5IERlc2NyaXB0aW9uJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAnc3Zpa0BleGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleVpvb20gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjcmVhdGUgbWVudSBtb2R1bGUgdGVzdCBwYXJhbXMKICAgICAgICBteSBATWVudU1vZHVsZSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiAiQmFjayIsCiAgICAgICAgICAgICAgICBJRCAgID0+ICJNZW51MDAwLUJhY2siLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICJFZGl0IEdlbmVyYWwgSW5mbyIsCiAgICAgICAgICAgICAgICBJRCAgID0+ICJNZW51MDEwLUVkaXRHZW5lcmFsSW5mbyIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gIkVkaXQgUXVlc3Rpb25zIiwKICAgICAgICAgICAgICAgIElEICAgPT4gIk1lbnUwMjAtRWRpdFF1ZXN0aW9ucyIsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gIkNoYW5nZSBTdGF0dXMiLAogICAgICAgICAgICAgICAgSUQgICA9PiAiTmV3U3RhdHVzIiwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIHN1cnZleSBtZW51IG1vZHVsZXMKICAgICAgICBmb3IgbXkgJFN1cnZleU1lbnUgKEBNZW51TW9kdWxlKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjJFN1cnZleU1lbnUtPntJRH0iLCAnY3NzJyApLAogICAgICAgICAgICAgICAgIlN1cnZleSBtZW51ICRTdXJ2ZXlNZW51LT57TmFtZX0gaXMgZm91bmQiCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBEQiBvYmplY3QKICAgICAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAgICAgIyBjbGVhbi11cCB0ZXN0IGNyZWF0ZWQgc3VydmV5IGRhdGEKICAgICAgICBteSAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleV9xdWV1ZSBXSEVSRSBzdXJ2ZXlfaWQgPSA/IiwKICAgICAgICAgICAgQmluZCA9PiBbIFwkU3VydmV5SUQgXSwKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3VjY2VzcywKICAgICAgICAgICAgIlN1cnZleS1RdWV1ZSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIHRlc3QgY3JlYXRlZCBzdXJ2ZXkKICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gIkRFTEVURSBGUk9NIHN1cnZleSBXSEVSRSBpZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICk7CiAgICB9Cik7CgoxOwo=
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwoKIyBnZXQgc2VsZW5pdW0gb2JqZWN0Cm15ICRTZWxlbml1bSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6U2VsZW5pdW0nKTsKCiRTZWxlbml1bS0+UnVuVGVzdCgKICAgIHN1YiB7CgogICAgICAgICMgZ2V0IGhlbHBlciBvYmplY3QKICAgICAgICBteSAkSGVscGVyID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCBzdXJ2ZXkKICAgICAgICBteSAkU3VydmV5VGl0bGUgPSAnU3VydmV5ICcgLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgIG15ICRTdXJ2ZXlJRCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTdXJ2ZXknKS0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICdTdXJ2ZXkgSW50cm9kdWN0aW9uJywKICAgICAgICAgICAgRGVzY3JpcHRpb24gICAgICAgICA9PiAnU3VydmV5IERlc2NyaXB0aW9uJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU2VuZGVyICA9PiAnc3Zpa0BleGFtcGxlLmNvbScsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblN1YmplY3QgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gU3ViamVjdCcsCiAgICAgICAgICAgIE5vdGlmaWNhdGlvbkJvZHkgICAgPT4gJ1N1cnZleSBOb3RpZmljYXRpb24gQm9keScsCiAgICAgICAgICAgIFF1ZXVlcyAgICAgICAgICAgICAgPT4gWzJdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdXJ2ZXlJRCwKICAgICAgICAgICAgIlN1cnZleSBJRCAkU3VydmV5SUQgaXMgY3JlYXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB1c2VyIGFuZCBsb2dpbgogICAgICAgIG15ICRUZXN0VXNlckxvZ2luID0gJEhlbHBlci0+VGVzdFVzZXJDcmVhdGUoCiAgICAgICAgICAgIEdyb3VwcyA9PiBbICdhZG1pbicsICd1c2VycycgXSwKICAgICAgICApIHx8IGRpZSAiRGlkIG5vdCBnZXQgdGVzdCB1c2VyIjsKCiAgICAgICAgJFNlbGVuaXVtLT5Mb2dpbigKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0FnZW50JywKICAgICAgICAgICAgVXNlciAgICAgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgICAgIFBhc3N3b3JkID0+ICRUZXN0VXNlckxvZ2luLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IHNjcmlwdCBhbGlhcwogICAgICAgIG15ICRTY3JpcHRBbGlhcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnU2NyaXB0QWxpYXMnKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleU92ZXJ2aWV3IG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfWluZGV4LnBsP0FjdGlvbj1BZ2VudFN1cnZleU92ZXJ2aWV3O1N1cnZleUlEPSRTdXJ2ZXlJRCIpOwoKICAgICAgICAjIGNoZWNrIG92ZXJ2aWV3IHNjcmVlbgogICAgICAgIGZvciBteSAkQ29sdW1ucyAoICdTdXJ2ZXkjJywgJ1RpdGxlJywgJ1N0YXR1cycsICdDcmVhdGVkJyApIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENvbHVtbnMgKSA+IC0xLAogICAgICAgICAgICAgICAgIkNvbHVtbiAkQ29sdW1ucyBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZvciB0ZXN0IGNyZWF0ZWQgc3VydmV5CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAiJFN1cnZleVRpdGxlIiApID4gLTEsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgaXMgZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IERCIG9iamVjdAogICAgICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgICAgICAjIGNsZWFuLXVwIHRlc3QgY3JlYXRlZCBzdXJ2ZXkgZGF0YQogICAgICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5X3F1ZXVlIFdIRVJFIHN1cnZleV9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiU3VydmV5LVF1ZXVlIGZvciAkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBjcmVhdGVkIHN1cnZleQogICAgICAgICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gc3VydmV5IFdIRVJFIGlkID0gPyIsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFN1cnZleUlEIF0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICIkU3VydmV5VGl0bGUgaXMgZGVsZXRlZCIsCiAgICAgICAgKTsKICAgIH0KKTsKCjE7Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCiMjIG5vIGNyaXRpYyAoTW9kdWxlczo6UmVxdWlyZUV4cGxpY2l0UGFja2FnZSkKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdXRmODsKCnVzZSB2YXJzIChxdygkU2VsZikpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhKTsKCiMgZ2V0IHNlbGVuaXVtIG9iamVjdApteSAkU2VsZW5pdW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OlNlbGVuaXVtJyk7CgokU2VsZW5pdW0tPlJ1blRlc3QoCiAgICBzdWIgewoKICAgICAgICAjIGdldCBoZWxwZXIgb2JqZWN0CiAgICAgICAgbXkgJEhlbHBlciA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6SGVscGVyJyk7CgogICAgICAgICMgZG8gbm90IHJlYWxseSBzZW5kIGVtYWlscwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTZW5kbWFpbE1vZHVsZScsCiAgICAgICAgICAgIFZhbHVlID0+ICdLZXJuZWw6OlN5c3RlbTo6RW1haWw6OkRvTm90U2VuZEVtYWlsJywKICAgICAgICApOwoKICAgICAgICAjIERvIG5vdCBjaGVjayBlbWFpbCBhZHJlc3NlcyBpbiB0aGlzIHRlc3QuCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0NoZWNrRW1haWxBZGRyZXNzZXMnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgc2V0IHNlbmQgcGVyaW9kIHRvIGFsd2F5cyBzZW5kIHN1cnZleQogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OlNlbmRQZXJpb2QnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5vIHNlbmQgY29uZGl0aW9uIGNoZWNrIGluIG5vcm1hbCB0ZXN0cwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIEtleSAgID0+ICdTdXJ2ZXk6OkNoZWNrU2VuZENvbmRpdGlvblRpY2tldFR5cGUnLAogICAgICAgICAgICBWYWx1ZSA9PiAwLAogICAgICAgICk7CgogICAgICAgICMgZG8gbm90IGNoZWNrIFJpY2hUZXh0CiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0Zyb250ZW5kOjpSaWNoVGV4dCcsCiAgICAgICAgICAgIFZhbHVlID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgc3VydmV5IG9iamVjdAogICAgICAgIG15ICRTdXJ2ZXlPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3VydmV5Jyk7CgogICAgICAgICMgY3JlYXRlIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgJFN1cnZlcnlJbnRyb2R1Y3Rpb24gICAgPSAnU3VydmV5IEludHJvZHVjdGlvbicsCiAgICAgICAgICAgIG15ICRTdXJ2ZXJ5RGVzY3JpcHRpb24gPSAnU3VydmV5IERlc2NyaXB0aW9uJywKICAgICAgICAgICAgbXkgJFN1cnZleVRpdGxlICAgICAgICA9ICdTdXJ2ZXkgJyAuICRIZWxwZXItPkdldFJhbmRvbUlEKCk7CiAgICAgICAgbXkgJFN1cnZleUlEID0gJFN1cnZleU9iamVjdC0+U3VydmV5QWRkKAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICBJbnRyb2R1Y3Rpb24gICAgICAgID0+ICRTdXJ2ZXJ5SW50cm9kdWN0aW9uLAogICAgICAgICAgICBEZXNjcmlwdGlvbiAgICAgICAgID0+ICRTdXJ2ZXJ5RGVzY3JpcHRpb24sCiAgICAgICAgICAgIE5vdGlmaWNhdGlvblNlbmRlciAgPT4gJ3F1YWxpdHlAdW5pdHRlc3QuY29tJywKICAgICAgICAgICAgTm90aWZpY2F0aW9uU3ViamVjdCA9PiAnU3VydmV5IE5vdGlmaWNhdGlvbiBTdWJqZWN0JywKICAgICAgICAgICAgTm90aWZpY2F0aW9uQm9keSAgICA9PiAnU3VydmV5IE5vdGlmaWNhdGlvbiBCb2R5JywKICAgICAgICAgICAgUXVldWVzICAgICAgICAgICAgICA9PiBbMl0sCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFN1cnZleUlELAogICAgICAgICAgICAiU3VydmV5IElEICRTdXJ2ZXlJRCBpcyBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBxdWVzdGlvbiBkYXRhCiAgICAgICAgbXkgQFF1ZXN0aW9uRGF0YSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSA9PiAnWWVzTm8nLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ1JhZGlvJywKICAgICAgICAgICAgICAgIEFuc3dlciA9PiBbICJSYWRpb09uZSIsICJSYWRpb1R3byIgXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSAgID0+ICdDaGVja2JveCcsCiAgICAgICAgICAgICAgICBBbnN3ZXIgPT4gWyAiQ2hlY2tCb3hPbmUiLCAiQ2hlY2tCb3hUd28iIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1RleHRhcmVhJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgVHlwZSAgID0+ICdOUFMnLAogICAgICAgICAgICAgICAgQW5zd2VyID0+IFsgIk5QU09uZSIsICJOUFNUd28iIF0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgREIgb2JqZWN0CiAgICAgICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgICAgICMgYWRkIHF1ZXN0aW9uIGFuZCBhbnN3ZXJzIHRvIHRlc3Qgc3VydmV5CiAgICAgICAgbXkgQFF1ZXN0aW9uTmFtZXM7CiAgICAgICAgbXkgQFF1ZXN0aW9uSURzOwogICAgICAgIG15IEBBbnN3ZXJOYW1lczsKICAgICAgICBteSBAQW5zd2VySURzOwogICAgICAgIGZvciBteSAkUXVlc3Rpb25zIChAUXVlc3Rpb25EYXRhKSB7CiAgICAgICAgICAgIG15ICRRdWVzdGlvbk5hbWUgPSAkUXVlc3Rpb25zLT57VHlwZX0gLiAkSGVscGVyLT5HZXRSYW5kb21JRCgpOwogICAgICAgICAgICAkU3VydmV5T2JqZWN0LT5RdWVzdGlvbkFkZCgKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICBTdXJ2ZXlJRCAgICAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgICAgICBRdWVzdGlvbiAgICAgICA9PiAkUXVlc3Rpb25OYW1lLAogICAgICAgICAgICAgICAgQW5zd2VyUmVxdWlyZWQgPT4gMSwKICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgID0+ICRRdWVzdGlvbnMtPntUeXBlfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2V0IHRlc3QgcXVlc3Rpb24gSUQKICAgICAgICAgICAgbXkgJFF1ZXN0aW9uUXVvdGVkID0gJERCT2JqZWN0LT5RdW90ZSgkUXVlc3Rpb25OYW1lKTsKICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgU1FMICA9PiAiU0VMRUNUIGlkIEZST00gc3VydmV5X3F1ZXN0aW9uIFdIRVJFIHF1ZXN0aW9uID0gPyIsCiAgICAgICAgICAgICAgICBCaW5kID0+IFsgXCRRdWVzdGlvblF1b3RlZCBdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIG15ICRRdWVzdGlvbklEOwogICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICRRdWVzdGlvbklEID0gJFJvd1swXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXNoIEBRdWVzdGlvbklEcywgJFF1ZXN0aW9uSUQ7CgogICAgICAgICAgICAjIGFkZCBhbnN3ZXIgZm9yIHJhZGlvIGFuZCBjaGVjay1ib3ggcXVlc3Rpb25zCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRRdWVzdGlvbnMtPntUeXBlfSBlcSAnUmFkaW8nCiAgICAgICAgICAgICAgICB8fCAkUXVlc3Rpb25zLT57VHlwZX0gZXEgJ0NoZWNrYm94JwogICAgICAgICAgICAgICAgfHwgJFF1ZXN0aW9ucy0+e1R5cGV9IGVxICdOUFMnCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJEFuc3dlcnMgKCBAeyAkUXVlc3Rpb25zLT57QW5zd2VyfSB9ICkgewogICAgICAgICAgICAgICAgICAgICRTdXJ2ZXlPYmplY3QtPkFuc3dlckFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgU3VydmV5SUQgICAgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBRdWVzdGlvbklEICAgICA9PiAkUXVlc3Rpb25JRCwKICAgICAgICAgICAgICAgICAgICAgICAgQW5zd2VyICAgICAgICAgPT4gJEFuc3dlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgIEFuc3dlclJlcXVpcmVkID0+IDEsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGVzdCBhbnN3ZXIgSUQKICAgICAgICAgICAgICAgICAgICBteSAkQW5zd2VyUXVvdGVkID0gJERCT2JqZWN0LT5RdW90ZSgkQW5zd2Vycyk7CiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgICAgICAgICAgICAgICAgICBTUUwgID0+ICJTRUxFQ1QgaWQgRlJPTSBzdXJ2ZXlfYW5zd2VyIFdIRVJFIGFuc3dlciA9ID8gQU5EIHF1ZXN0aW9uX2lkID0gPyIsCiAgICAgICAgICAgICAgICAgICAgICAgIEJpbmQgPT4gWyBcJEFuc3dlclF1b3RlZCwgXCRRdWVzdGlvbklEIF0KICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG15ICRBbnN3ZXJJRDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEFuc3dlcklEID0gJFJvd1swXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcHVzaCBAQW5zd2VySURzLCAgICRBbnN3ZXJJRDsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBBbnN3ZXJOYW1lcywgJEFuc3dlcnM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcHVzaCBAUXVlc3Rpb25OYW1lcywgJFF1ZXN0aW9uTmFtZTsKICAgICAgICB9CgogICAgICAgICMgc2V0IHRlc3Qgc3VydmV5IG9uIG1hc3RlciBzdGF0dXMKICAgICAgICBteSAkU3RhdHVzU2V0ID0gJFN1cnZleU9iamVjdC0+U3VydmV5U3RhdHVzU2V0KAogICAgICAgICAgICBTdXJ2ZXlJRCAgPT4gJFN1cnZleUlELAogICAgICAgICAgICBOZXdTdGF0dXMgPT4gJ01hc3RlcicKICAgICAgICApOwogICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAkU3RhdHVzU2V0LAogICAgICAgICAgICAiU3VydmV5IG1hc3RlciBzdGF0dXMgaXMgc2V0IiwKICAgICAgICApOwoKICAgICAgICAjIGdldCB0aWNrZXQgb2JqZWN0CiAgICAgICAgbXkgJFRpY2tldE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnKTsKCiAgICAgICAgIyBjcmVhdGUgdGVzdCB0aWNrZXQKICAgICAgICBteSAkVGlja2V0TnVtYmVyID0gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCk7CiAgICAgICAgbXkgJFRpY2tldElEICAgICA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICAgICAgVE4gICAgICAgICAgID0+ICRUaWNrZXROdW1iZXIsCiAgICAgICAgICAgIFRpdGxlICAgICAgICA9PiAiU2VsZW5pdW0gVGVzdCBUaWNrZXQiLAogICAgICAgICAgICBRdWV1ZSAgICAgICAgPT4gJ1JhdycsCiAgICAgICAgICAgIExvY2sgICAgICAgICA9PiAndW5sb2NrJywKICAgICAgICAgICAgUHJpb3JpdHkgICAgID0+ICczIG5vcm1hbCcsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnbmV3JywKICAgICAgICAgICAgQ3VzdG9tZXJJRCAgID0+ICdTZWxlbml1bUN1c3RvbWVyJywKICAgICAgICAgICAgQ3VzdG9tZXJVc2VyID0+ICd0ZXN0QGxvY2FsaG9zdC5jb20nLAogICAgICAgICAgICBPd25lcklEICAgICAgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFRpY2tldElELAogICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCBpcyBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICBteSAkQXJ0aWNsZUludGVybmFsQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnKS0+QmFja2VuZEZvckNoYW5uZWwoCiAgICAgICAgICAgIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBhZGQgYXJ0aWNsZSB0byB0ZXN0IGNyZWF0ZWQgdGlja2V0CiAgICAgICAgbXkgJEFydGljbGVJRCA9ICRBcnRpY2xlSW50ZXJuYWxCYWNrZW5kT2JqZWN0LT5BcnRpY2xlQ3JlYXRlKAogICAgICAgICAgICBUaWNrZXRJRCAgICAgICAgICAgICA9PiAkVGlja2V0SUQsCiAgICAgICAgICAgIElzVmlzaWJsZUZvckN1c3RvbWVyID0+IDAsCiAgICAgICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICdhZ2VudCcsCiAgICAgICAgICAgIEZyb20gICAgICAgICAgICAgICAgID0+ICdTb21lIEFnZW50IDxlbWFpbEBleGFtcGxlLmNvbT4nLAogICAgICAgICAgICBUbyAgICAgICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXIgQSA8Y3VzdG9tZXItYUBleGFtcGxlLmNvbT4nLAogICAgICAgICAgICBDYyAgICAgICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXIgQiA8Y3VzdG9tZXItYkBleGFtcGxlLmNvbT4nLAogICAgICAgICAgICBSZXBseVRvICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXIgQiA8Y3VzdG9tZXItYkBleGFtcGxlLmNvbT4nLAogICAgICAgICAgICBTdWJqZWN0ICAgICAgICAgICAgICA9PiAnc29tZSBzaG9ydCBkZXNjcmlwdGlvbicsCiAgICAgICAgICAgIEJvZHkgICAgICAgICAgICAgICAgID0+ICd0aGUgbWVzc2FnZSB0ZXh0IFBlcmwgbW9kdWxlcyBwcm92aWRlIGEgcmFuZ2Ugb2YnLAogICAgICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD1JU08tODg1OS0xNScsCiAgICAgICAgICAgIEhpc3RvcnlUeXBlICAgICAgICAgID0+ICdPd25lclVwZGF0ZScsCiAgICAgICAgICAgIEhpc3RvcnlDb21tZW50ICAgICAgID0+ICdTb21lIGZyZWUgdGV4dCEnLAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICBOb0FnZW50Tm90aWZ5ICAgICAgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRUaWNrZXRJRCwKICAgICAgICAgICAgIkFydGljbGUgSUQgJEFydGljbGVJRCBpcyBjcmVhdGVkIiwKICAgICAgICApOwoKICAgICAgICAjIHNlbmQgc3VydmV5IHJlcXVlc3QKICAgICAgICBteSAkUmVxdWVzdCA9ICRTdXJ2ZXlPYmplY3QtPlJlcXVlc3RTZW5kKAogICAgICAgICAgICBUaWNrZXRJRCA9PiAkVGlja2V0SUQsCiAgICAgICAgKTsKICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgJFJlcXVlc3QsCiAgICAgICAgICAgICJTdXJ2ZXkgcmVxdWVzdCBpcyBzZW50IiwKICAgICAgICApOwoKICAgICAgICAjIGdldCBwdWJsaWMgc3VydmV5IGtleSBmcm9tIHRlc3Qgc3VydmV5IHJlcXVlc3QKICAgICAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgICAgIFNRTCAgPT4gIlNFTEVDVCBwdWJsaWNfc3VydmV5X2tleSBGUk9NIHN1cnZleV9yZXF1ZXN0IFdIRVJFIHN1cnZleV9pZCA9ID8iLAogICAgICAgICAgICBCaW5kID0+IFsgXCRTdXJ2ZXlJRCBdLAogICAgICAgICk7CiAgICAgICAgbXkgJFB1YmxpY1N1cnZleUtleTsKICAgICAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAgICAgJFB1YmxpY1N1cnZleUtleSA9ICRSb3dbMF07CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzY3JpcHQgYWxpYXMKICAgICAgICBteSAkU2NyaXB0QWxpYXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1NjcmlwdEFsaWFzJyk7CgogICAgICAgICMgbmF2aWdhdGUgdG8gUHVibGljU3VydmV5IG9mIGNyZWF0ZWQgdGVzdCBzdXJ2ZXkKICAgICAgICAkU2VsZW5pdW0tPlZlcmlmaWVkR2V0KCIke1NjcmlwdEFsaWFzfXB1YmxpYy5wbD9BY3Rpb249UHVibGljU3VydmV5O1B1YmxpY1N1cnZleUtleT0kUHVibGljU3VydmV5S2V5Iik7CgogICAgICAgICMgZ2V0IHRlc3QgZGF0YQogICAgICAgIG15IEBUZXN0ID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnVGl0bGUnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJFN1cnZleVRpdGxlLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnVGlja2V0IE51bWJlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVGlja2V0TnVtYmVyLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnJywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRTdXJ2ZXJ5SW50cm9kdWN0aW9uLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVlc3Rpb24nLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gW0BRdWVzdGlvbk5hbWVzXSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ0Fuc3dlcicsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBbQEFuc3dlck5hbWVzXSwKICAgICAgICAgICAgfSwKCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayB0ZXN0IHN1cnZleSB2YWx1ZXMKICAgICAgICBmb3IgbXkgJENoZWNrVmFsdWUgKEBUZXN0KSB7CiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkQ2hlY2tWYWx1ZS0+e1ZhbHVlfSApICkgewogICAgICAgICAgICAgICAgZm9yICggQHsgJENoZWNrVmFsdWUtPntWYWx1ZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgoICRTZWxlbml1bS0+Z2V0X3BhZ2Vfc291cmNlKCksICRfICkgPiAtMSwKICAgICAgICAgICAgICAgICAgICAgICAgIiRDaGVja1ZhbHVlLT57TmFtZX0gJF8gaXMgZm91bmQiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJENoZWNrVmFsdWUtPntWYWx1ZX0gKSA+IC0xLAogICAgICAgICAgICAgICAgICAgICIkQ2hlY2tWYWx1ZS0+e05hbWV9ICRDaGVja1ZhbHVlLT57VmFsdWV9IGlzIGZvdW5kIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgZ2V0IHZvdGUgZGF0YQogICAgICAgIG15IEBWb3RlRGF0YSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgPT4gIjEkUXVlc3Rpb25JRHNbMF1ZZXMiLAogICAgICAgICAgICAgICAgQ2hlY2sgPT4gJ1llcycKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgPT4gIjIkUXVlc3Rpb25JRHNbMV0kQW5zd2VySURzWzBdIiwKICAgICAgICAgICAgICAgIENoZWNrID0+ICdSYWRpb09uZScKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgPT4gIjMkQW5zd2VySURzWzJdIiwKICAgICAgICAgICAgICAgIENoZWNrID0+ICJDaGVja0JveE9uZSIKICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgSUQgICAgID0+ICIkUXVlc3Rpb25JRHNbM10iLAogICAgICAgICAgICAgICAgQW5zd2VyID0+ICdTZWxlbml1bSBTdXJ2ZXkgQW5zd2VyJywKICAgICAgICAgICAgICAgIENoZWNrICA9PiAnU2VsZW5pdW0gU3VydmV5IEFuc3dlcicsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIElEICAgID0+ICI1JFF1ZXN0aW9uSURzWzRdJEFuc3dlcklEc1s0XSIsCiAgICAgICAgICAgICAgICBDaGVjayA9PiAnTlBTT25lJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGZpbGwgaW4gc3VydmV5IHF1ZXN0aW9ucwogICAgICAgIGZvciBteSAkU3VydmV5Vm90ZSAoQFZvdGVEYXRhKSB7CiAgICAgICAgICAgIGlmICggJFN1cnZleVZvdGUtPntBbnN3ZXJ9ICkgewogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjUmljaFRleHQkU3VydmV5Vm90ZS0+e0lEfSIsICdjc3MnICktPnNlbmRfa2V5cyggJFN1cnZleVZvdGUtPntBbnN3ZXJ9ICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9pbnB1dFtcQGlkPSdQdWJsaWNTdXJ2ZXlWb3RlJFN1cnZleVZvdGUtPntJRH0nXSIpLT5WZXJpZmllZENsaWNrKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgc3VibWl0IHZvdGUKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCgiLy9idXR0b25bXEB2YWx1ZT0nRmluaXNoJ11bXEB0eXBlPSdzdWJtaXQnXSIpLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgdmVyaWZ5IHBvc3Qgdm90ZSBtZXNzYWdlcwogICAgICAgIG15ICRQb3N0Vm90ZSA9IFsgIlN1cnZleSBJbmZvcm1hdGlvbiIsICJUaGFuayB5b3UgZm9yIHlvdXIgZmVlZGJhY2suIiwgIlRoZSBzdXJ2ZXkgaXMgZmluaXNoZWQuIiBdOwogICAgICAgIGZvciBteSAkUG9zdFZvdGVNZXNzYWdlICggQHskUG9zdFZvdGV9ICkgewogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgIGluZGV4KCAkU2VsZW5pdW0tPmdldF9wYWdlX3NvdXJjZSgpLCAkUG9zdFZvdGVNZXNzYWdlICkgPiAtMSwKICAgICAgICAgICAgICAgICInJFBvc3RWb3RlTWVzc2FnZScgbWVzc2FnZSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSB0ZXN0IHVzZXIgYW5kIGxvZ2luCiAgICAgICAgbXkgJFRlc3RVc2VyTG9naW4gPSAkSGVscGVyLT5UZXN0VXNlckNyZWF0ZSgKICAgICAgICAgICAgR3JvdXBzID0+IFsgJ2FkbWluJywgJ3VzZXJzJyBdLAogICAgICAgICkgfHwgZGllICJEaWQgbm90IGdldCB0ZXN0IHVzZXIiOwoKICAgICAgICAkU2VsZW5pdW0tPkxvZ2luKAogICAgICAgICAgICBUeXBlICAgICA9PiAnQWdlbnQnLAogICAgICAgICAgICBVc2VyICAgICA9PiAkVGVzdFVzZXJMb2dpbiwKICAgICAgICAgICAgUGFzc3dvcmQgPT4gJFRlc3RVc2VyTG9naW4sCiAgICAgICAgKTsKCiAgICAgICAgIyBuYXZpZ2F0ZSB0byBBZ2VudFN1cnZleVpvb20gb2YgY3JlYXRlZCB0ZXN0IHN1cnZleQogICAgICAgICRTZWxlbml1bS0+VmVyaWZpZWRHZXQoIiR7U2NyaXB0QWxpYXN9aW5kZXgucGw/QWN0aW9uPUFnZW50U3VydmV5Wm9vbTtTdXJ2ZXlJRD0kU3VydmV5SUQiKTsKCiAgICAgICAgIyBjbGljayBvbiAnU3RhdHMgRGV0YWlscycgYW5kIHN3aXRjaCB3aW5kb3cKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIiNNZW51MDMwLVN0YXRzRGV0YWlscyIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKCBXaW5kb3dDb3VudCA9PiAyICk7CiAgICAgICAgbXkgJEhhbmRsZXMgPSAkU2VsZW5pdW0tPmdldF93aW5kb3dfaGFuZGxlcygpOwogICAgICAgICRTZWxlbml1bS0+c3dpdGNoX3RvX3dpbmRvdyggJEhhbmRsZXMtPlsxXSApOwoKICAgICAgICAjIHdhaXQgdW50aWwgcGFnZSBoYXMgbG9hZGVkLCBpZiBuZWNlc3NhcnkKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiLlNlZURldGFpbHMiKS5sZW5ndGgnICk7CgogICAgICAgICMgY2xpY2sgdG8gc2VlIGRldGFpbHMgb2Ygc3RhdHMKICAgICAgICAkU2VsZW5pdW0tPmZpbmRfZWxlbWVudCggIi5TZWVEZXRhaWxzIiwgJ2NzcycgKS0+VmVyaWZpZWRDbGljaygpOwoKICAgICAgICAjIHZlcmlmeSB2b3RlIGRldGFpbHMKICAgICAgICBmb3IgbXkgJFZvdGVEZXRhaWxzIChAVm90ZURhdGEpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICBpbmRleCggJFNlbGVuaXVtLT5nZXRfcGFnZV9zb3VyY2UoKSwgJFZvdGVEZXRhaWxzLT57Q2hlY2t9ICkgPiAtMSwKICAgICAgICAgICAgICAgICJWb3RlICRWb3RlRGV0YWlscy0+e0NoZWNrfSBpcyBmb3VuZCIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBjbGVhbi11cCBkYXRhCiAgICAgICAgbXkgQENsZWFuRGF0YSA9ICgKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSAgPT4gJ1F1ZXVlcycsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X3F1ZXVlJywKICAgICAgICAgICAgICAgIFNRTElEID0+ICdzdXJ2ZXlfaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gJFN1cnZleUlELAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnQW5zd2VycycsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X2Fuc3dlcicsCiAgICAgICAgICAgICAgICBTUUxJRCA9PiAnaWQnLAogICAgICAgICAgICAgICAgSUQgICAgPT4gW0BBbnN3ZXJJRHNdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnUXVlc3Rpb25zJywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXlfcXVlc3Rpb24nLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3N1cnZleV9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdSZXF1ZXN0cycsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X3JlcXVlc3QnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ3N1cnZleV9pZCcsCiAgICAgICAgICAgICAgICBJRCAgICA9PiAkU3VydmV5SUQsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgID0+ICdWb3RlcycsCiAgICAgICAgICAgICAgICBUYWJsZSA9PiAnc3VydmV5X3ZvdGUnLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+IFtAUXVlc3Rpb25JRHNdLAogICAgICAgICAgICB9LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICA9PiAnU3VydmV5JywKICAgICAgICAgICAgICAgIFRhYmxlID0+ICdzdXJ2ZXknLAogICAgICAgICAgICAgICAgU1FMSUQgPT4gJ2lkJywKICAgICAgICAgICAgICAgIElEICAgID0+ICRTdXJ2ZXlJRCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBteSAkU3VjY2VzczsKCiAgICAgICAgIyBkZWxldGUgdGVzdCBkYXRhIGZyb20gREIKICAgICAgICBmb3IgbXkgJERlbGV0ZSAoQENsZWFuRGF0YSkgewogICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERlbGV0ZS0+e0lEfSApICkgewoKICAgICAgICAgICAgICAgIG15ICRJRHMgPSBqb2luICcsICcsIEB7ICREZWxldGUtPntJRH0gfTsKICAgICAgICAgICAgICAgIG15ICRTUUxXaGVyZSA9ICJXSEVSRSAkRGVsZXRlLT57U1FMSUR9IElOICggJElEcyApIjsKCiAgICAgICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICAgICAgU1FMID0+ICJERUxFVEUgRlJPTSAkRGVsZXRlLT57VGFibGV9ICRTUUxXaGVyZSIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgIiREZWxldGUtPntOYW1lfSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU3VjY2VzcyA9ICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgICAgICAgICAgU1FMICA9PiAiREVMRVRFIEZST00gJERlbGV0ZS0+e1RhYmxlfSBXSEVSRSAkRGVsZXRlLT57U1FMSUR9ID0gPyIsCiAgICAgICAgICAgICAgICAgICAgQmluZCA9PiBbIFwkRGVsZXRlLT57SUR9IF0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAgICAgJFN1Y2Nlc3MsCiAgICAgICAgICAgICAgICAgICAgIiREZWxldGUtPntOYW1lfSBmb3IgJFN1cnZleVRpdGxlIGlzIGRlbGV0ZWQiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBkZWxldGUgdGVzdCB0aWNrZXQKICAgICAgICAkU3VjY2VzcyA9ICRUaWNrZXRPYmplY3QtPlRpY2tldERlbGV0ZSgKICAgICAgICAgICAgVGlja2V0SUQgPT4gJFRpY2tldElELAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICRTdWNjZXNzLAogICAgICAgICAgICAiVGlja2V0IElEICRUaWNrZXRJRCBpcyBkZWxldGVkIiwKICAgICAgICApOwogICAgfQopOwoKMTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgT1RSUyBBRywgaHR0cDovL290cnMuY29tL1xuIjsKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyBpbiBBZ2VudFN1cnZleUFkZCBhbmQgQWdlbnRTdXJ2ZXlFZGl0LgogKi8KU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICB2YXIgQWN0aW9uID0gJCgnaW5wdXRbbmFtZT0iQWN0aW9uIl0nKS52YWwoKTsKICAgIHZhciBEcm9wZG93bklEOwogICAgdmFyIEVycm9yc09iajsKCiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAZGVzY3JpcHRpb24KICAgICAqICAgICAgSW5pdGlhbGl6ZSBidWlsZGluZyB0aGUgc2VuZCBjb25kaXRpb25zLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgIHZhciAkRHJvcGRvd24gPSAkKCcjQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucycpLAogICAgICAgICAgICBDdXN0b21lclVzZXJDb25kaXRpb25zID0gQ29yZS5Db25maWcuR2V0KCJKU0RhdGEuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucyIpLAogICAgICAgICAgICBFcnJvcnMgPSBDb3JlLkNvbmZpZy5HZXQoIkpTRGF0YS5DdXN0b21lclVzZXJDb25kaXRpb25FcnJvcnMiKTsKCiAgICAgICAgaWYgKGlzSlF1ZXJ5T2JqZWN0KCREcm9wZG93bikpIHsKCiAgICAgICAgICAgIERyb3Bkb3duSUQgPSAkRHJvcGRvd24ucHJvcCgnaWQnKTsKCiAgICAgICAgICAgICREcm9wZG93bi5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIEZpZWxkTmFtZSA9ICREcm9wZG93bi52YWwoKTsKCiAgICAgICAgICAgICAgICAvLyBBZGQgbmV3IGZpZWxkIGZvciBGaWVsZE5hbWUuCiAgICAgICAgICAgICAgICBUYXJnZXROUy5BZGRDb25kaXRpb24oRmllbGROYW1lKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnc3Bhbi5SZW1vdmVCdXR0b25DdXN0b21lckZpZWxkJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgLy8gR2V0IHdob2xlICJjb250YWluZXIiIGFuZCByZW1vdmUgaXQuCiAgICAgICAgICAgICAgICB2YXIgJEZpZWxkID0gJCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5wYXJlbnQoKTsKCiAgICAgICAgICAgICAgICBUYXJnZXROUy5SZW1vdmVDb25kaXRpb24oJEZpZWxkKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnc3Bhbi5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbicsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICAvLyBHZXQgZmlyc3QgY29uZGl0aW9uIHRvIGNsb25lIGl0IChlbXB0eSkuCiAgICAgICAgICAgICAgICB2YXIgJEZpZWxkID0gJCh0aGlzKS5wYXJlbnQoKS5wYXJlbnQoKS5jaGlsZHJlbignbGknKS5maXJzdCgpOwogICAgICAgICAgICAgICAgdmFyIEZpZWxkTmFtZSA9ICQodGhpcykucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucGFyZW50KCkucHJvcCgnaWQnKTsKICAgICAgICAgICAgICAgIFRhcmdldE5TLkFkZENvbmRpdGlvbkxpbmUoJEZpZWxkKTsKICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlc2V0TGlzdEl0ZW1JRHMoRmllbGROYW1lKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKGRvY3VtZW50KS5vbignY2xpY2snLCAnc3Bhbi5SZW1vdmVCdXR0b25DdXN0b21lckNvbmRpdGlvbicsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICB2YXIgJEZpZWxkID0gJCh0aGlzKS5wYXJlbnQoKTsKICAgICAgICAgICAgICAgIHZhciBGaWVsZE5hbWUgPSAkKHRoaXMpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnBhcmVudCgpLnByb3AoJ2lkJyk7CiAgICAgICAgICAgICAgICBUYXJnZXROUy5SZW1vdmVDb25kaXRpb25MaW5lKCRGaWVsZCk7CiAgICAgICAgICAgICAgICBUYXJnZXROUy5SZXNldExpc3RJdGVtSURzKEZpZWxkTmFtZSk7CiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ2NsaWNrJywgJ2lucHV0LkN1c3RvbWVyVXNlckNvbmRpdGlvbnNDaGVja2JveCcsIGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpOwogICAgICAgICAgICAgICAgJHRoaXMucHJldignaW5wdXRbdHlwZT0iaGlkZGVuIl0nKS52YWwoKCgkdGhpcy5wcm9wKCdjaGVja2VkJykpID8gMSA6IDApKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBpZiAoQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucykgewoKICAgICAgICAgICAgICAgIGlmIChFcnJvcnMpIHsKCiAgICAgICAgICAgICAgICAgICAgRXJyb3JzT2JqID0gRXJyb3JzOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlc3RvcmVDb25kaXRpb25zKEN1c3RvbWVyVXNlckNvbmRpdGlvbnMpOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIEFkZENvbmRpdGlvbgogICAgICogQG1lbWJlcm9mIFN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7c3RyaW5nfSBGaWVsZE5hbWUgLSBUaGUgZmllbGQgdGhhdCBzaG91bGQgYmUgYWRkZWQKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBDb25kaXRpb25zIC0gVGhlIGNvbmRpdGlvbnMgZm9yIHRoZSBmaWVsZCB3aGljaCBzaG91bGQgYmUgaW5zZXJ0ZWQgKGZvciBlZGl0KQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEFkZHMgYSBuZXcgZmllbGQgdG8gdGhlIGNvbmRpdGlvbnMgYW5kIGluc2VydHMgc2F2ZWQgY29uZGl0aW9ucy4KICAgICAqLwogICAgVGFyZ2V0TlMuQWRkQ29uZGl0aW9uID0gZnVuY3Rpb24gKEZpZWxkTmFtZSwgQ29uZGl0aW9ucykgewoKICAgICAgICB2YXIgJENsb25lLCAkQ2hlY2tib3gsICRMYWJlbCwgJElucHV0OwogICAgICAgIHZhciBOZXdOYW1lLCBOZXdDaGVja2JveElELCBOZXdJbnB1dElEOwogICAgICAgIHZhciBEYXRhOwogICAgICAgIHZhciBTZWxlY3RlZFZhbHVlczsKCiAgICAgICAgaWYgKCFGaWVsZE5hbWUpIHJldHVybjsKCiAgICAgICAgJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnKS52YWwoJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnKS52YWwoKSArICcsJyArIEZpZWxkTmFtZSk7CgogICAgICAgICRDbG9uZSA9ICQoJyNUZW1wbGF0ZUxldmVsMScpLmNsb25lKCk7CgogICAgICAgIC8vIENoYW5nZSBuZWVkZWQgdGV4dHMsIElEcywgLi4uCiAgICAgICAgJENsb25lLmZpbmQoJ3N0cm9uZycpLnRleHQoRmllbGROYW1lKTsKCiAgICAgICAgJENoZWNrYm94ID0gJENsb25lLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKTsKICAgICAgICAkTGFiZWwgICAgPSAkQ2xvbmUuZmluZCgnbGFiZWwnKTsKICAgICAgICAkSW5wdXQgICAgPSAkQ2xvbmUuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdJyk7CgogICAgICAgIE5ld05hbWUgICAgICAgPSBGaWVsZE5hbWU7CiAgICAgICAgTmV3Q2hlY2tib3hJRCA9IEZpZWxkTmFtZSArICdDaGVja2JveDEnOwogICAgICAgIE5ld0lucHV0SUQgICAgPSBGaWVsZE5hbWUgKyAnSW5wdXQxJzsKCiAgICAgICAgLy8gVGhlIGxhYmVsIHNob3VsZCBiZSBhYmxlIHRvIGNoZWNrL3VuY2hlY2sgdGhlIGNoZWNrYm94LgogICAgICAgICRDaGVja2JveAogICAgICAgICAgICAucHJvcCgnaWQnLCBOZXdDaGVja2JveElEKQogICAgICAgICAgICAucHJldignaW5wdXRbdHlwZT0iaGlkZGVuIl0nKS5wcm9wKCduYW1lJywgTmV3TmFtZSArICdDaGVja2JveCcpOwogICAgICAgICRMYWJlbC5wcm9wKCdmb3InLCBOZXdDaGVja2JveElEKTsKCiAgICAgICAgJElucHV0CiAgICAgICAgICAgIC5wcm9wKCduYW1lJywgTmV3TmFtZSkKICAgICAgICAgICAgLnByb3AoJ2lkJywgTmV3SW5wdXRJRCk7CgogICAgICAgICRDbG9uZQogICAgICAgICAgICAucHJvcCgnaWQnLCBGaWVsZE5hbWUpCiAgICAgICAgICAgIC5maW5kKCdkaXYuVG9vbHRpcEVycm9yTWVzc2FnZScpLnByb3AoJ2lkJywgTmV3SW5wdXRJRCArICdTZXJ2ZXJFcnJvcicpLmVuZCgpCiAgICAgICAgICAgIC5pbnNlcnRCZWZvcmUoJyNUZW1wbGF0ZUxldmVsMS5GaWVsZC5IaWRkZW4nKTsKCiAgICAgICAgLy8gUGVyZm9ybSBBSkFYIGNhbGwgdG8gY2hlY2sgd2hldGhlciB0aGUgZmllbGQgaXMgYW4gaW5wdXQgb3Igc2VsZWN0IGZpZWxkLgogICAgICAgIERhdGEgPSB7CiAgICAgICAgICAgIEFjdGlvbjogQWN0aW9uLAogICAgICAgICAgICBTdWJhY3Rpb246ICdBSkFYUmVxdWVzdCcsCiAgICAgICAgICAgIEZpZWxkTmFtZTogRmllbGROYW1lCiAgICAgICAgfTsKCiAgICAgICAgLy8gQWRkIHZhbHVlcyBmcm9tIGNvbmRpdGlvbnMgYXMgc2VsZWN0ZWQgdmFsdWVzIGZvciBzZWxlY3Rpb24uCiAgICAgICAgaWYgKHR5cGVvZiBDb25kaXRpb25zICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICBTZWxlY3RlZFZhbHVlcyA9IFtdOwogICAgICAgICAgICBPYmplY3Qua2V5cyhDb25kaXRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChGaWVsZCkgewoKICAgICAgICAgICAgICAgIENvbmRpdGlvbnNbRmllbGRdLmZvckVhY2goZnVuY3Rpb24gKENvbmRpdGlvbikgewoKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIERhdGEuQ2hlY2tib3hWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YS5DaGVja2JveFZhbHVlID0gQ29uZGl0aW9uLk5lZ2F0aW9uOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlcy5wdXNoKENvbmRpdGlvbi5SZWdFeHBWYWx1ZSk7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICBEYXRhLlNlbGVjdGVkVmFsdWVzID0gU2VsZWN0ZWRWYWx1ZXM7CiAgICAgICAgfQoKICAgICAgICAvLyBDYWxsIHRoZSBBSkFYIGZ1bmN0aW9uCiAgICAgICAgQ29yZS5BSkFYLkZ1bmN0aW9uQ2FsbChDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLCBEYXRhLCBmdW5jdGlvbiAoUmVzcG9uc2UpIHsKCiAgICAgICAgICAgIGlmIChSZXNwb25zZS5TdWNjZXNzKSB7CgogICAgICAgICAgICAgICAgLy8gSW5zZXJ0IGFuZCBtb2Rlcm5pemUgZmllbGQuCiAgICAgICAgICAgICAgICAkKFJlc3BvbnNlLlNlbGVjdEZpZWxkKQogICAgICAgICAgICAgICAgICAgIC5wcm9wKCduYW1lJywgTmV3TmFtZSkKICAgICAgICAgICAgICAgICAgICAucHJvcCgnaWQnLCBOZXdJbnB1dElEKQogICAgICAgICAgICAgICAgICAgIC5pbnNlcnRBZnRlcigkQ2hlY2tib3gpOwoKICAgICAgICAgICAgICAgICRDaGVja2JveAogICAgICAgICAgICAgICAgICAgIC5wcm9wKCdjaGVja2VkJywgRGF0YS5DaGVja2JveFZhbHVlKQogICAgICAgICAgICAgICAgICAgIC5wcmV2KCdpbnB1dFt0eXBlPSJoaWRkZW4iXScpLnZhbCgoKERhdGEuQ2hlY2tib3hWYWx1ZSkgPyAxIDogMCkpOwoKICAgICAgICAgICAgICAgICRJbnB1dC5yZW1vdmUoKTsKCiAgICAgICAgICAgICAgICAkQ2xvbmUuZmluZCgnLkFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uJykuYWRkQ2xhc3MoJ0hpZGRlbicpLmVuZCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgLy8gQWRkIGEgbmV3IGxpbmUgZm9yIGVhY2ggY29uZGl0aW9uIChmb3IgaW5wdXQgZmllbGRzKS4KICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgQ29uZGl0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHsKCiAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoQ29uZGl0aW9ucykuZm9yRWFjaChmdW5jdGlvbiAoRmllbGQpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmRpdGlvbnNbRmllbGRdLmZvckVhY2goZnVuY3Rpb24gKENvbmRpdGlvbikgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciAkRmllbGQgPSAkKCcjJyArIEZpZWxkICsgJyB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaS5EYXRhSXRlbSB1bCBsaScpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKENvbmRpdGlvbi5DbG9uZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZCA9ICRGaWVsZC5maXJzdCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkID0gJEZpZWxkLmxhc3QoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUYXJnZXROUy5BZGRDb25kaXRpb25MaW5lKCRGaWVsZCwgQ29uZGl0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXNldCB0aGUgY29ycmVjdCBJRHMgZm9yIHRoZSBlbnRpcmUgZmllbGQuCiAgICAgICAgICAgICAgICAgICAgICAgIFRhcmdldE5TLlJlc2V0TGlzdEl0ZW1JRHMoRmllbGQpOwogICAgICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkQ2xvbmUucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpOwoKICAgICAgICAgICAgaWYgKFJlc3BvbnNlLlN1Y2Nlc3MpIHsKICAgICAgICAgICAgICAgIENvcmUuVUkuSW5wdXRGaWVsZHMuQWN0aXZhdGUoJENsb25lKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKEVycm9yc09iaiAmJiBFcnJvcnNPYmpbRmllbGROYW1lXSkgewoKICAgICAgICAgICAgICAgIFRhcmdldE5TLlNob3dFcnJvcnMoRmllbGROYW1lLCBFcnJvcnNPYmpbRmllbGROYW1lXSk7CiAgICAgICAgICAgIH0KICAgICAgICB9LCAnanNvbicpOwoKICAgICAgICAvLyBSZW1vdmUgRmllbGROYW1lIGZyb20gZHJvcGRvd24gdG8gcHJldmVudCBtdWx0aXBsZSBlbnRyaWVzLgogICAgICAgICQoJyMnICsgRHJvcGRvd25JRCkKICAgICAgICAgICAgLmZpbmQoIm9wdGlvblt2YWx1ZT0nIiArIEZpZWxkTmFtZSArICInXSIpLnJlbW92ZSgpLmVuZCgpCiAgICAgICAgICAgIC52YWwoJycpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIFJlbW92ZUNvbmRpdGlvbgogICAgICogQG1lbWJlcm9mIFN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRmllbGQgLSBUaGUgZmllbGQgdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFJlbW92ZXMgdGhlIGZpZWxkIGZyb20gdGhlIGNvbmRpdGlvbnMuCiAgICAgKi8KICAgIFRhcmdldE5TLlJlbW92ZUNvbmRpdGlvbiA9IGZ1bmN0aW9uICgkRmllbGQpIHsKCiAgICAgICAgdmFyIEZpZWxkTmFtZSA9ICRGaWVsZC5maW5kKCdzdHJvbmcnKS50ZXh0KCk7CiAgICAgICAgdmFyIEZpZWxkc1ZhbCA9ICQoJyNDdXN0b21lclVzZXJDb25kaXRpb25zRmllbGRzJykudmFsKCk7CiAgICAgICAgRmllbGRzVmFsID0gRmllbGRzVmFsLnJlcGxhY2UoJywnICsgRmllbGROYW1lLCAnJyk7CiAgICAgICAgJCgnI0N1c3RvbWVyVXNlckNvbmRpdGlvbnNGaWVsZHMnKS52YWwoRmllbGRzVmFsKTsKCiAgICAgICAgLy8gQWRkIEZpZWxkTmFtZSB0byBkcm9wZG93bi4KICAgICAgICAkKCcjJyArIERyb3Bkb3duSUQpLmFwcGVuZCgKICAgICAgICAgICAgJCgnPG9wdGlvbj48L29wdGlvbj4nKS52YWwoRmllbGROYW1lKS5odG1sKEZpZWxkTmFtZSkKICAgICAgICApOwoKICAgICAgICAkRmllbGQucmVtb3ZlKCk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgQWRkQ29uZGl0aW9uTGluZQogICAgICogQG1lbWJlcm9mIFN1cnZleS5BZ2VudC5DdXN0b21lclVzZXJDb25kaXRpb25zCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBwYXJhbSB7alF1ZXJ5T2JqZWN0fSAkRmllbGQgLSBUaGUgZmllbGQgZm9yIHdoaWNoIGEgbGluZSBzaG91bGQgYmUgYWRkZWQKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBDb25kaXRpb24gLSBUaGUgY29uZGl0aW9uIHdoaWNoIHNob3VsZCBiZSBhZGRlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEFkZHMgYSBuZXcgY29uZGl0aW9uIGxpbmUgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGQuCiAgICAgKi8KICAgIFRhcmdldE5TLkFkZENvbmRpdGlvbkxpbmUgPSBmdW5jdGlvbiAoJEZpZWxkLCBDb25kaXRpb24pIHsKCiAgICAgICAgdmFyICRDbG9uZTsKICAgICAgICB2YXIgQ2xvbmVGaWVsZCA9IHRydWU7CiAgICAgICAgdmFyIFRleHRWYWx1ZSA9ICcnOwogICAgICAgIHZhciBDaGVja2JveFZhbHVlID0gZmFsc2U7CgogICAgICAgIGlmICh0eXBlb2YgQ29uZGl0aW9uICE9PSAndW5kZWZpbmVkJykgewoKICAgICAgICAgICAgQ2xvbmVGaWVsZCA9IENvbmRpdGlvbi5DbG9uZTsKICAgICAgICAgICAgVGV4dFZhbHVlID0gQ29uZGl0aW9uLlJlZ0V4cFZhbHVlOwogICAgICAgICAgICBDaGVja2JveFZhbHVlID0gQ29uZGl0aW9uLk5lZ2F0aW9uOwogICAgICAgIH0KCiAgICAgICAgaWYgKENsb25lRmllbGQpIHsKICAgICAgICAgICAgJENsb25lID0gJEZpZWxkLmNsb25lKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ2xvbmUgPSAkRmllbGQ7CiAgICAgICAgfQoKICAgICAgICAvLyBDbGVhciB0aGUgY2xvbmVkIGZpZWxkcyAob3Igc2V0IHRoZSB2YWx1ZXMgZnJvbSB0aGUgZ2l2ZW4gY29uZGl0aW9uKS4KICAgICAgICAkQ2xvbmUKICAgICAgICAgICAgLmZpbmQoJ2lucHV0W3R5cGU9ImNoZWNrYm94Il0nKS5wcm9wKCdjaGVja2VkJywgQ2hlY2tib3hWYWx1ZSkuZW5kKCkKICAgICAgICAgICAgLmZpbmQoJ2lucHV0W3R5cGU9ImhpZGRlbiJdJykudmFsKChDaGVja2JveFZhbHVlID8gMSA6IDApKS5lbmQoKQogICAgICAgICAgICAuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdJykudmFsKFRleHRWYWx1ZSkuc2hvdygpLmVuZCgpOwoKICAgICAgICBpZiAoQ2xvbmVGaWVsZCkgewogICAgICAgICAgICAkQ2xvbmUuYXBwZW5kVG8oJEZpZWxkLnBhcmVudCgpKTsKICAgICAgICB9CgogICAgICAgIC8vIFRvZ2dsZSBidXR0b25zIHRvIGFkZC9yZW1vdmUgdGhlIGNvbmRpdGlvbi4KICAgICAgICBpZiAoJEZpZWxkLnBhcmVudCgpLmNoaWxkcmVuKCdsaScpLmxlbmd0aCAhPT0gMSkgewoKICAgICAgICAgICAgJENsb25lCiAgICAgICAgICAgICAgICAuZmluZCgnLlJlbW92ZUJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpLmVuZCgpCiAgICAgICAgICAgICAgICAuZmluZCgnLkFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uJykucmVtb3ZlQ2xhc3MoJ0hpZGRlbicpLmVuZCgpOwoKICAgICAgICAgICAgLy8gSGlkZSB0aGUgYnV0dG9uIHRvIGFkZCBhIGNvbmRpdGlvbiBvbiB0aGUgcHJldmlvdXMgZWxlbWVudC4KICAgICAgICAgICAgJENsb25lLnByZXYoKS5maW5kKCcuQWRkQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24nKS5hZGRDbGFzcygnSGlkZGVuJykuZW5kKCk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ2xvbmUKICAgICAgICAgICAgICAgIC5maW5kKCcuUmVtb3ZlQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24nKS5hZGRDbGFzcygnSGlkZGVuJykuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCcuQWRkQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24nKS5yZW1vdmVDbGFzcygnSGlkZGVuJykuZW5kKCk7CiAgICAgICAgfQogICAgfTsKCiAgICAvKioKICAgICAqIEBuYW1lIFJlbW92ZUNvbmRpdGlvbkxpbmUKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJEZpZWxkIC0gVGhlIGZpZWxkIGZvciB3aGljaCB0aGUgbGluZSBzaG91bGQgYmUgcmVtb3ZlZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFJlbW92ZXMgYSBuZXcgY29uZGl0aW9uIGxpbmUgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGQuCiAgICAgKi8KICAgIFRhcmdldE5TLlJlbW92ZUNvbmRpdGlvbkxpbmUgPSBmdW5jdGlvbiAoJEZpZWxkKSB7CgogICAgICAgIC8vIFNob3cgdGhlIGJ1dHRvbiBmb3IgYWRkaW5nIGEgY29uZGl0aW9uIG9uIHRoZSBwcmV2aW91cyBlbGVtZW50LgogICAgICAgIGlmICghJEZpZWxkLmZpbmQoJy5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbicpLmhhc0NsYXNzKCdIaWRkZW4nKSkgewogICAgICAgICAgICAkRmllbGQucHJldigpLmZpbmQoJy5BZGRCdXR0b25DdXN0b21lckNvbmRpdGlvbicpLnJlbW92ZUNsYXNzKCdIaWRkZW4nKTsKICAgICAgICB9CgogICAgICAgICRGaWVsZC5yZW1vdmUoKTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBSZXNldExpc3RJdGVtSURzCiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IEZpZWxkTmFtZSAtIFRoZSBmaWVsZCBmb3Igd2hpY2ggdGhlIGxpc3RpdGVtcyBzaG91bGQgYmUgcmVzZXR0ZWQKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBSZXNldHMgdGhlIElEcyBvZiB0aGUgbGlzdGl0ZW1zLgogICAgICovCiAgICBUYXJnZXROUy5SZXNldExpc3RJdGVtSURzID0gZnVuY3Rpb24gKEZpZWxkTmFtZSkgewoKICAgICAgICB2YXIgJExpc3RJdGVtcyA9ICQoJyMnICsgRmllbGROYW1lICsgJyB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaS5EYXRhSXRlbSB1bCBsaScpCgogICAgICAgIC8vIFNldCBjb3JyZWN0IElEcyBmb3IgdGhlIGxpc3RpdGVtcy4KICAgICAgICB2YXIgaSA9IDE7CiAgICAgICAgJExpc3RJdGVtcy5lYWNoKGZ1bmN0aW9uICgpIHsKCiAgICAgICAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7CiAgICAgICAgICAgIHZhciBDaGVja2JveElEID0gRmllbGROYW1lICsgJ0NoZWNrYm94JyArIGk7CiAgICAgICAgICAgIHZhciBJbnB1dElEID0gRmllbGROYW1lICsgJ0lucHV0JyArIGk7CgogICAgICAgICAgICAkdGhpcwogICAgICAgICAgICAgICAgLmZpbmQoJ2xhYmVsJykucHJvcCgnZm9yJywgQ2hlY2tib3hJRCkuZW5kKCkKICAgICAgICAgICAgICAgIC5maW5kKCdpbnB1dFt0eXBlPSJjaGVja2JveCJdJykucHJvcCgnaWQnLCBDaGVja2JveElEKS5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2lucHV0W3R5cGU9InRleHQiXSwgc2VsZWN0JykucHJvcCgnaWQnLCBJbnB1dElEKS5lbmQoKQogICAgICAgICAgICAgICAgLmZpbmQoJ2Rpdi5Ub29sdGlwRXJyb3JNZXNzYWdlJykucHJvcCgnaWQnLCBJbnB1dElEICsgJ1NlcnZlckVycm9yJykuZW5kKCk7CgogICAgICAgICAgICBpKys7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIC8qKgogICAgICogQG5hbWUgUmVzdG9yZUNvbmRpdGlvbnMKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuQ3VzdG9tZXJVc2VyQ29uZGl0aW9ucwogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge0FycmF5fSBDb25kaXRpb25zIC0gVGhlIGNvbmRpdGlvbnMgdG8gZGlzcGxheQogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIFJlc3RvcmVzIHRoZSBjb25kaXRpb25zIGluIGNhc2Ugb2YgYW4gZXJyb3Igb3IgdG8gZWRpdCB0aGVtLgogICAgICovCiAgICBUYXJnZXROUy5SZXN0b3JlQ29uZGl0aW9ucyA9IGZ1bmN0aW9uIChDb25kaXRpb25zKSB7CgogICAgICAgIE9iamVjdC5rZXlzKENvbmRpdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKEZpZWxkKSB7CgogICAgICAgICAgICB2YXIgQ29uZGl0aW9uc09iaiA9IHt9OwogICAgICAgICAgICBDb25kaXRpb25zT2JqW0ZpZWxkXSA9IFtdOwoKICAgICAgICAgICAgQ29uZGl0aW9uc1tGaWVsZF0uZm9yRWFjaChmdW5jdGlvbiAoQ29uZGl0aW9uLCBpZHgpIHsKCiAgICAgICAgICAgICAgICB2YXIgQ29uZGl0aW9uT2JqID0gewogICAgICAgICAgICAgICAgICAgIENsb25lOiAoKGlkeCA9PT0gMCkgPyBmYWxzZSA6IHRydWUpLAogICAgICAgICAgICAgICAgICAgIFJlZ0V4cFZhbHVlOiBDb25kaXRpb24uUmVnRXhwVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgTmVnYXRpb246IEJvb2xlYW4ocGFyc2VJbnQoQ29uZGl0aW9uLk5lZ2F0aW9uLCAxMCkpCiAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgIENvbmRpdGlvbnNPYmpbRmllbGRdLnB1c2goQ29uZGl0aW9uT2JqKTsKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAvLyBBZGQgYSBjb25kaXRpb24gY29udGFpbmVyIGZvciB0aGUgZmllbGQgYW5kIGluc2VydCB0aGUgZ2l2ZW4gY29uZGl0aW9ucy4KICAgICAgICAgICAgVGFyZ2V0TlMuQWRkQ29uZGl0aW9uKEZpZWxkLCBDb25kaXRpb25zT2JqKTsKICAgICAgICB9KTsKICAgIH07CgogICAgLyoqCiAgICAgKiBAbmFtZSBTaG93RXJyb3JzCiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMKICAgICAqIEBmdW5jdGlvbgogICAgICogQHBhcmFtIHtTdHJpbmd9IEZpZWxkIC0gVGhlIHNlbGVjdGVkIGZpZWxkIGZyb20gdGhlIGRyb3Bkb3duIHdoaWNoIGhhcyBlcnJvcnMKICAgICAqIEBwYXJhbSB7T2JqZWN0fSBFcnJvcnMgLSBDb250YWlucyB0aGUgaW5kZXggb2YgdGhlIGZpZWxkcyB3aGljaCBhcmUgaW52YWxpZAogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIERpc3BsYXkgZXJyb3IgbWVzc2FnZXMuCiAgICAgKi8KICAgIFRhcmdldE5TLlNob3dFcnJvcnMgPSBmdW5jdGlvbiAoRmllbGQsIEVycm9ycykgewoKICAgICAgICB2YXIgSXRlbTsKCiAgICAgICAgZm9yIChJdGVtIGluIEVycm9ycykgewoKICAgICAgICAgICAgaWYoIUVycm9ycy5oYXNPd25Qcm9wZXJ0eShJdGVtKSkgY29udGludWU7CgogICAgICAgICAgICAkKCcjJyArIEZpZWxkICsgJyB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaS5EYXRhSXRlbSB1bCBsaScpLmVxKEl0ZW0pCiAgICAgICAgICAgICAgICAuZmluZCgnaW5wdXRbdHlwZT0idGV4dCJdLCBzZWxlY3QnKS5hZGRDbGFzcygnU2VydmVyRXJyb3InKTsKICAgICAgICB9CgogICAgICAgIENvcmUuRm9ybS5WYWxpZGF0ZS5Jbml0KCk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oU3VydmV5LkFnZW50LkN1c3RvbWVyVXNlckNvbmRpdGlvbnMgfHwge30pKTsK
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgT1RSUyBBRywgaHR0cDovL290cnMuY29tL1xuIjsKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5RWRpdFF1ZXN0aW9ucy4KICovClN1cnZleS5BZ2VudC5TdXJ2ZXlFZGl0UXVlc3Rpb25zID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewogICAgLyoqCiAgICAgKiBAbmFtZSBJbml0CiAgICAgKiBAbWVtYmVyb2YgU3VydmV5LkFnZW50LlN1cnZleUVkaXRRdWVzdGlvbnMKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXQgZWRpdCBzdXJ2ZXkgc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJy5RdWVzdGlvbkRlbGV0ZScpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewoKICAgICAgICAgICAgaWYod2luZG93LmNvbmZpcm0oQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBxdWVzdGlvbj8gQUxMIGFzc29jaWF0ZWQgZGF0YSB3aWxsIGJlIExPU1QhIikpKSB7CiAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24gPSBDb3JlLkNvbmZpZy5HZXQoJ0Jhc2VsaW5rJykgKyAkKHRoaXMpLmRhdGEoJ3F1ZXJ5LXN0cmluZycpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICBFdmVudC5wcmV2ZW50RGVmYXVsdCgpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgICQoJy5BbnN3ZXJEZWxldGUnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKCiAgICAgICAgICAgIGlmKHdpbmRvdy5jb25maXJtKENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJEbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgYW5zd2VyPyIpKSkgewogICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gQ29yZS5Db25maWcuR2V0KCdCYXNlbGluaycpICsgJCh0aGlzKS5kYXRhKCdxdWVyeS1zdHJpbmcnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBFdmVudC5zdG9wUHJvcGFnYXRpb24oKTsKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0pOwoKICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShTdXJ2ZXkuQWdlbnQuU3VydmV5RWRpdFF1ZXN0aW9ucyB8fCB7fSkpOwo=
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgT1RSUyBBRywgaHR0cDovL290cnMuY29tL1xuIjsKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBTdXJ2ZXkuQWdlbnQuU3VydmV5T3ZlcnZpZXcKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5T3ZlcnZpZXcuCiAqLwpTdXJ2ZXkuQWdlbnQuU3VydmV5T3ZlcnZpZXcgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuU3VydmV5T3ZlcnZpZXcKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXQgZWRpdCBzdXJ2ZXkgc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJyNTdXJ2ZXlTZWFyY2gnKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93Q29udGVudERpYWxvZygkKCcjU3VydmV5T3ZlcnZpZXdTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lcicpLAogICAgICAgICAgICAgICAgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIlNldHRpbmdzIiksICcyMCUnLCAnQ2VudGVyJywgdHJ1ZSwKICAgICAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU3VibWl0IiksCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6ICdTdWJtaXQnLAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzczogJ1ByaW1hcnknCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgXQogICAgICAgICAgICApOwoKICAgICAgICAgICAgRXZlbnQucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9KTsKCiAgICAgICAgLy8gYmluZCB0aGUgQ29udGV4dFNldHRpbmdzRGlhbG9nQ29udGFpbmVyCiAgICAgICAgJCgnI1Nob3dDb250ZXh0U2V0dGluZ3NEaWFsb2cnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoRXZlbnQpIHsKICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuU2hvd0NvbnRlbnREaWFsb2coJCgnI0NvbnRleHRTZXR0aW5nc0RpYWxvZ0NvbnRhaW5lcicpLCBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU2V0dGluZ3MiKSwgJzIwJScsICdDZW50ZXInLCB0cnVlLAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWw6IENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTdWJtaXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ1N1Ym1pdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnUHJpbWFyeScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgIENvcmUuVUkuQWN0aW9uUm93LkluaXQoKTsKCiAgICAgICAgJCgnLk1hc3RlckFjdGlvbicpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChFdmVudCkgewogICAgICAgICAgICB2YXIgJE1hc3RlckFjdGlvbkxpbmsgPSAkKHRoaXMpLmZpbmQoJy5NYXN0ZXJBY3Rpb25MaW5rJyk7CiAgICAgICAgICAgIC8vIG9ubHkgYWN0IGlmIHRoZSBsaW5rIHdhcyBub3QgY2xpY2tlZCBkaXJlY3RseQogICAgICAgICAgICBpZiAoRXZlbnQudGFyZ2V0ICE9PSAkTWFzdGVyQWN0aW9uTGluay5nZXQoMCkpIHsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICRNYXN0ZXJBY3Rpb25MaW5rLmF0dHIoJ2hyZWYnKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICAvLyBiaW5kIHRoZSBDb250ZXh0U2V0dGluZ3NEaWFsb2dDb250YWluZXIKICAgICAgICAkKCcjU3VydmV5U2VhcmNoJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKEV2ZW50KSB7CiAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dDb250ZW50RGlhbG9nKCQoJyNTdXJ2ZXlPdmVydmlld1NldHRpbmdzRGlhbG9nQ29udGFpbmVyJyksCiAgICAgICAgICAgICAgICBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiU2V0dGluZ3MiKSwgJzIwJScsICdDZW50ZXInLCB0cnVlLAogICAgICAgICAgICAgICAgWwogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWw6IENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCJTdWJtaXQiKSwKICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ1N1Ym1pdCcsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnUHJpbWFyeScKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBdCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIEV2ZW50LnByZXZlbnREZWZhdWx0KCk7CiAgICAgICAgICAgIEV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oU3VydmV5LkFnZW50LlN1cnZleU92ZXJ2aWV3IHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgT1RSUyBBRywgaHR0cDovL290cnMuY29tL1xuIjsKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwovKioKICogQG5hbWVzcGFjZQogKiBAZXhwb3J0cyBUYXJnZXROUyBhcyBTdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMKICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5U3RhdHMuCiAqLwpTdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMgPSAoZnVuY3Rpb24gKFRhcmdldE5TKSB7CiAgICAvKioKICAgICAqIEBuYW1lIEluaXQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuU3VydmV5U3RhdHMKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIEluaXQgZWRpdCBzdXJ2ZXkgc2NyZWVuLgogICAgICovCiAgICBUYXJnZXROUy5Jbml0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICQoJ2EuTGlua1pvb21WaWV3Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewoKICAgICAgICAgICAgcGFyZW50LkNvcmUuVUkuUG9wdXAuRmlyZVBvcHVwRXZlbnQoJ1VSTCcsIHsgVVJMOiAkKHRoaXMpLmF0dHIoJ2hyZWYnKX0pOwogICAgICAgICAgICBwYXJlbnQuQ29yZS5VSS5Qb3B1cC5DbG9zZSgpOwogICAgICAgIH0pOwoKICAgICAgICAkKCcjU2VsZWN0QWxsUmVxdWVzdHMnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHZhciBTdGF0dXMgPSAkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKTsKICAgICAgICAgICAgJCgnOmNoZWNrYm94JykucHJvcCgnY2hlY2tlZCcsIFN0YXR1cyk7CiAgICAgICAgfSk7CiAgICB9OwoKICAgIENvcmUuSW5pdC5SZWdpc3Rlck5hbWVzcGFjZShUYXJnZXROUywgJ0FQUF9NT0RVTEUnKTsKCiAgICByZXR1cm4gVGFyZ2V0TlM7Cn0oU3VydmV5LkFnZW50LlN1cnZleVN0YXRzIHx8IHt9KSk7Cg==
Ly8gLS0KLy8gQ29weXJpZ2h0IChDKSAyMDAxLTIwMTcgT1RSUyBBRywgaHR0cDovL290cnMuY29tL1xuIjsKLy8gLS0KLy8gVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKLy8gdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQovLyBkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2FncGwudHh0LgovLyAtLQoKInVzZSBzdHJpY3QiOwoKdmFyIFN1cnZleSA9IFN1cnZleSB8fCB7fTsKU3VydmV5LkFnZW50ID0gU3VydmV5LkFnZW50IHx8IHt9OwoKLyoqCiAqIEBuYW1lc3BhY2UKICogQGV4cG9ydHMgVGFyZ2V0TlMgYXMgU3VydmV5LkFnZW50LlN1cnZleVpvb20KICogQGRlc2NyaXB0aW9uCiAqICAgICAgVGhpcyBuYW1lc3BhY2UgY29udGFpbnMgdGhlIHNwZWNpYWwgbW9kdWxlIGZ1bmN0aW9ucyBmb3IgU3VydmV5Wm9vbS4KICovClN1cnZleS5BZ2VudC5TdXJ2ZXlab29tID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIFRhcmdldE5TLkluaXQgPSBmdW5jdGlvbiAoKSB7CiAgICAgICAgJCgndWwuQWN0aW9ucyBhLkFzUG9wdXAnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIENvcmUuVUkuUG9wdXAuT3BlblBvcHVwICgkKHRoaXMpLmF0dHIoJ2hyZWYnKSwgJ0FjdGlvbicpOwogICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgfSk7CgogICAgICAgICQoJyNOZXdTdGF0dXMnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJ2Zvcm0nKS5zdWJtaXQoKTsKICAgICAgICB9KTsKICAgIH0KCiAgICAvKioKICAgICAqIEBuYW1lIElmcmFtZUF1dG9IZWlnaHQKICAgICAqIEBtZW1iZXJvZiBTdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbQogICAgICogQGZ1bmN0aW9uCiAgICAgKiBAcGFyYW0ge2pRdWVyeU9iamVjdH0gJElmcmFtZSAtIFRoZSBpZnJhbWUgd2hpY2ggc2hvdWxkIGJlIGF1dG8taGVpZ2h0ZWQKICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBTZXQgaWZyYW1lIGhlaWdodCBhdXRvbWF0aWNhbGx5IGJhc2VkIG9uIHJlYWwgY29udGVudCBoZWlnaHQgYW5kIGRlZmF1bHQgY29uZmlnIHNldHRpbmcuCiAgICAgKi8KICAgIFRhcmdldE5TLklmcmFtZUF1dG9IZWlnaHQgPSBmdW5jdGlvbiAoJElmcmFtZSkgewogICAgICAgIHZhciBOZXdIZWlnaHQ7CgogICAgICAgIGlmIChpc0pRdWVyeU9iamVjdCgkSWZyYW1lKSkgewogICAgICAgICAgICBOZXdIZWlnaHQgPSAkSWZyYW1lLmNvbnRlbnRzKCkuaGVpZ2h0KCk7CiAgICAgICAgICAgIGlmICghTmV3SGVpZ2h0IHx8IGlzTmFOKE5ld0hlaWdodCkpIHsKICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnU3VydmV5LkhUTUxSaWNoVGV4dEhlaWdodERlZmF1bHQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChOZXdIZWlnaHQgPiBDb3JlLkNvbmZpZy5HZXQoJ1N1cnZleS5IVE1MUmljaFRleHRIZWlnaHRNYXgnKSkgewogICAgICAgICAgICAgICAgICAgIE5ld0hlaWdodCA9IENvcmUuQ29uZmlnLkdldCgnU3VydmV5LkhUTUxSaWNoVGV4dEhlaWdodE1heCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgICRJZnJhbWUuaGVpZ2h0KE5ld0hlaWdodCArICdweCcpOwogICAgICAgIH0KICAgIH07CgogICAgQ29yZS5Jbml0LlJlZ2lzdGVyTmFtZXNwYWNlKFRhcmdldE5TLCAnQVBQX01PRFVMRScpOwoKICAgIHJldHVybiBUYXJnZXROUzsKfShTdXJ2ZXkuQWdlbnQuU3VydmV5Wm9vbSB8fCB7fSkpOwo=
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEFnZW50IEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgRGVmYXVsdCBTZXR0aW5ncwogKi8KCkBtZWRpYSBzY3JlZW4scHJvamVjdGlvbix0dixoYW5kaGVsZCB7CgovKioKICogQHN1YnNlY3Rpb24gU3VydmV5IEdyYXBoCiAqLwoKZmllbGRzZXQuU3VydmV5R3JhcGhzIHsKICAgIGRpc3BsYXk6IGJsb2NrOwogICAgbWFyZ2luLWJvdHRvbTogMjBweDsKfQoKZmllbGRzZXQuU3VydmV5R3JhcGhzIC5RdWVzdGlvbiB7CiAgICBkaXNwbGF5OiBibG9jazsKICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKICAgIHRleHQtYWxpZ246IHJpZ2h0OwogICAgd2lkdGg6IDI1JTsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgbWFyZ2luLWJvdHRvbTogMTBweDsKfQoKZmllbGRzZXQuU3VydmV5R3JhcGhzIC5BbnN3ZXIgewogICAgZmxvYXQ6IGxlZnQ7CiAgICBsaW5lLWhlaWdodDogMS4zZW07CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGQUZBRkE7CiAgICB3aWR0aDogMjUlOwogICAgbWFyZ2luLWJvdHRvbTogNXB4OwogICAgY2xlYXI6IGxlZnQ7Cn0KCmRpdi5TdXJ2ZXlHcmFwaCB7CiAgICBmbG9hdDogbGVmdDsKICAgIHdpZHRoOiA1MCU7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBwYWRkaW5nLWxlZnQ6IDVweDsKICAgIHBhZGRpbmctYm90dG9tOiAzcHg7Cn0KCmRpdi5TdXJ2ZXlHcmFwaENvbnRhaW5lciB7CiAgICB3aWR0aDogOTUlOwogICAgaGVpZ2h0OiAyMnB4Owp9CgpkaXYuU3VydmV5R3JhcGhCYXIgewogICAgaGVpZ2h0OiAyMnB4OwogICAgYmFja2dyb3VuZC1jb2xvcjogI0YyQjEzRTsKfQoKcC5TdXJ2ZXlHcmFwaExleWVuZCB7CiAgICBmbG9hdDogbGVmdDsKICAgIGxpbmUtaGVpZ2h0OiAxLjNlbTsKICAgIHRleHQtYWxpZ246IGxlZnQ7CiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMCAjRkFGQUZBOwogICAgd2lkdGg6IDEwJTsKICAgIG1hcmdpbi1ib3R0b206IDVweDsKICAgIGhlaWdodDogMjJweDsKfQoKLlN1YkxhYmVsIHsKICAgIHdpZHRoOiAzNSU7CiAgICB0ZXh0LWFsaWduOiByaWdodDsKICAgIGZsb2F0OiBsZWZ0OwogICAgZGlzcGxheTogYmxvY2s7Cn0KCi5TdWJGaWVsZCB7CiAgICBtYXJnaW4tbGVmdDogMzUlOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCmEuQXJyb3dVcCwKYS5BcnJvd1VwRGlzYWJsZWQsCmEuQXJyb3dEb3duLAphLkFycm93RG93bkRpc2FibGVkIHsKICAgIGhlaWdodDogMTZweDsKICAgIHBhZGRpbmc6IDFweDsKICAgIG1hcmdpbi10b3A6IDA7CiAgICBtYXJnaW4tYm90dG9tOiAxcHg7CiAgICBib3JkZXItc3R5bGU6IG5vbmU7CiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwogICAgdGV4dC1hbGlnbjogY2VudGVyOwp9CgphLkFycm93VXAsCmEuQXJyb3dEb3duIHsKICAgIGN1cnNvcjogcG9pbnRlcjsKfQoKYS5BcnJvd1VwRGlzYWJsZWQsCmEuQXJyb3dEb3duRGlzYWJsZWQgewogICAgY3Vyc29yOiBkZWZhdWx0Owp9CgphLkFycm93VXA6YWN0aXZlLAphLkFycm93RG93bjphY3RpdmUgewogICAgbWFyZ2luLXRvcDogMXB4OwogICAgbWFyZ2luLWJvdHRvbTogMDsKfQoKYS5BcnJvd1VwRGlzYWJsZWQ6YWN0aXZlLAphLkFycm93RG93bkRpc2FibGVkOmFjdGl2ZSB7CiAgICBtYXJnaW4tdG9wOiAwcHg7CiAgICBtYXJnaW4tYm90dG9tOiAxcHg7Cn0KCmEuQXJyb3dVcCBpLAphLkFycm93RG93biBpIHsKICAgIGNvbG9yOiAjMzM5OUZGOwp9CgphLkFycm93VXA6aG92ZXIgaSwKYS5BcnJvd0Rvd246aG92ZXIgaSB7CiAgICBjb2xvcjogIzMzOTkwMCAhaW1wb3J0YW50Owp9CgphLkFycm93VXBEaXNhYmxlZCwKYS5BcnJvd0Rvd25EaXNhYmxlZCB7CiAgICBkaXNwbGF5OiBpbmxpbmUgIUltcG9ydGFudDsKfQoKYS5BcnJvd1VwRGlzYWJsZWQgaSwKYS5BcnJvd0Rvd25EaXNhYmxlZCBpIHsKICAgIGNvbG9yOiAjOTA5MDkwOwogICAgY3Vyc29yOiBkZWZhdWx0Owp9CgphLlNlZURldGFpbHMgewogICAgaGVpZ2h0OiAxNXB4OwogICAgcGFkZGluZzogMXB4OwogICAgbWFyZ2luLXRvcDogLTZweDsKICAgIGJvcmRlci1zdHlsZTogbm9uZTsKICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CiAgICBjdXJzb3I6IHBvaW50ZXI7Cn0KCmEuU2VlRGV0YWlscyBzcGFuIHsKICAgIGJhY2tncm91bmQ6IG5vbmU7CiAgICBkaXNwbGF5OiBub25lOwp9CgphLlNlZURldGFpbHMgaSB7CiAgICBjb2xvcjogI0ZGOTkyMjsKfQoKbGFiZWwuVGV4dGFyZWEsCmRpdi5UZXh0YXJlYSB7CiAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwogICAgbWFyZ2luLXRvcDogMTBweDsKfQoKLkZpZWxkIHVsIGxpewogICAgbWFyZ2luLWxlZnQ6IDMwcHg7CiAgICBsaXN0LXN0eWxlOiBkaXNjOwp9CgouRmllbGQgb2wgbGl7CiAgICBtYXJnaW4tbGVmdDogMzBweDsKICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7Cn0KCi5GaWVsZCB1bC5DdXN0b21lclVzZXJDb25kaXRpb25zTGlzdCBsaSB7CiAgICBsaXN0LXN0eWxlOiBub25lOwogICAgbWFyZ2luLWJvdHRvbTogMnB4Owp9CgojU3VydmV5RW1wdHlNZXNzYWdlU21hbGwgewogICAgYm9yZGVyLWNvbG9yOiAjZGRkOwogICAgYm9yZGVyLWltYWdlOiBub25lOwogICAgYm9yZGVyLXN0eWxlOiBzb2xpZDsKICAgIGJvcmRlci13aWR0aDogMXB4OwogICAgcGFkZGluZzogN3B4OwogICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Cn0KCgouVGFibGVTbWFsbCB0Ym9keSB0ci5JbnZhbGlkIHsKICAgIGNvbG9yOiAjQ0NDOwp9Cgo8PDw8PDw8IEhFQUQKLk5hdmlnYXRpb24gewogICAgcG9zaXRpb246IGFic29sdXRlOwogICAgdG9wOiAwOwogICAgYm90dG9tOiAwOwogICAgcmlnaHQ6IDA7CiAgICBwYWRkaW5nLXRvcDogM3B4OwogICAgcGFkZGluZy1yaWdodDogMTBweDsKfQoKLlN1cnZleUFycm93IHsKICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjE1cyBlYXNlOwogICAgY29sb3I6ICNGRjk5MjI7Cn0KCi5TdXJ2ZXlBcnJvd0xlZnQgewogICAgZmxvYXQ6IGxlZnQ7Cn0KCi5TdXJ2ZXlBcnJvd1JpZ2h0IHsKICAgIGZsb2F0OiByaWdodDsKfQoKLlN1cnZleUFycm93IGl7CiAgICBmb250LXNpemU6IDIwcHg7CiAgICBtYXJnaW46IDAgNXB4Owp9CgouU3VydmV5QXJyb3c6aG92ZXJ7CiAgICBjb2xvcjogI0ZGODYwMDsKfQoKLkRpc2FibGVkIHsKICAgIGRpc3BsYXk6IG5vbmU7Cn0KLldpZGdldFNwYWNpbmdSaWdodCB7CiAgICBtYXJnaW4tcmlnaHQ6IDEzcHg7Cn0KCn0KPT09PT09PQouUmVtb3ZlQnV0dG9uQ3VzdG9tZXJGaWVsZCwKLkFkZEJ1dHRvbkN1c3RvbWVyQ29uZGl0aW9uLAouUmVtb3ZlQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24gewogICAgY3Vyc29yOiBwb2ludGVyOwp9CgouUmVtb3ZlQnV0dG9uQ3VzdG9tZXJDb25kaXRpb24gewogICAgbWFyZ2luLXJpZ2h0OiAycHg7Cn0KCn0KPj4+Pj4+PiBvcmlnaW4vZmVhdHVyZS1zdXJ2ZXlpbXByb3ZlbWVudHMtbWVyZ2VkLWZsaS1tYXN0ZXIK
LyoqCiAqIEBwcm9qZWN0ICAgICBPVFJTIChodHRwOi8vd3d3Lm90cnMub3JnKSAtIEN1c3RvbWVyIEZyb250ZW5kCiAqIEBjb3B5cmlnaHQgICBPVFJTIEFHCiAqIEBsaWNlbnNlICAgICBBR1BMIChodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQpCiAqLwoKLyoqCiAqIEBwYWNrYWdlICAgICBTdXJ2ZXkgLSBTa2luICJEZWZhdWx0IgogKiBAc2VjdGlvbiAgICAgQ3VzdG9tZXIKICovCgpAbWVkaWEgc2NyZWVuLHByb2plY3Rpb24sdHYsaGFuZGhlbGQgewoKZGl2LlN1cnZleUJsb2NrIHsKICAgIG1hcmdpbjogOHB4IDAgMTNweDsKICAgIHBhZGRpbmctYm90dG9tOiA1cHg7CiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjRkZGRkZGIDAlLCAjRjhGOUY5IDEwMCUpIHJlcGVhdCBzY3JvbGwgMCAwIHRyYW5zcGFyZW50OwogICAgYm9yZGVyOiAxcHggc29saWQgI0VBRUVFRTsKICAgIGJvcmRlci1yYWRpdXM6IDVweDsKICAgIHdpZHRoOiA3MzhweDsKfQoKLlN1cnZleUJsb2NrIGRpdi5Db250ZW50IHsKICAgIGJvcmRlcjogMHB4Owp9CgouU3VydmV5QmxvY2tIZWFkZXIgewogICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNFOEU5RTk7CiAgICBib3JkZXItcmFkaXVzOiA1cHggNXB4IDAgMDsKICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjRkZGRkZGOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgZm9udC13ZWlnaHQ6IGJvbGQ7CiAgICBtYXJnaW46IDA7CiAgICBwYWRkaW5nOiA1cHggOHB4IDRweDsKICAgIHRleHQtc2hhZG93OiAwIDFweCAwICNGRkZGRkY7Cn0KCmZpZWxkc2V0LlN1cnZleSB7CiAgICB3aWR0aDogNzM4cHg7Cn0KCmRpdi5BY3Rpb25Sb3cgewogICAgd2lkdGg6IDcyMHB4Owp9CgpkaXYuSW50cm8gLkNvbnRlbnR7CiAgICBib3JkZXItdG9wOiAwOwp9CgpkaXYuUXVlc3Rpb257CiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0M5QzlDOTsKICAgIGNvbG9yOiAjOTI5MjkyOwogICAgZm9udC1zaXplOiAxMnB4OwogICAgbWFyZ2luLWxlZnQ6IDQwcHg7CiAgICBtYXJnaW4tdG9wOiAxNXB4OwogICAgd2lkdGg6IDUyMHB4OwogICAgcGFkZGluZzogNHB4IDlweCAzcHggOXB4OwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0VDRUVFRTsKICAgIGZvbnQtd2VpZ2h0OiBib2xkOwogICAgZGlzcGxheTogYmxvY2s7Cn0KCmRpdi5NYW5kYXRvcnkgewogICAgY29sb3I6IGJsYWNrOwp9CgpkaXYuRXJyb3IgewogICAgY29sb3I6ICNmZjUwNWUgIWltcG9ydGFudDsKfQoKZGl2LlRvb2x0aXBFcnJvcnsKICAgIG1hcmdpbjogLTEwcHggMCAwcHggNzVweDsKfQpkaXYuVG9vbHRpcEVycm9yIGRpdjpmaXJzdC1jaGlsZCB7CiAgICBib3JkZXItdG9wOiAwcHggIWltcG9ydGFudDsKfQpkaXYuVG9uZ3VlIHsKICAgIGJvcmRlcjogMHB4OwogICAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7Cn0KCmxhYmVsLkFuc3dlciB7CiAgICBiYWNrZ3JvdW5kOm5vbmU7CiAgICBib3JkZXI6IG5vbmU7CiAgICB3aWR0aDogMzY1cHg7CiAgICBtYXJnaW4tbGVmdDogOHB4OwogICAgbWFyZ2luLXRvcDogM3B4OwogICAgdGV4dC1hbGlnbjpsZWZ0Owp9CgpsYWJlbC5BbnN3ZXIuTlBTIHsKICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7Cn0KCmZpZWxkc2V0IGlucHV0LApkaXYuQW5zd2VyIHsKICAgIGZsb2F0OmxlZnQ7Cn0KCmZpZWxkc2V0IGlucHV0LApmaWVsZHNldCBpbnB1dC5OUFMsCmZpZWxkc2V0IHRleHRhcmVhLApkaXYuQW5zd2VyIHsKICAgIG1hcmdpbjogN3B4IDAgN3B4IDc1cHg7Cn0KCmZpZWxkc2V0IGlucHV0Lk5QUzpub3QoOmZpcnN0LW9mLXR5cGUpIHsKICAgIG1hcmdpbjogN3B4IDAgN3B4IDdweDsKfQoKLlJpY2hUZXh0QW5zd2VyIHsKICAgIG1hcmdpbjogN3B4IDAgN3B4IDc1cHg7Cn0KCmRpdi5BbnN3ZXIgewogICAgcGFkZGluZzowcHg7Cn0KCi5TdXJ2ZXlCdXR0b24gewogICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6NXB4OwogICAgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OjVweDsKICAgIC1tb3otYm94LXNoYWRvdzowIDAgM3B4ICNGNkY5Rjk7CiAgICBib3JkZXItY29sb3I6LW1vei11c2UtdGV4dC1jb2xvciAjRDZENkQ2ICNENkQ2RDY7CiAgICBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICNENkQ2RDY7CiAgICBib3JkZXItc3R5bGU6bm9uZSBzb2xpZCBzb2xpZDsKICAgIGJvcmRlci13aWR0aDptZWRpdW0gMXB4IDFweDsKICAgIGJvdHRvbTotMjJweDsKICAgIGNvbG9yOiM5OTk5OTk7CiAgICBkaXNwbGF5Om5vbmU7CiAgICBoZWlnaHQ6MTBweDsKICAgIG1hcmdpbjowIDEzcHg7CiAgICBwYWRkaW5nOjRweCA4cHggN3B4IDI0cHg7CiAgICBwb3NpdGlvbjphYnNvbHV0ZTsKfQp9Cg==
IyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE3IE9UUlMgQUcsIGh0dHA6Ly9vdHJzLmNvbS8KIyAtLQojIFRoaXMgc29mdHdhcmUgY29tZXMgd2l0aCBBQlNPTFVURUxZIE5PIFdBUlJBTlRZLiBGb3IgZGV0YWlscywgc2VlCiMgdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQojIGRpZCBub3QgcmVjZWl2ZSB0aGlzIGZpbGUsIHNlZSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQuCiMgLS0KCnBhY2thZ2UgdmFyOjpwYWNrYWdlc2V0dXA6OlN1cnZleTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBLZXJuZWw6Ok91dHB1dDo6VGVtcGxhdGU6OlByb3ZpZGVyOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycsCik7Cgo9aGVhZDEgTkFNRQoKU3VydmV5LnBtIC0gY29kZSB0byBleGVjdXRlIGR1cmluZyBwYWNrYWdlIGluc3RhbGxhdGlvbgoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgZnVuY3Rpb25zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYW4gb2JqZWN0CgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+bmV3KCk7CiAgICBteSAkQ29kZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ3Zhcjo6cGFja2FnZXNldHVwOjpTdXJ2ZXknKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBGb3JjZSBhIHJlbG9hZCBvZiBaWlpBdXRvLnBtIGFuZCBaWlpBQXV0by5wbSB0byBnZXQgdGhlIGZyZXNoIGNvbmZpZ3VyYXRpb24gdmFsdWVzLgogICAgZm9yIG15ICRNb2R1bGUgKCBzb3J0IGtleXMgJUlOQyApIHsKICAgICAgICBpZiAoICRNb2R1bGUgPX4gbS9aWlpBQT91dG9cLnBtJC8gKSB7CiAgICAgICAgICAgIGRlbGV0ZSAkSU5DeyRNb2R1bGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGFsd2F5cyBkaXNjYXJkIHRoZSBjb25maWcgb2JqZWN0IGJlZm9yZSBwYWNrYWdlIGNvZGUgaXMgZXhlY3V0ZWQsCiAgICAjIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBjb25maWcgb2JqZWN0IHdpbGwgYmUgY3JlYXRlZCBuZXdseSwgc28gdGhhdCBpdAogICAgIyB3aWxsIHVzZSB0aGUgcmVjZW50bHkgd3JpdHRlbiBuZXcgY29uZmlnIGZyb20gdGhlIHBhY2thZ2UKICAgICRLZXJuZWw6Ok9NLT5PYmplY3RzRGlzY2FyZCgKICAgICAgICBPYmplY3RzID0+IFsnS2VybmVsOjpDb25maWcnXSwKICAgICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgQ29kZUluc3RhbGwoKQoKcnVuIHRoZSBjb2RlIGluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZUluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlSW5zdGFsbCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVJlaW5zdGFsbCgpCgpydW4gdGhlIGNvZGUgcmVpbnN0YWxsIHBhcnQKCiAgICBteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVSZWluc3RhbGwoKTsKCj1jdXQKCnN1YiBDb2RlUmVpbnN0YWxsIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVXBncmFkZSgpCgpydW4gdGhlIGNvZGUgdXBncmFkZSBwYXJ0CgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5Db2RlVXBncmFkZSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb2RlVW5pbnN0YWxsKCkKCnJ1biB0aGUgY29kZSB1bmluc3RhbGwgcGFydAoKICAgIG15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVuaW5zdGFsbCgpOwoKPWN1dAoKc3ViIENvZGVVbmluc3RhbGwgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8yXzBfOTIoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDIuMC45Mi4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzJfMF85MigpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8yXzBfOTIgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgZGF0YWJhc2Ugb2JqZWN0CiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAjIFNFTEVDVCBhbGwgZnVuY3Rpb25hbGl0eSB2YWx1ZXMKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgc2VuZF90aW1lCiAgICAgICAgICAgIEZST00gc3VydmV5X3JlcXVlc3QnLAogICAgKTsKCiAgICBteSBATGlzdDsKICAgIFJPVzoKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIG5leHQgUk9XIGlmICEkUm93WzFdOwoKICAgICAgICBwdXNoIEBMaXN0LCBcQFJvdzsKICAgIH0KCiAgICAjIHNhdmUgZW50cmllcyBpbiBuZXcgdGFibGUKICAgIGZvciBteSAkRW50cnkgKEBMaXN0KSB7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9yZXF1ZXN0CiAgICAgICAgICAgICAgICBTRVQgY3JlYXRlX3RpbWUgPSA/CiAgICAgICAgICAgICAgICBXSEVSRSAgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkRW50cnktPlsxXSwgXCRFbnRyeS0+WzBdIF0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8yXzFfNSgpCgpUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgZXhlY3V0ZWQgaWYgdGhlIGluc3RhbGxlZCBtb2R1bGUgdmVyc2lvbiBpcyBzbWFsbGVyIHRoYW4gMi4xLjUuCgpteSAkUmVzdWx0ID0gJENvZGVPYmplY3QtPkNvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8yXzFfNSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl8yXzFfNSB7ICAgICMjIG5vIGNyaXRpYwogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBhbGwgc3VydmV5X3F1ZXN0aW9uIHJlY29yZHMKICAgICMgdGhhdCBkb24ndCBoYXZlIGFuc3dlcl9yZXF1aXJlZCBzZXQgdG8gc29tZXRoaW5nCiAgICAjIHRvIDAKICAgICRTZWxmLT5fUHJlZmlsbF9BbnN3ZXJSZXF1aXJlZEZyb21TdXJ2ZXlRdWVzdGlvbl8yXzFfNSgpOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF8xKCkKClRoaXMgZnVuY3Rpb24gaXMgb25seSBleGVjdXRlZCBpZiB0aGUgaW5zdGFsbGVkIG1vZHVsZSB2ZXJzaW9uIGlzIHNtYWxsZXIgdGhhbiA0LjAuMS4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF8xKCk7Cgo9Y3V0CgpzdWIgQ29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF8xIHsgICAgIyMgbm8gY3JpdGljCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbWlncmF0ZSB0aGUgRFRMIENvbnRlbnQgaW4gdGhlIFN5c0NvbmZpZwogICAgJFNlbGYtPl9NaWdyYXRlRFRMSW5TeXNDb25maWcoKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEoKQoKVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGV4ZWN1dGVkIGlmIHRoZSBpbnN0YWxsZWQgbW9kdWxlIHZlcnNpb24gaXMgc21hbGxlciB0aGFuIDQuMC45MS4KCm15ICRSZXN1bHQgPSAkQ29kZU9iamVjdC0+Q29kZVVwZ3JhZGVGcm9tTG93ZXJUaGFuXzRfMF85MSgpOwoKPWN1dAoKc3ViIENvZGVVcGdyYWRlRnJvbUxvd2VyVGhhbl80XzBfOTEgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGFuZ2UgY29uZmlndXJhdGlvbnMgdG8gbWF0Y2ggdGhlIG5ldyBtb2R1bGUgbG9jYXRpb24uCiAgICAkU2VsZi0+X01pZ3JhdGVDb25maWdzKCk7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfUHJlZmlsbF9BbnN3ZXJSZXF1aXJlZEZyb21TdXJ2ZXlRdWVzdGlvbl8yXzFfNSgpCgpJbnNlcnRzIDAgaW50byBhbGwgYW5zd2VyX3JlcXVpcmVkIHJlY29yZHMgb2YgdGFibGUgc3V2ZXlfcXVlc3Rpb24Kd2hlcmUgdGhlcmUgaXMgbm8gZW50cnkgcHJlc2VudC4KCiAgICBteSAkU3VjY2VzcyA9ICRQYWNrYWdlU2V0dXAtPl9QcmVmaWxsX0Fuc3dlclJlcXVpcmVkRnJvbVN1cnZleVF1ZXN0aW9uXzJfMV81KCk7Cgo9Y3V0CgpzdWIgX1ByZWZpbGxfQW5zd2VyUmVxdWlyZWRGcm9tU3VydmV5UXVlc3Rpb25fMl8xXzUgeyAgICAjIyBubyBjcml0aWMKICAgIG15ICgkU2VsZikgPSBAXzsKCiAgICAjIGdldCBkYXRhYmFzZSBvYmplY3QKICAgIG15ICREQk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpOwoKICAgIHJldHVybiBpZiAhJERCT2JqZWN0LT5QcmVwYXJlKAogICAgICAgIFNRTCA9PiAnCiAgICAgICAgICAgIFNFTEVDVCBpZCwgYW5zd2VyX3JlcXVpcmVkCiAgICAgICAgICAgIEZST00gc3VydmV5X3F1ZXN0aW9uJywKICAgICk7CiAgICBteSBASWRzVG9VcGRhdGU7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgIyBpZiB3ZSBoYWQgYW4gaWQKICAgICAgICAjIGJ1dCBubyBhbnN3ZXJfcmVxdWlyZWQgb3IgYW5zd2VyX3JlcXVpcmVkIGlzbid0IDAgb3IgMQogICAgICAgICMgY29sbGVjdCB0aGUgSUQgaW4gQElkc1RvVXBkYXRlCiAgICAgICAgaWYgKAogICAgICAgICAgICBkZWZpbmVkICRSb3dbMF0KICAgICAgICAgICAgJiYgbGVuZ3RoICRSb3dbMF0KICAgICAgICAgICAgJiYgKAogICAgICAgICAgICAgICAgIWRlZmluZWQgJFJvd1sxXQogICAgICAgICAgICAgICAgfHwgKCAkUm93WzFdIG5lICcwJyAmJiAkUm93WzFdIG5lICcxJyApCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgcHVzaCBASWRzVG9VcGRhdGUsICRSb3dbMF07CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkUXVlc3Rpb25JRCAoQElkc1RvVXBkYXRlKSB7CiAgICAgICAgcmV0dXJuIGlmICEkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgPT4gJwogICAgICAgICAgICAgICAgVVBEQVRFIHN1cnZleV9xdWVzdGlvbgogICAgICAgICAgICAgICAgU0VUIGFuc3dlcl9yZXF1aXJlZCA9IDAKICAgICAgICAgICAgICAgIFdIRVJFIGlkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWwogICAgICAgICAgICAgICAgXCRRdWVzdGlvbklELAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKc3ViIF9NaWdyYXRlRFRMSW5TeXNDb25maWcgewoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICBteSAkQ29uZmlnT2JqZWN0ICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRTeXNDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6U3lzQ29uZmlnJyk7CiAgICBteSAkUHJvdmlkZXJPYmplY3QgID0gS2VybmVsOjpPdXRwdXQ6OlRlbXBsYXRlOjpQcm92aWRlci0+bmV3KCk7CgogICAgIyBnZXQgc2V0dGluZydzIGNvbnRlbnQKICAgIG15ICRTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlJyk7CiAgICByZXR1cm4gaWYgISRTZXR0aW5nOwoKICAgIE1FTlVNT0RVTEU6CiAgICBmb3IgbXkgJE1lbnVNb2R1bGUgKCBzb3J0IGtleXMgJXskU2V0dGluZ30gKSB7CgogICAgICAgIG15ICRTZXR0aW5nQ29udGVudCA9ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9LT57TGlua307CgogICAgICAgICMgZG8gbm90aGluZyBubyB2YWx1ZSBmb3IgbWlncmF0aW5nCiAgICAgICAgbmV4dCBNRU5VTU9EVUxFIGlmICEkU2V0dGluZ0NvbnRlbnQ7CgogICAgICAgIG15ICRUVENvbnRlbnQ7CiAgICAgICAgZXZhbCB7CiAgICAgICAgICAgICRUVENvbnRlbnQgPSAkUHJvdmlkZXJPYmplY3QtPk1pZ3JhdGVEVEx0b1RUKCBDb250ZW50ID0+ICRTZXR0aW5nQ29udGVudCApOwogICAgICAgIH07CiAgICAgICAgaWYgKCRAKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICIkTWVudU1vZHVsZS0+TGluayA6ICRAISIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgbmV4dCBNRU5VTU9EVUxFIGlmICRTZXR0aW5nQ29udGVudCBlcSAkVFRDb250ZW50OwoKICAgICAgICAgICAgJFNldHRpbmctPnskTWVudU1vZHVsZX0tPntMaW5rfSA9ICRUVENvbnRlbnQ7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICRTeXNDb25maWdPYmplY3QtPlNldHRpbmdzU2V0KAogICAgICAgICAgICBVc2VySUQgICA9PiAxLAogICAgICAgICAgICBDb21tZW50cyA9PiAnRGVwbG95IHN1cnZleSBtZW51IG1vZHVsZS4nLAogICAgICAgICAgICBTZXR0aW5ncyA9PiBbCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnLAogICAgICAgICAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRTZXR0aW5nLAogICAgICAgICAgICAgICAgICAgIElzVmFsaWQgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICBdLAogICAgICAgICk7CiAgICB9CiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9NaWdyYXRlQ29uZmlncygpCgpjaGFuZ2UgY29uZmlndXJhdGlvbnMgdG8gbWF0Y2ggdGhlIG5ldyBtb2R1bGUgbG9jYXRpb24uCgogICAgbXkgJFJlc3VsdCA9ICRDb2RlT2JqZWN0LT5fTWlncmF0ZUNvbmZpZ3MoKTsKCj1jdXQKCnN1YiBfTWlncmF0ZUNvbmZpZ3MgewoKICAgICMgY3JlYXRlIG5lZWRlZCBvYmplY3RzCiAgICBteSAkU3lzQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZycpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBtaWdyYXRlIHN1cnZleSBtZW51IG1vZHVsZSBzeXNjb25maWcKICAgICMgZ2V0IHNldHRpbmcgY29udGVudCBmb3Igc3VydmV5IHN5c2NvbmZpZwogICAgbXkgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N1cnZleTo6RnJvbnRlbmQ6Ok1lbnVNb2R1bGUnKTsKCiAgICBteSBAU2V0dGluZ3NEZXBsb3k7CgogICAgQ09ORklHSVRFTToKICAgIGZvciBteSAkTWVudU1vZHVsZSAoIHNvcnQga2V5cyAleyRTZXR0aW5nfSApIHsKCiAgICAgICAgIyB1cGRhdGUgbW9kdWxlIGxvY2F0aW9uCiAgICAgICAgbXkgJE1vZHVsZSA9ICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9LT57J01vZHVsZSd9OwogICAgICAgIG5leHQgQ09ORklHSVRFTSBpZiAhJE1vZHVsZTsKCiAgICAgICAgaWYgKCAkTW9kdWxlICF+IG17S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlN1cnZleU1lbnUoXHcrKX0gKSB7CiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTTsKICAgICAgICB9CgogICAgICAgICRTZXR0aW5nLT57JE1lbnVNb2R1bGV9LT57TW9kdWxlfSA9ICJLZXJuZWw6Ok91dHB1dDo6SFRNTDo6U3VydmV5TWVudTo6JDEiOwoKICAgICAgICAjIHNldCBuZXcgc2V0dGluZwogICAgICAgIHB1c2ggQFNldHRpbmdzRGVwbG95LCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdTdXJ2ZXk6OkZyb250ZW5kOjpNZW51TW9kdWxlIyMjJyAuICRNZW51TW9kdWxlLAogICAgICAgICAgICBFZmZlY3RpdmVWYWx1ZSA9PiAkU2V0dGluZy0+eyRNZW51TW9kdWxlfSwKICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICB9OwogICAgfQoKICAgICMgbWlncmF0ZSBzdXJ2ZXkgb3ZlcnZpZXcgc21hbGwgU3lzQ29uZmlnCiAgICAjIGdldCBzZXR0aW5nIGNvbnRlbnQgZm9yIHN1cnZleSBTeXNDb25maWcKICAgICRTZXR0aW5nID0gJENvbmZpZ09iamVjdC0+R2V0KCdTdXJ2ZXk6OkZyb250ZW5kOjpPdmVydmlldycpOwoKICAgIGlmICggJFNldHRpbmctPnsnU21hbGwnfS0+e01vZHVsZX0gKSB7CgogICAgICAgICMgdXBkYXRlIG1vZHVsZSBsb2NhdGlvbgogICAgICAgICRTZXR0aW5nLT57J1NtYWxsJ30tPntNb2R1bGV9ID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpTdXJ2ZXlPdmVydmlldzo6U21hbGwiOwoKICAgICAgICAjIHNldCBuZXcgc2V0dGluZwogICAgICAgIHB1c2ggQFNldHRpbmdzRGVwbG95LCB7CiAgICAgICAgICAgIE5hbWUgICAgICAgICAgID0+ICdTdXJ2ZXk6OkZyb250ZW5kOjpPdmVydmlldyMjI1NtYWxsJywKICAgICAgICAgICAgRWZmZWN0aXZlVmFsdWUgPT4gJFNldHRpbmctPnsnU21hbGwnfSwKICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICB9OwogICAgfQoKICAgICMgbWlncmF0ZSBzdXJ2ZXkgcHJlZmVyZW5jZSBTeXNDb25maWcKICAgICMgZ2V0IHNldHRpbmcgY29udGVudCBmb3Igc3VydmV5IFN5c0NvbmZpZwogICAgJFNldHRpbmcgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1ByZWZlcmVuY2VzR3JvdXBzJyk7CgogICAgaWYgKCAkU2V0dGluZy0+eydTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duJ30tPntNb2R1bGV9ICkgewoKICAgICAgICAjIHVwZGF0ZSBtb2R1bGUgbG9jYXRpb24KICAgICAgICAkU2V0dGluZy0+eydTdXJ2ZXlPdmVydmlld1NtYWxsUGFnZVNob3duJ30tPntNb2R1bGV9ID0gIktlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6R2VuZXJpYyI7CgogICAgICAgICMgc2V0IG5ldyBzZXR0aW5nCiAgICAgICAgcHVzaCBAU2V0dGluZ3NEZXBsb3ksIHsKICAgICAgICAgICAgTmFtZSAgICAgICAgICAgPT4gJ1ByZWZlcmVuY2VzR3JvdXBzIyMjU3VydmV5T3ZlcnZpZXdTbWFsbFBhZ2VTaG93bicsCiAgICAgICAgICAgIEVmZmVjdGl2ZVZhbHVlID0+ICRTZXR0aW5nLT57J1N1cnZleU92ZXJ2aWV3U21hbGxQYWdlU2hvd24nfSwKICAgICAgICAgICAgSXNWYWxpZCAgICAgICAgPT4gMSwKICAgICAgICB9OwogICAgfQoKICAgIG15ICRTdWNjZXNzID0gJFN5c0NvbmZpZ09iamVjdC0+U2V0dGluZ3NTZXQoCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICBDb21tZW50cyA9PiAnRGVwbG95IHN1cnZleSBzZXR0aW5ncy4nLAogICAgICAgIFNldHRpbmdzID0+IFsKICAgICAgICAgICAgXEBTZXR0aW5nc0RlcGxveSwKICAgICAgICBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKMTsKCj1oZWFkMSBURVJNUyBBTkQgQ09ORElUSU9OUwoKVGhpcyBzb2Z0d2FyZSBpcyBwYXJ0IG9mIHRoZSBPVFJTIHByb2plY3QgKEw8aHR0cDovL290cnMub3JnLz4pLgoKVGhpcyBzb2Z0d2FyZSBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFkuIEZvciBkZXRhaWxzLCBzZWUKdGhlIGVuY2xvc2VkIGZpbGUgQ09QWUlORyBmb3IgbGljZW5zZSBpbmZvcm1hdGlvbiAoQUdQTCkuIElmIHlvdQpkaWQgbm90IHJlY2VpdmUgdGhpcyBmaWxlLCBzZWUgTDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvYWdwbC50eHQ+LgoKPWN1dAo=
JVBERi0xLjQKJaqrrK0KMSAwIG9iago8PAovQ3JlYXRvciAoQXBhY2hlIEZPUCBWZXJzaW9uIDIuMSkKL1Byb2R1Y2VyIChBcGFjaGUgRk9QIFZlcnNpb24gMi4xKQovQ3JlYXRpb25EYXRlIChEOjIwMTcxMDE3MDMxNzMyKzAyJzAwJykKPj4KZW5kb2JqCjIgMCBvYmoKPDwKICAvTiAzCiAgL0xlbmd0aCAzIDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCj4+CnN0cmVhbQp4nO2ZZ1BUWRaA73uvc6Chu2kyNDlJlNCA5JwkSBYV6G4yLTQ5mJDBERhBRCQpgogCDjg6BBlFRRQDoqCAeRoZBJRxcBRRUVnAH7NVu7VbW7W1f7bPj/e+OufWO+e+ulXvq3oAyJDi2QnJsD4ACbwUvq+zHTMoOISJvQ9wgAxIgAow4ezkRFtvbw+wHCtrwT/E+1EArdzv6fzz+r8MEieBxwEAoi9zLIebzF7mncsczUngrOSnVzg9JTEFANh7men85QGXmbPCEd84Y4WjvnHR6ho/X/tlPgoAjhS1yoRTKxyxytSuFWZH8xMAkO5bXq/CTuQvP196pZfitxlWQ3RlP8woLo/LD0/hcpj/4db+ffxdL3Ty8sv/rzf4H/dZOTvf6K3l6pmAGBV/5baWAcB6DQBS8ldO5TAAlN0AdPT8lYs4DkBnCQCSz9ip/LRvOdTq7IAAKIAOpIA8UAYaQAcYAlNgAWyAI3ADXsAPBIPNgA2iQQLgg3SQA3aBfFAISsBBUAVqQQNoAq3gDOgE58FlcA3cAnfBCHgMBGASvAJz4D1YhCAIC5EhGiQFKUCqkDZkCLEgK8gR8oB8oWAoDIqCeFAqlAPthgqhUqgKqoOaoJ+gc9Bl6AY0BD2ExqEZ6E/oE4zAJJgOy8FqsB7Mgm1hd9gP3gRHwUlwFpwH74Mr4Hr4FNwBX4ZvwSOwAH4FzyMAISIMRBHRQViIPeKFhCCRCB/ZjhQg5Ug90op0I/3IPUSAzCIfURgUDcVE6aAsUC4ofxQblYTajipCVaFOojpQfah7qHHUHOormoyWRWujzdGu6CB0FDodnY8uRzei29FX0SPoSfR7DAbDwKhjTDEumGBMLCYbU4Q5jGnDXMIMYSYw81gsVgqrjbXEemHDsSnYfGwl9hT2InYYO4n9gCPi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YmoKNCAwIG9iagpbL0lDQ0Jhc2VkIDIgMCBSXQplbmRvYmoKNSAwIG9iago8PAogIC9UeXBlIC9NZXRhZGF0YQogIC9TdWJ0eXBlIC9YTUwKICAvTGVuZ3RoIDYgMCBSCj4+CnN0cmVhbQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iPgo8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgo8cmRmOkRlc2NyaXB0aW9uIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgcmRmOmFib3V0PSIiPgo8ZGM6Zm9ybWF0PmFwcGxpY2F0aW9uL3BkZjwvZGM6Zm9ybWF0Pgo8ZGM6bGFuZ3VhZ2U+ZW48L2RjOmxhbmd1YWdlPgo8ZGM6ZGF0ZT4yMDE3LTEwLTE3VDAzOjE3OjMyKzAyOjAwPC9kYzpkYXRlPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczpwZGY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGRmLzEuMy8iIHJkZjphYm91dD0iIj4KPHBkZjpQcm9kdWNlcj5BcGFjaGUgRk9QIFZlcnNpb24gMi4xPC9wZGY6UHJvZHVjZXI+CjxwZGY6UERGVmVyc2lvbj4xLjQ8L3BkZjpQREZWZXJzaW9uPgo8L3JkZjpEZXNjcmlwdGlvbj4KPHJkZjpEZXNjcmlwdGlvbiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHJkZjphYm91dD0iIj4KPHhtcDpDcmVhdG9yVG9vbD5BcGFjaGUgRk9QIFZlcnNpb24gMi4xPC94bXA6Q3JlYXRvclRvb2w+Cjx4bXA6TWV0YWRhdGFEYXRlPjIwMTctMTAtMTdUMDM6MTc6MzIrMDI6MDA8L3htcDpNZXRhZGF0YURhdGU+Cjx4bXA6Q3JlYXRlRGF0ZT4yMDE3LTEwLTE3VDAzOjE3OjMyKzAyOjAwPC94bXA6Q3JlYXRlRGF0ZT4KPC9yZGY6RGVzY3JpcHRpb24+CjwvcmRmOlJERj4KPC94OnhtcG1ldGE+PD94cGFja2V0IGVuZD0iciI/PgoKZW5kc3RyZWFtCmVuZG9iago2IDAgb2JqCjg1OAplbmRvYmoKNyAwIG9iago8PAogIC9OYW1lIC9JbTEKICAvVHlwZSAvWE9iamVjdAogIC9MZW5ndGggOCAwIFIKICAvRmlsdGVyIC9GbGF0ZURlY29kZQogIC9TdWJ0eXBlIC9JbWFnZQogIC9XaWR0aCAyNTAwCiAgL0hlaWdodCA4ODUKICAvQml0c1BlckNvbXBvbmVudCA4CiAgL0NvbG9yU3BhY2UgL0RldmljZUdyYXkKPj4Kc3RyZWFtCnic7J17oesgDMaRMAmVMAlImAQkTAIOJqESJgEJk1AJk7B7tvO4e5Q+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+PgpzdHJlYW0KeJzNVMtOxDAMvPcr/AME27HzkBAS+0JwQ1TigDiBgAML4sTv47Te3e4uQuJGKzeJ7RlPnKifHQHae9KGXBke192n+wgyQ0zNdbPvzJ4XER2NKVC1J0MRIM2BURGHtNOrNcPiwzgQXrpZ352uKAFLKIUNAf3zTgNxClkLYuQIXCgYI2LlAv0a7s/QAmZiZuyYzCyMlo/V7MJs5uPc8+r5A/TXkwpFg7S6nApEpVBUa8mq2woLZ16arUZ2wpFlUE68JzmbYrF8tl6V1oVWlWVDR4QNvxVM7AJlIn455gyxo9KO32DMyJpA4hg9BxU42zENLNvte1YaEZR9bMybmDHTzDG/tq6mEDm1YAQRDFpjrUK7vc5d/9w1zlx7nBxMq7w4YtaQGjCmBJLEjj3WUnDHvHTtpplaZ9jneTJfjazL/vC6JuGQSPfvNkItdgWPvBi4+YZ1+54Mjjdgu5oynO1PLjxYjgm4mbzCXfdu9/+yu38w75P5Fb66scYBza3Jn25gDP9RLWnAmg6XOJn+ReEEfqROKKj9JP51M9v7DU0C+bAKZW5kc3RyZWFtCmVuZG9iagoxMiAwIG9iago0MTYKZW5kb2JqCjEzIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDExIDAgUgo+PgplbmRvYmoKMTYgMCBvYmoKPDwKICAvTmFtZSAvSW0zCiAgL1R5cGUgL1hPYmplY3QKICAvTGVuZ3RoIDE3IDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCiAgL1N1YnR5cGUgL0ltYWdlCiAgL1dpZHRoIDQ1MAogIC9IZWlnaHQgNDUwCiAgL0JpdHNQZXJDb21wb25lbnQgOAogIC9Db2xvclNwYWNlIC9EZXZpY2VHcmF5Cj4+CnN0cmVhbQp4nO2d6arjMAyFh0IolFIopVBKoRRC3v8Rp8tdusSSLB85yz3f/7npWJEsHcnOv3+EEEIIIYQQQgghhHzSbI7ttt7jzu1x29R73OxZHy7dlWO1By5uj+suh/Wi2iPnS7M9dl+01R66+X5kR1csY7k9d08saz338PzUM43oZLm/dK9U2wjfH3zZV3t5ZsOn+a6caj3889HdhZ6YQbPtMd+NSs/f9j+d4dRM/wJeWdd5/in1/HrZ8MQ5p1ZwX+Xxi+QbtKvy/BmQ9IFLlcevkxZcVXn+DNgll7DKRnRIPr7G02fBJrmEVeqJNvX0c42nz4JV0oI1Uom+WuJBnW14DqRTiRpxbJ98+KbC02dCMo7VqCeSmXCdXXgeJJPR7hD+7Cb57HrK+vRJB7L4eiIhyHSs53NIr2J8f+KYfHTFDvPkSSej4bKIkEWxP2FHWMbomixdi7KezyGdjEYnhOkgWqu3NQ/SyWjwbiR4P2XtHNLKaHAYFYIoZe0chIXsQufH0kGU22AWaW0yVtsSgii3wTwEC0YW1oLvcxvMQ0hlIsOoEES5DeaR7rJGhlEhiHIbzETQ1QLDqBBEuQ1mIqUycWFUCKLcBnORLBgVRqUgym0wFymViSrqpSo06JEzJt0i7MK00XR3nttgPpI/BGmj6e48t0EH0nIGhVEp/+U2mI/QYApqtiaO29zgiIwDIbOPmdyUChiOyDiQYlrIwJMkA3FExoEwK9OFzI1KYZsjMh5EC+LnRqXkt86Zqdkh1fQBypq078bPGc8SYdKiwytrYvXCAxMu5I0QXRKK7wsvBvIhWhCtrAnFIM8NepE3QmxJmD553VFScyNvhFiZRNQPWEs4kTdCaHoh5jGU1NzIFkQ2fER3Zy3hRgxt0FxGymNYS/gRpVFkLiPmMawl/IjjTsj9Scx6WUsUIAY3XHgT8xjWEiVIDR+gd4gzOawlShCHZTrU7MNCHAdgX6IEaYDzBibPl98T1hJFCPN/dyAFhbzbVrrTdK4o9QQky5BLCY76lqHUE5CCQhbQOeNUiFJPAAoKuZSgIFOKnOgjMkWlYqEgU4iySZUXFIoLUpApRqzVuvIOhdyE5KBoOUqQK5VM5GqeV4oC0GSZwopbcUEG0XI0WabQTZRcl6o2AKXNW+aEmodT1QaghtESJ1RckKo2Aj2M+kOd9nbw8wQQ1DDauqtuTfFhEIWgh1GvE2p/mUEUgx5GvU6ouSCDKAg1jDqdUJkoZhCFoYdRnxPKbSUGUSCaNupzQvXFoCYKQ9VGXU6o7YLURHGoLSaPE6ouSE0UiOouDidU/yaDKBCtU9/lq6N6esTuPBClkX4nc9dSXZAjTlC0udFsJ9TGGDniBEaPeXn1t9aa58FdNLqyljcxo7TmOw7bw9FLwpyxtUbXCKiogVE1zC6ngNPfBypqcPSS0J58GFJbFoNw9OTx6jjGEk6TtDsqagFYchmjtmaIyCwGA7DkMq3JdQwBmYcGA7DkMibfMcRj5jEhWHIZQ0WhF/McrwjCossYKgpLNGYeE4LFefQyQDsVfIOf6AnC4j1qo9BQSTCPicLSY9IETUsoZh4ThsV/5GTGFIl5YCkMU0EhJjOGZj/zmEhMBYXgQ5Y0hn2lSEwFhaDMGFr9/FBdLKaCIqnMWNRxDhnGovfW7/SXA4a+bsf5mGBsVX2iKNRP0HScjwnHVNX3C5uGye+OpUQ4tqq+Lx0xui9LiWiMTvjZrjeVgiwl4rE64Xs0tKkBHFGrgE1ae7fFwiYGsCtRAaMzvdV1thjKar4KVid8jqNGs7MrUQWrEz7FUWMMZTVfCasT/sZRYwylC1bC7IT7zH/AQe1aWJ3wKzGxxlD/7V4kE7MTPup6YwyloFYRsxPe4qjV3nTBipidsFtb9VC6YF3MTtguTD2lji5YGdPAyx3TYMUNumBdjC0KO3TBylhbFGbogrUBOyFdsDq2sSUzdMH6GMfWbNAFB8Bc51mgCw6BaX7XBl1wGIyCtQG64DDYBkANsC84FGZtTYGt+aGwa2siPOsyHJiyngNqwwGpKDgjOiSIsp5j2oNSXlHwpMSw2Lv1CVjMD421BZ+CxfzQFPYoWMwPT1kywwu4RkBJMsNKYgyUJDNzPHO9OG6nplH4k5mJpTGL1XanR437tUmn/XpCSbZbmbHejT88y/Xu8KXjqzL8z3zl5bCZilrh7fVOIY1ZrH5s90Bzwtcpvva4nYQVfW2msacxzXp36gkvyt79ec6nPe1GvzH62kwjTmOuntdnvDvK5p1IzU+7cfuipygcaxqz3B7EAkkWIYSXedwRNb8oHKUaI7jeL6IZlMOS7WEz0tCTXxSObmu4Ws/2y8WvYRhe5cs4Kw3rQd1vxtVUWm4zkjEpelgzgtP4AmruwEU7mv9BszlkFrTCT894kS+HUblifkk4jnJ+uTcfcPxFyMEy84HTdiy7ou0C7lfOQ5twsc51vu9fnvyTjkN5l/0YMoKlayUG/chgsynoTScdx6dOXRPUgd9mnwEHzGaarSN2PpHURv0z0Mch46n1xp9PBinqS83XpaOH6UOpSc5DGXFRsCDV5+0B5uvS17l70oEXhjFi0emJqiZcbFAnPRLJB2KGvb4Ry351xbJwXTpW90RClgGdx6trxNLXrpIJl3vouf/+egJ0EujGsVp2Wn6Qt4IJF5DN74Xe9QWear5yqNIAL966u3hxZgW/vahLjBcAw/Sdyz48miIMGCvOLLa4s+LP9G6E2Ata7pxjo2nxoYnvnxn1K5cR7vf4yX2P82isOoc41c0rxXwSY8JNyILeuBwSVVCzOQY44mUb84rjDBgx9NTsApbyRqvpX6sIV4xwRKQB4RJpVPg826bOmi06qbk6InpHxBoQa8I1Snp5oc2q0dytK+EHHJCpqV/NTgEz4SYi+3R18dby0JuDE6xGLFGzU0BMuNgF2O/sH2pZ7sG/BxRMIwyIMOEiIH0pbtyhjdjuyoNpjAGLTRhgP5A8iTZi6YYYZcAyEzbwzAGqLoMTm1NJdRFnwAITNujy4Yyvoksmcz45uVurkQb0mhAdPy9BDTpsk+Tis2GsAV0mBNuv3Uf2uxrkluixYbQB800Itt8xviuHHBbItmG8AXNNuEHaL0pCfqcB9rzybFjDgNc92r6MSP2lPdQ8ygHsO2fYEK2FprA2m1ZA/TO4ldpDg5OPrDasZUCjCRug/aq63y84Cf5iqQ/rGdBiwkXugcU0tXa/PnA6hF7jOw3obJSfFafYwl4nnNzvAzfJc5SL2LVvybbe7EccQlzBdhBoy80LbJR8LwQT51TarTJw3l+ZNiFsA2x3Qx9h/AaVmbbJs0ROAz7O+Djjb9ufYC1Qn+xyilJBoDbES/+m4Fy073zE+3GYviVegwLo0NvfJyhx6dQTvJwu/juM7Z0M3r7/ElQALWrOhIEaMPjYDp0GfN7IvJHvTWEDBdDAGdpSMCLT6wbkVdJeMxHvTn14ep1AGego0s80GBs+VWNuKfRtn/Ga8Ke2X2DStZHb7wbGht+h1C3EfGQh3h3s621y1qNvTMB+NyA2fITSFcyAfme+heMG0lI7TcN+NyBNs+v/1326rO9wlt+EG4iGNs78MwWktmjdO09/k7ZOdzHBeVL2uxEx/Gol1WXHj+pbGZf+YgU+gGclPSZRs0H1RFotHDvIHqgdac5lEBNKiv3oWdXfeuT77uqbcEIJaD/QWS4DWne9sglN0wcjB9aNMaGPR9Q0YfshjU8TTDlswjKiVM+EhylvgK/gphJkbGOClUw4vQpQpEp1aJ3zXFZ4oeYSQH+pEErtQStenTnOJ4D+gppPSJFz3iHYhHPIQPuIzUrzDqyEmnA0I2h4lnHrln1oLOynaMPCEwc36/xK/sFNUM/9nfllMO/EaKUu6T/ChJPX0Cxg5hVecPZu4CacvwM+WIALi8RwtQHMDbM//AkHfAB1w5KLspEm/CsO+ADohmU3neMUtj/kgA9Qblh6PS/IhH/LAR9g3DDj1oLU70AUhjOvAVMAakPEjZKAV2myczClFNeGoJUrrCrmqoJaKPzcQAtautK68A/ugQ8A10EgxjABUfTP5aEPIDK3+G12E5BMxi8qTBjUacrCn4Hq18+ypSuB6zOVFYS4ir4d3cH4UJC93nPBJgSV9/6QG4IbvX5dDaxs/xk3hA9beE0INmD3R9wwZNJiNB3eP6CPBk07OUwYdDhu5rVh3PB2tgnDTjdO97SgDvBOzk8yC8PI46kzm7f/JWBA5pkRTfxO+9BnivgDvXYTxk/dz1Bmq3GK0GrCKpda9F3xN2EqHT+zmbDWrSQzCqX1joBaTFjvWpm5hNKqx7B1E1a9F2gWWWnIZ2nTaIcIa1/spFwAP36Qn0WxIXvhADdzTfos2iDXOokmHOJqteluh0NdrSaYcKCLwhIXwI+dqKOCOkkTDnXT29SuprxTOYF5JWFCtwER/5eJ2RBy60G7wV4w6v1r130Msh9M5IrmG5gE9CZpuJsZPVOIW+efuk8AYFTdidgQY7+vUXb3IMRH/uf9S9+HWjCXqUzAhqAC8KeIcrek3kzoNuBPNQfSlkZuQ5D9nnV9zPcKls4/8jK6tMT870ZsQ9B37N6mhRrAR1+8r8F7RgS6l+o4zrwUVT98KJvl3+1ZOA34mQ+hZPrx1Rawb4H2qfne00Xt17vgfQV61TBUq2xc1983KP0sNW7pLOW+0hBncE8tMUqtH/ILyq8sYWJVujXkfMTJ/2+lEXrUhtHux5DUwD7DK+8N/g/x+nYueZIfJ9oPndSgvhrZ6fuC04Q7379Tj2LgZl8vm+GCKS58Wj4L7TShy1ksZ2lwzc+BguliA+yWmi5YrndJvfF6GGAD+1Q9M12CPn79+PnGV7CWCe3HgoFDJFUdEep+OcVtHRNmnetGDgLVcsQVtNOdV9jWMGHuwXykDdt9+KR3s4f23rOFiXgTOm5WgA7knSPr/MUWfADecdIuelzQdzUGMCu/coyJposN+mpe3yBlrAndd5tgByvbA3y6bY0e83La71+sCUsup4GJww8uyC1xjSwd7vjt9y/0UxFlWxCsQfMFxogLvPnK7PcvzoSl9wVfgdZZXbkR4Xvf/UeVJ1sxJgQY8MoKvWR+IzbbiFMrmMZmhAkxBvx3q7jgm44jsVlh675vYKoD3oQwA/5Di1YPjhktjGZzjKmbkb0wtAkv4Doaq1w9OO8s8XS1D0oTWvCQHVadKftqRS/A3ukvl8NaetWW27AD7xf8OUikCQMMeGMdsp7nXSKWBYXOGzGiO/B21zA9GV0ifv/gY9/DogyIDp+/oEwYZ8AbK3xBffXDvifFRNBz5BQIyITRbbkFbhrsm94b4r2nswTaQ3C7C3LHa42+agNOa3rrQ+/hkCSh7vcFwIS1JlSWyEK/f2XB0nqdsY9iE5Z/scIOTGM+9f99YA2Kb28lKTyKgvj2Vg4YIyZa46iLw3P0HwBFL15vVh4MwIiJ9GJR+ndvnLfVp1cLTIgUQ3MoNGKb+rvFetoA5vtXIpEOZcAb64M/O02G/rJ6Yhjz3Sg/IjoMS68GnUyfC+qJ42bIc1S+M7pDG/BG45Ki06HD59ftYcDTNw9c4sxILjvLn2NJ1BI3HCeqzvFTxhYcXxMd0yno5S4nngrflckMo+2wsfOF7FKodiGosdiYXVFa9IwwejI1jOuRu5+MJIa+sDSNJvX2Jb4xhtFTqsc4HNlhtB16706wVhNU8eNchjA6QuvdyM/Lh5BjbFwDqhQM5Z1LDKOX43ZckfMXjzo6xjj6Q5O0ohhEhTB62q1Hk7V80niqCfR4Gpx+KypfOOwJo+1pvxmr633j64HXbCx5+bSi9t697Cfn46g974e1y4BdN8od/ZPFc3ajbt/bH9ttJvL/u/4PvRqxsqWMitXuMUyo7t7Nab9bjT1ovuFv8k7sc53LzX68GXQBjduAXTuFPWL+lIzyzfKVnhoOUfuJyWz2M6ZsEHP0ReH8KR1UnlgyMz+8V2j/wGRmYMqv+WQyMygFlcQPTGaGBHEo6DL0f+IvU1ZJfKOo/SQQ0EdmWFEMBeqkxxTaTPMEdqqSFcUwoFyQFcVAFBfzT7CiGALQZ8juCIPsJAqkC45rBv+vgHRBlvUDgHVBOmF9sC7Isr46aBdko7A2Zhc0W5pOWBWzCx7t4jedsCZWF7w6lrkHTCesiNkFVzk3XdAJ62F1wXvTwXy2nE5YDasLfo0SmrMedplqYZ0w/NarzXGUXaZKGPuCPy5lvm6GO2EdjH3Bp3Fsq9NyJ6yD0QWfe37WgRo6YQ2MJ3Zf0hLrQXs6YQ1s/vR2pMUaR+mE8Rhlsve5CWMcpRPGY7vS96O0s9b1dMJobCcleo4FGut6NuujsQnVfTc+GOt6NutjsQlqvfOfxg2UThiLqZpPnOo09plGfd/a9DFV84nDSMabgzg7GokpEiavajJqARO7EGlamG7yTVvAdhHw2C5wnhOmUkLo8hnFNTaZwrDkIqKqYisKWdWHYXEhuZ4zJTPJ7xqRQiylhJJJ2opCVvVBWFQVLZE0yapTunh0SljEaXVYyZbMsKAIweA+huaQKZlhQRGBRRK1XA1jSmbYJgzAkMeY9i9TMsNbggIwdNltFxpY2vXsUOAx6DFGTdqk7PB2CzgGPcaqhlmkHeYycPQ8xrzopjYxcxkwemcoY8zMUlEwlwGjN4Zy9GhDRUFdBssC6YI2hZW6DBR95jpPjTZIrMxloKgrnlnAGcp69piQ6CVcbkPIUNZzaA2IWsFl5x0GJ+Sto0DU3DFfQjE4IUtCGGpn0DHjaeg2slUPQw2iHhVTbzeyJIShqWCuMWuDwM2xQxCqouZrJOhOSGUNhLbUzpMOuhMyjILQgqi3l6c7IcMoBC2Iug8b6U7IMApBcxV/O11teDCMQlCCaMF5P12YYRgFoAXRkrpbFWYYRgEoQbRoqkx1QoZRAEoQLZO+VCdkGC1G0S8LBztVsYBhtBhFEy1dYa3rwXsRipGXuPgeNHVihi2mQpQgWn5gWhN82GIqRBlxKk80tNlRDjwVIo84AZZXm2PkwFMZinSJmOmME+3IPy3RgCSKmr7Nr1AUIWvPmHlApaqnLFOEuLagY5paVU9ZpgB5cVF6iVLVs54oQMwyYLeaKxULJ38LEL0DVqkpBQXrCT+yIIPbn5SCgufQ3IjhDag5h0t3fxYxz0cmGLLyw/6EF3F/gu5OSocC+ag/hVhLQKUS5XYLCmtOxAQDW2fLuQyFNSdSLQHem+RchsKaD3FV0UKJnMuAH/ZXkGoJeJUt6zLcCF1IfQn4ziTrMqwIXUhLiu8XiLkMK0IP0jx1QGoht0Hwz/sDSIOiEQ0fUUXnRuhAyg4jhjjF0WKObucjpRYhE4Bi8cIeYT7SvhRzX5bk9Lx3Ox8hqAUtp1gSclgmGyGxCJIpxbFDXpOXi7ScUT1zqR1JcTsXoWMXtidJXULW9LkIEklYZi8qa1EPnS3CNhiXVEhKLMed8hC2wcBmnRRGOfebh7CWgfKIFEaZyuQhbIORlZkQRpnK5JHeBkNXUgqjkc+dH8I2GLofSWGUqkwOgi/E3i0hhFGqMjmkt8HgJoHw6nDSIod0myA4qRfCKBtMGQjrGL0bpd8dNpgySPcGw2dvhRZT9KPnRLo3GD7tIGTBnJWxk27zxKf06UqUupqd5CJWOMCQ9n8mo2bSk6IVFjE98ERdzUz6sroaLZ7kUUKeYDKTFEaqJPRpNaHG0+dB0guqdHjSsgybvEbSCX0VaTItJ7CcMJJ0gkpX8yRlGSajRpL5fCVlMplIsU1vJFnPVyqpk/UEywkjy31CF6nVY+3PpC579njtrA49q1itHuupJ9oD05hc1h9GrLYNvadS7YH9eR+r13BazQteypnLnuYrYbn7ye0rXvP588zzllV8Oc3meI+nFacc7vXM5bDhF3tgLHenmu25dXuk8xFCCCGEEEIIIYQQif/EcnVmCmVuZHN0cmVhbQplbmRvYmoKMTcgMCBvYmoKNTk2OAplbmRvYmoKMTggMCBvYmoKPDwKICAvTmFtZSAvSW00CiAgL1R5cGUgL1hPYmplY3QKICAvTGVuZ3RoIDE5IDAgUgogIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlCiAgL1N1YnR5cGUgL0ltYWdlCiAgL1dpZHRoIDQ1MAogIC9IZWlnaHQgNDUwCiAgL0JpdHNQZXJDb21wb25lbnQgOAogIC9Db2xvclNwYWNlIFsvSUNDQmFzZWQgMiAwIFJdCiAgL1NNYXNrIDE2IDAgUgo+PgpzdHJlYW0KeJzt3WtvXdWdx/EXMlJGoIDJxfHxCSEyacjVcYhzwbEDzuRSTKEQRoQSmAqGMuqQioFRWqoRaqUOlVpBpZGQ8gCpqHk0gsfzns6csNDu0bnss/del9+6fD/6P8de2/qy9jWDAQAAAAAAAAAAAAAAAAAAAAAAAAAA3f38f/9vdNQ/Tto++/ELo6P+cQB4NBZPKmpvLKEUFcjPrHJSUSfqK0pOgXQ1iSchtdewouQUSEXbeFJRS20rSk6BOHWOJxW10Tmh5BSIhH08qagNJxUlp4CQw4oS0g6oKJA6KirkNqFUFJCgokJUFMiA24oS0lZIKJABKipERYEMUFEVTueBPFBRFSoKZIOQSlBRIBtUNDwSCuSEioZHRYGcOK8oIZ2LigI5oaKBOU8oFQW0qGhgJBTIDyENiYoC+aGiwXA6D2SJigZDRYEs+agoIZ2KhAJZoqJhsBEFMkZFA6CiQMbYjgZARYGMUVHfSCiQNyrqGxUF8uapooS0QkWB7FFRf3wklIoCsaGi/pBQoASc1PtDRYESUFFPOJ0HCkFFPaGiQDkIqQ8kFCgHFXWOjShQFCrqHBUFiuKvosWGlIoCpaGiDpFQoEBsRx2iokCBqKgrnhJKRYHIUVFXqChQLELqBAkFikVF7bERBUpGRe1RUaBkXitaQkhJKAAqaoOKAmA7aoOKAqCinflLKBUFEkJFOyOhAAxC2gEbUQAVKtoBFQVQ8V3R/EJKQgGMoqJtUVEAYwhpK1QUwBgq2hwJBTCJijZHRQFMRUib8JpQKgokjYo2QUUBzBKgoqmHlIQCqEdF61FRAPXYjtbwnVAqCmSAitYgoQDmClPRRENKRQE0QUWn4nQeQENsR6cioQAaoqKT2IgCaIWQjqGiAFqhoqNIKIC2glU0iZBSUQAdUFEjQEKpKJAltqMGCQXQGRVlIwrABttRKgrARuEVJaEA7JUcUioKwF6xFQ2TUCoKZC9kRaMKKQkF4EqBFWUjCsCh0rajJBSAW1SUigKwVE5IgyWUigJFoaIkFIClEkLKRhSAP4ErKgkpFQXgT/YVJaEAfMs7pFQUgG8ZV5SEAggjy5CGTCgVBQpHRakoABvhK+o7pCQUQGCZhZSKAggsp4qSUAASeYQ0cEKpKIAKFaWiACylHlISCkBLUlGHIaWiAOTSrSgJBRCDRLej4RNKRQFMpaqoZUhJKIB4JFdRNqIAopLWdlSSUCoKoF5CISWhACKUSkXZiAKIVvwhJaEAYkZFqSgASzGHlIQCiJ+wovUhVSWUigJoi4qSUAA2ItyOshEFkJaoQipMKBUF0I22omMhJaEAUhRJRdmIAkhUDNtREgogafKQUlEASdMm9PWP/5OEAkidKqG37//tmfMX3riyQUUBJE1V0bUXd54+s3b87LN3r22RUABJC5/QK7/45TChZtbX139z83kqCiBdgRP6yh+/rBJq5qWNSyQUQNKCJfTON9+d2Nwaq+hw3t3epKIA0hWsouuv3ppMqLlA+sn1KyQUQLoCJPTqrz6ZmtDqAikVBZA0rwm99Zf7z5y/UFPR4by66fcCqXqBAWTOX0LvfPPd6avX6hNq5oOrvi6QqlcXQBE8VfTi7Z81SajXC6TqpQVQBB8JvXHvvxom1N8FUvW6AihI+Muhk+P8CVL1ogIoiNvLoVOfDm0yDp8gVa8ogOK4quisp0MbXiB19Yq9ejkBlMg+ofVPhza8QGr/ir16IQEUyjKhky/Ld5vrz12kogAS1Tmh5tuhTio6HJtvkKqXEEDROle04QP2zafbo/jq9QOALiFt/oB9qztNHR7FVy8eADzUKqFtH7BvPm3vNKmXDQB+EP6O0qxpdadJvWwo1N4rr1Sj/lkQkfB3lGZNw48+qRcMsXjQOzM6Af6LoxUdmwD/dURrbkKbf7LJfpq806ReMGiMNXPq+P4ZaipKUQsX/o7SrJn7TpN6qRBIk2YGrmjDhFLUYs1K6Og/6BlmVs89O+tOk3qR4FG3bIYMabeKUtRyBL4pXz+zbtmrFwkuucpmQhWlqNkbS2i3r965mslb9urlgQOeyhmgom4TSlEzFvimfP2M3rJXLwy6C1DOACH1WlGKmpPwN+Xr587zl6loisKXM5uKUtQM/Nzuw6HO599fvqleEjSiLafXikoSSk7TNdz4rZ57Vh5PM8+cv3Dnm2+HYVevCqaTBzNMSOUVpagJMafPH1zdlPfTzM5n/11dqlWvDf5OHsmSK0pOYzZ6Q/yljUvyhK6/emvssQH1ChVNHkZVReW1JKepGHus6Dc3n9ee139/Lv8dFZWT91AeUnkkKWoSpr4opD2vv/qrT6a+CKBeqlLIG0hFyWlCal5af3VTc16/9uJOzXv96gXLmTx9sVVUHkNyGr+5H1BaX18Pfy5/+/7f6j+Qol623MiLR0XJabrmVvTuta1IzuUJqXPy0MUfUnn6yGnkGn5Y/o0rG8ESOnlfnpD6IO8bFY1h7NencA0Tambjwvkw5/KT9+UJqUPyrKVVUXnlyGnMWiXUPPh0/Kz3B59Gn7EnpA7Ja5ZoSOVxo6XRaptQM+9u+33w6eLtn3VIKCGtJ4+YfGxWT541chqnbgn1/ULTic2ttufyhLSGvF3xjM0yymsmH1d/kDmxSajXB59u/eW+TUIJaUVerdjGZjHlEYtkXP1xZsA+oebBJ+cXSK/84pf2CSWk8l7FOfYLK49YPGO/mElzklAzd56/7DCh9a8pUdG55JmKczyttrxjMYyntY2cw4Sauf7cRScJ7fBoEyGtyEsV24RcfHnKYpiQC67lPKGfff/gk5MLpK/88Uu3CS0kpPJeRTXaYyFPmXy06x+Aj4S6ukB6+V/e9ZHQvEMqT1Ykoz4O08mDRkud85dQ+wukbi+HZh9SebUiGfVxaEreNHLqhO+Emun2BKmPy6G5hlQerhhGfRC6kzeNlnYWJqFmOlwg9XQ5NLOQytslH/URcEmeNVraSsiEftb+FfuGH74rOaTyfBFPf+Rlo6VzBU6omebfIG314bsCQyovGPEMRh43WjqVJKFmmtxpOn31WpjLoSmGVB4x4ikhjxstHSVMqJn6R/GfOX/Bycvy+YVU3jHiGQN532ipPKFmau40dft2aN4hlaeMeEZInrgyWyqPZzWz/hV7h98bySak8qDRz5jJE1dUS+XlHJvJd5psPr+cZUvlQSOeCZFXLvuWyps5dUa/iq+9oxRbSOVNo5+Jklcu15bKa1kz5p8NDfaOUvwhlTeNeOZBHrqcWirv5Nx58YUt+U35GEIqzxr9zI88dBm0VF7IhiMvpDyk8rIRz4zJQ5duS+VtbDjDH1WeR2FI5XGjn+WQty6tlsrb2DyhhjyP4UMqjxv9LJO8dUmEVN7Gtgk15HkMFlJ53Ign5LmLuaXyNnau6KCMkMoTRz9RkecuwpbKw2iTUEOeR38hlSeOfmIqee7iaak8jPYJNeR59BFSeeXoJ+aSF08YUnkVHSbUkOfRYUvllaOfaEUevfAtlVfReUINeRvtQyqvHP1EZ/LoBWupvIqeEmrI22gTUnno6CfsyaPnO6TyKnpN6CC1ilYhlYeOfsItefc8tVReRd8JNeRhbDvy1tFP+CCPnvN5euWoPIwBEmrIw9hw7nz1zbX17Y/7p+XRo5/wRJ4+V/PEU0f/cfdC/0Dv/c2L8kL6TqghL+Tcee29u5sHTz+3/+hw3lk+Ja8f/YQ/8gbazL7LO7sX+8OEVnPx6NF717bkqfSaUEPeyfotqOlnNa/1Tny9rC8h/YQ/8h52Sej69lhCzezft/j2pXV5ML0m1JAHc3LeuPf7ags6Ni8tHf+ir08iCYVX8jC2SOjZrUcW9k0mNNpNqadDJs9mNe/89dubWy9O7Wc1Vxaf+by/Kg8j/YRv8kLOT+jJ8zX9jHNT6u94yfs5nDd/96dZW9DJ+fRg7CH1d7BQDnkna8bcS2o+MWxKfR8vbUJ/8tO3GvazmmjvN/k+UiiNPJjjW9DLO4/1DrVKaLUpFd6+D3OwJP18689fbZ/aaJvQ6jJpbPebwhwpFEgezx8Sur796N4DHRJazZXjx3JNqBE4oa9/+OvmZ/GzLpNGcr8p5GFCscQJPXm+/l5Sw+kf6N19YSPLhBph+tnkRlLz0V4mDX+MUDJVQp9YOWHfz2oeW9j78tpqlgk1ApzFP3/knKuEai+Tqo4RChd0C9r1QujcWVt52t8tJ/Uh8hjS196767afqsuk6kOE0gVKqPWFUMktJ/XB+UHkZ/GzLpOGeZpUfXCAH/hNqKMLoXPn+ulT+SXUiPwsftZ4/XqJ+pgAU/hIaNsnQi3n+KHDTs7u1YdiCicJtb8X33ZuL590fnavPhRAHYf93H/pxtRX432P/feg1Aehjk1Cd27cCtnPaq4dcPnSvfoIAI04OItf3QhzFj91bO7dq9d+vm4XQjs/UR/P2b164YF2rM7inT7O1HnWVp7OL6FG2wuhgc/ifZzdq5cc6CiVs/hZMzy7b36ZVL3Y7TS/ECqP5+h0OLtXrzRgK5Wz+FkzPLtvcplUvcxdRHshdO40P7tXrzHgzJx+Xt6J5Cx+1tRfJlWvbnc1F0Inv1Ef1cz9YL56aQH3ZiZ0xmfqY5tZl0nV62pL+0SozdQ8ma9eVMCj8YQeOxvhWfysWek/OXqZVL2WzowmtNU3lmOY9/un6CdKU53FLxxckYex7VRPk6pX0b0I7yU1nJeWjv/PMglFWYYVeuHUKXkSu83B1YvD/wuol9C9YYU+PbgqT2KH2blx652/fjv8v4B6CYEQRq8oDjd1+/ctyqvYfB5Z2Ldvfbu6HKFeS2dGz4g/769eWXxGHsaGs3nw9Bv3fj92XVe9nIBHk7dm7l3bWlt5Wp7HJrN7sb//0o2x67rqFXVg8tbMF/0zw3NkeSHnzvapjTtffTP1GQP1ogJe1Dwp9M/rZx9b2CvvZM0sHFzZd3ln6jMG6nW1Musxoa+Xz7zWOyHvZM288ua/zn3eVb26gDNNXvy5+8JG/0BPXsups+dHp+e+MqBe4y7mPrL+fv+UvJaTMzyLf/N3f2r47pV6jQEHWr2HfuX4MXkzR+fhhdCT5xu+e6Ve6XYavvvz6cG4LpNeW982N5JajXqxgY66fRPp7UvrkZzdP7r3wOi9pJxC2uo99C/6Z64diOIyaZOzeEKKbHRLaHXLaaX/pDahj/UOzboQmnpIO3wQ6evlM7eXTwr72eosnpYidTb9jOTsvsmF0ERD2iGh1XzY17zT1O0snpAiUa4Sqjq7f3ghdHXDJqExh9QmoaqnSX/y07dc9ZOWInJu+zl6dh/s3v3UJ0KzCal9QgM/BDX1iXpCiix56ufoXDzq/d+we+Kpo676GWFIXSU02Nn99qmNt/78lb+E0lLEI0BCzby8turp7L7V40zJhdR5PwOc3VfvxQcb9VFCoYL1sxof790Pz+LbPs6UUEj9JbQ6u3d+7/619+6G7CchhUr4hJq5d23r+KHDzs7iV0547ac2pL4TWs3H/dNONqWuHmeipYicqp+jY/8QlKt78dGGNFhCzdh/wCTYhVBaCiF5PEfH5jLpY71DDu/FRxjSwAmtpvN79ze3Xgx8IZSQIjB5M6dOt8uklk/Uxx9SVULNfN5fbfu6qKcnQmkp4iGvZc20elc0wI0keUu1CTXz9XKLTenrH/5ankpaCn/kkWw4Tb7z/MTKiW7vxSdUUXk/W21KNw+ejudCKC2Fc/Iwtp2X11Zn9fPhp5nObsnLGSCk8nI235TWfKY+5vFx1JAfeQ87z9SX7mu+US8ftwdO3szmm9II7yXRUrgiL6HljN5vCv8skzCk8lQ235Tu3LglzyAthQ/yALoa8/WSmLegzkMqj2TD+aJ/5s6//Ye8frQUzsm753w+uvlP8jYGC6m8ja1m+APLu0dL4ZA8d57G/HbyNgYIqbyKbRNqyKNHS2FPHjqv/azI2+g1pPIqdktoRR49Wopu5KELllBD3kZPIZVX0TKhhrx4tBStyCsXuJ8VeRudh1ReRScJrciLR0sxl7xyqn5W5G10GFJ5FR32c5S8eLQUU8krF0NCDXkbnYRUHkZPCTXkuaOlqMj7FlU/K/I2WoZUHkavCa3Ic0dLCyfvW5z9HCXPY+eQytsYIKEVee7IaYHkfUsioYY8jx0qKm9jyIRW5K2jpYWQxy2hflbkhWwVUnkbJQk15KGjpRmTly3RflbkhWw48jYKE1qRh46cZkZetgwSasgLOXd657bf6/1IXkhtQivyytHS1MmbllM/K/JO1szShet7di0s/MPuP/RPyjspT2hFXjlamiJ507LsZ0Vey6mzuLGz//GlYUKHs7Rr4cvl0/JaxpDQirxy5DQJ8qBl38+KvJmT0+sdMQk1c2z34v3lVXkzI0loRZ44WhotedDK6WdFns3RWT58ajShZp7b05dnM6qEVuSJI6fxkNeszH5W5PH8IaEnL00m1MzO4mF5PGNLaEXeN3IqJE8Z/azIE9o7t23uKM2aD3pHSWgNedxoaUjyjpHQqYQJHb2jNGuWdi1ob9mrj08j8riRU9/kEaOf9VQVXVo8XJ9QM089sld1p0l9ZNqRl42cOicvGP1sLnxCp95RmjVrCz0S2pA8a+TUkrxdMYz6IHQUMqG9M5vNEyq506Q+Gg7Is0ZOW5GHK5JRHwdbYRK6uLFTf0dp1ny0fIyEtiVvGjmtJ69WJKM+Di6FqOiegx0SGuxOk/oIeCEPGjkdI69WPKM+FF54TWiry6GT4/udJvXa+yWvWQwjXH95r2Ib4bEIIJ7LoZOzve8QCbUkT1kME2y15bGKcIItvlY8l0Mnx8ej+Or1FpB3LJ5xvrbyTEU7zpc6cpFcDg1wgVS90mLyiMUz9ospz1ScY7+w6YrkcqjXC6TqNY6FvGDxjM0yynsV27j6+0yag8uh57bdJtThBVL16sZIHjH52KyevFrxjKs/yDxYXg7d++g+HxVdsH6CVL2uUZOnjIomOq7+AvPT/Vz+yWOeErpg91V89YomQ940KprKuPqTy1iXhM7+dqjDC6QkNAx53JKo6KC8kDr56ypH23N5V4821c/rB1ZIaEjyysWc0EExFbVfqGI1r2jDD985md8unyCh4cmLR0XpZ6IiOZcfnYbfIFWvXLbk6aOixDM5kZzLj06TB5/Uy5Y/eQPlCTXkxSOe8YvnXH506h98Uq9ZWeQ9pKLEM36RnMuPztKuhVnn9erVKpc8jFSUeMYsknP50Zn6r9ir1wkPyQsZsqKD1ELq8BdHW5Gcy9ec16tXCOPkqQyQ0EEKFXX7+8JGDOfys87r1WuDOeTlLLCibn9NuOL7ffm2Y87r1auCFuQJdV7RQUwhdf6rwYeN5SPyeP59O7p4eBh29ZKgozwSOlBX1MdvBH/M6fP2vkPyfg5n/+NLDzfG319kUC8MbFFRylmI6lbOsd2L2oTu2bVQJZSK5iTFig6ChNTTT46QRm+I319eFYZ0mNDeue2xxwbUywP3UknowFtF/f3ACG/y4cw/9E8uiR4ZXT62PvVFAPUiwaNCKurvJ4Tc1BeFfrt8QpDQw6dmvU6lXiQEEmFFB11D6vVHQjxqXlr/oHc0ZEJ7vSP1r/arlwqhRZLQQbOK+v4ZEKe5H1AKdst+9KY8FcVUUVXU938RqWjySeS1hZ7vhO7ZtbB04XqTT56qFwyxCJlQYJaGH5a/v7z61CN7/Z7LT9yUJ6QA4tewor5v2c+6KU9FAcSseUK93mmae0eJkAKIU9uKDmfH9Rfz9j++1CGhhBSAXIeEOr/T1PyOEhUFEJXOCXV7p6l3ZrNzQgkpACGbirq607R8ZM0yoVQUgIRlQp3caTIfDnUy6uUEUBwnFX1g8U7T3kf3zX1HiYoCiJOrhJrp8PW8qV+9I6QAUuG2ol8un257gbTtA/aEFEA83CbUzEfLx1rclO/0gD0VBRAJHxV90PhR/CafbCKkAKLlKaENL5D6uBxKRQEE4zWhTS6QOnk6lJACUPFd0foLpA6fDqWiAMILkNAHsy+Qun06lJACCC9YRR9Mu0Bq/7I8FQUgFDKhDyZesa/5Bz0JKYAkBK7ocN5eOmISurjnYPiEElIADoVPqJnn9vQtvx1KRQHEQFXR+8urPzp+XpVQQgrACVVCzWgTSkUB2NNWdPgDEFIA6ZIndEBFAaRMnlCDkAJIUQwb0QoVBZCceBJqEFIAaYkqoQMqCiApsW1EDUIKIBURJtSgogDiF21CB2xHAaQg5ooO2I4CiFvkCTUIKYBoxZ/QARUFEKskNqIGFQUQoVQSahBSAFFJK6EDKgogMslVdEBIAcQkuYQOqCiAaKSYUIOQAohBuhUdiELq8OcHkLqkEzpgOwpALfWKDtiOApBKPaEGFQUgkUdCB2xHAYhkU9EB21EAweWU0AHbUQDBZVbRAdtRAAHll1CDkAIII8uEDqgogFByreggeEgD/3YAYpBxQgdsRwH4l3dFB2xHAXiWd0IHbEcB+JT9RtSgogA8KSGhBhUF4FwhG1GD7SgA58pJqEFFAbhVVEIHVBSAU6VtRA1CCsCVAhM6oKIA3CmzogNCCsCFYhM6oKIAXCi5ooOAIVX/ogB8KTmhA7ajAOwUvhE1qCiAzkjogIoCsEBFDUIKoAMSWqGiADqgoqOoKIC2SOgotqMAWmEjOomKAmiOhE6iogCao6JTEVIATZDQWagogCaoaA0qCmAuKlqD7SiAeiR0LioKoAYVnYuKAqhBQueiogBmYSPaECEFMBUJbYiKApiKijZHRQFMIqHNsR0FMIaNaFtUFMAoKtoWFQUwioS2RUUBVNiIdkNIARgktBsqCsCgop1RUQAk1AYVBUBFbXBSD4CKWqKiQOFIqCUqCpSMjagTVBQoFgl1gu0oUCwq6gQVBYpFRV2hokCBSKhDVBQoEBV1i5ACpaGiblFRoCgk1DkqChSFivpARYFykFAf2I4C5aCiPlBRoBCczvtDRYESkFB/qChQAirqDxUFSkBFvSKkQN5IqG9UFMgbFfWNigJ5o6IBUFEgYyQ0ACoK5IqNaBic1AO5oqLBUFEgSyQ0GCoKZImKBkNFgfxwOh8YFQUyQ0IDo6JAZqhoYJzUA5mhouFRUSAnJDQ8Kgpkg42oBBUFskFFVagokAcSqkJFgTxQURVO6oEMcDovREWBDJBQLSoKpI6KalFRIHVUVIuKAqmjonJUFMgDCVUhnkBmqGhgxBPIFRUNg3gC2SOhvhFPoBBU1BPiCRSIijpEOQEAAAAAAAAAAAAAAAAAAAAAAAAAXv0/v++nRwplbmRzdHJlYW0KZW5kb2JqCjE5IDAgb2JqCjY5NTUKZW5kb2JqCjIwIDAgb2JqCjw8IC9VUkkgKGh0dHBzOi8vcG9ydGFsLm90cnMuY29tL290cnMvY3VzdG9tZXIucGwjU2lnbnVwKQovUyAvVVJJID4+CmVuZG9iagoyMSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAyNTUuODIgNTk5LjgwNSAzMTguMTUgNjA5Ljc5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMiAwIG9iago8PCAvTGVuZ3RoIDIzIDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzNV0tv2zAMvvtX6A/UJfUWUARI6mTYbsMC7FD0tGHdodmQXfb3R70syXKX5hYkqWRKJD8+zZ4HZECfO78Yx9m303BONGSGM6FbEirNBIxWaQCko8gJeSGCX/zfOxi5Yq+Bo95DXiMJ8uYn+zr8GoB9GJ6eifqd6Ir9HaK4zPhl+LwAAzeHr0YokN8gwvNgZNTJ9YhOOeeY5YybkUdI9x9PnE2/gzHhOve5cGJKgt+8po2XF47mDa0ew3mQCqIGv7HINPeCBxIss+Amz0xIPWAvw+443B9QM/oef9TpiWI0CgmrpZMTe3oA4BIA9vSztOe07uin/PPmmR0/eUGKITSCLBNmNE6SHDSzIL1h9OR3Iv4QSQxuiANG5w9gSjrU8kBHEGgjEH8xMG8TzRCjirRwJlck+8st0XPKDSO/PSSlJl7tAKBIXiDBPHnAK3nbhCypU7hPXAkRqqRuTVqArFekBGO3iUNFd/YGQ7yMuw0TarZxWoNtOlc0OCD62Zueffy22s7PU1RQ44jJU2WMdF3G4CEDSzJcx2Ww5xIxAsE9LttK38ckyUTJ4U7yUM6fcA8L4jnPEFqPZplzfBI9BTTIz4FtfHUhlXoLnegrSZasQDnyECGZ0Oxbes7FrKnhMem+ai3MVZWzJN9vEyT4M6VNqeucKeG05p2Kx5dyA9+2Ko/kObSlhmbM2xTFmgbv90eQqdrsnTHqEpmmFa3oC3J0xpM9gFUPqT0plijq/DCljBuv5BJ/7HICQfVpn0H5yjOqeH0ux0yc3SKXty+0p1bKoQrGVJdQLbHughc5XaJPULqhawurFeRKNwqxag7lfyxFInJfizrVY33oy4t3njSpAy5vv+Ml0nijC09uKV2TDrbX18WBskO0MWyAhzrqswX7lzHayte41iaKyaFpdQ6r/RS9nXH7baDRC1/Kul3UrbRKqgA4jil/XgpytGK0ARfZvGZEqc/2xVVXZnle3FJZbaWRS5rVSIcTblVhbs/743K20pKPmgahZgwF5uxobUcNs+TKEMppVJQeMV8jweLxmsl0IWY5QsfjK9GiGsHp5SNU2+tm55ndoytTajdcCpqgDcXISYoRMflg8qYN8t1qmLjEUdE/WzcdFP/5Bz/5yhgKZW5kc3RyZWFtCmVuZG9iagoyMyAwIG9iago4NTEKZW5kb2JqCjI0IDAgb2JqClsKMjEgMCBSCl0KZW5kb2JqCjI1IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0Fubm90cyAyNCAwIFIKICAvQ29udGVudHMgMjIgMCBSCj4+CmVuZG9iagoyNiAwIG9iago8PCAvTGVuZ3RoIDI3IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeJzNVs1u2zAMvvsp+AJVSVl/BooASdMN221YgB2KnjZsOzQbctrrj9SfLcvtlluR2KJJ6uNHirJ8GQiQfzcy+EnD1/NwyToCr2F0rYqsgxFVsA6R2JRmYhlYIYPcb1BpC89xxlLGMiYVFuEnfBl+DQjvh8cn1n5jvYU/Q4IrEz8Pn1Zk8M3xWzIcSb9BhpfBmxRTO0WTnaYJggbtlU6Ubj+cNRx/x2Siu5ZeOIM1KMJzFgQvmqrAo3C4DMZiiiBCIHC6AJsC3PSZj62H8GM4nIbbd+SA/6fvy/akUXlLzDWw5QyPd4h65Msi4oFHrifu+Qp8PfCz5/pOfJkk67ADZn2XPQ7Z2yXvqCP24hl4z6IW++4JTh+FjgXChk6A0Ss/GWZDvtIRAB1xkOJtBzcBlY9RORrtE+fIT3jbtRMrSKgw4dHOTh2aZCVokXuDcMyGRimQZge8CDmIBBDXjkGMblPpWkPmjVLPQ3YyidrYsfB5ccY1is8oJaljLtc+he7LtpmPvyrBnsULuXR5RDo2I7UMUm8sGsJMXUO8FCdCkVVOoGSNJUxxaIyxHGGt3KdsKVKJ2dkUpHFrSlfn0txltS51RlPCzbVarnbFtHNrix+6wq1LFm0xjWGxUY5zpnS/Rn+l8f6db22VqgiLch2Tw2aVW6qllyjLXREizlZRhXOsStxVXds46tuGZmq1NIsyYd0oOWGXZUqVkjcH5a6KOM0+eK0t5zQEK74DcqlKvGgvsbNdlzfVyi5x5X2I9j+xF/5Umq7gF56iy1V8OK2PEWe0cvy2bk5chCmoEDptPDY3zlvNp6KRcugtFa4erzmEVzDrr4VkvpIttxlObv2IC/G6z4Q6XdjNB3J3Aho1OtkLOAIRT5K11LWF8bC5RNqQsvxN+aYXRH5/AZbCLYIKZW5kc3RyZWFtCmVuZG9iagoyNyAwIG9iago2ODYKZW5kb2JqCjI4IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDI2IDAgUgo+PgplbmRvYmoKMjkgMCBvYmoKPDwgL0xlbmd0aCAzMCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVZNb9swDL37V+gPTCWpb6AI4DTpsN2GBdih6GnDtkOzIaf9/ZGSbCu2lzXdDkXiSJZI6onvUdGpQwX8eSNNSKQ+H7tTHUMVSBl/PoTOKwM6Og+APFU8YWh4QBr5fQOanHrKHm0fhrYMwdD5rj51PzpQb7uHRx79wuNO/epKuMHxY/dhBgZeHb4WoUF6hQhPXbBlTfIak0spqUiKgqYC6ebdkdTuZ95MNifRwlE5C9J5qh2Jl6fGDreC4dRZB2UF6URUnobAdgh8prOQpQfqW7c9dDf36BV/D19beaLRwSFjjTxzVA+3AGT4cQCw5ZbzCT0/kZ89vwfOL7doSx923OcGqbGTcR6k+k4cByTOXYkx2kibih/S5lEd3leQNANpnHZoGGSyA0hMEwiKG+WNuq3ht1N4kiVthb4bl3AK4WyJqFxkziyv4NOYB9mD7MuV/cgesC+5kUf6GYZM82J4V+wkP+KLYm8m3wxE8udKzOzbl3HcVl9psPrYjWKCb6t1KNuQifOZzFcqm2t2FGGxI4szK1w1o/tCjPG1jZfIQTA6CRVoRwm1EiEB6zPYbQW8q+KqYmjIX2EGuZxckgwQ/TM195M2cLtRGDKuUC1ck/wwT/N/oARtXGxljZM1O9PXbUnVuIuEBNJGysUZ31I6ECKSzHUdm4Lpa32mSgv+qbYvUpWsTiImhwuqWmX/nYZrkj1GHbMzvee6q3t5kWD6itZN9TvmpbXDkl+sa2VcFduKEAj9IlFrQlize74QyIIOgsq6yRubyoR60NeDeTiEZhW7r0c0TKmUVFCVRT5jB7t4SR7kjTa8m5j4D/GCPAayBqqLPMjMxGMrFbahIFM+CmpXSF2v5ZcetWNp9LW/r3HcEv3zBb8mkugW6VoVyYrduUikrovf/jC/I3hL2jNbZ9cpUCnqGBej+U60cpkiPqOt8EBrQzB7veaGNQszvwqW6SvRotOQ/PwVmu51d8DRXdBNt61FBVhtvPABRiGyk/BCYfzPpFWKyKKWg/xVEyKf3zt9kpgKZW5kc3RyZWFtCmVuZG9iagozMCAwIG9iago3NzUKZW5kb2JqCjMxIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDI5IDAgUgo+PgplbmRvYmoKMzIgMCBvYmoKPDwgL1VSSSAoaHR0cDovL2xvY2FsaG9zdC9vdHJzL2luZGV4LnBsP0FjdGlvbj1BZG1pblBhY2thZ2VNYW5hZ2VyKQovUyAvVVJJID4+CmVuZG9iagozMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDYwMy40MDUgMzgzLjI4IDYxMy4zOTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMzIgMCBSCi9IIC9JCgo+PgplbmRvYmoKMzQgMCBvYmoKPDwgL0xlbmd0aCAzNSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVhLj9w2DL77V+gPxBH1sCUgGGA8j6K9FV2ghyCnttkedlpsLv37JSnSluWZ6U6BopuN1hJFkR8foqR97cBY/PlAnzE788ulexUamNEZP6xJEAfjbZ/iYC3gVFlp9YME+tDvD7Z30bzwirpv9VtIVju/m5+7Pzprvus+f0Hqr0iP5q+uiNOFP3U/NmDsu8NXI/Tg3iHC124MRacbesgx52ySM27sXYH08fuLM8c/2Rhmd5QLFxODpc6LdEgeT80d/BKG1y5EWzRQJ4EZnAoOKniVZyOnnjXP3fTUfTzDYPD/09c6PcH3YwTEmnDmYj5/stZ5bNFaO+EX/Wn32BK2E45HbGf0cSh975CeceyED9eAL436TDtgC8S3+2KefiAg0YBdAUnGj/2YA+KAcQYC2EgwgcG+peDuCzhq1IdcpgABwqHwzWPqHEX5SYw4yvy+4qEWdwY1o1ZP1LO4YFykWUGjWq1Ip/FVreOCVHlra0gH8RAqmFQ7azwI1+IwjJxrIhfHPoLHyOWgDmNnSGQIBkyi4lCiRGo1YquoOokWKU33opQspjZGKQ9ZlVpNF/UXqI0741Of2KrTDfrKJxX9TZFe+D3FgVL1vJVf4rPQ7sfpn7G9IW6N5ZpzbAmlo7ttyS2tblBNtD0h1nlZcQWhHUVCKL5UvK3U4KtcvxM/RrpXuSVBqqzIbpsVascoq6CkJks5yVgRxWJVu6O8ogK72oXtTgpBoth4hukgPg47g9Xy04KA7A7VLitV89tzbRhA2FjGmo+ClHyHeRmG0jRX2deaV1ozBHkYKl+GQmeaoGZPrKoRF1iJEpm05MK1ihbGu9nidyYEzdg7ObyXcWroQb31fKMugfd95lCH+UiB01KY2D6JGLdJLJxKtMifc8G6W4zw9O1jJuOcU00hLbmh+eW0tIWS1S72jjNhlY8LXaPHWV9nfs3TVLSZ3uxfpd/fvzPXG/fvrE1zqbUsN7vvjheWnVFXAM0m3/jmls9A17bSH/TTrcpv3abqwJA24W+vAlbCxw5XiGkpN64ORHVQ85r9cnhToaRy4uvycmUjU9Ly6VtdL2Y5cb2VWf/NtKBtwFvhjRtW+TWFrh1vZEFoCurMF5ciqiXx9IT3SXR0cnjnvZgwaP+F+w6gJ27rkbAZKidfn/tsc8KSoWT0nXEJb3z0z3z7zXxd312RBRmXe3sYgC/auA6nLAteenJH733AarS9qNNFXkSUO/36wRMojxZ1oI+G6tngskIlEDhyMvo3QCpht+GQM1Nx5u3XzH/plXEDgvX/D64pbxd8TLXlP6c+j/jOoid2dRnlAhelcGrxlFow33wnOWSOUspo3bmwMX0vtIPIiDIvzxDeQXSweyl5IlfrDF1GQY+QLP29HEvapkrPsfDMmKFg5PqhRTwI7qPgmsruB7GBDlmWT/XFlucTYeYye5Z3XSh9Ws+yw6asOov5N9KFBsOuboVH2lw8mufoEFw/4EG+erlbg2FMaUPlBLjybnf4uuaLnbtGss3wkcd8I6b9q0OZfhAtxN7moR3aqvvYnxvm5YRuedhvLkeh94PsXNzDlk5JPJfmU/J4NUQuQB/98L4DQj9/A1H+1CsKZW5kc3RyZWFtCmVuZG9iagozNSAwIG9iagoxMjA0CmVuZG9iagozNiAwIG9iagpbCjMzIDAgUgpdCmVuZG9iagozNyAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Bbm5vdHMgMzYgMCBSCiAgL0NvbnRlbnRzIDM0IDAgUgo+PgplbmRvYmoKMzggMCBvYmoKPDwgL0xlbmd0aCAzOSAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic7VpLb+Q2DL7Pr9AfWC2pt4BggMk8ivZWNEAPiz21aHvYtMipf7+kTEm2x+NMgN3spAiyXtuSSFHk91GP8dMGFdDfB77FbNRvj5snKUMVjbJhWoQ+KAs6+QCAVDVIQr1RAd/4/w+gjVdfisT4Gep9KIL68Jf6dfP3BtQPm0+fqfR3Kvfq382grgr+svl5ZgzcnH1jCy2aG7TwaRPd0KcJGrPPOatklInaDCZ9/PHRqMM/ZTCluWEsPCrvgB++yAPrK1Xtge5sw9PGeRh64IeEKpiq2FXFE5zFAj1Qf27uHzYfTxgU/Xv4YwxPtDp6JFsT1TyqT3cAxtLlAeCe7uRP2NGV6DrSewSwSD52wzO3BXqGTM+G7nu6UzsIQ3vWUeT3td32s3r4iY3xCmFiTFI26mQCGRO6MSiK2SDcUjvtFJXjid7jYBjebxVGLuUS3J+3LuZzXZqWW7/cFnfSluEEopOH47aKfH43SJXBjyTN/dC62DXWeLgwBjs4EnFw5mKv4/ZwPoJLuk2oPmEr0S9LGydlB9HgJHTi2VKWZzIXIlKs3g3Q4auMJvd+56OZ+NkMsBhhweUzLJxHQyw9SHnVhvJ8Oq9DHOqL3CSatZSjWLACQoM44MQIVkyHMPHJzPgUsvaBWzlXzS5OEL6AFU6kasLgYDwMVw1E6axAW4ZtRxy0o+Ez74BCbVIZByOQYmNIja1dZaHysauo3V0Sdf0qFlU2n8Qqdo1kBSMWlnIjbJ+Hk7KV1Tk4iqbtfjGiPYkP2AK3lh8Qgg6RO2pKyihbHDnKZXwnjpMgYeSuYqwfwmGP03qOcUHWqjZTA+eFVYIrruerBqoypAarogcqECa9FA3EDQy+pTGU6O9GqWuc3lwjuHR9SUE+4xaFXEcOYojYEy1Ju1CkXedZ7068hTL2JJllwm4Zr+/MYU/3XCnyC9EoiiZ8xCgtvUgd5L7KP3RJOxdpPgPfgHYcTVhpq4ItfYwo1Ka4CkPhh5XpbU7DMUFK9j52+aLrAmlqTK6AekSNAXL2Ln0vrMN+y0uIuyW01kRVcdBAGDpmartax54pM8SME0hzlXMt7vvuq9LLpSy/gOtsaeVlcrbYJ40XDKK4yC8buQDQaw1FaJPjhEaXaCDrqmYRjPRMpvtpRmgjGsusTuxrRDJodLYEwBz7Yux0M0Taia69wGqVTMZ6HZyloWB+J9OVZDI+0mRL2xiX4hsmk+/z1Bk5XpdQMWpXlvuuEWqylbopQpWd0XxZt+92cdk66cggjTQwdD0Zv5PuGdJZYzT6ROtkn94u6ZwR2d1gzfcjnXWoUy6HFi2JYbgV0rF4fW91++Hd7Ktlz9AsOM3rxOStf6fZtTRLtJF0SF4zbUHABtWzi+KCesIkarHSaATGdpowI8cc4JfcXU8q2M1WymGJAK9KGkfbbMstXep7j5shTSnnetkcPz8TOZM10LYgRXifia6liPO0ATX+7U5CTV/Vhd+VUxF0CuSM4FvGwZvZTtma52quW+cTbbM97QxSivGdT1fyySPtQSHSFrTvQd8eqW5nZUfLHW0diSTbMJhGfHIyiHoWm/p7YUM9YKc6m0esC4ITc90x+PoSDnoGuh8QzpfhUIV66N44epCAOpHMz/HQ+6TBZzD4v2Ghbb/kTX+bCRUmE5CnDpbxyfDYRQlo6keOoWmss43SX2t5d5ohXeTc6IC8tJNfScsypgJzSd8FBq7/eFUSfuVnHnp1tW4nTrzQWxl9nC2A1ybXXS+r9WVU3CZvVR4sW2dw5p/4aHeWXZ8S5xRmOlZYine//lR5qadl0tfRrZMz0E7e8xbDvK0zxxEFj/2Hz4bY15oug3O0xrA5uoC3PV2eTXmrDvwWO8GSfhb6em7nuZBGYg/G8WH+OUlwRgfC+uTLG1A56ZTOSsvnMwvf3RgTtGMDzFIRzF5f8jHOTM38q6Gh+oXW0qINcpi/wujxZZ8LNXG2rn+Yc5Y/nLaBIwhWIZIQx8a0xbaBxRAZh9rbcNsB4b//ALPru00KZW5kc3RyZWFtCmVuZG9iagozOSAwIG9iagoxNTEzCmVuZG9iago0MCAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyAzOCAwIFIKPj4KZW5kb2JqCjQxIDAgb2JqCjw8IC9MZW5ndGggNDIgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nO1aS4/cNgy+z6/QH4giUQ9LQDDAvLZob0UX6CHIKUXbQ7bFnvr3S1KiLdme1yHZzbZYeG1LFMXXR4kaP2+sMvj3jm5DBvX5afNc26waQLnYN9kQlTM6hWiMxa4y0sgNG+hG/98ZDUF94RHts5F7aTLy8Kf6dfPXxqgfNh8/Yetv2B7UP5vCTgb+svl5Jox5dfK1EjoLr1DC583gy5wQtc0h56wSKBg0FJHe//gE6vg3K8PkQLHwpII39PClPhA/7hof8E4yPG98MGUGekhWRRDGXhh3cTZw6Bn1x2b/uHn/YKNCyz3+3oanNdpZb9BqTj0+qY8f8CnjNeCFzYB3c8QL7WpOeD3glbCPRhzrRS9E5ysdjjc7YxzeAC6Mxz7w5Z364KHMywP3W/Sn+jBRWr/9pB5/IjUCSt2pkZQDnRzNNYxqOGLjtwptRGx2ZRKLkwAJaEnlKhQpusd7KEq7U9/vqP1wjRuZittHKuJHvXStz7VV1gOT5qJdo1LwOsaUc0IvVpUglYFkTbZLfWcPWGQW9cDiheIRJ5YOVdzQ0xENtY3qpOqtlteueq9ts+uGm8tBvDgChhW+h6rLvN1Wfiuy0DvLM9Ohe6/RxHwqPesdaoS2cz2cacdxbqYzuGov0TP3/d717/PxowxD0W3hM2rbLaIgxkUUXPKuhC71QygXh/IZjzFtF7CMwFMTV4JwWzOD6Tk70UtmaXznwxTZ6+knRc34MRm69JNvTz/kGBamggGOdUwqTrL76jw/vZtDSVF8r+1ME0uy4T5fg0vSU6r0qaCZ+FxPTNYkncyADozxrWQmHKEj+dbDcGtqwtW0ywihb05FQmhCuQWJkEVR5BamsDAzG8XV51yFbAaEKrudUs/lmZ3IK6Bwk/bsl4m0xQa4Ve2liygZdmZqn1mCso1kGGlCL/vczymOkDCuTMXNJZwmOfYrDJfe97Dw/rkJricAG0FDRE2iH7oMcPr2GWAcI/PIEpWuojx5PSSXcwzpraAcDC49QIyn/cdhiicna4Dk/hEdDQzsOm0P2DVs3AYKoRt5pepcO0fs+TnFIMxfktjFkAXc34MHAmFuQ5b3r9960TJTmMIRHR/HPRClU4MOtklSAcRbYhl80gNVLz7YNxPLA1ZtOebkU3yLwSy8yhgsnYLYrKxjlcKbact7OcQzrgF2wF2niW2IO3tHiKetio7lOE0BywHcBHlbRMJp6mO6MzOQUeW9y9WpeNX56WJLCcwPE6hs3e3xykWyXC8xLejBITDAv1iNaQ5bKuo/zOnGYqmJO0ELoV6KLaGTPncYuZhKcRZfhtdkee/SJo/bqmzPwM85r8MAuAk24eZa1uq4trmTdg4YMIu93DjuypZy5GNWxl6Yc72Kamh2txmpHwWijVmRsO5clwmjGV+r7MXYaoVOu2p1vmQNOq7MeatVHiq9XUtsy2DwcREM0yHDSm675MiLWcxFOogj/4Dv9pbxa2UxtytLshP8yXJd1wxekN246Xf7wsoJu0NJgqzqrmY6WRL2FSuu9F1JVgkXccppIcJbSVZnpasL9njSs0xA3uL6j8WRteBuS0DLOOSVQ6BTD0mgWWGFlocfzHT0ubJ+2zrn6Fw2B8ZGOTpKDdcufTTSzTneahw7RSPTyF2qt6uowtJT8/Gw892RsfteUMU42Be6yyjyAUvdhNugBC9W1r0mFA24jIPPeap77gXR5ZPp/xCIstfW42Yymq6GtPfUkPeByE3txNXJRrhdV1K/eWaY14sQyDFV7QLHa+gJls6uiY1/saPPb4MemUOo2Acy+lTeeQtTR4/l48qvPi5p7MlDDFPl5WZbXQnfoYa3AKapGKdt7RkQtuJJfbir/Yfp2VXAmlt5n90i04HhEkZzaI7V97nd4LB0TidTder4Y6ScTF6teUNI2tJUeUr2vK6lVwfJ3EByZ7rDIZcbnuLffeHFP5Dmak9/Fb6JTvkZveF/+N4I32hA+yHmlIfwUvDl7NwcMrVzXYJnO+dYx9nvAboRQBusJwF8d1xlXx90TxegK8UFSSY/QjZnvdePqKL3OuK2CIb0Zo6ovg5kT4/zb2Ui/ayFRu0+KzIqJ53SopW/DVr5qIh+GvB84LDWZGav93xpNGMz/ySqdN8prQ2Imjh/Nc3jfd9CjcNJuumro0Wgeu0i+ck4OkMymfzS/JJ8WnUReKuDi6/bIfT3L3Mj5pwKZW5kc3RyZWFtCmVuZG9iago0MiAwIG9iagoxNjUzCmVuZG9iago0MyAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyA0MSAwIFIKPj4KZW5kb2JqCjQ0IDAgb2JqCjw8IC9MZW5ndGggNDUgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nO1azW7kNgy+z1PoBeKVqH8gGMCZmRTtrWiAHoo9tWh72LTIqa9fSiIl2db8ZIFgg2AROLYliqLIT58ojV92Skj8u0s3H0H8/rx7oTIlPAjtlkXKOqHlFKyTUmFVaSn5hgXplv7fyQms+JJb9M+S76VI8sPf4tfdPzspftj99hlL/8ByK/7bFXXc8Jfdzytj5Luzr7dQK3iHFr7svCl9gptUtDFGEUCAn6CY9OnHZxDHf/NgsjgkLDwLa2R6+EIPSV+uqg94Tza87IyVpYf0EJRwwIoNK17gzGfoSfHX7uFp9+lRWaGkePqzwTOIMNlopZTgxdOz+O0e3afxDfA+4xXxUlidLl/uYMurCng9lDJ+zw/H0l5aqrPlOdefmkzSn5+xDnR5TOW5jSJZg3UP1N5Qnac6S3JH6n8mm9TWJtbNdYbHN5N9qvST5WwZd26XbHTjcSV/qEM3tuOq3yPJGtKR7A5UFvefxdNPKSZOIJr7mEgBGBQIiB+ta1BOZeDJCeBJuSNHPBbFueNjuSDshdPivrlRpiHNZEIsoWNprVt50prfDYXXFUikem3alayBRwoHkEVJ/0O5q1TGern8UHSlOmWqCwawtGqyLrX0kV1QjNoLxPw9RSY5BU0AjpYeo0aflvXaUuQuapOHfZpA92u5PrbpOWE3tcmX22KC68bWcR8slV3VzxZCKVBrsEsEdT7zeorJAKSti1N5L+6cmQo4/KpgO7m7yjajehWLadFLb+b9qlUhgK5wOytHnY9anjfiLJGshY7kDWaTjllkGLguB8S2hqke7EBw6LUlId3qgy1F9SorVw0ds4FLsGu4vB2jKWmnkFpIpxaUFt+M0mTTUjUeyjscllRWY/9A9KSv0ZNCikaCTsQXPjY/lTjxO9c1EO5FzD0P+EghiYNFv2pfnQQMF9fBqs4agiAv2vOljknGnqHHVZKR9PdMOExUOFnxRQ/cmhj41v5c0lJ5lanm8nTxCjNIGaMBt5gup9uni55pkiT541VARzMBYMphvf5WgE6jyuVVKqeGV5ZPZeAM/kC5yQYfozem4k+tYi4bk9fVRTZ8VrpTVDZ371fizl4o9EgeuOI5mLt2M03AC7Ksbz2uujoxTfPc6CldXbflSqKq0cOpW618j9OcF96K0wN5NPV2oFEQRXEuKVmGvUi5qZJMP5fRDTZiOpnyfmc+DLqDmmKiI6ftiF1HUdcdW6pzqF6zYqD69cwIcpkw8dJDiGcm5bxos+2jhVl15Zwy5vh2KwLbnT10bHYtGHk4CzceHANZSzUFi/znwmLLpdXbARk4c7Ek72TNUDizUbRhkjSgTOS6yOUN1nwN+hoMZioqxgDfbCc1hv4A09r4abl7GSYkzFuxoQsGaGXE9+v7OrVdIHK9wQ8dqjlfObBNi1msr+DeUxqm1y1Vb5e6ClPnJxU0Jp4mLPIC93Ywzfq6BLvM2zqvrqAvSkwrcF5hfvG+0Pf1xGsUYFqByZl2NxNvD726NH8n4IZso9Gp2LsyzamZgN8a2a7kTppRbuUNpGqsnazVMVj3YVDtPaYTKoaW/98EajJY8z6t59bvwEZgRz8FgyNbJhbqFRnymoE1lOe6w6O2+VSV9wFz8wPQkUYeO5D+y6evIKcQcJjR+48CcGv0BAYiMre77TRiL+5wuR0eL3K5l/UEIttf0d9kqt6ujE8ieASb/vy2f54Z6mEvMOPnJOq41ZytGoygnppSWcuNOrlAZxWzrItWyW4u68p2GFlzJD5kkmYrN/LkeoFkr2U9vVx/yHnGW5f3403OrMal3RY0SPRr0FQqoaOq5mpcFEZjWVZKgoxtzs2hZSKgZLYeUnPDLOAQ4b76e+FfFhsEcCFg6DRiUajnRsU8zRYCnLQAD9yssdEP/tyB+zkPbaPde2vt39yC14T18PTQdxvUsf5TWf5zAq234cd8e8gZXtaViC1hdHlDqh+7GVFXwVZfD89pbmdnDVe9TmeHfi4z83mbFmwZmg82p6W8Em0OkgF7Uq4anLcrnErxUW33q0FSUABaT5zHCtLml6+z+zxEuzF1pzT42VfCNmQ+bmcsLz4d5Ex3MFyJlF3PULy4stsYJ+XTmOIyZQ3y65d2Tk/PtOMzAziVEKW0K5/pX1zOHcAECeIaV8cPspw7g/j3OnrTflECToa6ZLMxyLrvglnGq+YfHWzHxd2USTrqyDlxvSHZvPbDwOgQ4+KhBbni9LT+2MMZmByGf/FdjBQxpFRuXZo/bhl8FQPgJpNMg1GRXL2+5lOZlZr1Nz2l+pXWKjulab56ld3j6z7mqc2TdRc+mzGTzh8nSC2UwkYpVu0DGngchgiMmqx27zsg6e9/DOmmNQplbmRzdHJlYW0KZW5kb2JqCjQ1IDAgb2JqCjE3NjYKZW5kb2JqCjQ2IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDQ0IDAgUgo+PgplbmRvYmoKNDcgMCBvYmoKPDwgL0xlbmd0aCA0OCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic3VhLj9w2DL77V+gPrEJRbyAYYHZmN2hvRQfoIcgpQZtDNsWe+vdD6mFLlj2TOXURLLSWKfEp8hPHr5MSQH8P/PARxeeX6bXQlPAotOtJyjqhQQbrABQtZU6oDyLwg/8/gEQrviWOdg71mUlQJ1/FX9P3CcSH6eMnon4huhX/TVlcZfxz+mNlDLw5+1oLtcI3aOHr5E3WiU6qaGOMIqBALzGb9O63FxTnf5MzaTtyLrwIa4An38qE5aWleUJPtuF1MhayBp4EJRxWwaYK7vLMp9QD8c/0eJnePSsnKHKXv9v0VCC1MkBR0+LyIj6+p9kTjUCDyOhp6UyD4gpEh2cavMYc5zzSOtEg0vsj8ZjyzvtPNEymK3P4JC6/syGW9HaGBKFRxmhiDHE2RGtmPgjyks06ZpGKTMAIyQalixo2lVSAzWbrp35dM/10Sxo7m+jzLpbHqzy2dR2EMpi2xuxd45I1g0vI+Wkb9aHET5EgJ+NsmutpyMp9dk6pfo3p4Ojdp7dzNg3MSqoqJocsLQkJJSxraWu+jRB3e2yxjh5oV2tFT0fjkGJe40zhebceShRWtKQ73m9ff6DKFw5buM87Me249mK5Pr0k7TjSko92yBFHWyJnmbdz/akSTVs1L/U023ts1snOmO1sy8KWs7CF+7w+cyoLV/bH5eywavR5nuLdZd6YS6BaH5s9m+eykS9xRoYNiApOeqVjdCHOZfScj/EeiMJSFHhiAw5UnTk1aBxLiNiVx/J+E7AURKm5vJ0zvwpiKa3IJ9pm0M+xPpVE99mqOak4wbUMs22mp80go67z9onTyNQFJI45CfXpILyftRWYw2JZevcrCbVw+kKuhdvuhJG2a9fzckKpQAqIbcprwdgVC8N2DGbQaKxv/V/Hdtfr9vqo8jcik/ywS60wT/ZlTAujh7S4Vt8rvC070+GfF8Spwc2BHxHkOuYtPKm/gEZXs78iWUK9orfj93ATrTaRrQbuOKJgMqHaeRXZlNNSMbQFozpoiwu0seLURXG6nSmuLsU1ZJiqAJd8LcCXboFjBSNIvVc6XJ3XU3/GdCz7zDJSnFgGwi6oDv1egU8setK+IvsGhAYrfeqQlP9VIBTBDz4hlZ6GCgwpPo9EsTMklR7iAbV0swlVXdjYUHtI1E1t2bWUBlUWzuHubjlqa9SWm1/SGgra1kahNlq99J1urPNuq2VcNvx0v3bd11sIMkipODgGZdD1cweZL8AxSVQckiSVUDnWekjpgK5CCOooLUfYW99ByBPc7I4SvfQ6qVgRdjsmKOBRQaT2TNcLHB3yT2GyTuP/VeDAfQP2aVVhu97PtRhq2aefaae+/q5DQqHX+7im6AY+BDOEBGtLUK7g+bdOc5t1N9Cu03OHvvkLayngeufi+pfCGfp7bq+DV/vOPl3W3yGcQekoP7pPNiBikCEM1PTdZeODDaKThtXjFglWr/d8xVmJWX9uyst3WqushOjWr9BM7/vONLOzdcsXnaHmjNSOzxa0UIqY+CyXpk3D5hGhUdJq97YPhP9+ABxGNJMKZW5kc3RyZWFtCmVuZG9iago0OCAwIG9iagoxMTU5CmVuZG9iago0OSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyA0NyAwIFIKPj4KZW5kb2JqCjUwIDAgb2JqCjw8IC9MZW5ndGggNTEgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nNUbya7kuO1eX+EfaI822xLQeMB7tQTJLUgDOQzmlCCZw/QEfcrvRxspipTLrg4CdDBTXfW0kBR3Uva3i55U/O9T+tqCmf729fKtjulpM5Nd+yG9rJNVs19WpXScKjsVfMWB9JX+/aRms0y/5R30t4LvMqTgx6/TXy+/X9T0h8vPv8TRv8fxZfr3pYCDjX+5/JkRo344+iiFVpsfkMJvl80VnGaddVhCCJM3k9lmU0j66Y9fzXT7Vz5MXm6SLnydFqfSj9/qjwQvT+GP+J1o+HZxiyoY0g+vp9UAYAeAOz3bsuqp6Z+Xjy+Xnx56neL/X/5B1VPbeVt0pNXHma/Tz5+VMjZ+FqXUR/yO/FTv8ePj5x7/3iJ/E49d+W3jmDZ17T2te/tl+vKniswwZHaZVYi7VJopyHRowBJida/IPghiHT+h/DbX+vctfta6/lHmtELky6RVh9xPyzYrn0jdLJ40AjKmwNP5n7e4z85h+lyhJzZsFVvC5N6myPPPdYYuzxxbylIBS98Lssw6yxHd6460240o8QIz0MSp0L4MJrb2E8DbxOuPusixRXY0CKThAX09pCro9JWTeytclcRVCLoqUzfpXCHSJtDrWzSGTNG1iNw+yooe0VZgGcFRX+X6Xj+akluUhGjGGoRmJFz2vfEy4w5iZ1Cz9UmmS4CddFci6pMP8/pMAiBuXNiLWm9VQ9RI/dqmjQ9UEWVpVMbb+2BXlkZHaOVUVjDEmPjYGSiowPsARNHNKJEtC7EuH6LvUeumIRlZNYl+UTWAtNaM+JAdmBWM1OVzgopnCDKJ92Ir9qM3iQFooTJaGaEzEmG1xcrzYpNc4an4mNSWcvjC/jy6NcjA2HwSX31OmnqMpFp+Z2eouW3vKXXE7Ew+vzQZbey8JtswzqEfXoFWEB1obkdLPYPpvNRsxj6njEt/WMefusMK0/cGAuN2kXieu+jmoOrqtXKVYcz6BNHgxiiuktAD7OAj8vi9SdfeleBS5mzygx9vMR4jtbfBSld1AnSFYhxQT2NY4ilgwv1MBibtX6WCxCyBK0h23KAGYJExoFu0X+kZYXovfoFg0Ghxg2r8aIOhmafhKKhG4GBWq6qyeafldDMtaBNLU8psnHzBSN7iGMfC7pcSaQv2Zv77wRmeyRzk3TiyNkVqg+Dm1yrJe2XwiMhi4lJl3CZVhoeSBEs7MFbQpl1n0y9H35KZ2U9zMdbhY/aThQNTq9MD0IeGRoCPbaNMwtl1DSWWWElmWejR2kpNTzt1u5QlqpldRnREWOK6exfsoUQmFhmIlQ4IleqwBKkOSmFAE0EMQGoQbqTE8uChZPhdev3Zg9VrSD17zUZGQchl45HH8moOISWmrYBxhF8ulnKYv2k2iJ4IAnq346FanlxzCaoMPaTbAAK1YmS12HnC7gThljCUxtJGPLVYiopG0i5yOr6YFWCCcZnFN4WZkgW/e2tGh/4XN1YXmOujMIDahZJzhEudCIbrxF45+cnpyrDQWJ/NgE5iMoyrdXNNpchm9m05BN+o7iq+24iOd4UeX0CCqC93XlXvSSn1eZcbnGIv32u7gWKSitPEBRdC36BpuH5NWeQm6aM70nn+YoQmGOWEJtyU8OsF9DbrrtKjg8Kn42rm2tpB6oJUJOcYf+2lvpdsy7TfOU4MK/G/H9e19zmloGdAc3NpUy3ic1KOZNtvAPUV+g3oTHUEH6PdGZ0Us15FEADRgpfEAKpdy9Y7j4wzp1KhwHflruDrcHZ3gKJij0aL1dtoP8/KSs0ccy2FbYeebpKSY/7cQxXJHPIQkgHQkeen43r75CQnqVLNDQxyHmM81wtnCUcfRFEhtHQZPygxb9pgB6AmL3pRXY4OnYPmYHZc1q1PbMYdYuP8bEI87mIWTN3uClvE6HtqamWhckhnTNqQKL1WalN8Mc9awhHibHwEs5DuNy1SttTsp8U3FTZMot3xwR4E60S0iSetiLZIjXAcNh0wKcEt3LnjxCgH6hBtO0fHbltHL6lQMZUh1iLPQrNKTu3w9Kf4ZkeD2XXUqhxcBxqKbA8bb4SWuEFIyb212/G5HViSUrslyXHVU2G83H+zys6LdyFo1+l8hsYKHsgU0au/y7mWxapWRzzqqe71d92TypXhiVn2I/kh1ZNrJVfGkzo4YJBxs/eR4m3ZMJO6vqXLtGqILV6rnepddU3Tc8aghongvjMVmR0wmSSnyLIhdDM4vEt3lyYEqztdt4+oU9ZglqzLRUc6AarzK6d8QaSwNyseWdtMe59HzarLup2j4BFInIMboO6ItBO+NUvtb0lA+6nFYC99T5gDUazb7NJtaTCeiiJdjhlNvS9wOTu5evOQgn+6F0XXWcMvZthwnXHWUfPLEvh7FDdgjocNduskpdrWdI6b3Q4d3UQinj6Z2doOM4LOk2RGLcY4oHDQrD+C1RSIwOchGdaSpsyg3rNbEOox7t3sM3zHA8aZOa6O6aTfuoC3nUu5j7Tv/8NXyDsHRbIUxVo4LaNAfSBh+lUBGDPruEZHGXQCSLcnaxjodo0HMhv8X3I8n6RWwq0CPjgtkwaNn1wCrD98Va3w2AhV47JlwFVnZ6d8COviR/f8aMSxlCo9agtQmYNfVOtLUd8FG3NWBtV/dwgnlp71v0jUxgdGHhgnuQumYHZ9MCzqnDBSfNYLI6pzbhjhc9/JSUZHjGSOPPEhuOKLpZYsi9AScWFw2C9XeLsudWDP6Ld13qLmaNOlneXeqOtJbNAiWho7sV21sc7ZUMAb6fWJi79trxEIE6OnmdquYSFJWmJ9IUkm+BM7Em/yMysbHFMYCB7yQFbHHUnZ0YVBx7Z3NthdAuPKk8/yGMHGjEIqifdCSZ7EPVlAH3sc0fBBrqsWHQ65xWVdcVxV6+ofFn2HlEojWrSao16G4E0YdnT8yh6n6B5fWkn3Tuw466lxA032EPTI4mDyRHqPS59kWO0xJAL3bPJ2Eoc8KR8chlZkw6uhFVEdh1ZcegVYUk1igpUEarzX1I6wfbD0/TO7k6vbk1VUt3bwJIklVY+ArYlrDAN4So7t0QkPWe71zWDd6TaWkRoC1wV4piDhP+/AsfMNePh9cpBqYJ1UAwba16dPBmENplhQ8+25Gdob9exxmkFyDOpGAMMdEXKGkbVD7ZPgX5eAAen+/r5fRBNAStSB6J4Tlx1DUhRy4dcRJVabBDvyxvniUvguIKVqCmNjPakQvluF8NH2wQ5pVcNbkifrzWOGSdhw6Hwh+aitZl2+afu4u0QbRMN1m61RwVvfouEJ007MW51sWcDYKIjB3HEMw5UH4QWxsbyfYuIBBve8GF/wtIfhBVdCTVFDBecbzRFhbHThS0/JT7F3s9vhCBLPvo+RKrIFoSJdequdkY+9ttHhU46Br0qFzILVqnJM49ujysuI9ZjPILzTuVjbQZOxRtcoG8PZF9Omtu8ob2pU7SgRo1DIYvjkQNtDVIns2VGmnkeFIqkmQUs1OSg8oFHWFGdPXZ7dCK8xo1+NCX7x7Xnxh8Ib4XyMhKk2AVTFmm+DfVHGfFtcH8PKbynB8cULRHWuvuOQqWW3y89vlFdr5lVtYdO6de58UyEsNdZlp/sLE8MiG3eNimyYxJRB813k4TzQTcBtBAqSvojWDhL5PsAPRox3o/iYj3bPYJ21aUph1w9CSGceZ+RQnuVjPWuldazOCanz8peaH79AFKH/v7xZHreCvycxQRe4NJZieb5zO0zflbp/4e8krtHbrNF0utc31RT87L0Yze9gDl7eNGadS/0xGlLsz1fe6GRg+KunZfpFanV67XHlfyry87V3TnF7oq693SnckZvtmrRP2UnruCnJrfWNrBmKyDg9L3b9sQWS/vsPkB78OAplbmRzdHJlYW0KZW5kb2JqCjUxIDAgb2JqCjI5MDMKZW5kb2JqCjUyIDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDUwIDAgUgo+PgplbmRvYmoKNTMgMCBvYmoKPDwgL0xlbmd0aCA1NCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCnic7VvJjiS3Eb3XV+QPdIr7AhgN1NJl2DfDDfgg6GRD8kFjY07+fXOLYHDJpUYyMAdj1MpKMhgMBl8sXPLrhS8s/HuLD+vF8vcvl6+ljC9WLNK0RVybRbLVacMYD1W5JYNHKIiP+P83tgq9/Jpa0N8MnrmIwY9/Ln+7/OvClj9efvwplP4jlOvlP5fMDhr+9fKXThj23clHJZRcfIcSfr1YlfsUZuVee+8XJxZhV5FF+uFPX8Ty+HcaTCIXEQtfFq1Y/PFr+RH5pSr8EZ5Rhq8XpVnuIf5wfDECGCtg3ODMJuix5ZfL7fPyw5PrhbPl8+cKT7e4VXvNGBN2+fyy/PgHxqQPrzb8uaDKW3jy9+XNiVUuoZJfw5/rCtkjtBfhqXtqGQo+wp8KBLdMwFVHJGRp+cj98ijNwOlZKu+Tbjb7j31zXir6fuP4Est+ONAiCaEL4aMjUpHdtXDghaB0o4auTKx4X8J0gQ5PjyExE73ObKEu8k/VkrRflJqeoI2mXxG7eP9p+fwzhYUIKPcqQFhywMWmWvzQWslVukQuoLUw0Hl+JiUgmIgeea+LPRgRLWy15Z0SSvnx/L0mR+qejA8RzbPGEqpLm4nGTHAZxgR9O9QY/8jaEbQX0NgJiVp8V02hFL+ntsYRObd6HcQTXiIGVDGFCEDNVpUAaLsCEV4kSwBmrHihUKITMWqVNIjgj4oZKhho70rQG0SSHz1hb3yUA5rNg5gudShUDhAQ7YwOEz0NDvVebBtUy4jrQ7as4OBWNELmJ9VdJ5xB2LbQ1C6GbjZ1sOvEgUjOClH/OI91NElZrYIGCAXaEUOa8LgR23PFrzASUWYIP63NnekpaA8R1SwhF6ERNURewVeuhPc25AMQU3lWjwC7MkWnz6IZVnq8lndRZkvm3tM7L7E5trtljyo0SjKJ7Vyp1STWhtPojhPFlV/9XsgbZgtbRKuP0slIZd5D7pJgcM9ak08SBbHNThisND0Mq4xFNl5sEq24tnW5LcYWfjiCD+IPFUFF7Mdnmo1+jnBd5ab2WXnY45Jdyxs1lrA1GpE2AwiO3BoGU1sggZOWKGw2MQxKvEyIzlzQrEqQSOYIId7Vdw5BqoEEOKdWoaXHa56WWJ6nJUuRPF1578MeBuMNhwBA3gzsAdxKwdhhrKLx80EamVunnp+5h43AyK1fZVweGObRq5X4TLOINODynlgW1XM6QQfxG/k9KlphUmlekbFXh8fLVKZyxZr8I0fw8J8tStNtH4B3kFGBN/ZlMn1R2fN94VJQzcpiuDi3BnFniUKuczxhUqyrWSZMXiGhkKFUzRMwwcTKXWhtnPp/znoqZxVCrd6kCahp/uMMKN4Xq9Y089GaUdzWyxAqXObw3KL1Uy23A06OTGFJhxIoP/pWGVWdDF1/SelNKzCKZGwDPwiJVN4+IYO6MV0n7ZplAGlzYzUT7kduSl0nA3h0CJ69trbjxAgIaQZAnA0Oc5wGD6GyJBP4ab9aLUOe5V5F35uRqz6GH5Id4a/hd8CLO9auVrCTl6HZytfL8q3gbLjuDSTK+hyVjElDw6tDX63o8z2qjh3sLZ5v4cLyARdDeA0RQa6WppV0jml9m151dd2osFwH4FqIOImzZjWI606CwF2a/NdwOZWlET6nTG0ysl6enbQTaGIfiabTCGRtp/o5k6yc4I3WZOuCiOLByR4PAFVBRvYmcjZ9qxNRihrcliIxUB36CFFXMXbolpeFH8w5owuPQsJY3T0R/hWEFHJIoNB/FMa9RxK7a8LZmCeD6STtzbxQ7iR4SJQSyGeLj5jFdfrZzCdHRHg9QwQjG2fHeSTNQOdz3nLt43lsp1DrxZV+1PdGtw/iv8iaqFoEwxQ+W3vjf8DGhlXc9hh2/KvkbtVRKKcxU+63mmemjGDkSm8EhVrzQtxqW55bBLRttgDWUp1b7zQtJukdkXSS4BENkHBD2tBgxWcUfWpIOA6wpruqE03eWI3lH1OOOH8jSCQbQJK6IZst1Wus7pX4hfR72yOFpo9TUC5kN6hS3uybQj9FDnUlkwx1jkzVkKg1lI1TJNLp6g8a+iI57jQwNmQQKPWwIQX2H2WTeqMV9cnbcg8Bq5O9oy2AQG4jNJQYoXGYYA+5GOrLTJMMUtzmB221JUKX85aamNth3sxLiRaQb+A0sfENado73UgZRUvaZ41nOvvmIeTt/XEqtRqn8kROgvs7cdI+YAxHMCDOjf7W+f2s499z98dOfhYPrV1lWIw6Z+23xEPhVz6LhlDep2dI/2KMRH4n4xjSdw4AymfxC+t05d/z6zcpBj1MjHyo02P5zMyxfsfOcZzE0LHs0ExGODg/h8OmURZEbmB/2Kg7WHbT/c35AZViftVce89FPdw3rD2gisq4lec9exv4naQvB1JMFosH+nseLRd7B1NKitW7SGbnB1PS7V/FaBNh0uCFYylosnMqhSR9cEH5aPCmZ1LY8syRVCP8KydSTS9N/N/ppTmPQg62p9pLrga90GSVCoWBQIx3RJQaMLC3hlWm7sMenUlV6rNxjnKvZwqk/MQ8Ai2eKNEA0I1CQOQqNLBMiHSqH0NzwtXKRJ1kM2aSndGxNTJo1gSmnjcChcjI3fa4eyuh5alNkmkEgjZTILSXEWwZ2+5lBCAqAp67MWHJ2QHdR8UKTmz80VW29yzsXBG14iA3qhdTDjk1Ov29+h/HfSZFhAb9Dmvttr93Mo+cyrgBCFvzXV2g3Lg3ABWnrxNBA1VC2rkFler76z1IU9EUYGJ1r3bFDHSUrL6ztNr0zup5MMmxRnXYyQg5J87M77XuB7e5J6gnA95K9Go3/f5P339G0wgUx0aP8a3HBZrJ1RofMhal6UU13FfbWSX3vpkNtw/wIIecU/dHtEernoH+0IpZG684kZfucz6K/E86gVXeU+shTu9+naCfTIAwq9bKe2Hqgc2d4b0HXNAxNr27EA2cG192G37jvifR+uT0i7UXIEBPeAzfLMgwqrYa3cDSbsauQyi1KqhIczxYlSRjh9snvGTgYDusXLcQgM4Hm1w928vUtWWr4NxbzcdbEe+LwUjR3o2AGhpQTZOEmMNwbtpjcNlw6RwU4UZiPb3wbOqB/cGt7d0entWkIAXst9cKZVltwpkGOAJwEFurbqKlYUvOtGkbjclgvr7XByQnVf5hD3lMybQT/axjsGqDZ9oP5r7cFOVsaxMUaZqECUvne+HYBnYSDr1B31N7kxBr9nb96mjoxl8tPX0K0PQ2lILLac8G9tv8b0a07QhHXHjV4wIWCnHOS4bUzn6RpLlt9uJNB7LZXE8cOseMpxswmnt1u/S4rN3IJ15g8BkUq1teo88rsvtWjRMVJhgfW5XU3iriv59oSLcy9Kh89NjbXjkyDItn7aR3Srpp0gL3+fZuf5FQ1qcCjJ/xlez48mWzd8nQk2OqQQ9IZbUITMwh7J68a9geSLPpgUSdrY/P/oMpo8Rqgsabb8vY4t3q3FCaPhCbfFkmQkKTv9qZFbHu9ZXPzTo2/XdxufpFablemTf9KyM/X/sgDptH6XY+PVOrjFfFgiEsnIdGcV7IR2hqOkVC8VVL831PSPz3X/gYVqMKZW5kc3RyZWFtCmVuZG9iago1NCAwIG9iagoyNjk1CmVuZG9iago1NSAwIG9iago8PAogIC9SZXNvdXJjZXMgMTQgMCBSCiAgL1R5cGUgL1BhZ2UKICAvTWVkaWFCb3ggWzAgMCA2MTIgNzkyXQogIC9Dcm9wQm94IFswIDAgNjEyIDc5Ml0KICAvQmxlZWRCb3ggWzAgMCA2MTIgNzkyXQogIC9UcmltQm94IFswIDAgNjEyIDc5Ml0KICAvUGFyZW50IDE1IDAgUgogIC9Db250ZW50cyA1MyAwIFIKPj4KZW5kb2JqCjU2IDAgb2JqCjw8IC9MZW5ndGggNTcgMCBSIC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4nM1YS2/cOAy++1foD8QR9bSBYgBnZ7LYvS12gD0UPbVoe2i6yKl/v5REynp4xjM5BXlYpkiKj4+U5NcBhMSfh/DwsxKfX4ZXooHwSmhXk8A6oeU4WScl4FSSlPxAQniE/w9yVFb8iBLlWPIzkSQPvov/hp+DFH8OHz8h9QvSrfg1JHUs+O/wT2OMfHf2lRZqUO/QwtfBm7SmciPMdp5nMSmh/KiSSY9/vShx/D86E9lVwMKLsEaGwQ8aBH1xKg/wGWx4HYyVaYUwmEA4xYoNK65w5iP0pPg2PJ2Hx2ewAqQ4f13hOYlptLOVUiovzi/i4wccGQzhhCQ4IAvAqAVSpW8poJFywj/kV0/4RDVgOq4FKa7Tdky88JzkmtklrQeQOCNHr9mQ9lMnP5F87wVSlFpn4Y/N9Y/E1c0wf9TMVqEu1XNK4nJkZTVrNMnPpHNuORS+acmaokU2yejO35yxECtzEIgKirziHNFstGpJ3L0e0IV36vBJnP8uoaIQ+bNBWGvIWNFrHKK+ef0z2dY2ovjryS67Zrm0TebMHwT4YJsmDy5pzBkN2ucSM7uaGGmFpLKc03q+82NJEU+ay2jkWXefvXGluYu9UalOQSmOvX7GdbXKRcbp1KPaLIKCfrEEmKctAKKbUOruUqBXPnAHYUzUZNdkRyBneMYw66Szkn2mZmMoceVc2UzYVt/w7EKr9jPSl6IcaE5b0nPcjk3UCc3aluLa+KSfKAKw4RPLPGHBW45MxQFrWaZxBw9rOniUsA1QZv9jvq/BusoQc/bUqGuhMST/QsyCP9yyuHnHwgDCZBGHaJNtiubCtnKhMLzrPFe+Rzi34+T9Iez89bZG77sIJ743IZxk1fEGhMpio1x6m3ft4+wcG9nKuut2V/o2UZrxLy9snPdYvFDtt9Gg7VWfutxPU5d7gDVe3oxuyyqm52r0xapFPuTU6OGt3GzrLztCXuOGbpR5m+6R6U0umc4Y5yqpbPK9/mtZ2PWRbMu7RxvH3eovdO12gUL3ZjfokICathvgxOEk05aulfUtBXW8rafggb9sKel1t6Mktq5gifyWPpNEb2ozZHLZZVYvdky+u5eQS3NiWs9Yd2ssRZxct+nTFcZbkaQ3ttIdwOY2COFu2MaTiQyZslxXCd8QAlfGQ8fdVGm1cHc4yQbs9KL1QkAC3REoa9pKYZ5skVz6GLCQ8XDJ1z6eF/3lu1eddVoIWvZbO9UqUIBm40YEZuP00Z1ZqP1oWZ+Xdnae8kpSx7qrk6m/evDFtD7Z0RxDmTVSyMvTYDoV88WGm+Tp3H5hcHgxcWDrjzFSzNM4TR01flHZ+BSjlBtj81JbJNm83vN9plHTfkhK03daC3aUs2tfZTG87wtSFg/WXflWAyNMHm/fyI0Xdtl8tZEIO+0206QMjFa7952U8PMbCRwkVwplbmRzdHJlYW0KZW5kb2JqCjU3IDAgb2JqCjEwNzMKZW5kb2JqCjU4IDAgb2JqCjw8CiAgL1Jlc291cmNlcyAxNCAwIFIKICAvVHlwZSAvUGFnZQogIC9NZWRpYUJveCBbMCAwIDYxMiA3OTJdCiAgL0Nyb3BCb3ggWzAgMCA2MTIgNzkyXQogIC9CbGVlZEJveCBbMCAwIDYxMiA3OTJdCiAgL1RyaW1Cb3ggWzAgMCA2MTIgNzkyXQogIC9QYXJlbnQgMTUgMCBSCiAgL0NvbnRlbnRzIDU2IDAgUgo+PgplbmRvYmoKNTkgMCBvYmoKPDwgL0xlbmd0aCA2MCAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCniczVhLb9QwEL7nV/gPbJgZx7EtVZV2S0FwQ1TigDiBgAMF9cTfZ/xK/Mpmt1zaNrVjz4zn8c3Y8dOAAvj34BptSXx9HJ7iGApNQs7lEKpZSBiNmgGQpwInpIYHXOP+H2AkJX55jrwPqQ1DkDo/xafh9wDi7fD5C49+43El/g5BXGL8OHyolIEXp1+uoUR6gRo+DXoKa9I8olXWWmFIkB4pqPTq3SOJ13+8MZ6cHBYehZrAdX7FjpPnp5YOt06Hp2FSEFZwHYNipiR4SoILnGkPPRA/htPD8OoNzoL/Hr7n8EQ5aoWsq+GZR/H5BoAkPwoATtyyP+HIj+Hnnt81gHQ+nkKf4JZFkLiJJCqyWn7uwrsTgywSkFmJWx3E+jET3n1r41Kn2Dr+KY4zLyT6RHMXZCDdfhEP7519SiAU9hkh9ajtxOahXuxjYURBJvp/t+JgFYeVJ5E1xmNwgjdYRStyIm+CDE8jAV4H8S3XHEVHJ7k+2qgHG4Z3FYPXQQeJrpUqtH7JRnpGlJR2hGRrCzFY5nxLp0jIfXl/IeF0imqYQONs8OpcKwR1nIuqOhO8M45BuLwPkc3COdkmnJeukNqg4o55063g3LqJox09L5Hi3p0tPjQ+Kxp7NG7CM0XYypHOeTKn6YEgn/ewTxDMwJvzd9eOuYxmDbVPgpouQjlB3fmRLYt5lbCcx7jgPgbOQiP9DC9EcPr8ucQ6XK1reMyqq/cY7NhwpQcaRBjZIGKVFSuhPoc9Xm8KqrdwQ1A7eHte2gNuYav2+raMhf4qa+PcTiXxYx130PbukEAy8Wb+v4Usl7OVgmk+pRXV61+xRlm+KAMeqBXii+RnJW2ub21DCmvPji49rIlf0PXW6sKvsqb2abec+1VLT8kWIrKz42ToxFgfvHM7CJv3CvzlyFraGP220J9JwphEpb2puK0RJ7mRhAkJJuqOZ3S7JGGh1C2dphZ8dlzZqYx1sh7MfrLu7+25pK0dNc1vpfPCr6v3iwKQ0ReByMabgGytsWdhvvv1rPern7MofhosRekYC0d9JDRtAVh06BSMc/TrntLCxLZb3FK/olrp8LZkxY4JKbNWVVaIOWD4jwaI7iuqLDTb37msKOhstR6EEPlDJfTXwWOCUSd/CPc3u4Oczx+zusfanHEzXxLBZsIsEnQ9UKbMnOJSgNzA8gHa6LMgOB/smt3mY7WMC8QbaE6ExedbX+/NNMztzk+gaywu2PlLKbVLy/RqkUHtHpdDrznBmTWMRfXYO91FUN4/1BcV80TjzJ/vxZ0OCGtGY5pRfzHTudEhmsfJZRL1hqB6veaapxJT30eF6Su1RTWCnetXyLrXXUQt7E679cqnuRLBEY22/DMLRGZy8aE17C7XT90w0YSjkvPLDor7/QcydzbZCmVuZHN0cmVhbQplbmRvYmoKNjAgMCBvYmoKMTA1MgplbmRvYmoKNjEgMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAgL0JsZWVkQm94IFswIDAgNjEyIDc5Ml0KICAvVHJpbUJveCBbMCAwIDYxMiA3OTJdCiAgL1BhcmVudCAxNSAwIFIKICAvQ29udGVudHMgNTkgMCBSCj4+CmVuZG9iago2MiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyNSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY3OS42MjkgMTE3LjE5IDY4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjIgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMxLjMyIDY3OS42MjkgNTQwLjAgNjg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2MiAwIFIKL0ggL0kKCj4+CmVuZG9iago2NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyOCAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iago2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA4MC4wIDY2Ny42MjkgMTUzLjg1OCA2NzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjY3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjY3LjYyOSA1MzkuOTk4IDY3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNjUgMCBSCi9IIC9JCgo+PgplbmRvYmoKNjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKNjkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2NTUuNjI5IDIwNC45NzYgNjY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA2OCAwIFIKL0ggL0kKCj4+CmVuZG9iago3MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDY1NS42MjkgNTM5Ljk5OCA2NjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDY4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjcxIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNzAwLjggbnVsbF0KPj4KZW5kb2JqCjcyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY0My42MjkgMTczLjQwOCA2NTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDcxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjczIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjQzLjYyOSA1MzkuOTk4IDY1My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzEgMCBSIC9YWVogNzIuMCA2MjYuNCBudWxsXQo+PgplbmRvYmoKNzUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjMxLjYyOSAxNjQuOTEzIDY0MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgNzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKNzYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjgwNyA2MzEuNjI5IDU0MC4xNjcgNjQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NCAwIFIKL0ggL0kKCj4+CmVuZG9iago3NyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszMSAwIFIgL1hZWiA3Mi4wIDU1OC4wIG51bGxdCj4+CmVuZG9iago3OCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA2MTkuNjI5IDIwOS41NTIgNjI5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA3NyAwIFIKL0ggL0kKCj4+CmVuZG9iago3OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDYxOS42MjkgNTM5Ljk5OCA2MjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDc3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjgwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzMxIDAgUiAvWFlaIDcyLjAgNDg5LjYgbnVsbF0KPj4KZW5kb2JqCjgxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDYwNy42MjkgMjIxLjc5NCA2MTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjgyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNjA3LjYyOSA1MzkuOTk4IDYxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODAgMCBSCi9IIC9JCgo+PgplbmRvYmoKODMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzcgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKODQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA1OTUuNjI5IDE0OS4zOSA2MDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDgzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjg1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNTk1LjYyOSA1MzkuOTk4IDYwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODMgMCBSCi9IIC9JCgo+PgplbmRvYmoKODYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbMzcgMCBSIC9YWVogNzIuMCA2NzguOCBudWxsXQo+PgplbmRvYmoKODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTgzLjYyOSAxOTkuMDA2IDU5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgODYgMCBSCi9IIC9JCgo+PgplbmRvYmoKODggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1ODMuNjI5IDUzOS45OTggNTkzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4NiAwIFIKL0ggL0kKCj4+CmVuZG9iago4OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFszNyAwIFIgL1hZWiA3Mi4wIDYwMi40IG51bGxdCj4+CmVuZG9iago5MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1NzEuNjI5IDE5NC42NDEgNTgxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA4OSAwIFIKL0ggL0kKCj4+CmVuZG9iago5MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDU3MS42MjkgNTM5Ljk5OCA1ODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDg5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjkyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQwIDAgUiAvWFlaIDcyLjAgNzIwLjAgbnVsbF0KPj4KZW5kb2JqCjkzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNTU5LjYyOSAxNjEuNzg0IDU2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTIgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA1NTkuNjI5IDUzOS45OTggNTY5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5MiAwIFIKL0ggL0kKCj4+CmVuZG9iago5NSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDY2Ni43NjggbnVsbF0KPj4KZW5kb2JqCjk2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDU0Ny42MjkgNDY2LjU1NyA1NTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDk1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjk3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNTQ3LjYyOSA1MzkuOTk3IDU1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgOTUgMCBSCi9IIC9JCgo+PgplbmRvYmoKOTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA1ODcuODg1IG51bGxdCj4+CmVuZG9iago5OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA1MzUuNjI5IDMxNi42MjEgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyA1MzUuNjI5IDUzOS45OTcgNTQ1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSA5OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA1MjMuNDAyIG51bGxdCj4+CmVuZG9iagoxMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTIzLjYyOSAzMTYuNjExIDUzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTAxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwMyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDUyMy42MjkgNTM5Ljk5NyA1MzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwMSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCA0NTguOTE5IG51bGxdCj4+CmVuZG9iagoxMDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNTExLjYyOSAzNjYuMjk0IDUyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwNiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDUxMS42MjkgNTM5Ljk5NyA1MjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMDcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCAzOTQuNDM2IG51bGxdCj4+CmVuZG9iagoxMDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDk5LjYyOSAzNDMuMjk1IDUwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTA3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEwOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDQ5OS42MjkgNTM5Ljk5OCA1MDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEwNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCAzMjkuOTUzIG51bGxdCj4+CmVuZG9iagoxMTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDg3LjYyOSAzMjIuNzQ3IDQ5Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDQ4Ny42MjkgNTM5Ljk5NyA0OTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDExMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMTMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDAgMCBSIC9YWVogNzIuMCAyNjUuNDcgbnVsbF0KPj4KZW5kb2JqCjExNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NzUuNjI5IDMyNi4wNDQgNDg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDc1LjYyOSA1MzkuOTk3IDQ4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTEzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjExNiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDIwMC45ODcgbnVsbF0KPj4KZW5kb2JqCjExNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NjMuNjI5IDQwNy4wNzMgNDczLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTE4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy44NDggNDYzLjYyOSA1NDAuMjA4IDQ3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjExOSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MCAwIFIgL1hZWiA3Mi4wIDEzNi41MDQgbnVsbF0KPj4KZW5kb2JqCjEyMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0NTEuNjI5IDMyNS4zNTYgNDYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMTkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTIxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggNDUxLjYyOSA1MzkuOTk4IDQ2MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTE5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyMiAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxMjMgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDM5LjYyOSAzMTIuMDA5IDQ0OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTIyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDQzOS42MjkgNTM5Ljk5OCA0NDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA2NDkuOTI2IG51bGxdCj4+CmVuZG9iagoxMjYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNDI3LjYyOSAzNDguMDI2IDQzNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEyNyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDQyNy42MjkgNTM5Ljk5OCA0MzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDEyNSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxMjggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDMgMCBSIC9YWVogNzIuMCA1NzMuOTUgbnVsbF0KPj4KZW5kb2JqCjEyOSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MTUuNjI5IDMwOC4zMDQgNDI1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMjggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgNDE1LjYyOSA1MzkuOTk3IDQyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTI4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzMSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDUwOS45NzQgbnVsbF0KPj4KZW5kb2JqCjEzMiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA0MDMuNjI5IDMyNC4xOTIgNDEzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzEgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTMzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy45ODggNDAzLjYyOSA1NDAuMzQ4IDQxMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTMxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDQ0NS45OTggbnVsbF0KPj4KZW5kb2JqCjEzNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzOTEuNjI5IDQyNS4wODEgNDAxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMzkxLjYyOSA1MzkuOTk3IDQwMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjEzNyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDM3MC4wMjIgbnVsbF0KPj4KZW5kb2JqCjEzOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNzkuNjI5IDM1Ny41MzkgMzg5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTM5IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMzc5LjYyOSA1MzkuOTk3IDM4OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTM3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0MCAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDMwNi4wNDYgbnVsbF0KPj4KZW5kb2JqCjE0MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzNjcuNjI5IDM0MS43NDEgMzc3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzggMzY3LjYyOSA1MzkuOTk4IDM3Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE0MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0MyAwIFIgL1hZWiA3Mi4wIDI0Mi4wNyBudWxsXQo+PgplbmRvYmoKMTQ0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM1NS42MjkgMzUzLjU3NCAzNjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAzNTUuNjI5IDUzOS45OTggMzY1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDMgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ2IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMTc4LjA5NCBudWxsXQo+PgplbmRvYmoKMTQ3IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDM0My42MjkgNDA3LjI0MiAzNTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0NiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNDggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAzNDMuNjI5IDUzOS45OTcgMzUzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTQ5IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQzIDAgUiAvWFlaIDcyLjAgMTE0LjExOCBudWxsXQo+PgplbmRvYmoKMTUwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDMzMS42MjkgMzk5LjA1NCAzNDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE0OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzNyAzMzEuNjI5IDUzOS45OTcgMzQxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNDkgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTUyIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ2IDAgUiAvWFlaIDcyLjAgNzA4LjAgbnVsbF0KPj4KZW5kb2JqCjE1MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAzMTkuNjI5IDM5MC4wIDMyOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTUyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDMxOS42MjkgNTM5Ljk5NyAzMjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA2MzAuNjY5IG51bGxdCj4+CmVuZG9iagoxNTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMzA3LjYyOSAzMTguNTAzIDMxNy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU1IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE1NyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDMwNy42MjkgNTM5Ljk5OCAzMTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNTggMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA1NjUuMzM4IG51bGxdCj4+CmVuZG9iagoxNTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjk1LjYyOSAxOTMuNzk4IDMwNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTU4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2MCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDI5NS42MjkgNTM5Ljk5NyAzMDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE1OCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjEgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA1MDAuMDA3IG51bGxdCj4+CmVuZG9iagoxNjIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjgzLjYyOSAyNDkuMTY4IDI5My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTYxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDI4My42MjkgNTM5Ljk5OCAyOTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCA0MzQuNjc2IG51bGxdCj4+CmVuZG9iagoxNjUgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjcxLjYyOSAzMTMuMjI0IDI4MS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY0IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2NiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDI3MS42MjkgNTM5Ljk5OCAyODEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNjcgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAzNjkuMzQ1IG51bGxdCj4+CmVuZG9iagoxNjggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjU5LjYyOSAyNTkuODM2IDI2OS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTY3IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE2OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDI1OS42MjkgNTM5Ljk5NyAyNjkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE2NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzAgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAzMDQuMDE0IG51bGxdCj4+CmVuZG9iagoxNzEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjQ3LjYyOSAyNjIuNjU1IDI1Ny42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTcwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3MiAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDI0Ny42MjkgNTM5Ljk5NyAyNTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzMgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAyMzguNjgzIG51bGxdCj4+CmVuZG9iagoxNzQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjM1LjYyOSAyODIuODQ1IDI0NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTczIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3NSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM3IDIzNS42MjkgNTM5Ljk5NyAyNDUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxNzYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDYgMCBSIC9YWVogNzIuMCAxMzcuMzUyIG51bGxdCj4+CmVuZG9iagoxNzcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjIzLjYyOSAyNzguOTkgMjMzLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxNzYgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTc4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMjIzLjYyOSA1MzkuOTk3IDIzMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE3OSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs0OSAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxODAgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMjExLjYyOSAyMjQuNDc2IDIyMS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTc5IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4MSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDIxMS42MjkgNTM5Ljk5OCAyMjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE3OSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCA2NDkuNiBudWxsXQo+PgplbmRvYmoKMTgzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE5OS42MjkgMjQxLjE1IDIwOS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTgyIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE4NCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDE5OS42MjkgNTM5Ljk5OCAyMDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4MiAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODUgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNDkgMCBSIC9YWVogNzIuMCA1NzMuMiBudWxsXQo+PgplbmRvYmoKMTg2IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE4Ny42MjkgMzkxLjE2NyAxOTcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE4NSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxODcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjk4NyAxODcuNjI5IDU0MC4zNDcgMTk3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODUgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTg4IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzQ5IDAgUiAvWFlaIDcyLjAgNDk2LjggbnVsbF0KPj4KZW5kb2JqCjE4OSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCAxNzUuNjI5IDI1NC4wNDkgMTg1LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxODggMCBSCi9IIC9JCgo+PgplbmRvYmoKMTkwIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUzMy42MzcgMTc1LjYyOSA1MzkuOTk3IDE4NS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTg4IDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MSAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFs1MiAwIFIgL1hZWiA3Mi4wIDcyMC4wIG51bGxdCj4+CmVuZG9iagoxOTIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCAxNjMuNjI5IDEyNS4zIDE3My42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMTkxIDAgUgovSCAvSQoKPj4KZW5kb2JqCjE5MyAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDE2My42MjkgNTM5Ljk5OCAxNzMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5MSAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTQgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTIgMCBSIC9YWVogNzIuMCA3MDAuOCBudWxsXQo+PgplbmRvYmoKMTk1IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDE1MS42MjkgMjE1LjMwMSAxNjEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NCAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTYgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAxNTEuNjI5IDUzOS45OTggMTYxLjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTQgMCBSCi9IIC9JCgo+PgplbmRvYmoKMTk3IDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgNDg3LjYwMSBudWxsXQo+PgplbmRvYmoKMTk4IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEzOS42MjkgMTkxLjcxNCAxNDkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDE5NyAwIFIKL0ggL0kKCj4+CmVuZG9iagoxOTkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAxMzkuNjI5IDUzOS45OTggMTQ5LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAxOTcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzUyIDAgUiAvWFlaIDcyLjAgMTI1LjI3NCBudWxsXQo+PgplbmRvYmoKMjAxIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDEyNy42MjkgMjcxLjk3NiAxMzcuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMCAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDIgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCAxMjcuNjI5IDUzOS45OTggMTM3LjYxOSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjAzIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzU1IDAgUiAvWFlaIDcyLjAgNjE1LjY0MiBudWxsXQo+PgplbmRvYmoKMjA0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDExNS42MjkgMjI3Ljk5IDEyNS42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjAzIDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwNSAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDExNS42MjkgNTM5Ljk5OCAxMjUuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwMyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDYgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTUgMCBSIC9YWVogNzIuMCAzMjcuMjY5IG51bGxdCj4+CmVuZG9iagoyMDcgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgMTAzLjYyOSAyMDIuNjc3IDExMy42MTkgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjA2IDAgUgovSCAvSQoKPj4KZW5kb2JqCjIwOCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyA1MzMuNjM4IDEwMy42MjkgNTM5Ljk5OCAxMTMuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwNiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMDkgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNTUgMCBSIC9YWVogNzIuMCAxOTAuMDQgbnVsbF0KPj4KZW5kb2JqCjIxMCAwIG9iago8PCAvVHlwZSAvQW5ub3QKL1N1YnR5cGUgL0xpbmsKL1JlY3QgWyAxMDQuMCA5MS42MjkgMjA1LjY2MyAxMDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMTEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTMzLjYzOCA5MS42MjkgNTM5Ljk5OCAxMDEuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIwOSAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMTIgMCBvYmoKPDwgL1R5cGUgL0FjdGlvbgovUyAvR29UbwovRCBbNjEgMCBSIC9YWVogNzIuMCA3MjAuMCBudWxsXQo+PgplbmRvYmoKMjEzIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDgwLjAgNzkuNjI5IDI2MS43MDMgODkuNjE5IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIxMiAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMTQgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA3OS42MjkgNTM5Ljk5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NjMgMCBSCjY0IDAgUgo2NiAwIFIKNjcgMCBSCjY5IDAgUgo3MCAwIFIKNzIgMCBSCjczIDAgUgo3NSAwIFIKNzYgMCBSCjc4IDAgUgo3OSAwIFIKODEgMCBSCjgyIDAgUgo4NCAwIFIKODUgMCBSCjg3IDAgUgo4OCAwIFIKOTAgMCBSCjkxIDAgUgo5MyAwIFIKOTQgMCBSCjk2IDAgUgo5NyAwIFIKOTkgMCBSCjEwMCAwIFIKMTAyIDAgUgoxMDMgMCBSCjEwNSAwIFIKMTA2IDAgUgoxMDggMCBSCjEwOSAwIFIKMTExIDAgUgoxMTIgMCBSCjExNCAwIFIKMTE1IDAgUgoxMTcgMCBSCjExOCAwIFIKMTIwIDAgUgoxMjEgMCBSCjEyMyAwIFIKMTI0IDAgUgoxMjYgMCBSCjEyNyAwIFIKMTI5IDAgUgoxMzAgMCBSCjEzMiAwIFIKMTMzIDAgUgoxMzUgMCBSCjEzNiAwIFIKMTM4IDAgUgoxMzkgMCBSCjE0MSAwIFIKMTQyIDAgUgoxNDQgMCBSCjE0NSAwIFIKMTQ3IDAgUgoxNDggMCBSCjE1MCAwIFIKMTUxIDAgUgoxNTMgMCBSCjE1NCAwIFIKMTU2IDAgUgoxNTcgMCBSCjE1OSAwIFIKMTYwIDAgUgoxNjIgMCBSCjE2MyAwIFIKMTY1IDAgUgoxNjYgMCBSCjE2OCAwIFIKMTY5IDAgUgoxNzEgMCBSCjE3MiAwIFIKMTc0IDAgUgoxNzUgMCBSCjE3NyAwIFIKMTc4IDAgUgoxODAgMCBSCjE4MSAwIFIKMTgzIDAgUgoxODQgMCBSCjE4NiAwIFIKMTg3IDAgUgoxODkgMCBSCjE5MCAwIFIKMTkyIDAgUgoxOTMgMCBSCjE5NSAwIFIKMTk2IDAgUgoxOTggMCBSCjE5OSAwIFIKMjAxIDAgUgoyMDIgMCBSCjIwNCAwIFIKMjA1IDAgUgoyMDcgMCBSCjIwOCAwIFIKMjEwIDAgUgoyMTEgMCBSCjIxMyAwIFIKMjE0IDAgUgpdCmVuZG9iagoyMTggMCBvYmoKPDwKICAvUmVzb3VyY2VzIDE0IDAgUgogIC9UeXBlIC9QYWdlCiAgL01lZGlhQm94IFswIDAgNjEyIDc5Ml0KICAvQ3JvcEJveCBbMCAwIDYxMiA3OTJdCiAg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MC4wIG51bGxdCj4+CmVuZG9iagoyMzggMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgODAuMCA2OTcuMDA1IDExOS4wNiA3MDYuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDIzNyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyMzkgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgNTI3LjI3OCA2OTcuMDA1IDUzOS45OTggNzA2Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyMzcgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQwIDAgb2JqCjw8IC9UeXBlIC9BY3Rpb24KL1MgL0dvVG8KL0QgWzIzMCAwIFIgL1hZWiA3Mi4wIDY3OC44IG51bGxdCj4+CmVuZG9iagoyNDEgMCBvYmoKPDwgL1R5cGUgL0Fubm90Ci9TdWJ0eXBlIC9MaW5rCi9SZWN0IFsgMTA0LjAgNjg1LjAwNSAxNzEuOTIgNjk0Ljk5NSBdCi9DIFsgMCAwIDAgXQovQm9yZGVyIFsgMCAwIDAgXQovQSAyNDAgMCBSCi9IIC9JCgo+PgplbmRvYmoKMjQyIDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDUyNy4yNzggNjg1LjAwNSA1MzkuOTk4IDY5NC45OTUgXQovQyBbIDAgMCAwIF0KL0JvcmRlciBbIDAgMCAwIF0KL0EgMjQwIDAgUgovSCAvSQoKPj4KZW5kb2JqCjI0MyAwIG9iago8PCAvVHlwZSAvQWN0aW9uCi9TIC9Hb1RvCi9EIFsyMzAgMCBSIC9YWVogNzIuMCA2MjQuNCBudWxsXQo+PgplbmRvYmoKMjQ0IDAgb2JqCjw8IC9UeXBlIC9Bbm5vdAovU3VidHlwZSAvTGluawovUmVjdCBbIDEwNC4wIDY3My4wMDUgMTY3LjgzMyA2ODIuOTk1IF0KL0MgWyAwIDAgMCBdCi9Cb3JkZXIgWyAwIDAgMCBdCi9BIDI0MyAwIFIKL0ggL0kKCj4+CmVuZG9iagoyNDUgMCBvYmoKPDwgL1R5cGUg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NTM1IGYgCjAwMDAwMDAwMTUgMDAwMDAgbiAKMDAwMDAwMDE0NSAwMDAwMCBuIAowMDAwMDAyNjgzIDAwMDAwIG4gCjAwMDAwMDI3MDMgMDAwMDAgbiAKMDAwMDAwMjczNiAwMDAwMCBuIAowMDAwMDAzNjgzIDAwMDAwIG4gCjAwMDAwMDM3MDIgMDAwMDAgbiAKMDAwMDA1MjIyNyAwMDAwMCBuIAowMDAwMDUyMjQ4IDAwMDAwIG4gCjAwMDAxMDU1MDggMDAwMDAgbiAKMDAwMDEwNTUzMCAwMDAwMCBuIAowMDAwMTA2MDIyIDAwMDAwIG4gCjAwMDAxMDYwNDIgMDAwMDAgbiAKMDAwMDI0OTgwNSAwMDAwMCBuIAowMDAwMjQ5NDk1IDAwMDAwIG4gCjAwMDAxMDYyMzYgMDAwMDAgbiAKMDAwMDExMjQwNyAwMDAwMCBuIAowMDAwMTEyNDI4IDAwMDAwIG4gCjAwMDAxMTk2MDggMDAwMDAgbiAKMDAwMDExOTYyOSAwMDAwMCBuIAowMDAwMTE5NzE0IDAwMDAwIG4gCjAwMDAxMTk4NTIgMDAwMDAgbiAKMDAwMDEyMDc3OSAwMDAwMCBuIAowMDAwMTIwNzk5IDAwMDAwIG4gCjAwMDAxMjA4MjYgMDAwMDAgbiAKMDAwMDEyMTAzNyAwMDAwMCBuIAowMDAwMTIxNzk5IDAwMDAwIG4gCjAwMDAxMjE4MTkgMDAwMDAgbiAKMDAwMDEyMjAxMyAwMDAwMCBuIAowMDAwMTIyODY0IDAwMDAwIG4gCjAwMDAxMjI4ODQgMDAwMDAgbiAKMDAwMDEyMzA3OCAwMDAwMCBuIAowMDAwMTIzMTczIDAwMDAwIG4gCjAwMDAxMjMzMDkgMDAwMDAgbiAKMDAwMDEyNDU4OSAwMDAwMCBuIAowMDAwMTI0NjEwIDAwMDAwIG4gCjAwMDAxMjQ2MzcgMDAwMDAgbiAKMDAwMDEyNDg0OCAwMDAwMCBuIAowMDAwMTI2NDM3IDAwMDAwIG4gCjAwMDAxMjY0NTggMDAwMDAgbiAKMDAwMDEyNjY1MiAwMDAwMCBuIAowMDAwMTI4MzgxIDAwMDAwIG4gCjAwMDAxMjg0MDIgMDAwMDAgbiAKMDAwMDEyODU5NiAwMDAwMCBuIAowMDAwMTMwNDM4IDAwMDAwIG4gCjAwMDAxMzA0NTkgMDAwMDAgbiAKMDAwMDEzMDY1MyAwMDAwMCBuIAowMDAwMTMxODg4IDAwMDAwIG4gCjAwMDAxMzE5MDkgMDAwMDAgbiAKMDAwMDEzMjEwMyAwMDAwMCBuIAowMDAwMTM1MDgyIDAwMDAwIG4gCjAwMDAxMzUxMDMgMDAwMDAgbiAKMDAwMDEzNTI5NyAwMDAwMCBuIAowMDAwMTM4MDY4IDAwMDAwIG4gCjAwMDAxMzgwODkgMDAwMDAgbiAKMDAwMDEzODI4MyAwMDAwMCBuIAowMDAwMTM5NDMyIDAwMDAwIG4gCjAwMDAxMzk0NTMgMDAwMDAgbiAKMDAwMDEzOTY0NyAwMDAwMCBuIAowMDAwMTQwNzc1IDAwMDAwIG4gCjAwMDAxNDA3OTYgMDAwMDAgbiAKMDAwMDE0MDk5MCAwMDAwMCBuIAowMDAwMTQxMDY4IDAwMDAwIG4gCjAwMDAxNDEyMDQgMDAwMDAgbiAKMDAwMDE0MTM0MSAwMDAwMCBuIAowMDAwMTQxNDE5IDAwMDAwIG4gCjAwMDAxNDE1NTYgMDAwMDAgbiAKMDAwMDE0MTY5NiAwMDAwMCBuIAowMDAwMTQxNzc0IDAwMDAwIG4gCjAwMDAxNDE5MTEgMDAwMDAgbiAKMDAwMDE0MjA1MSAwMDAwMCBuIAowMDAwMTQyMTI5IDAwMDAwIG4gCjAwMDAxNDIyNjcgMDAwMDAgbiAKMDAwMDE0MjQwNyAwMDAwMCBuIAowMDAwMTQyNDg1IDAwMDAwIG4gCjAwMDAxNDI2MjMgMDAwMDAgbiAKMDAwMDE0Mjc2MyAwMDAwMCBuIAowMDAwMTQyODQxIDAwMDAwIG4gCjAwMDAxNDI5NzkgMDAwMDAgbiAKMDAwMDE0MzExOSAwMDAwMCBuIAowMDAwMTQzMTk3IDAwMDAwIG4gCjAwMDAxNDMzMzUgMDAwMDAgbiAKMDAwMDE0MzQ3NSAwMDAwMCBuIAowMDAwMTQzNTUzIDAwMDAwIG4gCjAwMDAxNDM2ODkgMDAwMDAgbiAKMDAwMDE0MzgyOSAwMDAwMCBuIAowMDAwMTQzOTA3IDAwMDAwIG4gCjAwMDAxNDQwNDUgMDAwMDAgbiAKMDAwMDE0NDE4NSAwMDAwMCBuIAowMDAwMTQ0MjYzIDAwMDAwIG4gCjAwMDAxNDQ0MDEgMDAwMDAgbiAKMDAwMDE0NDU0MSAwMDAwMCBuIAowMDAwMTQ0NjE5IDAwMDAwIG4gCjAwMDAxNDQ3NTYgMDAwMDAgbiAKMDAwMDE0NDg5NiAwMDAwMCBuIAowMDAwMTQ0OTc2IDAwMDAwIG4gCjAwMDAxNDUxMTQgMDAwMDAgbiAKMDAwMDE0NTI1NCAwMDAwMCBuIAowMDAwMTQ1MzM0IDAwMDAwIG4gCjAwMDAxNDU0NzIgMDAwMDAgbiAKMDAwMDE0NTYxMyAwMDAwMCBuIAowMDAwMTQ1Njk0IDAwMDAwIG4gCjAwMDAxNDU4MzQgMDAwMDAgbiAKMDAwMDE0NTk3NiAwMDAwMCBuIAowMDAwMTQ2MDU3IDAwMDAwIG4gCjAwMDAxNDYxOTcgMDAwMDAgbiAKMDAwMDE0NjMzOSAwMDAwMCBuIAowMDAwMTQ2NDIwIDAwMDAwIG4gCjAwMDAxNDY1NjAgMDAwMDAgbiAKMDAwMDE0NjcwMiAwMDAwMCBuIAowMDAwMTQ2NzgzIDAwMDAwIG4gCjAwMDAxNDY5MjMgMDAwMDAgbiAKMDAwMDE0NzA2NSAwMDAwMCBuIAowMDAwMTQ3MTQ1IDAwMDAwIG4gCjAwMDAxNDcyODUgMDAwMDAgbiAKMDAwMDE0NzQyNyAwMDAwMCBuIAowMDAwMTQ3NTA4IDAwMDAwIG4gCjAwMDAxNDc2NDggMDAwMDAgbiAKMDAwMDE0Nzc5MCAwMDAwMCBuIAowMDAwMTQ3ODcxIDAwMDAwIG4gCjAwMDAxNDgwMTEgMDAwMDAgbiAKMDAwMDE0ODE1MyAwMDAwMCBuIAowMDAwMTQ4MjMyIDAwMDAwIG4gCjAwMDAxNDgzNzIgMDAwMDAgbiAKMDAwMDE0ODUxNCAwMDAwMCBuIAowMDAwMTQ4NTk1IDAwMDAwIG4gCjAwMDAxNDg3MzUgMDAwMDAgbiAKMDAwMDE0ODg3NyAwMDAwMCBuIAowMDAwMTQ4OTU3IDAwMDAwIG4gCjAwMDAxNDkwOTcgMDAwMDAgbiAKMDAwMDE0OTIzOSAwMDAwMCBuIAowMDAwMTQ5MzIwIDAwMDAwIG4gCjAwMDAxNDk0NjAgMDAwMDAgbiAKMDAwMDE0OTYwMiAwMDAwMCBuIAowMDAwMTQ5NjgzIDAwMDAwIG4gCjAwMDAxNDk4MjMgMDAwMDAgbiAKMDAwMDE0OTk2NSAwMDAwMCBuIAowMDAwMTUwMDQ2IDAwMDAwIG4gCjAwMDAxNTAxODYgMDAwMDAgbiAKMDAwMDE1MDMyOCAwMDAwMCBuIAowMDAwMTUwNDA5IDAwMDAwIG4gCjAwMDAxNTA1NDkgMDAwMDAgbiAKMDAwMDE1MDY5MSAwMDAwMCBuIAowMDAwMTUwNzcxIDAwMDAwIG4gCjAwMDAxNTA5MTEgMDAwMDAgbiAKMDAwMDE1MTA1MyAwMDAwMCBuIAowMDAwMTUxMTM0IDAwMDAwIG4gCjAwMDAxNTEyNzQgMDAwMDAgbiAKMDAwMDE1MTQxNiAwMDAwMCBuIAowMDAwMTUxNDk3IDAwMDAwIG4gCjAwMDAxNTE2MzcgMDAwMDAgbiAKMDAwMDE1MTc3OSAwMDAwMCBuIAowMDAwMTUxODU4IDAwMDAwIG4gCjAwMDAxNTE5OTYgMDAwMDAgbiAKMDAwMDE1MjEzOCAwMDAwMCBuIAowMDAwMTUyMjE5IDAwMDAwIG4gCjAwMDAxNTIzNTkgMDAwMDAgbiAKMDAwMDE1MjUwMSAwMDAwMCBuIAowMDAwMTUyNTgyIDAwMDAwIG4gCjAwMDAxNTI3MjIgMDAwMDAgbiAKMDAwMDE1Mjg2NCAwMDAwMCBuIAowMDAwMTUyOTQ1IDAwMDAwIG4gCjAwMDAxNTMwODUgMDAwMDAgbiAKMDAwMDE1MzIyNyAwMDAwMCBuIAowMDAwMTUzMzA4IDAwMDAwIG4gCjAwMDAxNTM0NDggMDAwMDAgbiAKMDAwMDE1MzU5MCAwMDAwMCBuIAowMDAwMTUzNjcxIDAwMDAwIG4gCjAwMDAxNTM4MTEgMDAwMDAgbiAKMDAwMDE1Mzk1MyAwMDAwMCBuIAowMDAwMTU0MDM0IDAwMDAwIG4gCjAwMDAxNTQxNzQgMDAwMDAgbiAKMDAwMDE1NDMxNiAwMDAwMCBuIAowMDAwMTU0Mzk3IDAwMDAwIG4gCjAwMDAxNTQ1MzcgMDAwMDAgbiAKMDAwMDE1NDY3OSAwMDAwMCBuIAowMDAwMTU0NzYwIDAwMDAwIG4gCjAwMDAxNTQ4OTkgMDAwMDAgbiAKMDAwMDE1NTA0MSAwMDAwMCBuIAowMDAwMTU1MTIwIDAwMDAwIG4gCjAwMDAxNTUyNjAgMDAwMDAgbiAKMDAwMDE1NTQwMiAwMDAwMCBuIAowMDAwMTU1NDgxIDAwMDAwIG4gCjAwMDAxNTU2MjAgMDAwMDAgbiAKMDAwMDE1NTc2MiAwMDAwMCBuIAowMDAwMTU1ODQxIDAwMDAwIG4gCjAwMDAxNTU5ODEgMDAwMDAgbiAKMDAwMDE1NjEyMyAwMDAwMCBuIAowMDAwMTU2MjAyIDAwMDAwIG4gCjAwMDAxNTYzNDIgMDAwMDAgbiAKMDAwMDE1NjQ4NCAwMDAwMCBuIAowMDAwMTU2NTYzIDAwMDAwIG4gCjAwMDAxNTY3MDAgMDAwMDAgbiAKMDAwMDE1Njg0MiAwMDAwMCBuIAowMDAwMTU2OTIxIDAwMDAwIG4gCjAwMDAxNTcwNjEgMDAwMDAgbiAKMDAwMDE1NzIwMyAwMDAwMCBuIAowMDAwMTU3Mjg0IDAwMDAwIG4gCjAwMDAxNTc0MjQgMDAwMDAgbiAKMDAwMDE1NzU2NiAwMDAwMCBuIAowMDAwMTU3NjQ3IDAwMDAwIG4gCjAwMDAxNTc3ODcgMDAwMDAgbiAKMDAwMDE1NzkyOSAwMDAwMCBuIAowMDAwMTU4MDEwIDAwMDAwIG4gCjAwMDAxNTgxNDkgMDAwMDAgbiAKMDAwMDE1ODI5MSAwMDAwMCBuIAowMDAwMTU4MzcyIDAwMDAwIG4gCjAwMDAxNTg1MTIgMDAwMDAgbiAKMDAwMDE1ODY1NCAwMDAwMCBuIAowMDAwMTU4NzM0IDAwMDAwIG4gCjAwMDAxNTg4NzMgMDAwMDAgbiAKMDAwMDE1OTAxNCAwMDAwMCBuIAowMDAwMTU5MDkzIDAwMDAwIG4gCjAwMDAxNTkyMzAgMDAwMDAgbiAKMDAwMDE1OTM3MCAwMDAwMCBuIAowMDAwMTg3MTY1IDAwMDAwIG4gCjAwMDAxODcxODggMDAwMDAgbiAKMDAwMDE4ODAwMCAwMDAwMCBuIAowMDAwMTg4MjE0IDAwMDAwIG4gCjAwMDAxODkzOTQgMDAwMDAgbiAKMDAwMDE4OTQxNiAwMDAwMCBuIAowMDAwMTg5NjEyIDAwMDAwIG4gCjAwMDAxOTA4OTkgMDAwMDAgbiAKMDAwMDE5MDkyMSAwMDAwMCBuIAowMDAwMTkxMTE3IDAwMDAwIG4gCjAwMDAxOTIxNDcgMDAwMDAgbiAKMDAwMDE5MjE2OCAwMDAwMCBuIAowMDAwMTkyMzY0IDAwMDAwIG4gCjAwMDAxOTQ1MTEgMDAwMDAgbiAKMDAwMDE5NDUzMyAwMDAwMCBuIAowMDAwMTk0NzI5IDAwMDAwIG4gCjAwMDAxOTU1NjIgMDAwMDAgbiAKMDAwMDE5NTU4MyAwMDAwMCBuIAowMDAwMTk1Nzc5IDAwMDAwIG4gCjAwMDAxOTU4NTkgMDAwMDAgbiAKMDAwMDE5NTk5OCAwMDAwMCBuIAowMDAwMTk2MTQwIDAwMDAwIG4gCjAwMDAxOTYyMjAgMDAwMDAgbiAKMDAwMDE5NjM1OCAwMDAwMCBuIAowMDAwMTk2NTAwIDAwMDAwIG4gCjAwMDAxOTY1ODAgMDAwMDAgbiAKMDAwMDE5NjcxOSAwMDAwMCBuIAowMDAwMTk2ODYxIDAwMDAwIG4gCjAwMDAxOTY5NDEgMDAwMDAgbiAKMDAwMDE5NzA4MSAwMDAwMCBuIAowMDAwMTk3MjIzIDAwMDAwIG4gCjAwMDAxOTczMDMgMDAwMDAgbiAKMDAwMDE5NzQ0MiAwMDAwMCBuIAowMDAwMTk3NTg0IDAwMDAwIG4gCjAwMDAyMDE5OTcgMDAwMDAgbiAKMDAwMDIwMjAxOSAwMDAwMCBuIAowMDAwMjAyMTIwIDAwMDAwIG4gCjAwMDAyMDIzMzQgMDAwMDAgbiAKMDAwMDIwMjU5OSAwMDAwMCBuIAowMDAwMjE3NDIxIDAwMDAwIG4gCjAwMDAyMTczOTggMDAwMDAgbiAKMDAwMDIxNzUyMSAwMDAwMCBuIAowMDAwMjE3NTQxIDAwMDAwIG4gCjAwMDAyMTgxOTYgMDAwMDAgbiAKMDAwMDIxNzcwNiAwMDAwMCBuIAowMDAwMjE4Nzg3IDAwMDAwIG4gCjAwMDAyMTg4MDggMDAwMDAgbiAKMDAwMDIxOTA2OCAwMDAwMCBuIAowMDAwMjM1Mzg0IDAwMDAwIG4gCjAwMDAyMzUzNjEgMDAwMDAgbiAKMDAwMDIzNTQ4OSAwMDAwMCBuIAowMDAwMjM1NTA5IDAwMDAwIG4gCjAwMDAyMzYyMTIgMDAwMDAgbiAKMDAwMDIzNTY2OSAwMDAwMCBuIAowMDAwMjM2ODU5IDAwMDAwIG4gCjAwMDAyMzY4ODAgMDAwMDAgbiAKMDAwMDIzNzE0MiAwMDAwMCBuIAowMDAwMjQ4MjQ4IDAwMDAwIG4gCjAwMDAyNDgyMjUgMDAwMDAgbiAKMDAwMDI0ODM0NyAwMDAwMCBuIAowMDAwMjQ4MzY3IDAwMDAwIG4gCjAwMDAyNDg5NTQgMDAwMDAgbiAKMDAwMDI0ODUzMSAwMDAwMCBuIAowMDAwMjQ5NDc0IDAwMDAwIG4gCjAwMDAyNDk2OTYgMDAwMDAgbiAKMDAwMDI1MDAzNSAwMDAwMCBuIAp0cmFpbGVyCjw8CiAgL1Jvb3QgMjgwIDAgUgogIC9JbmZvIDEgMCBSCiAgL0lEIFs8MDY3MjVDNzlBRDYwNDQwMjUxOENGMTA0RDMzNEIzNzI+IDwwNjcyNUM3OUFENjA0NDAyNTE4Q0YxMDREMzM0QjM3Mj5dCiAgL1NpemUgMjgyCj4+CnN0YXJ0eHJlZgoyNTAxNzYKJSVFT0YK